PHP code example of blockshiftnetwork / sapb1-client
1. Go to this page and download the library: Download blockshiftnetwork/sapb1-client library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
blockshiftnetwork / sapb1-client example snippets
return [
'default' => env('SAPB1_DEFAULT_CONNECTION', 'service_layer'),
'connections' => [
'service_layer' => [
'server' => env('SAPB1_SERVICE_LAYER_SERVER'),
'database' => env('SAPB1_SERVICE_LAYER_DATABASE'),
'username' => env('SAPB1_SERVICE_LAYER_USERNAME'),
'password' => env('SAPB1_SERVICE_LAYER_PASSWORD'),
'cache_ttl' => env('SAPB1_SERVICE_LAYER_CACHE_TTL', 1800),
'pool_size' => env('SAPB1_SERVICE_LAYER_POOL_SIZE', 1),
'verify_ssl' => env('SAPB1_SERVICE_LAYER_VERIFY_SSL', true),
],
'gateway' => [
'server' => env('SAPB1_GATEWAY_SERVER'),
'database' => env('SAPB1_GATEWAY_DATABASE'),
'username' => env('SAPB1_GATEWAY_USERNAME'),
'password' => env('SAPB1_GATEWAY_PASSWORD'),
'cache_ttl' => env('SAPB1_GATEWAY_CACHE_TTL', 1800),
'pool_size' => env('SAPB1_GATEWAY_POOL_SIZE', 1),
'verify_ssl' => env('SAPB1_GATEWAY_VERIFY_SSL', true),
],
],
];
use BlockshiftNetwork\SapB1Client\Facades\SapB1;
// Use a specific connection
SapB1::connection('service_layer')->get('Items');
SapB1::connection('gateway')->post('PDFExport', ['DocEntry' => 1]);
// Shorthand macros (registered out of the box)
SapB1::serviceLayer()->get('Items');
SapB1::gateway()->post('PDFExport', ['DocEntry' => 1]);
// Calls without connection() go to the default connection
SapB1::get('Items');
$response = SapB1::query('BusinessPartners')
->select('CardCode', 'CardName', 'Balance')
->where('CardType', 'cCustomer')
->where('Balance', '>', 0)
->orderBy('CardName')
->top(50)
->skip(10)
->get();
$customers = $response->json('value');
// String key
$response = SapB1::query('BusinessPartners')->find('C001');
// Numeric key
$response = SapB1::query('Orders')->find(123);
// With select
$response = SapB1::query('BusinessPartners')
->select('CardCode', 'CardName')
->find('C001');
$response = SapB1::query('BusinessPartners')->create([
'CardCode' => 'C2024',
'CardName' => 'Acme Corp',
'CardType' => 'cCustomer',
]);
$response = SapB1::query('BusinessPartners')->update('C2024', [
'CardName' => 'Acme Corporation',
]);
$response = SapB1::query('Orders')->update(123, [
'DocumentLines' => [
['ItemCode' => 'A001', 'Quantity' => 5],
['ItemCode' => 'A002', 'Quantity' => 3],
],
], replaceCollections: true);
SapB1::query('BusinessPartners')->delete('C2024');
SapB1::query('Orders')->delete(123);
SapB1::gateway()->query('PDFExport')->create(['DocEntry' => 1]);
SapB1::serviceLayer()->query('Items')
->select('ItemCode', 'ItemName')
->where('ItemCode', 'startswith', 'A')
->top(20)
->get();
$response = SapB1::odataQuery('Items', [
'$filter' => "ItemsGroupCode eq 100",
'$orderby' => "ItemCode desc",
'$top' => 5,
]);
$items = $response->json('value');
use BlockshiftNetwork\SapB1Client\ODataQuery;
$query = (new ODataQuery())
->select('CardCode', 'CardName', 'Balance')
->where('CardType', '=', 'cCustomer')
->orWhere('CardName', 'contains', 'Acme Inc.')
->where('Balance', '>', 0)
->where('CreateDate', 'between', ['2023-01-01', '2023-12-31'])
->orderBy('CardName', 'desc')
->top(50)
->skip(10);
$response = SapB1::odataQuery('BusinessPartners', $query);
$response = SapB1::withHeaders(['X-Company-Context' => 'VENEZUELA'])
->get('/sml.svc/ItemsWithStock', [
'warehouse' => 'CABUDARE01',
]);
$response = SapB1::sendRequestWithCallback(function ($httpClient) {
return $httpClient
->attach('my_file', file_get_contents('/path/to/file.pdf'), 'file.pdf')
->post('Attachments2');
});
SapB1::post('BusinessPartners', ['CardCode' => 'C2024', 'CardName' => 'Beta Tech']);
SapB1::patch("BusinessPartners('C2024')", ['CardName' => 'New Beta Tech']);
SapB1::delete("BusinessPartners('C2024')");
$responses = SapB1::pool(function ($pool) {
return [
$pool->as('items')->get('Items', ['$top' => 10]),
$pool->as('partners')->get('BusinessPartners', ['$top' => 10]),
$pool->as('warehouses')->get('Warehouses'),
$pool->as('orders')->get('Orders', ['$top' => 5]),
];
});
$items = $responses['items']->json('value');
$partners = $responses['partners']->json('value');
$responses = SapB1::pool(function ($pool) {
return [
$pool->as('create')->post('BusinessPartners', ['CardCode' => 'C001', 'CardName' => 'New Customer']),
$pool->as('update')->patch("Items('A001')", ['ItemName' => 'Updated Item']),
$pool->as('fetch')->get('Orders', ['$top' => 1]),
];
});
$client = Http::SapB1([
'server' => 'https://other-sap-host.com/b1s/v1',
'database' => 'OTHER_DB',
'username' => 'user',
'password' => 'pass',
]);
$response = $client->get('Items');
SapB1::logout();
// Or on a specific connection
SapB1::connection('gateway')->logout();
bash
php artisan vendor:publish --tag="sapb1-client-config"