Tokyo Discussions
都市の垣根なく、日本語でQ&Aできます
cancel
Showing results for 
Search instead for 
Did you mean: 

開発者拡張で作成したクラスを外部システムから呼び出す方法

kurashige
Discoverer
0 Kudos
1,236

背景:開発者拡張(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.

 

 <リリース設定>

kurashige_0-1690785597591.png

以上、よろしくお願いいたします。

4 REPLIES 4

masa_139
Product and Topic Expert
Product and Topic Expert
0 Kudos
1,181

ABAP素人ですが、外部システムから呼び出すというのは httpという事になると思います。
RAPで開発して OData で Expose すればhttp コールできるので、独自のロジックは  Behavior 定義して書くのだと思います。 ABAPer の方コメント追加してください。
ABAP RESTful Application Programming Model (RAP) – FAQ

MakotoS
Product and Topic Expert
Product and Topic Expert
0 Kudos
1,181

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

masa_139
Product and Topic Expert
Product and Topic Expert
0 Kudos
1,179

tami さんの記事が参考になります。
【RAP】Actionを追加する

kurashige
Discoverer
0 Kudos
1,106

@masa_139 さん、@MakotoS さん
回答ありがとうございます。
RAPを作成する方法と、if_oo_adt_classrunのインターフェースを実装する方法のどちらも試してみます。

共有していただいたif_oo_adt_classrunはADTのF9で呼び出されてコンソールにログを出すもののように見受けられるのですが、このクラスでPostmanからのHTTPリクエストを受け取るにはどうしたらよいでしょうか?
それとも使い方の認識が間違っていますか?