2023 Jul 31 7:56 AM
背景:開発者拡張(Developer Extensibility)の検証を行っており、自作したClassを外部システムから呼び出したいと考えております。ゆくゆくはFioriやCIからClassを呼び出したいと考えていますが、まずはPostmanからの呼び出し成功を目指しています。
ADTでクラス(言語:ABAP for Cloud Development)を作成して、Use in Cloud Developmentをチェックしてリリースをしました。
Classic ABAPの汎用モジュールをRFCで呼び出したように、このクラスを外部システムから呼び出すことは可能でしょうか。
呼び出し方法、設定の手順について教えていただきたいです。
<作成クラス>
CLASS zcl_ex_system_calltest01 DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
METHODS zm_create_salesorder01.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS zcl_ex_system_calltest01 IMPLEMENTATION.
METHOD zm_create_salesorder01.
* CREATE sales order
MODIFY ENTITIES OF i_salesordertp
ENTITY salesorder
CREATE
FIELDS ( salesordertype
salesorganization
distributionchannel
organizationdivision
soldtoparty
purchaseorderbycustomer
)
WITH VALUE #( ( %cid = 'H001'
%data = VALUE #( salesordertype = 'TA'
salesorganization = '1510'
distributionchannel = '10'
organizationdivision = '00'
soldtoparty = '0015100001'
purchaseorderbycustomer = 'external system called'
) ) )
MAPPED DATA(ls_mapped)
FAILED DATA(ls_failed)
REPORTED DATA(ls_reported_modify).
COMMIT ENTITIES.
ENDMETHOD.
ENDCLASS.
<リリース設定>
以上、よろしくお願いいたします。
2023 Aug 01 4:51 AM
ABAP素人ですが、外部システムから呼び出すというのは httpという事になると思います。
RAPで開発して OData で Expose すればhttp コールできるので、独自のロジックは Behavior 定義して書くのだと思います。 ABAPer の方コメント追加してください。
ABAP RESTful Application Programming Model (RAP) – FAQ
2023 Aug 01 4:57 AM
ABAP ObjectのクラスはJavaのクラスと同様にそれ単体では外部から呼び出しはできません。
もしもPostmanなど外部から呼び出したい場合は、RESTサービスなどのWebのAPIを作成する必要があります。
まずは、RAP(RESTful Application Programming Model)のチュートリアル等を確認してPostmanから呼べるものを作成し、そのロジック内にこちらのクラスを呼び出すソースを実装するというのが想定されるステップになるかと思います。
また、そちらのクラスの単体で動かしてみたいというだけでしたら、if_oo_adt_classrunのインターフェースを実装してMainのメソッドから呼び出してみるという手もあります。
https://developers.sap.com/tutorials/abap-environment-console-application.html
2023 Aug 01 5:02 AM
2023 Aug 02 1:08 AM