接続の確立
CData Cmdlets ユーザーは、データモジュールをインストールし、接続プロパティを設定してスクリプトを開始できます。このセクションでは、CSV インポートおよびエクスポートcmdlet などのネイティブPowerShell cmdlet でSAPERP Cmdlets を使用する例を示します。
インストールおよび接続
PSGet がある場合は、PowerShell Gallery から次のコマンドを使ってcmdlet をインストールできます。CData サイトからセットアップを取得することもできます。
Install-Module SAPERPCmdlets
プロファイルに以下を追加すると、次のセッションでcmdlet がロードされます。
Import-Module SAPERPCmdlets;
Connect-SAPERP cmdlet を使って、別のcmdlet に渡すことができる接続オブジェクトを作成します。
$conn = Connect-SAPERP -Host 'sap.mydomain.com' -User 'EXT90033' -Password 'xxx' -Client '800' -SystemNumber '09' -ConnectionType 'Classic'
RFC API との接続
CData Cmdlets PowerShell Module for SAP ERP はSAP RFC インターフェースを使用してSAP システムに接続します。ConnectionType は接続に使用するRFC API を指定します。
接続するには、RFC API に対応するSAP ライブラリの入手が必要です。
必須RFC
CData Cmdlets PowerShell Module for SAP ERP が使用するRFC は次のとおりです。以下にリストされているものが利用できない場合、一部またはすべての機能が動作しない可能性があります。 T-Code SE37 を使用すると、SAP で利用可能な汎用モジュールを表示できます。
- DDIF_FIELDINFO_GET
- RFC_GET_FUNCTION_INTERFACE
- RFC_GET_STRUCTURE_DEFINITION
- RFC_GET_SYSTEM_INFO
- RFC_GET_UNICODE_STRUCTURE
- RFC_READ_TABLE
- SLDAG_CHECK_FOR_UNICODE
SAP ERP への接続
接続するには以下を設定します。
- Host:ターゲットシステムのホスト名。ホスト名はホストファイルに定義されている通常のホスト名、123.123.123.123 のようなIP アドレス、または"/H/hostname/S/port/H/host/S/port/ ..." のようなSAProuter アドレスにすることができます。
- User:SAP システムに認証しているユーザー。
- Password:SAP システムへの認証に使われるパスワード。
- Client:SAP システムに認証しているクライアント。
- SystemNumber:ターゲットシステムが定義される番号。
- Language:SAP ERP へのログインに使用するISO 639-1 言語コード。デフォルトは"EN" です。
Host マシンとは別のマシンに接続するには、Host を以下に置き換えます。
- GatewayHost:接続先のゲートウェイホスト。指定されない場合は、プロバイダーはHost によって指定されたSAP システムへの接続を試みます。
- GatewayService:接続先のゲートウェイサービス。指定されない場合は、SAP システムはデフォルトの"sapgw##" を使用します。"##" はSystemNumber です。
分散システム、または別の構成のシステムに接続するには、データアクセスのファインチューニング を参照してください。
証明書
CData Cmdlets PowerShell Module for SAP ERP はユーザーとパスワードの認証に加え、証明書認証にも対応しています。証明書認証を使用するには、PEM 形式のX509 証明書を含むファイルを指すか、SAP ログオン時の認証に直接使用されるPEM blob を指すように、X509Certificate 接続プロパティを設定します。 X509Certificate の設定の他に、適切なSNC 接続プロパティの指定が必要です。 SNC 接続プロパティはデータアクセスのファインチューニング に記載されています。
データの取得
Select-SAPERP cmdlet はデータを取得するためのネイティブなPowerShell インターフェースを提供します。
$results = Select-SAPERP -Connection $conn -Table "MARA" -Columns @("MANDT, MATNR") -Where "ERNAM='BEHRMANN'"Invoke-SAPERP cmdlet はSQL インターフェースを提供します。このcmdlet を使うと、Query パラメータを介してSQL クエリを実行できます。
cmdlet 出力のパイプ処理
cmdlet は行オブジェクトをパイプラインに一度に一行ずつ返します。以下は、結果をCSV ファイルにエクスポートします。
Select-SAPERP -Connection $conn -Table MARA -Where "ERNAM = 'BEHRMANN'" | Select -Property * -ExcludeProperty Connection,Table,Columns | Export-Csv -Path c:\myMARAData.csv -NoTypeInformation
Select-SAPERP からの結果をSelect-Object cmdlet にパイプして、Export-CSV cmdlet にパイプする前にいくつかのプロパティを実行していることがわかるでしょう。これをする理由は、CData Cmdlets は接続、テーブル、およびカラムの情報を結果セットの各行オブジェクトに追加しますが、必ずしもその情報がCSV ファイルに必要ではないからです。
ただし、これによってcmdlet の出力を別のcmdlet にパイプすることが容易になります。以下に、結果セットをJSON に変換する例を示します。
PS C:\> $conn = Connect-SAPERP -Host 'sap.mydomain.com' -User 'EXT90033' -Password 'xxx' -Client '800' -SystemNumber '09' -ConnectionType 'Classic' PS C:\> $row = Select-SAPERP -Connection $conn -Table "MARA" -Columns (MANDT, MATNR) -Where "ERNAM = 'BEHRMANN'" | select -first 1 PS C:\> $row | ConvertTo-Json { "Connection": { }, "Table": "MARA", "Columns": [ ], "MANDT": "MyMANDT", "MATNR": "MyMATNR" }