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"