バッチインプットデータ構造の使用 

バッチインプットセッションにデータを書き込む場合、あるいは CALL TRANSACTION USING または CALL DIALOG を使用してデータを処理する場合は、内部テーブル <bdc_tab> を用意する必要があります。この内部テーブルは、 ABAP ディクショナリ構造 BDCDATA に従って構成されていなければなりません。内部テーブル <bdc_tab> は、 R/3 システムに入力されるデータと、そのデータを処理するために必要なアクションを格納します。このテーブルはバッチインプットデータの処理時に R/3 システムが従うべきスクリプトを格納したものと考えることができます。

 

以下の図に、 ABAP プログラム内で内部テーブル <bdc_tab> を宣言する方法と BDCDATA 構造に含まれる項目を示します。

 

プロセスフロー

  1. 内部テーブル <bdc_tab> を宣言します。
  2. それぞれの新しいトランザクションをコールする前に、内部テーブルを初期化します。
  3. それぞれの新規 Dynpro の開始時に、モジュールプール名 <program> Dynpro 番号 <dynpro> およびフラグを更新する必要があります。

    < bdc_tab>-PROGRAM = <program>.
    <bdc_tab>-DYNPRO = <dynpro>
    <bdc_tab>-DYNBEGIN = 'X'
    APPEND <bdc_tab>
  4. 値を割り当てる各項目について、内部テーブルにエントリを挿入します。技術項目名 <fnam> および項目内容 <fval> を指定します。

    <bdc_tab>-FNAM = <fnam>.
    <bdc_tab>-FVAL = <fval>.
    APPEND <bdc_tab>.

    項目がステップループまたはテーブルコントロールにある場合は、インプットが入力される行も指定する必要があります。項目名の拡張タイプは行番号を表します。

    <bdc_tab>-FNAM = 'fieldx(5)'.
  5. 特定の項目にカーソルを合わせるには、項目 FNAM に値 BDC_CURSOR を書き込むことによってカーソル位置を入力し、カーソルを位置づける項目の技術名称 <tname> を項目 FVAL に転送します。

    <bdc_tab>-FNAM = 'BDC_CURSOR'.

    <bdc_tab>-FVAL = <tname>.

    APPEND <bdc_tab>.


    ステップループまたはテーブル制御内にある項目上にカーソルを位置づける場合は、インプットが入力される行も指定する必要があります。項目名の拡張タイプは行番号を表します。

    <bdc_tab>-FVAL = 'fieldx(5)'.
  6. この画面で実行するアクションを指定します。トリガされた機能コード <fcode> を判別し、それに項目 FVAL を割り当てる必要があります。機能キー番号の前には必ず文字 ' /' を付ける必要があることに注意してください。その他すべての機能コードの前には、文字 ' =' を付ける必要があります。
    BDC_OKCODE を項目 FNAM に割り当てます。

    <bdc_tab>-FNAM = ‘BDC_OKCODE’.
    <bdc_tab>-FVAL = <fcode>.
    APPEND <bdc_tab>.
  7. このトランザクションのその他の画面それぞれについて、ステップ 3 から 6 を実行します。
  1. トランザクションの最後の画面の後では、必要なすべての値が内部テーブル <bdc_tab> に書き込まれています。これで、このテーブルを使用してバッチインプットセッションにエントリを登録するか、コマンド CALL TRANSACTION または CALL DIALOG をコールすることができます。
    BDCDATA 構造が参照するトランザクションは別々に識別されます。独自プログラムでデータをバッチインプットセッションに書き込む場合、トランザクションは BDC_INSERT 汎用モジュールのコールで指定されます。この汎用モジュールは BDCDATA 構造をセッションに書き込みます。独自プログラムでデータを CALL TRANSACTION USING を使用して処理する場合、トランザクションはこの命令に直接指定されます。

以下の表には、 BDCDATA 構造の内容がどのようになるかを示します。この BDCDATA 構造は、トランザクション SE38 、つまり ABAP エディタ内のレポートに行を追加します

レポート ( トランザクション SE38) に行を追加するための BDCDATA 構造

プログラム

DYNPRO

DYNBEGIN

FNAM

FVAL

SAPMS38M

0100

X

   
     

RS38M-PROGRAMM

< 名称 >

     

RS38M-FUNC_EDIT

X

     

BDC_OKCODE

=CHAP ( 機能コード ' 変更 ')

 

SAPMSEDT

2310

X

   
     

RSTXP-TDLINECOM (1)

B-

SAPMSEDT

2310

X

   
     

BDC_CURSOR

RSTXP-TDLINECOM (1)

     

RSTXP-TDLINE (1)

BDC テストテキスト

     

BDC_OKCODE

/11 ( 機能キー ' 保存 ')

SAPMSEDT

2310

X

   
     

BDC_OKCODE

/3 ( 機能キー ' 前画面 ')

SAPMS38M

0100

X

   
     

BDC_OKCODE

/15 ( 機能キー ' 終了 ')