[再現]拡張機能でBAPIおよびCOMMITを呼び出す

現時点では、販売納品書が掲載された後、同時に会計ドキュメントを生成する必要があります。BAPIおよびCommitを呼び出す前に、拡張プログラム「MV50AFZ1」の「USEREXIT_SAVE_DOCUMENT」メソッドに直接コードを記述しようとしましたが、結果はエラーでした。

同様の要件を持つCSDNに関するブログ投稿を見ました。SAP拡張プログラムでは、BAPIおよびCOMMIT(MIGO拡張)を呼び出す設計スキームです。

上記のこのフレンドの方法は、拡張コードで通常の関数を呼び出し、通常の関数でリモート関数を呼び出し、最後にリモート関数でBAPIおよびコミットを呼び出すことです。

  call function 'ZMM_GOODSMVT_MAIN2'
    starting new task 'T1'
    destination 'NONE'
    exporting
      goodsmvt_header = goodsmvt_header
      goodsmvt_code   = goodsmvt_code
      testrun         = testrun
      is_log3         = is_log3
    tables
      goodsmvt_item   = goodsmvt_item[]
      log             = log[].

非同期呼び出しの本質:プログラムは複数のスレッドで実行されます。

非同期呼び出し: 

通話機能「楽しい」 

STARTING NEWTASK <taskname>  "タスク名

DESTINATION IN GROUP <RFCサービスグル​​ープ>

                        タスクの終わりに<サブルーチン>を実行しています。"子程序

複数の非同期呼び出しの結果が返されるのを待ちます:WAIT UNTIL  log_exp [ UP TO  sec  SECONDS ]。

非同期で呼び出す場合、IMPORTING パラメータは使用できません。関数は、非同期で呼び出されるRFC関数でなければなりません。STARTINGNEW TASK オプションがある限り、これは非同期呼び出しです。同じターゲットのRFC関数が非同期で呼び出される場合、DESTINATIONは省略できます。

DESTINATION 

lターゲットNONE:現在のプログラムが配置されているアプリケーションサーバーがターゲットシステムとして使用されますが、呼び出しプロセスは、RFCリモートモードによって呼び出されます。これは、SPACEと同じです。

lターゲットスペース:  DESTINATIONオプションは無視され、呼び出された関数は通常の関数としてマシン上で呼び出されます

lターゲットBACK:リモートで呼び出されるRFMプログラムのCALL FUNCTIONステートメントでターゲットを指定し、確立されたRFC接続を介して関数の呼び出し側システムの他の汎用モジュールを呼び出す(つまり、呼び出し側プログラム—>)リモートシステムのRFM->メインの呼び出しプログラムが配置されているシステムの他の関数を呼び出します)

 

予備のコレクション。

おすすめ

転載: blog.csdn.net/zhongguomao/article/details/108086551