SAP Connector 5.3 の例

SAP 接続の確立

SAP との接続を確立し、SAP Connector の ​Function source​ 操作 (export パラメーターを SAP に返します) を使用して関数を受信する Mule アプリケーションを作成します。

  1. Anypoint Studio で、新しい Mule プロジェクトを作成します。

  2. Studio タスクバーの左上にある Exchange アイコン ​(X)​ をクリックします。

  3. Exchange で、​[Login (ログイン)]​ をクリックし、Anypoint Platform のユーザー名とパスワードを指定します。

  4. Exchange で、種別として ​[Connector s (コネクタ)]​ を選択し、「SAP Connector」を検索します。

  5. [SAP Connector for Mule 4 (Mule 4 用 SAP Connector)] タイルを選択し、​[Add to project (プロジェクトに追加)]​ をクリックします。

  6. SAP の ​Function source​ 操作をキャンバスのソース領域のフローの開始位置にドラッグします。

  7. 新しい ​[SAP インバウンド]​ グローバル要素設定を作成し、環境値を指定します。

  8. Transform Message​ コンポーネントをフローに追加して、メタデータに基づいて詳細を指定します。

    sap function return response

    これで、次の図のように、フローに ​Function source​ (キャンバスのソース領域内) と ​Transform Message​ が含まれます。

    sap flow response

    SAP Design Studio には、受信したオブジェクトとその応答に関するフィードバックが表示されます。

    sap result sap gui

SAP への IDoc の送信

