SapConnect

The SapConnect object is of type ScriptBlock and can be used with Connect-ERP to work with SAP systems.

The $sapConnect variable is based on the SapConnect implementation from the .NET library.

Syntax

1
$sapConnect

Remarks

The $sapConnect variable is available globally in every PowerShell session where the powerGate Module is imported.
It only supports connecting to the services from a single SAP system, by retrieving the X-CSRF-Token and cookie just once.

Examples

Connecting to a SAP service with CSRF protection

1
Connect-ERP -Service "http://sap.coolorange.com" -User "EX_DEMO" -Password "secret" -OnConnect $global:sapConnect

Connecting multiple SAP systems with different CSRF-Token expiration intervals:

1
2
3
4
5
6
7
8
9
$sapConnect_System2 = {
param($settings)
        # tokens expire every 24h on this system
        $reconnectInterval = 86400 * 1000
        ([Action[powerGate.Erp.Client.ErpClientSettings]](New-Object powerGate.Erp.Client.SapConnect($reconnectInterval))).Invoke($settings)
}

Connect-ERP "http://sap.coolorange.com/CATALOGSERVICE" -OnConnect $Global:sapConnect
Connect-ERP "http://sap.some_other_company.com/CATALOGSERVICE" -OnConnect $sapConnect_System2

Customization

In case the default implementation does not fit your needs (Download Example) the PowerShell module and extract it to your projects location:

1
.\Modules\connections_sap.psm1

Freely customize the module to your needs!
To make use of the module in your current PowerShell environment it has to be imported:

1
Import-Module ".\Modules\connections_sap.psm1"

In order to use the customized SAP Connect for the authentication with powerGate, use the variable $extendedSapConnect:

1
$connected = Connect-ERP "https://sap.coolorange.com/CATALOGSERVICE" -OnConnect $global:extendedSapConnect

Attention

If you are setting $settings.OnCreateMessageHandler then the $settings.OnApplyClientHandler will not be called anymore and the $extendedSapConnect will not work anymore. Therefore be sure to invoke it afterwards with the returned handler:

1
2
3
4
5
6
7
$global:erpSettings = $settings
$settings.OnCreateMessageHandler = {
        $customHandler = New-Object Your.Custom.Handler
        # Your other custom code
        $erpSetting.OnApplyClientHandler.Invoke($customHandler)
        return $customHandler
}