他機能呼び出し

24.2 他機能呼び出し

2. 他機能呼び出し

他機能呼び出し
CALL TRANSACTION命令
 構文ルール
 オプション
  AND SKIP FIRST SCRENN
 USING<BDC内部テーブル>
SUBMIT命令
 構文ルール
 オプション
  SELSCREEN OPTION
  LIST OPTIONS
  JOB OPTIONS

他機能呼び出し

ABAPで他機能の呼び出しとして思い浮かぶのは、汎用モジュールの呼び出しですが、ここでは、トランザクションの呼び出しやプログラムの呼び出しについて説明していきます。

CALL TRANSACTION命令

CALL TRANSACTION 命令は、トランザクションを呼び出す命令です。
伝票照会やSAPへのデータ登録/更新処理にも利用され、呼び出された側から、呼び出し元へ処理を戻す場合は、LEAVE PROGRAM命令を使用します。
権限チェックやバリアントを間接的に利用できます。

構文ルール

オプション

ANDSKIPFIRSTSCREEN

AND SKIP FIRST SCREENオプションを使用すると、呼び出されたダイアログトランザクションの 第1画面が非表示になります。
最初の画面の必須項目は、すべて値を設定する必要があり、SPA/GPAパラメータ(SET/GET、パラメータ)によって値が設定されていなければいけません。

USING<BDC内部テーブル>[bdc_option]

<BDC内部テーブル>は、構造BDCDATAを参照した内部テーブルで、呼び出されたトランザクションのプログラム名、画面番号、設定項目のIDや設定値を入力して表現します。

サンプルコード①

REPORT ZR22001_KANDA_TRANSACTION.

*構造
DATA:ST_BDC TYPE BDCDATA.

*内部テーブル
DATA:IT_BDC TYPE STANDARD TABLE OF BDCDATA.

START-OF-SELECTION.

  ST_BDC-PROGRAM = 'SAPMF05L'.
  ST_BDC-DYNPRO = 0100.
  ST_BDC-DYNBEGIN = ABAP_ON.

  APPEND ST_BDC TO IT_BDC.

  CLEAR ST_BDC.

  ST_BDC-FNAM = 'BDC_CURSOR'.
  ST_BDC-FVAL = 'RF05L-BELNR'.

  APPEND ST_BDC TO IT_BDC.



  ST_BDC-FNAM = 'BDC_OKCODE'.
  ST_BDC-FVAL = '/00'.

  APPEND ST_BDC TO IT_BDC.

  ST_BDC-FNAM = 'RF05L-BELNR'.
  ST_BDC-FVAL = '100000569'.

  APPEND ST_BDC TO IT_BDC.

  ST_BDC-FNAM = 'RF05L-BUKRS'.
  ST_BDC-FVAL = '0001'.

  APPEND ST_BDC TO IT_BDC.

  ST_BDC-FNAM = 'RF05L-GJAHR'.
  ST_BDC-FVAL = '2019'.

  APPEND ST_BDC TO IT_BDC.

  ST_BDC-PROGRAM = 'SAPMF05L'.
  ST_BDC-DYNPRO = 0700.
  ST_BDC-DYNBEGIN = ABAP_ON.

  APPEND ST_BDC TO IT_BDC.

  CLEAR ST_BDC.

  ST_BDC-FNAM = 'BDC_OKCODE'.
  ST_BDC-FVAL = '/EEND'.

  APPEND ST_BDC TO IT_BDC.

  ST_BDC-FNAM = 'BDC_CURSOR'.
  ST_BDC-FVAL = 'BKPF-BELNR'.

  APPEND ST_BDC TO IT_BDC.

  CALL TRANSACTION 'FB03' USING IT_BDC.

END-OF-SELECTION.

補足

CALL TRANSACTION命令は、SAPに登録されているトランザクションコードをプログラム内で呼び出すことができます。
それによって、プログラム内で用意したデータをFIモジュールに渡すことができます。
その際、トランザクションコードを起動して値を渡すので、そのトランザクションコードが持つ項目のチェック機能を通るので、
自前のチェック機能作成せずに済みます。

結果画面

サンプルコード②

シンプルにトランザクションコードをプログラムで呼び出すだけのサンプルです。

REPORT ZR22001_KANDA_TRANSACTION_01.

START-OF-SELECTION.

  CALL TRANSACTION 'SE38'.

  CALL TRANSACTION 'SE11'.

  CALL TRANSACTION 'SE16'.

END-OF-SELECTION.

トランザクションコード「SE38 , SE11 ,SE16」を呼び出すことができます。
(それぞれの画面が表示されるので、都度、終了(Shift + F3)してください。)

SUBMIT命令

SUBMIT命令は、実行中のプログラムから別のプログラムを呼び出す命令です。
ただし、モジュールプールやインクルードなどプログラムの属性が
直接呼び出し不可となっている場合は利用できません。

バリアントが使用できない代わりに、パラメータにて選択画面の値を設定することができたり、 選択画面を表示させたりすることができます。

構文ルール

<レポート名>(プログラムID)を直接指定するか、文字型の変数にレポート名を指定する記述をします。
なお、<レポート名>は、大文字で設定されていることが必要です。
また、項目名に指定したプログラムが見つからないと、捕捉不可能な例外が発生します。

オプション

SELSCREEN_OPTIONS

SELSCREEN_OPTIONSを使用すると、アクセスするプログラムの選択画面に値を設定することができます。

LIST_OPTIONS

LIST_OPTIONSを使用すると、アクセスするプログラムの出力媒体や、帳票のページサイズを変更することができます。

JOB_OPTIONS

JOB_OPTIONSを使用すると、プログラムをバックグラウンド処理用にスケジュールすることができます。

サンプルコード③

*&---------------------------------------------------------------------*
*& プログラムID:ZR22001_KANDA_SUBMIT_A
*& プログラム名:SUBMITのサンプル
*& 概要        :プログラムBをSUBMIT後、選択画面を表示する。
*&---------------------------------------------------------------------*
REPORT ZR22001_KANDA_SUBMIT_A.

*&---------------------------------------------------------------------*
* 主処理
*&---------------------------------------------------------------------*
START-OF-SELECTION.

* プログラムZR22001_KANDA_SUBMIT_Bの呼出し
  SUBMIT ZR22001_KANDA_SUBMIT_B
  AND RETURN.

  WRITE 'SUBMIT成功'.

END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& プログラムID:ZR22001_KANDA_SUBMIT_B
*& プログラム名:SUBMITのサンプル
*& 概要        :選択画面を表示する。
*&---------------------------------------------------------------------*

REPORT ZR22001_KANDA_SUBMIT_B.

*&---------------------------------------------------------------------*
* 選択画面定義
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF SCREEN 2000.
  PARAMETERS P_A TYPE I.
SELECTION-SCREEN END OF SCREEN 2000.

START-OF-SELECTION.

CALL SELECTION-SCREEN 2000.

END-OF-SELECTION.

実行結果

サンプルコード④

構文②で作成したサンプルコード

REPORT ZR22001_KANDA_SUBMIT_A2.

  DATA WK_REPORT(30) TYPE C VALUE 'ZR22001_KANDA_SUBMIT_B'.

*&---------------------------------------------------------------------*
* 主処理
*&---------------------------------------------------------------------*
START-OF-SELECTION.

* プログラムZR22001_KANDA_SUBMIT_Bの呼出し
  SUBMIT (WK_REPORT)
  AND RETURN.

  WRITE 'SUBMIT成功'.

END-OF-SELECTION.

実行結果


NEXT>> 24.3 メモリ領域の使用