この例では、IDoc を SAP に送信する Mule アプリケーションを作成します。

  1. Anypoint Studio で、新しい Mule プロジェクトを作成します。

  2. HTTP Listener​ 操作をキャンバスにドラッグし、デフォルト値を使用します。

  3. HTTP Request​ 操作をキャンバスにドラッグし、​[Path (パス)]​ を ​/sendIDoc​ に設定します。
    HTTP Listener​ 操作で使用するものと同じ HTTP 設定を使用します。

  4. 新しい SAP アウトバウンドグローバル要素設定を作成し、環境値を指定します。

  5. [Test Connection (接続をテスト)]​ をクリックして、Mule Runtime Engine が SAP インスタンスに接続できることを確認します。

  6. 正常に接続できた場合は、設定を保存します。
    それ以外の場合、無効なパラメーターを確認および修正して、再度テストします。

  7. SAP Connector を選択して HTTP 操作の横に ​Send IDoc​ 操作を追加します。

  8. 次の値を使用して操作を設定します。

    パラメーター

    Display Name (表示名)

    Send IDoc 操作の表示名

    Connector configuration (コネクタ設定)

    作成したグローバル要素の ​SAP_Outbound

    Key (キー)

    MATMAS01

    Content (コンテンツ)

    #[payload]

  9. Transform Message​ コンポーネントを SAP Connector の前にドロップし、コンポーネントをクリックしてそのプロパティエディターを開きます。

  10. メタデータが取得されたら、入力する従業員の各項目を選択します。

    変換スクリプトの XML には、​Transform Message​ の DataWeave コンテンツが次のように表示されます。

    %dw 2.0
    output application/xml
    ---
    read('<?xml version="1.0"?>
    <MATMAS01>
        <IDOC BEGIN="1">
            <EDI_DC40 SEGMENT="1">
                 <TABNAM>EDI_DC40</TABNAM>
                <MANDT>800</MANDT>
            </EDI_DC40>
        </IDOC>
    </MATMAS01>
    ',"application/xml")
  11. SAP エンドポイントの直後に ​Logger​ を追加します。
    アプリケーションを実行すると、​Logger​ により Anypoint Studio コンソールにメッセージが表示され、ログでコネクタのペイロードを確認できます。

  12. [File (ファイル)]​ > ​[Save (保存)]​ をクリックして、アプリケーションを保存します。

  13. [Run (実行)]​ > ​[Run as (別のユーザーとして実行)]​ > ​[Mule Application (Mule アプリケーション)]​ をクリックして、アプリケーションを実行します。
    Anypoint Studio が提供する Web サーバーを使用して、ユーザーはブラウザーからアプリケーションをテストできます。

  14. Web ブラウザーから、次のクエリパラメーターの形式で、従業員の内部 ID、名、姓を入力してアプリケーションをテストします。

    http://localhost:8081/sendIDoc

    Mule Runtime Engine によってクエリが実行され、従業員レコードが追加されます。

受信 IDoc 要求のトリガー

この例は RFC サーバーのように機能し、SAP ゲートウェイで自身を登録します。外部 SAP システムからの受信 IDoc 要求を待機します。

  1. Anypoint Studio で、新しい Mule プロジェクトを作成します。

  2. Exchange から SAP Connector をプロジェクトに追加します。

  3. SAP の ​Document source​ 操作をキャンバスのソース領域のフローの開始位置にドラッグします。

  4. 新しい ​[SAP インバウンド]​ グローバル要素設定を作成し、環境値を指定します。

  5. Document source​ の直後に ​Logger​ を追加します。
    アプリケーションを実行すると、​Logger​ により Anypoint Studio コンソールにメッセージが表示され、ログでコネクタのペイロードを確認できます。

  6. 新しい Mule フローで ​HTTP Listener​ 操作をキャンバスにドラッグし、デフォルト値を使用します。

  7. HTTP Request​ 操作をキャンバスにドラッグし、​[Path (パス)]​ を ​/triggerIDoc​ に設定します。
    HTTP Listener​ 操作で使用するものと同じ HTTP 設定を使用します。

  8. フローに ​Transform Message​ コンポーネントを追加します。
    このメッセージのコンテンツは、SAP から SAP IDoc ソースに送信する IDoc をトリガーする関数のペイロードです。

    %dw 2.0
    output application/xml
    ---
    {
    	ZMMFM_TRIGGER_IDOC_MATMAS: {
    		"import": {
    	IV_MTYP: "MATMAS"
    ,
    IV_OBJ: "23"
    ,
    IV_SYS: "MULE11_LS"
    }
    ,
    export: {
    	EV_RET: "0"
    },export: {
    	EV_OBJ: "0000000003526552"
    },export: null,changing: null,
    tables: {
    	T_MSG: null
    },
    	}
    }
  9. SAP の ​Synchronous remote function call​ 操作をキャンバスのソース領域にドラッグします。
    この操作は、SAP IDoc ソースへの送信を要求された IDoc をトリガーします。

  10. キー値を入力します。
    キー値が正しい場合、​Transform Message​ で関数のペイロードが表示されます。

    sap connector remote function call key
  11. [File (ファイル)]​ > ​[Save (保存)]​ をクリックして、アプリケーションを保存します。

  12. [Run (実行)]​ > ​[Run as (別のユーザーとして実行)]​ > ​[Mule Application (Mule アプリケーション)]​ をクリックして、アプリケーションを実行します。
    Anypoint Studio が提供する Web サーバーを使用して、ユーザーはブラウザーからアプリケーションをテストできます。

  13. Web ブラウザーから「http://localhost:8081/triggerIDoc」と入力してアプリケーションをテストします。

キャンバスでフローは次のようになります。

sap remote function call flow

応答の例:

<MATMAS01>
 	<IDOC BEGIN="1">
 		<EDI_DC40 SEGMENT="1">
 			<TABNAM>EDI_DC40</TABNAM>
 			<MANDT>800</MANDT>
 			<DOCNUM>0000000003572826</DOCNUM>
 			<DOCREL>740</DOCREL>
 			<STATUS>30</STATUS>
 			<DIRECT>1</DIRECT>
 			<OUTMOD>2</OUTMOD>
 			<IDOCTYP>MATMAS01</IDOCTYP>
 			<MESTYP>MATMAS</MESTYP>
 			<SNDPOR>SAPIDE</SNDPOR>
 			<SNDPRT>LS</SNDPRT>
 			<SNDPRN>T90CLNT090</SNDPRN>
 			<RCVPOR>MULE11_TP</RCVPOR>
 			<RCVPRT>LS</RCVPRT>
 			<RCVPRN>MULE11_LS</RCVPRN>
 			<CREDAT>20191004</CREDAT>
 			<CRETIM>050305</CRETIM>
 			<SERIAL>20191004050305</SERIAL>
 		</EDI_DC40>

 		...

    ```

IDoc を SAP に送信する XML

<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core"
    xmlns:sap="http://www.mulesoft.org/schema/mule/sap"
    xmlns:http="http://www.mulesoft.org/schema/mule/http"
    xmlns="http://www.mulesoft.org/schema/mule/core"
    xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core
    http://www.mulesoft.org/schema/mule/core/current/mule.xsd
    http://www.mulesoft.org/schema/mule/http
    http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
    http://www.mulesoft.org/schema/mule/sap
    http://www.mulesoft.org/schema/mule/sap/current/mule-sap.xsd
    http://www.mulesoft.org/schema/mule/ee/core
    http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd">
    <configuration-properties file="mule-artifact.properties"/>
    <sap:outbound-config name="SAP_Outbound" doc:name="SAP Outbound" >
        <sap:simple-connection-provider-connection
        applicationServerHost="${sap.jcoAsHost}"
        username="${sap.jcoUser}"
        password="${sap.jcoPasswd}"
        systemNumber="${sap.jcoSysnr}"
        client="${sap.jcoClient}"
        language="${sap.jcoLang}" />
    </sap:outbound-config>
    <http:listener-config name="HTTP_Listener_config"
      doc:name="HTTP Listener config" >
        <http:listener-connection host="0.0.0.0" port="8081" />
    </http:listener-config>
    <flow name="demo-idoc-clientFlow" >
        <http:listener config-ref="HTTP_Listener_config"
        path="/idoc" doc:name="Listener" />
        <ee:transform doc:name="Transform Message" >
            <ee:message >
                <ee:set-payload ><![CDATA[%dw 2.0
output application/xml
---
read('<?xml version="1.0"?>
<MATMAS01>
    <IDOC BEGIN="1">
        <EDI_DC40 SEGMENT="1">
             <TABNAM>EDI_DC40</TABNAM>
            <MANDT>800</MANDT>
        </EDI_DC40>
    </IDOC>
</MATMAS01>
',"application/xml")
]]></ee:set-payload>
    </ee:message>
    </ee:transform>
    <sap:send config-ref="SAP_Outbound" doc:name="Send IDoc"
    key="MATMAS01"/>
    <logger level="INFO" doc:name="Logger" message="#[payload]"/>
	</flow>
</mule>