trim07/service-layer-sap
Composer 安装命令:
composer require trim07/service-layer-sap
包简介
README 文档
README
A simple and easy to use PHP library for SAP Business One Service Layer API.
Usage
Create an array to store your SAP Business One Service Layer configuration details.
$config = [ 'https' => true, 'host' => 'IP or Hostname', 'port' => 50000, 'sslOptions' => [ "cafile" => "path/to/certificate.crt", "verify_peer" => true, "verify_peer_name" => true, ], 'version' => 2 ];
Create a new Service Layer session.
$sap = SAPClient::createSession($config, 'SAP UserName', 'SAP Password', 'Company', 'Language');
You can see the language codes by going to language codes documentation
The static createSession() method will return a new instance of SAPClient. The SAPClient object provides a service($name) method which returns a new instance of Service with the specified name. Using this Service object you can perform CRUD actions.
Making Queries
To perform queries, we use the 'crossjoin(array)' method, passing an array containing the tables that will be used in the relationship. Then we call the 'expand(array)' method to select the columns we want and, finally, we call the 'where(filter)' method that will do the relationship between the tables.
The following code sample shows how to make relationship with Items and Warehouses.
use Trim07\ServiceLayerSap\Filters\Equal; $sap = SAPClient::createSession($config, 'SAP UserName', 'SAP Password', 'Company', 'Language'); $items = $sap->crossJoin(['Items', 'Items/ItemWarehouseInfoCollection', 'Warehouses']) ->expand([ 'Items' => ['ItemCode', 'ItemName'], 'Warehouses' => ['WarehouseCode', 'WarehouseName']]) ->where(new Equal('Items/ItemCode', 'Items/ItemWarehouseInfoCollection/ItemCode')) ->where(new Equal('Items/ItemWarehouseInfoCollection/WarehouseCode', 'Warehouses/WarehouseCode')) ->findAll()
Querying A Service
The queryBuilder() method of the Service class returns a new instance of Query. The Query class allows you to use chainable methods to filter the requested service.
The following code sample shows how to filter Sales Orders using the Orders service.
$sap = SAPClient::createSession($config, 'SAP UserName', 'SAP Password', 'Company', 'Language'); $orders = $sap->getService('Orders'); $result = $orders->queryBuilder() ->select('DocEntry,DocNum') ->orderBy('DocNum', 'asc') ->limit(5) ->findAll();
The findAll() method will return a collection of records that match the search criteria. To return a specific record using an id use the find($id) method.
... $orders = $sap->getService('Orders'); $result = $orders->queryBuilder() ->select('DocEntry,DocNum') ->find(123456); // DocEntry value
Depending on the service, $id may be a numeric value or a string. If you want to know which field is used as the id for a service, call the getMetaData() method on the Service object as shown below.
... $meta = $orders->getMetaData();
Creating A Service
The following code sample shows how to create a new Sales Order using the create() method of the Service object.
... $orders = $sap->getService('Orders'); $result = $orders->create([ 'CardCode' => 'BP Card Code', 'DocDueDate' => 'Doc due date', 'DocumentLines' => [ [ "ItemCode" => "Item Code", "Quantity" => 100, ] ] ]);
You must provide any User Defined Fields that are required to create a Sales Order. If successful, the newly created Sales Order will be returned as an object.
Updating A Service
The following code sample demonstrates how to update a service using the update() method of the Service object.
... $orders = $sap->getService('Orders'); $result = $orders->update(19925, [ 'Comments' => 'Comment added here' ]);
Note that the first argument to the update() method is the id of the entity to update. In the case of a Sales Order the id is the DocEntry field. If the update is successful a boolean true value is returned.
Canceling A Document
The following code sample demonstrates how to cancel a document using the action() method of the Service.
... $orders = $sap->getService('Orders'); $result = $orders->action(19925, 'Cancel');
If the cancel is successful a boolean true value is returned.
Close A Document
The following code sample demonstrates how to close a document using the action() method of the Service.
... $orders = $sap->getService('Orders'); $result = $orders->action(19925, 'Close');
If the close request is successful a boolean true value is returned.
Adding Headers
You can specify oData headers by calling the headers() method on a Service instance with an array of headers.
... $orders = $sap->getService('Orders'); $orders->headers(['Prefer' => 'odata.maxpagesize=0']); $result = $orders->queryBuilder() ->select('DocEntry,DocNum') ->find(123456); // DocEntry value
You can find more examples and the full documentation at https://syedhussim.com/sap-b1/php-sapb1-library-documentation-v1.html
trim07/service-layer-sap 适用场景与选型建议
trim07/service-layer-sap 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 45 次下载、GitHub Stars 达 2, 最近一次更新时间为 2023 年 05 月 28 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 trim07/service-layer-sap 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 trim07/service-layer-sap 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 45
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 2
- 点击次数: 9
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2023-05-28