Function Imports(/iwbep/if_mgw_appl_srv_runtime~execute_action)
SAPの文書:Function Imports – SAP NetWeaver Gateway Foundation (SAP_GWFND) – SAP Library
The Open Data Protocol(OData)には、HTTPメソッドPOST、GET、PUT / MERGE、およびDELETEにマップされる標準のCRUD(Create, Retrieve, Update, and Delete)操作が含まれています。
さらに、ODataは、標準のCRUD操作にマップできないものについては、HTTPメソッドGETまたはPOSTによって呼び出すことができるさらなるサービス操作(関数インポート)をサポートします。 データモデル内に関数インポートを作成することにより、Service Builderでそのような追加のサービス操作を実装できます。
たとえば、次のカスタム操作用の関数インポートを作成できます。
- Confirm Work Item
- Check Flight Availability
カスタム操作を呼び出すために新しい関数インポートを作成するのは簡単ですが、使用する操作が標準のCRUD操作を使用して呼び出すことができる場合は、関数インポートを作成しないでください。 つまり、標準操作では呼び出せないカスタム操作に対してのみ関数インポートを作成する必要があります。
簡単に言えば、操作がCRUDシナリオに収まらない場合は、関数インポートで実行できます。
手順:
テーブルZUSERINFOが以下のようになっているとします。
そして特定の国別にユーザーを取得したいのであれば、関数インポートを実装できます。 関数インポートをUsersByCountryと呼びましょう。
データモデルを右クリックして関数インポートを作成します。 適切な名前を入力してください.
又はCreating High-Quality OData Services – SAP NetWeaver Gateway Foundation (SAP_GWFND) – SAP Library
下記のような必要事項を記入してください。 ここで覚えておいて欲しいのは、私たちはユーザのコレクションを返したいので、戻りエンティティセットとHTTPメソッドタイプをGETとして、戻りカーディナリティを0..nとして選択したことです。
関数インポートパラメータをクリックして、以下に示すようにインポートパラメータを作成します。 この場合、国の値を渡したいだけなので、国として1つのパラメータを指定します。
最後にプロジェクトを保存し、プロジェクトの一貫性をチェックしてランタイムオブジェクトを生成します。 すべて問題ないかどうかをチェックするには、GWクライアントで/ sap / opu / odata / sap / ZUSERINFO_SRV / $ metadataのようにサービスメタデータURLを実行します。
今度は関数インポート操作を実装します。 DPC_EXTクラスに移動して、メソッド/ IWBEP / IF_MGW_APPL_SRV_RUNTIME〜EXECUTE_ACTIONを再定義してください。
関数インポートを実装するためのコードを下に置きます。
METHOD /iwbep/if_mgw_appl_srv_runtime~execute_action.
DATA: ls_parameter TYPE /iwbep/s_mgw_name_value_pair,
lv_country TYPE string,
lt_userinfo TYPE TABLE OF zuserinfo,
ls_userinfo TYPE zuserinfo,
ls_entity TYPE zcl_zuserinfo_mpc=>ts_user,
lt_entityset TYPE zcl_zuserinfo_mpc=>tt_user.
IF iv_action_name = 'UsersByCountry'. " Check what action is being requested
IF it_parameter IS NOT INITIAL.
* Read Function import parameter value
READ TABLE it_parameter INTO ls_parameter WITH KEY name = 'Country'.
IF sy-subrc = 0.
lv_country = ls_parameter-value.
ENDIF.
IF lv_country IS NOT INITIAL.
SELECT * FROM zuserinfo INTO TABLE lt_userinfo WHERE country = lv_country.
LOOP AT lt_userinfo INTO ls_userinfo .
ls_entity-userid = ls_userinfo-userid.
ls_entity-firstname = ls_userinfo-firstname.
ls_entity-lastname = ls_userinfo-lastname.
ls_entity-email = ls_userinfo-email.
ls_entity-phone = ls_userinfo-phone.
ls_entity-country = ls_userinfo-country.
APPEND ls_entity TO lt_entityset.
ENDLOOP.
* Call methos copy_data_to_ref and export entity set data
copy_data_to_ref( EXPORTING is_data = lt_entityset
CHANGING cr_data = er_data ).
ENDIF.
ENDIF.
ENDIF.
ENDMETHOD.
関数インポートをテストするには、/ sap / opu / odata / sap / ZUSERINFO_SRV / UsersByCountry?Country = 'US'としてクエリを実行します
複数のパラメータがある場合は、カンマで区切ります。
Here IO_TECH_REQUEST_CONTEXT refers to /IWBEP/IF_MGW_REQ_FUNC_IMPORT
| OData Query | Method Parameter | Alternative way to get the value | Coding required to implement Query Operation |
|---|---|---|---|
| /sap/opu/odata/sap/ZUSERINFO_SRV/UsersByCountry?Country=’US’ | IT_PARAMETER | DATA: my_parameter TYPE /iwbep/t_mgw_name_value_pair. my_parameter = io_tech_request_context->get_parameters( ). | Yes |
参考文献:
Creating High-Quality OData Services – SAP NetWeaver Gateway Foundation (SAP_GWFND) – SAP Library







浙公网安备 33010602011771号