Flex Gateway新着情報
Governance新着情報
Monitoring API ManagerSAP Connector の Mule フローの例を示します。
この例は、IDoc を SAP に送信する Mule アプリケーションを作成する方法を示しています。次のスクリーンショットは、この例の Studio フローを示しています。
ローカルホストポート 8081
で /sendIDoc
パスへのコールが行われたときに Mule フローを開始するように HTTP リスナーを設定します。
Anypoint Studio で、新しい Mule プロジェクトを作成します。
[Mule Palette (Mule パレット)] ビューから、[HTTP] > [Listener] ソースをキャンバスにドラッグします。
デフォルト値を使用してグローバル要素を設定します。
[Listener (リスナー)] プロパティタブで、パスを /sendIDoc
に設定します。
[Transform Message] コンポーネントで、IDoc 入力を XML に変換するように設定します。
[Mule Palette (Mule パレット)] ビューから、[Core (コア)] を選択して [Transform Message] コンポーネントを [Listener] ソースの横にドラッグします。
メタデータが取得された後に、[Transform Message] コンポーネントの [Output (出力)] セクションのテキストを次のテキストで上書きします。
%dw 2.0
output application/xml
<MATMAS01>
<IDOC BEGIN="1">
<EDI_DC40 SEGMENT="1">
<TABNAM>EDI_DC40</TABNAM>
<MANDT>800</MANDT>
<DOCNUM>0000000003519646</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>MULE01_TP</RCVPOR>
<RCVPRT>LS</RCVPRT>
<RCVPRN>MULE01_LS</RCVPRN>
<CREDAT>20180606</CREDAT>
<CRETIM>133420</CRETIM>
<SERIAL>20180606133420</SERIAL>
</EDI_DC40>
<E1MARAM SEGMENT="1">
<MSGFN>005</MSGFN>
<MATNR>000000000000000088</MATNR>
<ERSDA>19970527</ERSDA>
<ERNAM>MORLEY</ERNAM>
<LAEDA>20030122</LAEDA>
<AENAM>I021066</AENAM>
<PSTAT>KVB</PSTAT>
<LVORM>X</LVORM>
<MTART>FERT</MTART>
<MBRSH>M</MBRSH>
<MATKL>02004</MATKL>
<MEINS>PCE</MEINS>
<BLANZ>000</BLANZ>
<BRGEW>0.200</BRGEW>
<NTGEW>0.200</NTGEW>
<GEWEI>KGM</GEWEI>
<VOLUM>0.000</VOLUM>
<TRAGR>0001</TRAGR>
<SPART>09</SPART>
<WESCH>0.000</WESCH>
<LAENG>0.000</LAENG>
<BREIT>0.000</BREIT>
<HOEHE>0.000</HOEHE>
<ERGEW>0.000</ERGEW>
<ERVOL>0.000</ERVOL>
<GEWTO>0.0</GEWTO>
<VOLTO>0.0</VOLTO>
<FUELG>0</FUELG>
<STFAK>0</STFAK>
<MHDRZ>0</MHDRZ>
<MHDHB>0</MHDHB>
<MHDLP>0</MHDLP>
<VPSTA>KVB</VPSTA>
<MSTDE>00000000</MSTDE>
<MSTDV>00000000</MSTDV>
<COMPL>00</COMPL>
<GEWTO_NEW>0.0</GEWTO_NEW>
<VOLTO_NEW>0.0</VOLTO_NEW>
<ANP>000000000</ANP>
<E1MAKTM SEGMENT="1">
<MSGFN>005</MSGFN>
<SPRAS>1</SPRAS>
<MAKTX>AS-100 T-shirt</MAKTX>
<SPRAS_ISO>ZH</SPRAS_ISO>
</E1MAKTM>
<E1MAKTM SEGMENT="1">
<MSGFN>005</MSGFN>
<SPRAS>4</SPRAS>
<MAKTX>AS-100 T-shirt</MAKTX>
<SPRAS_ISO>RO</SPRAS_ISO>
</E1MAKTM>
<E1MAKTM SEGMENT="1">
<MSGFN>005</MSGFN>
<SPRAS>5</SPRAS>
<MAKTX>AS-100 T-shirt</MAKTX>
<SPRAS_ISO>SL</SPRAS_ISO>
</E1MAKTM>
<E1MAKTM SEGMENT="1">
<MSGFN>005</MSGFN>
<SPRAS>6</SPRAS>
<MAKTX>AS-100 T-shirt</MAKTX>
<SPRAS_ISO>HR</SPRAS_ISO>
</E1MAKTM>
<E1MAKTM SEGMENT="1">
<MSGFN>005</MSGFN>
<SPRAS>E</SPRAS>
<MAKTX>AS-100 T-shirt</MAKTX>
<SPRAS_ISO>EN</SPRAS_ISO>
</E1MAKTM>
<E1MAKTM SEGMENT="1">
<MSGFN>005</MSGFN>
<SPRAS>F</SPRAS>
<MAKTX>AS-100 T-shirt</MAKTX>
<SPRAS_ISO>FR</SPRAS_ISO>
</E1MAKTM>
<E1MAKTM SEGMENT="1">
<MSGFN>005</MSGFN>
<SPRAS>G</SPRAS>
<MAKTX>AS-100 T-shirt</MAKTX>
<SPRAS_ISO>EL</SPRAS_ISO>
</E1MAKTM>
<E1MAKTM SEGMENT="1">
<MSGFN>005</MSGFN>
<SPRAS>J</SPRAS>
<MAKTX>AS-100 T ???</MAKTX>
<SPRAS_ISO>JA</SPRAS_ISO>
</E1MAKTM>
<E1MAKTM SEGMENT="1">
<MSGFN>005</MSGFN>
<SPRAS>W</SPRAS>
<MAKTX>AS-100 T-shirt</MAKTX>
<SPRAS_ISO>BG</SPRAS_ISO>
</E1MAKTM>
<E1MAKTM SEGMENT="1">
<MSGFN>005</MSGFN>
<SPRAS>d</SPRAS>
<MAKTX>AS-100 T-shirt</MAKTX>
<SPRAS_ISO>SH</SPRAS_ISO>
</E1MAKTM>
<E1MARCM SEGMENT="1">
<MSGFN>005</MSGFN>
<WERKS>1000</WERKS>
<PSTAT>V</PSTAT>
<LVORM>X</LVORM>
<PLIFZ>0</PLIFZ>
<WEBAZ>0</WEBAZ>
<PERKZ>M</PERKZ>
<AUSSS>0.00</AUSSS>
<MINBE>0.000</MINBE>
<EISBE>0.000</EISBE>
<BSTMI>0.000</BSTMI>
<BSTMA>0.000</BSTMA>
<BSTFE>0.000</BSTFE>
<BSTRF>0.000</BSTRF>
<MABST>0.000</MABST>
<LOSFX>0</LOSFX>
<AUSDT>00000000</AUSDT>
<BEARZ>0.00</BEARZ>
<RUEZT>0.00</RUEZT>
<TRANZ>0.00</TRANZ>
<BASMG>0.000</BASMG>
<DZEIT>0</DZEIT>
<MAXLZ>0</MAXLZ>
<UEETO>0.0</UEETO>
<UNETO>0.0</UNETO>
<WZEIT>0</WZEIT>
<VZUSL>0.00</VZUSL>
<UMLMC>0.000</UMLMC>
<LGRAD>0.0</LGRAD>
<OBJID>00000000</OBJID>
<MTVFP>01</MTVFP>
<VRVEZ>0.00</VRVEZ>
<VBAMG>0.000</VBAMG>
<VBEAZ>0.00</VBEAZ>
<TRAME>0.000</TRAME>
<FXHOR>000</FXHOR>
<VINT1>000</VINT1>
<VINT2>000</VINT2>
<LOSGR>0.000</LOSGR>
<KAUSF>0.00</KAUSF>
<TAKZT>0</TAKZT>
<VRBDT>00000000</VRBDT>
<VRBFK>0.00</VRBFK>
<PREND>00000000</PREND>
<PRENG>00000000</PRENG>
<PRFRQ>0</PRFRQ>
<SHZET>00</SHZET>
<MMSTD>00000000</MMSTD>
<DPLHO>0</DPLHO>
<MINLS>0.000</MINLS>
<MAXLS>0.000</MAXLS>
<FIXLS>0.000</FIXLS>
<LTINC>0.000</LTINC>
<COMPL>00</COMPL>
<EISLO>0.000</EISLO>
</E1MARCM>
<E1MARCM SEGMENT="1">
<MSGFN>005</MSGFN>
<WERKS>2300</WERKS>
<PSTAT>VB</PSTAT>
<LVORM>X</LVORM>
<PLIFZ>0</PLIFZ>
<WEBAZ>0</WEBAZ>
<PERKZ>M</PERKZ>
<AUSSS>0.00</AUSSS>
<MINBE>0.000</MINBE>
<EISBE>0.000</EISBE>
<BSTMI>0.000</BSTMI>
<BSTMA>0.000</BSTMA>
<BSTFE>0.000</BSTFE>
<BSTRF>0.000</BSTRF>
<MABST>0.000</MABST>
<LOSFX>0</LOSFX>
<AUSDT>00000000</AUSDT>
<BEARZ>0.00</BEARZ>
<RUEZT>0.00</RUEZT>
<TRANZ>0.00</TRANZ>
<BASMG>0.000</BASMG>
<DZEIT>0</DZEIT>
<MAXLZ>0</MAXLZ>
<UEETO>0.0</UEETO>
<UNETO>0.0</UNETO>
<WZEIT>0</WZEIT>
<VZUSL>0.00</VZUSL>
<UMLMC>0.000</UMLMC>
<LADGR>0001</LADGR>
<LGRAD>0.0</LGRAD>
<OBJID>00000000</OBJID>
<MTVFP>01</MTVFP>
<VRVEZ>0.00</VRVEZ>
<VBAMG>0.000</VBAMG>
<VBEAZ>0.00</VBEAZ>
<TRAME>0.000</TRAME>
<FXHOR>000</FXHOR>
<VINT1>000</VINT1>
<VINT2>000</VINT2>
<LOSGR>0.000</LOSGR>
<KAUSF>0.00</KAUSF>
<TAKZT>0</TAKZT>
<VRBDT>00000000</VRBDT>
<VRBFK>0.00</VRBFK>
<PRENO>00000000</PRENO>
<PREND>00000000</PREND>
<PRENG>00000000</PRENG>
<PRFRQ>0</PRFRQ>
<SHZET>00</SHZET>
<MMSTD>00000000</MMSTD>
<DPLHO>0</DPLHO>
<MINLS>0.000</MINLS>
<MAXLS>0.000</MAXLS>
<FIXLS>0.000</FIXLS>
<LTINC>0.000</LTINC>
<COMPL>00</COMPL>
<EISLO>0.000</EISLO>
</E1MARCM>
<E1MARMM SEGMENT="1">
<MSGFN>005</MSGFN>
<MEINH>PCE</MEINH>
<UMREZ>1</UMREZ>
<UMREN>1</UMREN>
<LAENG>0.000</LAENG>
<BREIT>0.000</BREIT>
<HOEHE>0.000</HOEHE>
<VOLUM>0.000</VOLUM>
<BRGEW>0.200</BRGEW>
<GEWEI>KGM</GEWEI>
<NEST_FTR>0</NEST_FTR>
<MAX_STACK>0</MAX_STACK>
<CAPAUSE>0.000</CAPAUSE>
</E1MARMM>
<E1MBEWM SEGMENT="1">
<MSGFN>005</MSGFN>
<BWKEY>2300</BWKEY>
<LVORM>X</LVORM>
<VPRSV>S</VPRSV>
<VERPR>0</VERPR>
<STPRS>0.3</STPRS>
<PEINH>1</PEINH>
<BKLAS>7920</BKLAS>
<VMVPR>S</VMVPR>
<VMVER>0</VMVER>
<VMSTP>0.3</VMSTP>
<VMPEI>1</VMPEI>
<VMBKL>7920</VMBKL>
<VJVPR>S</VJVPR>
<VJVER>0</VJVER>
<VJSTP>0.3</VJSTP>
<LFGJA>1998</LFGJA>
<LFMON>09</LFMON>
<ZKPRS>0</ZKPRS>
<ZKDAT>00000000</ZKDAT>
<BWPRS>0</BWPRS>
<BWPRH>0</BWPRH>
<VJBWS>0</VJBWS>
<VJBWH>0</VJBWH>
<VVJLB>0.000</VVJLB>
<VVMLB>0.000</VVMLB>
<VVSAL>0</VVSAL>
<ZPLPR>0</ZPLPR>
<ZPLP1>0</ZPLP1>
<ZPLP2>0</ZPLP2>
<ZPLP3>0</ZPLP3>
<ZPLD1>00000000</ZPLD1>
<ZPLD2>00000000</ZPLD2>
<ZPLD3>00000000</ZPLD3>
<BWPH1>0</BWPH1>
<BWPS1>0</BWPS1>
<ABWKZ>00</ABWKZ>
<PSTAT>B</PSTAT>
<KALN1>000100014878</KALN1>
<KALNR>000100014879</KALNR>
<VERS1>00</VERS1>
<VERS2>00</VERS2>
<VERS3>00</VERS3>
<PPRDZ>000</PPRDZ>
<PPRDL>000</PPRDL>
<PPRDV>000</PPRDV>
<PDATZ>0000</PDATZ>
<PDATL>0000</PDATL>
<PDATV>0000</PDATV>
<VPLPR>0</VPLPR>
<VJBKL>7920</VJBKL>
<VJPEI>1</VJPEI>
<HKMAT>X</HKMAT>
<BWPEI>0</BWPEI>
</E1MBEWM>
<E1MLANM SEGMENT="1">
<MSGFN>005</MSGFN>
<ALAND>ES</ALAND>
<TATY1>MWST</TATY1>
<TAXM1>0</TAXM1>
</E1MLANM>
</E1MARAM>
</IDOC>
</MATMAS01>
',"application/xml")
dataweave
Send IDoc 操作は、リモート関数コール (RFC) を介して IDoc を SAP に送信します。
[Mule Palette (Mule パレット)] ビューから、[SAP] を選択して [Send IDoc] 操作を [Transform Message] コンポーネントの横にドラッグします。
SAP_Outbound
というグローバル要素を作成し、接続情報を指定します。
[Test Connection (接続をテスト)] をクリックして、Mule Runtime Engine が SAP インスタンスに接続できることを確認します。
正常に接続できた場合は、設定を保存します。
それ以外の場合、無効なパラメーターを確認および修正して、再度テストします。
[Send IDoc] のプロパティに次の値を設定します。
項目 | 値 |
---|---|
IDoc Name (IDoc 名) |
|
Content (コンテンツ) |
|
[Logger] コンポーネントは Studio コンソールにコネクタのペイロードを表示します。
[Mule Palette (Mule パレット)] ビューから、[Core (コア)] を選択して [Logger] を [Send IDoc] 操作の横にドラッグします。
[File (ファイル)] > [Save (保存)] をクリックして、アプリケーションを保存します。
Mule アプリケーションを実行する手順は、次のとおりです。
[Run (実行)] > [Run as (別のユーザーとして実行)] > [Mule Application (Mule アプリケーション)] をクリックします。
Web ブラウザーから、次の URL のクエリパラメーターとして、従業員の内部 ID、名、姓を入力してアプリケーションをテストします。
http://localhost:8081/sendIDoc
Mule によって IDoc が SAP に送信されます。
Studio で次のコードを新しい Mule アプリケーションに貼り付ければ、IDoc を送信するフローの例をすばやく読み込むことができます。環境に合わせて値を変更してください。
<?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">
<http:listener-config name="HTTP_Listener_config" doc:name="HTTP Listener config" doc:id="58cb7168-7f00-4b96-977a-31dcc54992dd" >
<http:listener-connection host="0.0.0.0" port="8081" />
</http:listener-config>
<sap:sap-config name="SAP_Outbound" doc:name="SAP Config" doc:id="367ae57d-001b-4d8f-b50f-f6d1d17410a7" >
<sap:simple-connection-provider-connection username="User1" password="myPassword" systemNumber="00" client="800" applicationServerHost="saptext.net" />
</sap:sap-config>
<flow name="sap_send_idocFlow" doc:id="1ee42fb2-8d7d-482d-8f31-095cef12ff08" >
<http:listener doc:name="Listener" doc:id="a1f287ba-4138-4183-903b-90d34abde5c6" config-ref="HTTP_Listener_config" path="/"/>
<ee:transform doc:name="Transform Message" doc:id="ae593540-a467-463f-9aae-fbfb781da0cd" >
<ee:message >
<ee:set-payload >
<![CDATA[%dw 2.0
output application/xml
---
read('<MATMAS01>
<IDOC BEGIN="1">
<EDI_DC40 SEGMENT="1">
<TABNAM>EDI_DC40</TABNAM>
<MANDT>800</MANDT>
<DOCNUM>0000000003519646</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>MULE01_TP</RCVPOR>
<RCVPRT>LS</RCVPRT>
<RCVPRN>MULE01_LS</RCVPRN>
<CREDAT>20180606</CREDAT>
<CRETIM>133420</CRETIM>
<SERIAL>20180606133420</SERIAL>
</EDI_DC40>
</IDOC>
</MATMAS01>
',"application/xml") ]]>
</ee:set-payload>
</ee:message>
</ee:transform>
<sap:send doc:name="Send IDoc" doc:id="9d6b0825-7cfb-4c3b-bc6a-b9eae917af9b" config-ref="SAP_Outbound" key="MATMAS01"/>
<logger level="INFO" doc:name="Logger" doc:id="8fd50dd8-8db4-4271-863b-ef7a463dcaea" />
</flow>
</mule>
xml
この例は、外部 SAP からの受信 IDoc 要求を待機する Mule アプリケーションを作成する方法を示しています。この例でアプリケーションは RFC サーバーのように機能し、自身を SAP ゲートウェイとして登録します。アプリケーションは IDoc 要求を受信すると、リモート関数コール (RFC) コールを使用して SAP に IDoc の作成を要求します。その後、IDoc コンテンツを Studio コンソールに記録します。
次のスクリーンショットは、この例の Studio フローを示しています。
最初のフローでは BAPI 関数を使用して IDoc 要求を外部 SAP システムに送信します。このフローを設定する手順は、次のとおりです。
Anypoint Studio で、新しい Mule プロジェクトを作成します。
[Mule Palette (Mule パレット)] ビューから、[HTTP] を選択して [Listener] ソースをキャンバスにドラッグします。
デフォルト値を使用してグローバル要素を設定します。
[Listener (リスナー)] プロパティタブで、パスを /trigger
に設定します。
[Transform message] コンポーネントを [Listener] の横にドラッグします。
このメッセージのコンテンツは、IDoc 要求を受信する BAPI 関数のペイロードです。
[Transform Message] コンポーネントの [Output (出力)] セクションで、括弧を次のテキストで上書きします。
%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
},
}
}
dataweave
[Mule Palette (Mule パレット)] ビューから、[SAP] を選択して [Synchronous Remote Function Call] 操作を [Transform Message] コンポーネントの横にドラッグします。
SAP_Config
というグローバル要素を作成し、接続情報を指定します。
[Test Connection (接続をテスト)] をクリックして、Mule Runtime Engine が SAP インスタンスに接続できることを確認します。
2 番目のフローは新しい各 IDoc 要求を Studio コンソールに記録します。このフローを設定する手順は、次のとおりです。
[Mule Palette (Mule パレット)] ビューから、[SAP] を選択して [Document listener] ソースをキャンバスにドラッグします。
ソースの新しいグローバル要素を作成し、必須情報を指定します。
[Document listener] のプロパティに次の値を設定します。
項目 | 値 |
---|---|
Gateway host (ゲートウェイホスト) |
ゲートウェイサーバーを実行するホスト |
Gateway service (ゲートウェイサービス) |
|
Program id (プログラム ID) |
|
Connection count (接続数) |
|
Idoc type filter regex (Idoc 種別検索条件の正規表現) |
|
[Gateway host (ゲートウェイホスト)]、[Gateway service (ゲートウェイサービス)]、[Program id (プログラム ID)] は、顧客の SAP チームから取得する必要があります。 SAP インスタンスに関連するすべての情報 (設定やログイン情報など) を顧客の SAP チームから取得する必要があります。 |
[Mule Palette (Mule パレット)] ビューから、[Core (コア)] を選択して [Logger] コンポーネントをキャンバス上の [Document listener] の横にドラッグします。
[File (ファイル)] > [Save (保存)] をクリックして、アプリケーションを保存します。
Mule アプリケーションを実行する手順は、次のとおりです。
[Run (実行)] > [Run as (別のユーザーとして実行)] > [Mule Application (Mule アプリケーション)] をクリックします。
Web ブラウザーから次の URL を入力してアプリケーションをテストします。
http://localhost:8081/trigger
Studio で次のコードを新しい Mule アプリケーションに貼り付ければ、IDoc 要求を受信するフローの例をすばやく読み込むことができます。環境に合わせて値を変更してください。
%dw 2.0
output application/xml
---
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core" xmlns:http="http://www.mulesoft.org/schema/mule/http"
xmlns:sap="http://www.mulesoft.org/schema/mule/sap"
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/sap http://www.mulesoft.org/schema/mule/sap/current/mule-sap.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/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd">
<http:listener-config name="HTTP_Listener_config" doc:name="HTTP Listener config" doc:id="75b36b20-040b-401f-a65c-f0a966b51190" >
<http:listener-connection host="0.0.0.0" port="8081" />
</http:listener-config>
<sap:sap-config name="SAP_Config" doc:name="SAP Config" doc:id="1f7e7c6e-4bb5-4270-870f-442cda3e3eb8" >
<sap:simple-connection-provider-connection username="User1" password="myPassword" systemNumber="00" client="800" applicationServerHost="sap.test.net" />
</sap:sap-config>
<flow name="sap-receive-idocFlow1" doc:id="bea8cd17-64d9-4f32-8229-d7eb909e8ee1">
<http:listener doc:name="Listener" doc:id="448acc4a-0078-485b-bc10-f70d05abf721" config-ref="HTTP_Listener_config" path="/trigger" />
<ee:transform doc:name="Transform Message" doc:id="44124bf5-7caf-4050-a3a6-06cfbd37da48">
<ee:message>
<ee:set-payload>
<![CDATA[%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
},
}
}]]>
</ee:set-payload>
</ee:message>
</ee:transform>
<sap:sync-rfc doc:name="Synchronous Remote Function Call" doc:id="e420d5e1-c436-471e-aa48-59a7d2cee1b9" key="ZCAFM_TRIGGER_IDOC_BY_MSG_TYPE" config-ref="SAP_Config" />
</flow>
<flow name="sap-receive-idocFlow2" doc:id="4b070ed0-19ac-4899-82ce-275226b08426" >
<sap:document-listener doc:name="Document listener" doc:id="a0d3bf88-1bf1-4210-9cf1-5403f30b2d80" gatewayHost="xxx.com" gatewayService="3200" programID="MULE11_IDOC_PID" config-ref="SAP_Config"/>
<logger level="INFO" doc:name="Logger" doc:id="db7ff63b-31b7-48ab-b0ad-73082f4b66c7" message="#[payload]"/>
</flow>
</mule>
dataweave
Studio コンソールでの応答例
<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>
...
dataweave
この例は、SAP 関数を受信する Mule アプリケーションを作成する方法を示しています。この例では、関数が別の Mule フローまたは SAP の GUI からトリガーされたときに結果を表示します。次のスクリーンショットは、この例の Studio フローを示しています。
フローを作成する手順は、次のとおりです。
[Mule Palette (Mule パレット)] ビューから、[SAP] を選択して [Function listener] ソースをキャンバスにドラッグします。
SAP_Inbound
というグローバル要素を作成し、接続情報を指定します。
プロパティタブで必須項目を設定します。
[Mule Palette (Mule パレット)] ビューで [Core (コア)] を選択して [Transform Message] コンポーネントを [Function listener] の右側にドラッグします。
メタデータに基づいて詳細を指定します。次に例を示します。
[File (ファイル)] > [Save (保存)] をクリックして、アプリケーションを保存します。
[Run (実行)] > [Run as (別のユーザーとして実行)] > [Mule Application (Mule アプリケーション)] をクリックします。
Studio で次のコードを新しい Mule アプリケーションに貼り付ければ、関数を受信するフローの例をすばやく読み込むことができます。環境に合わせて値を変更してください。
%dw 2.0
output application/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://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/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">
<sap:sap-config name="SAP_Inbound" doc:name="SAP Config" doc:id="9eb4758e-4eb4-4291-9604-84586dda5cd3" >
<sap:simple-connection-provider-connection username="User1" password="Password" systemNumber="00" client="800" applicationServerHost="sapdev.muletest.net" />
</sap:sap-config>
<flow name="receive-a-functionFlow" doc:id="5104aaba-944d-4b8b-ba35-fc210e1f2c4e" >
<sap:function-listener doc:name="Function listener" doc:id="58ee92ea-967f-4a9c-a14d-164032b1b8ee" config-ref="SAP_Inbound" gatewayHost="gateway.host.com" gatewayService="3200" programID="MULE01_API_PID"/>
<ee:transform doc:name="Transform Message" doc:id="59b4c48f-40ca-4587-80e3-f06d895e1c5b" >
<ee:message >
<ee:set-payload >
<![CDATA[%dw 2.0
output application/java
---
{
}]]>
</ee:set-payload>
</ee:message>
</ee:transform>
</flow>
</mule>
dataweave
この例では、銀行レコードを処理する標準 BAPI で 2 つのコールを実行し、それらのトランザクションを管理します。
次のスクリーンショットは、この例の Studio フローを示しています。
最初のフローは、米国の利用可能な銀行のリストを取得して、最初の結果を絞り込み、銀行に関する情報をフェッチします。SAP に対するクエリでは、トランザクションは必要ありません。このフローを設定する手順は、次のとおりです。
Anypoint Studio で、新しい Mule プロジェクトを作成します。
[Mule Palette (Mule パレット)] ビューから、[HTTP] を選択して [Listener] ソースをキャンバスにドラッグします。
デフォルト値を使用してグローバル要素を設定します。
[Listener (リスナー)] プロパティタブで、パスを /sync-rfc
に設定します。
[Transform message] コンポーネントを [Listener] の横にドラッグします。
このメッセージのコンテンツにより、国で銀行が絞り込まれます。
[Transform Message] コンポーネントの [Output (出力)] セクションで、括弧を次のテキストで上書きします。
%dw 2.0 output application/xml --- { BAPI_BANK_GETLIST: { "import": { BANK_CTRY: "US", MAX_ROWS: 0 } } }
[Mule Palette (Mule パレット)] ビューから、[SAP] を選択して [Synchronous Remote Function Call] 操作を [Transform Message] コンポーネントの横にドラッグします。
SAP_Config
というグローバル要素を作成し、接続情報を指定します。
[Test Connection (接続をテスト)] をクリックして、Mule Runtime Engine が SAP インスタンスに接続できることを確認します。
[Function Name (関数名)] に「BAPI_BANK_GETLIST
」と入力し、[Content (コンテンツ)] に「payload
」と入力します。
別の [Transform Message] コンポーネントを [Synchronous Remote Function Call] の横にドラッグします。
このメッセージのコンテンツにより、最初の結果が絞り込まれます。
[Transform Message] コンポーネントの [Output (出力)] セクションで、括弧を次のテキストで上書きします。
%dw 2.0 output application/xml --- { BAPI_BANK_GETDETAIL: { "import" : { BANKCOUNTRY: payload.BAPI_BANK_GETLIST.tables.BANK_LIST.*row[0].BANK_CTRY, BANKKEY: payload.BAPI_BANK_GETLIST.tables.BANK_LIST.*row[0].BANK_KEY } } }
[Mule Palette (Mule パレット)] ビューから、[SAP] を選択して別の [Synchronous Remote Function Call] 操作を [Transform Message] コンポーネントの横にドラッグします。
SAP_Config
というグローバル要素を作成し、接続情報を指定します。
[Test Connection (接続をテスト)] をクリックして、Mule Runtime Engine が SAP インスタンスに接続できることを確認します。
[Function Name (関数名)] に「"BAPI_BANK_GETDETAIL"
」と入力し、[Content (コンテンツ)] に「payload
」と入力します。
[Mule Palette (Mule パレット)] ビューから、[Core (コア)] を選択して [Logger] コンポーネントを [Synchronous Remote Function Call] の横にドラッグします。
2 番目のフローは、データから販売注文を作成します。try
を BAPI コールに追加して、トランザクションを作成する必要があります。そのようにしないと、変更が SAP に反映されません。このフローを設定する手順は、次のとおりです。
[Mule Palette (Mule パレット)] ビューから、[HTTP] を選択して [Listener] ソースをキャンバスにドラッグします。
デフォルト値を使用してグローバル要素を設定します。
[Listener (リスナー)] プロパティタブで、パスを /sync-mule-transaction
に設定します。
[Transform message] コンポーネントを [Listener] の横にドラッグします。
このメッセージのコンテンツにより、データから販売注文が作成されます。
[Transform Message] コンポーネントの [Output (出力)] セクションで、括弧を次のテキストで上書きします。
%dw 2.0
output application/xml
---
{
BAPI_SALESORDER_CREATEFROMDAT2: {
"import": {
ORDER_HEADER_IN: {
DOC_TYPE: "TA",
SALES_ORG: "3000",
DISTR_CHAN: "10",
DIVISION: "00"
},
ORDER_HEADER_INX: {
DOC_TYPE: "X",
SALES_ORG: "X",
DISTR_CHAN: "X",
DIVISION: "X"
}
},
tables: {
ORDER_ITEMS_IN: {
row: {
ITM_NUMBER: "000010",
MATERIAL: "000000000050066128" as Number as String {format: "000000000000000000"},
PLANT: "3000",
TARGET_QTY: "1"
}
},
ORDER_ITEMS_INX: {
row: {
ITM_NUMBER: "000010",
MATERIAL: "X",
PLANT: "X",
TARGET_QTY: "X"
}
},
ORDER_PARTNERS: {
row: {
PARTN_ROLE: "WE",
PARTN_NUMB: "0000000448"
}
},
ORDER_SCHEDULES_IN: {
row: {
ITM_NUMBER: "000010",
SCHED_LINE: "0001",
REQ_QTY: "1"
}
},
ORDER_SCHEDULES_INX: {
row: {
ITM_NUMBER: "000010",
SCHED_LINE: "0001",
REQ_QTY: "X"
}
}
}
}
}
[Mule Palette (Mule パレット)] ビューから、[SAP] を選択して [Synchronous Remote Function Call] 操作を [Transform Message] コンポーネントの横にドラッグします。
SAP_Config
というグローバル要素を作成し、接続情報を指定します。
[Test Connection (接続をテスト)] をクリックして、Mule Runtime Engine が SAP インスタンスに接続できることを確認します。
[Function Name (関数名)] に「BAPI_SALESORDER_CREATEFROMDAT2
」と入力し、[Content (コンテンツ)] に「payload
」と入力します。
[Mule Palette (Mule パレット)] ビューから [Core (コア)] を選択して [On Error Continue] コンポーネントを [Synchronous Remote Function Call] の下にドラッグします。
[Mule Palette (Mule パレット)] ビューから、[Core (コア)] を選択して [Logger] コンポーネントを [On Error Continue] にドラッグします。
[Mule Palette (Mule パレット)] ビューから、[Core (コア)] を選択して別の [Logger] コンポーネントを [Synchronous Remote Function Call] の横にドラッグします。
[Message (メッセージ)] に「payload.BAPI_SALESORDER_CREATEFROMDAT2.export.SALESDOCUMENT
」と入力します。
3 番目のフローは、トランザクション ID を作成してリストを取得します。非同期コールでは、応答を想定していないため、トランザクションを管理する別の方法が必要になります。特定の操作を使用して、非同期コールのトランザクションを管理します。このフローを設定する手順は、次のとおりです。
[Mule Palette (Mule パレット)] ビューから、[HTTP] を選択して [Listener] ソースをキャンバスにドラッグします。
デフォルト値を使用してグローバル要素を設定します。
[Listener (リスナー)] プロパティタブで、パスを /async-rfc
に設定します。
[Mule Palette (Mule パレット)] ビューから、[SAP] を選択して [Start SAP transaction] 操作を [Listener] の横にドラッグします。
SAP_Config
というグローバル要素を作成し、接続情報を指定します。
[Test Connection (接続をテスト)] をクリックして、Mule Runtime Engine が SAP インスタンスに接続できることを確認します。
[Mule Palette (Mule パレット)] ビューから、[Core (コア)] を選択して [Set Variable] トランスフォーマーを [Start SAP transaction] の横にドラッグします。
[Name (名前)] に「createdTransactionId
」と入力し、[値 (コンテンツ)] に「payload
」と入力します。
[Transform message] コンポーネントを [Set Variable] の横にドラッグします。
このメッセージのコンテンツにより、銀行のリストが取得されます。
[Transform Message] コンポーネントの [Output (出力)] セクションで、括弧を次のテキストで上書きします。
%dw 2.0 output application/xml --- %dw 2.0 output application/xml --- { BAPI_BANK_GETLIST: { "import": { BANK_CTRY: "US", MAX_ROWS: 0 } } }
[Mule Palette (Mule パレット)] ビューから、[SAP] を選択して [Asynchronous Remote Function Call] 操作を [Transform Message] の横にドラッグします。
SAP_Config
というグローバル要素を作成し、接続情報を指定します。
[Test Connection (接続をテスト)] をクリックして、Mule Runtime Engine が SAP インスタンスに接続できることを確認します。
[Function Name (関数名)] に「"BAPI_BANK_GETLIST"
」と入力し、[Content (コンテンツ)] に「payload
」と入力します。
[Mule Palette (Mule パレット)] ビューから、[SAP] を選択して [Confirm transaction] 操作を [Asynchronous Remote Function Call] の横にドラッグします。
SAP_Config
というグローバル要素を作成し、接続情報を指定します。
[Test Connection (接続をテスト)] をクリックして、Mule Runtime Engine が SAP インスタンスに接続できることを確認します。
[Transaction ID (TID) (トランザクション ID (TID))] に「vars.createdTransactionId
」と入力します。
Mule アプリケーションを実行する手順は、次のとおりです。
[Run (実行)] > [Run as (別のユーザーとして実行)] > [Mule Application (Mule アプリケーション)] をクリックします。
Web ブラウザーから次の URL を入力して最初のフローをテストします。
http://localhost:8081/sync-rfc
次のような要求の XML 出力が表示されます。
<BAPI_BANK_GETDETAIL>
<import>
<BANKCOUNTRY>US</BANKCOUNTRY>
<BANKKEY>021000089</BANKKEY>
</import>
<export>
<BANK_ADDRESS>
<BANK_NAME>Citibank</BANK_NAME>
<REGION>NY</REGION>
<STREET>Park Avenue</STREET>
<CITY>New York</CITY>
<SWIFT_CODE>CITIUSXX</SWIFT_CODE>
<BANK_GROUP/>
<POBK_CURAC/>
<BANK_NO>021000089</BANK_NO>
<POST_BANK/>
<BANK_BRANCH>Manhattan</BANK_BRANCH>
<ADDR_NO/>
</BANK_ADDRESS>
<BANK_DETAIL>
<CREAT_DATE>2005-03-11</CREAT_DATE>
<CREATOR>C5031845</CREATOR>
<METHOD/>
<FORMATTING/>
<BANK_DELETE/>
<IBAN_RULE/>
<B2B_SUPPORTED>0</B2B_SUPPORTED>
<COR1_SUPPORTED>0</COR1_SUPPORTED>
<R_TRANSACTION_SUPPORTED>0</R_TRANSACTION_SUPPORTED>
</BANK_DETAIL>
<RETURN>
<TYPE/>
<ID/>
<NUMBER>000</NUMBER>
<MESSAGE/>
<LOG_NO/>
<LOG_MSG_NO>000000</LOG_MSG_NO>
<MESSAGE_V1/>
<MESSAGE_V2/>
<MESSAGE_V3/>
<MESSAGE_V4/>
<PARAMETER/>
<ROW>0</ROW>
<FIELD/>
<SYSTEM/>
</RETURN>
</export>
</BAPI_BANK_GETDETAIL>
dataweave
Web ブラウザーから次の URL を入力して 2 番目のフローをテストします。
http://localhost:8081/sync-mule-transaction
次のような要求の XML 出力が表示されます。
<BAPI_SALESORDER_CREATEFROMDAT2>
<import>
<BEHAVE_WHEN_ERROR/>
<BINARY_RELATIONSHIPTYPE/>
<CONVERT/>
<INT_NUMBER_ASSIGNMENT/>
<LOGIC_SWITCH>
<PRICING/>
<ATP_WRKMOD/>
<SCHEDULING/>
<NOSTRUCTURE/>
<COND_HANDL/>
<ADDR_CHECK/>
</LOGIC_SWITCH>
<ORDER_HEADER_IN>
<REFOBJTYPE/>
<REFOBJKEY/>
<REFDOCTYPE/>
<DOC_TYPE>TA</DOC_TYPE>
<COLLECT_NO/>
<SALES_ORG>3000</SALES_ORG>
<DISTR_CHAN>10</DISTR_CHAN>
<DIVISION>00</DIVISION>
<SALES_GRP/>
<SALES_OFF/>
<REQ_DATE_H/>
....................
<row id="2">
<TYPE>S</TYPE>
<ID>V1</ID>
<NUMBER>311</NUMBER>
<MESSAGE>Standard Order 23669 has been saved</MESSAGE>
<LOG_NO/>
<LOG_MSG_NO>000000</LOG_MSG_NO>
<MESSAGE_V1>Standard Order</MESSAGE_V1>
<MESSAGE_V2>23669</MESSAGE_V2>
<MESSAGE_V3/>
<MESSAGE_V4/>
<PARAMETER>SALES_HEADER_IN</PARAMETER>
<ROW>0</ROW>
<FIELD/>
<SYSTEM>T90CLNT090</SYSTEM>
</row>
</RETURN>
</tables>
</BAPI_SALESORDER_CREATEFROMDAT2>
dataweave
Web ブラウザーから次の URL を入力して 3 番目のフローをテストします。
http://localhost:8081/async-rfc
次のような要求の XML 出力が表示されます。
<BAPI_BANK_GETLIST>
<import>
<BANK_CTRY>US</BANK_CTRY>
<MAX_ROWS>0</MAX_ROWS>
</import>
</BAPI_BANK_GETLIST>
dataweave
トランザクションの管理の例のフローをすばやく読み込むには、Studio で次のコードを新しい Mule アプリケーションに貼り付けます。環境に合わせて値を変更してください。
<?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/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd 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">
<configuration-properties file="mule-artifact.properties"/>
<http:listener-config name="HTTP_Listener_config" doc:name="HTTP Listener config" doc:id="b89c52ef-8c07-4788-b87e-4c698d718341" >
<http:listener-connection host="0.0.0.0" port="8081" />
</http:listener-config>
<sap:sap-config name="SAP_Config" doc:name="SAP Config" doc:id="90c5a950-aefd-4fba-9e28-db3fa29767bb">
<sap:simple-connection-provider-connection username="${sap.jcoUser}" password="${sap.jcoPasswd}"
systemNumber="${sap.jcoSysnr}" client="${sap.jcoClient}"
applicationServerHost="${sap.jcoAsHost}"/>
</sap:sap-config>
<flow name="bapi-srfc" doc:id="26ade074-48b4-47bb-a8e9-ca040034dee6" >
<http:listener doc:name="Listener" doc:id="16a60ec9-f1c9-4a07-9a02-e7fcbb185a12" config-ref="HTTP_Listener_config" path="/sync-rfc"/>
<ee:transform doc:name="Filter by country" doc:id="f285db36-da88-4e96-b7e6-c92acf4a8e5b" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/xml
---
{
BAPI_BANK_GETLIST: {
"import": {
BANK_CTRY: "US",
MAX_ROWS: 0
}
}
}]]></ee:set-payload>
</ee:message>
</ee:transform>
<sap:sync-rfc doc:name="Synchronous Remote Function Call" doc:id="cd5a8815-c5be-4bcc-aaf5-77c90090d124" config-ref="SAP_Config" key="BAPI_BANK_GETLIST"/>
<ee:transform doc:name="Filter first result" doc:id="55eecae1-4e9a-4e5b-93f2-1633bf14dbc9" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/xml
---
{
BAPI_BANK_GETDETAIL: {
"import" : {
BANKCOUNTRY: payload.BAPI_BANK_GETLIST.tables.BANK_LIST.*row[0].BANK_CTRY,
BANKKEY: payload.BAPI_BANK_GETLIST.tables.BANK_LIST.*row[0].BANK_KEY
}
}
}]]></ee:set-payload>
</ee:message>
</ee:transform>
<sap:sync-rfc doc:name="Synchronous Remote Function Call" doc:id="10404fb9-f887-4cea-9a64-32f8559814d2" config-ref="SAP_Config" key='#["BAPI_BANK_GETDETAIL"]'/>
<logger level="INFO" doc:name="Logger" doc:id="f65b06a8-ff33-4906-9bd0-6c3895e5e0cf" message="#[payload]"/>
</flow>
<flow name="bapi-mule-transaction" doc:id="f47687b3-6e2b-4c22-b4b1-900f9ac5a078" >
<http:listener doc:name="Listener" doc:id="c16d6ef3-4601-4260-b82f-37f35540fdd3" config-ref="HTTP_Listener_config" path="/sync-mule-transaction"/>
<ee:transform doc:name="Transform Message" doc:id="5b07e4f5-12bb-4ed2-941f-599789e5e04f">
<ee:message>
<ee:set-payload><![CDATA[%dw 2.0
output application/xml
---
{
BAPI_SALESORDER_CREATEFROMDAT2: {
"import": {
ORDER_HEADER_IN: {
DOC_TYPE: "TA",
SALES_ORG: "3000",
DISTR_CHAN: "10",
DIVISION: "00"
},
ORDER_HEADER_INX: {
DOC_TYPE: "X",
SALES_ORG: "X",
DISTR_CHAN: "X",
DIVISION: "X"
}
},
tables: {
ORDER_ITEMS_IN: {
row: {
ITM_NUMBER: "000010",
MATERIAL: "000000000050066128" as Number as String {format: "000000000000000000"},
PLANT: "3000",
TARGET_QTY: "1"
}
},
ORDER_ITEMS_INX: {
row: {
ITM_NUMBER: "000010",
MATERIAL: "X",
PLANT: "X",
TARGET_QTY: "X"
}
},
ORDER_PARTNERS: {
row: {
PARTN_ROLE: "WE",
PARTN_NUMB: "0000000448"
}
},
ORDER_SCHEDULES_IN: {
row: {
ITM_NUMBER: "000010",
SCHED_LINE: "0001",
REQ_QTY: "1"
}
},
ORDER_SCHEDULES_INX: {
row: {
ITM_NUMBER: "000010",
SCHED_LINE: "0001",
REQ_QTY: "X"
}
}
}
}
}]]></ee:set-payload>
</ee:message>
</ee:transform>
<try doc:name="Try" doc:id="a5e37154-87b2-495a-9576-509d21d2d234" transactionalAction="ALWAYS_BEGIN">
<sap:sync-rfc doc:name="Synchronous Remote Function Call" doc:id="8af8b804-57d2-4b44-a0d2-7a50d7018573" config-ref="SAP_Config" key="BAPI_SALESORDER_CREATEFROMDAT2"/>
<error-handler>
<on-error-continue enableNotifications="true" logException="true" doc:name="On Error Continue" doc:id="144141a8-7941-41f3-837b-40a2e25905be">
<logger level="INFO" doc:name="Logger" doc:id="50a3d4c1-1a01-4a8b-ac9d-cdb354ec8ddb" message="Bapi Error" />
</on-error-continue>
</error-handler>
</try>
<logger level="INFO" doc:name="Logger" doc:id="36097fa1-0a5d-44fc-9432-b0ef048a85c7" message="#[payload.BAPI_SALESORDER_CREATEFROMDAT2.export.SALESDOCUMENT]"/>
</flow>
<flow name="async-rfc" doc:id="ba757987-1e8c-47d5-8168-23043948ae8f" >
<http:listener doc:name="Listener" doc:id="ee6d3bf1-3474-4d38-80f9-2651f374d876" config-ref="HTTP_Listener_config" path="/async-rfc"/>
<sap:create-transaction-id doc:name="Start SAP transaction" doc:id="3bfd77a6-3397-45cb-b9c6-6450f3f010c8" config-ref="SAP_Config"/>
<set-variable value="#[payload]" doc:name="Set Variable" doc:id="a20de9fb-61ec-4d90-8da7-fee910da7d49" variableName="createdTransactionId"/>
<ee:transform doc:name="Transform Message" doc:id="7c000a34-c035-470b-8ff3-546e8156ece4" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/xml
---
{
BAPI_BANK_GETLIST: {
"import": {
BANK_CTRY: "US",
MAX_ROWS: 0
}
}
}]]></ee:set-payload>
</ee:message>
</ee:transform>
<sap:async-rfc doc:name="Asynchronous Remote Function Call" doc:id="a45ec861-be1b-4c16-8d3e-ef83dab24cea" config-ref="SAP_Config" key='#["BAPI_BANK_GETLIST"]' transactionId="#[vars.createdTransactionId]"/>
<sap:confirm-transaction-id doc:name="Confirm transaction" doc:id="939e882d-9416-40c0-8b5d-85871e264aa6" config-ref="SAP_Config" transactionId="#[vars.createdTransactionId]"/>
</flow>
</mule>
xml
この例では、1 つのゲートウェイ接続ではなく、負荷を分散してパフォーマンスを向上させるために複数のゲートウェイ接続を使用して、メッセージサーバーを設定する Mule アプリケーションを作成する方法を示します。
次のスクリーンショットは、この例の Studio フローを示しています。
最初のフローは、メッセージサーバーを Document listener ソースに渡します。このフローを設定する手順は、次のとおりです。
Anypoint Studio で、新しい Mule プロジェクトを作成します。
[Mule Palette (Mule パレット)] ビューから、[SAP] を選択して [Document listener] ソースをキャンバスにドラッグします。
Document listener ソースのグローバル要素を設定し、必須項目に入力します。
[Document listener] プロパティタブで、次の項目を設定します。
項目 | 値 |
---|---|
Gateway host (ゲートウェイホスト) |
|
Gateway service (ゲートウェイサービス) |
|
Program id (プログラム ID) |
|
Connection count (接続数) |
|
[Mule Palette (Mule パレット)] ビューから、[Core (コア)] を選択して [Logger] コンポーネントをキャンバス上の [Document listener] の横にドラッグします。
2 番目のフローは、最初の個別のゲートウェイをトリガーします。このフローを設定する手順は、次のとおりです。
[Mule Palette (Mule パレット)] ビューから、[HTTP] > [Listener] ソースをキャンバスにドラッグします。
デフォルト値を使用してグローバル要素を設定します。
[Listener (リスナー)] プロパティタブで、パスを /C
に設定します。
[Mule Palette (Mule パレット)] ビューから、[Core (コア)] を選択して [Transform Message] コンポーネントを [Listener] ソースの横にドラッグします。
[Transform Message] コンポーネントの [Output (出力)] セクションで、括弧を次のテキストで上書きします。
%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 }, } }
[Mule Palette (Mule パレット)] ビューから、[SAP] を選択して [Synchronous Remote Function Call] 操作をキャンバスにドラッグします。
Synchronous Remote Function Call 操作のグローバル要素を設定し、必須項目に入力します。
[Synchronous Remote Function Call] プロパティタブで、次の項目を設定します。
項目 | 値 |
---|---|
Function Name (関数名) |
|
Content (コンテンツ) |
|
[Mule Palette (Mule パレット)] ビューから、[Core (コア)] を選択して [Transform Message] コンポーネントを [Synchronous Remote Function Call] 操作の横にドラッグします。
[Transform Message] コンポーネントの [Output (出力)] セクションで、括弧を次のテキストで上書きします。
%dw 2.0 output application/json --- payload
3 番目のフローは、2 番目の個別のゲートウェイをトリガーします。このフローを設定する手順は、次のとおりです。
[Mule Palette (Mule パレット)] ビューから、[HTTP] > [Listener] ソースをキャンバスにドラッグします。
デフォルト値を使用してグローバル要素を設定します。
[Listener (リスナー)] プロパティタブで、パスを /d
に設定します。
[Mule Palette (Mule パレット)] ビューから、[Core (コア)] を選択して [Transform Message] コンポーネントを [Listener] ソースの横にドラッグします。
[Transform Message] コンポーネントの [Output (出力)] セクションで、括弧を次のテキストで上書きします。
%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 }, } }
[Mule Palette (Mule パレット)] ビューから、[SAP] を選択して [Synchronous Remote Function Call] 操作をキャンバスにドラッグします。
Synchronous Remote Function Call 操作のグローバル要素を設定し、必須項目に入力します。
[Synchronous Remote Function Call] プロパティタブで、次の項目を設定します。
項目 | 値 |
---|---|
Function Name (関数名) |
|
Content (コンテンツ) |
|
[Mule Palette (Mule パレット)] ビューから、[Core (コア)] を選択して [Transform Message] コンポーネントを [Synchronous Remote Function Call] 操作の横にドラッグします。
[Transform Message] コンポーネントの [Output (出力)] セクションで、括弧を次のテキストで上書きします。
%dw 2.0 output application/json --- payload
Mule アプリケーションを実行する手順は、次のとおりです。
[Run (実行)] > [Run as (別のユーザーとして実行)] > [Mule Application (Mule アプリケーション)] をクリックします。
Studio で次のコードを新しい Mule アプリケーションに貼り付ければ、複数のゲートウェイの設定例のフローをすばやく読み込むことができます。環境に合わせて値を変更してください。
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:sap="http://www.mulesoft.org/schema/mule/sap" xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core"
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/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd
http://www.mulesoft.org/schema/mule/sap http://www.mulesoft.org/schema/mule/sap/current/mule-sap.xsd">
<http:listener-config name="HTTP_Listener_config" doc:name="HTTP Listener config" doc:id="5d46abaa-dc40-457b-a7df-ce54fc8f3a43" >
<http:listener-connection host="0.0.0.0" port="8081" />
</http:listener-config>
<sap:sap-config name="SAP_Config_C" doc:name="SAP Config" doc:id="78a4da95-2381-4bd1-919c-fc86ae23c134" >
<sap:simple-connection-provider-connection systemNumber="02" client="800" applicationServerHost="34.225.79.228" />
</sap:sap-config>
<sap:sap-config name="SAP_Config_D" doc:name="SAP Config" doc:id="0f026b1e-96f8-4ef8-ae46-f4677b1f95ae" >
<sap:simple-connection-provider-connection systemNumber="03" client="800" applicationServerHost="44.214.23.92" />
</sap:sap-config>
<sap:sap-config name="SAP_Config_B" doc:name="SAP Config" doc:id="829dbb29-682b-443d-b85c-47ad20d7c134" >
<sap:simple-connection-provider-connection systemNumber="00" client="800" applicationServerHost="54.160.77.19"/>
</sap:sap-config>
<flow name="sapgatewaytestFlow" doc:id="2f660909-8fef-4872-85d0-efd172ac47fe" >
<sap:document-listener doc:name="Document listener" doc:id="36de92d6-8796-46f6-b280-ac288a57b343" config-ref="SAP_Config_B" gatewayHost="54.160.77.19" gatewayService="3300" programID="MULE11_IDOC_PID"/>
<logger level="INFO" doc:name="Logger" doc:id="51941f3f-a26e-4f60-99bf-637ce7f39e12" message="#[payload]"/>
</flow>
<flow name="sapgatewaytestFlowC" doc:id="4be0cd2f-197c-4cd2-afa5-5833b42399d2" >
<http:listener doc:name="Listener" doc:id="3561b7af-6a02-4497-b02a-09e5dcc71f46" config-ref="HTTP_Listener_config" path="/c"/>
<ee:transform doc:name="Transform Message" doc:id="71afc270-fc02-4fd8-bf82-a97a3eac86ac" >
<ee:message >
<ee:set-payload ><![CDATA[%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
},
}
}]]></ee:set-payload>
</ee:message>
</ee:transform>
<sap:sync-rfc doc:name="Synchronous Remote Function Call" doc:id="d3b152e0-db3a-4745-a9fe-60cc6ade0581" config-ref="SAP_Config_C" key='#["ZMMFM_TRIGGER_IDOC_MATMAS"]'/>
<ee:transform doc:name="Transform Message" doc:id="387d00c7-efbf-4675-9f50-5fbafe592ec0" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
payload]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="sapgatewaytestFlowD" doc:id="3b2c4526-74e7-4a21-b18a-f11ba2f86beb" >
<http:listener doc:name="Listener" doc:id="fa1567ab-1ded-415e-8dd2-8a0833451176" config-ref="HTTP_Listener_config" path="/d"/>
<ee:transform doc:name="Transform Message" doc:id="b71d390e-5de2-435d-b0b0-51efb6f70b60" >
<ee:message >
<ee:set-payload ><![CDATA[%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
},
}
}]]></ee:set-payload>
</ee:message>
</ee:transform>
<sap:sync-rfc doc:name="Synchronous Remote Function Call" doc:id="edfae6dd-edc3-4e56-8a26-d3ad1b51db04" config-ref="SAP_Config_D" key='#["ZMMFM_TRIGGER_IDOC_MATMAS"]'/>
<ee:transform doc:name="Transform Message" doc:id="fd6eb7f2-0c9f-43c6-842d-02be2216620a" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
payload]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
</mule>
dataweave