コンテンツフレーム起動

論理データベースの例 文書を SAP ライブラリストラクチャに組み込む

例として論理データベース TEST_LDB を検討してみましょう。

構造

このグラフィックは添付のテキストに説明されています

選択インクルードでの選択

  SELECT-OPTIONS: SLIFNR   FOR LFA1-LIFNR,
                   SBUKRS   FOR LFB1-BUKRS,
                   SGJAHR   FOR LFC1-GJAHR,
                   SBELNR   FOR BKPF-BELNR.

データベースプログラム

*-------------------------------------------------------*
*
論理データベース TEST_LDB のデータベースプログラム
*-------------------------------------------------------*
PROGRAM SAPDBTEST_LDB DEFINING DATABASE TEST_LDB.

TABLES: LFA1,
        LFB1,
        LFC1,
        BKPF.

*-------------------------------------------------------*
*
選択画面の初期化 (PBO の前に処理)
*-------------------------------------------------------*
FORM INIT.
 ....

ENDFORM.                                 "INIT

*-------------------------------------------------------*
*
選択画面の PBO (常に選択画面
*
の前)
*-------------------------------------------------------*
FORM PBO.

 ....
ENDFORM.                                "PBO

*-------------------------------------------------------*
*
選択画面の PAI (常に ENTER の後に処理)
*-------------------------------------------------------*
FORM PAI USING FNAME MARK.

  CASE FNAME.
    WHEN 'SLIFNR'.
     ....
    WHEN 'SBUKRS'.
     ....
    WHEN 'SGJAHR'.
     ....
    WHEN 'SBELNR'.
     ....
  ENDCASE.
ENDFORM.                                "PAI

*-------------------------------------------------------*
*
イベント GET LFA1 の呼び出し
*-------------------------------------------------------*
FORM PUT_LFA1.

  SELECT * FROM LFA1
           WHERE LIFNR      IN SLIFNR.
    PUT LFA1.
  ENDSELECT.
ENDFORM.                                "PUT_LFA1

*-------------------------------------------------------*
*
イベント GET LFB1 の呼び出し
*-------------------------------------------------------*
FORM PUT_LFB1.

  SELECT * FROM LFB1
           WHERE LIFNR      =  LFA1-LIFNR
             AND BUKRS      IN SBULRS.
    PUT LFB1.
  ENDSELECT.
ENDFORM.                                "PUT_LFB1

*-------------------------------------------------------*
*
イベント GET LFC1 の呼び出し
*-------------------------------------------------------*
FORM PUT_LFC1.

  SELECT * FROM LFC1
           WHERE LIFNR      =  LFA1-LIFNR
             AND BUKRS      =  LFB1-BUKRS
             AND GJAHR      IN SGJAHR.
    PUT LFC1.
  ENDSELECT.
ENDFORM.                                "PUT_LFC1

*-------------------------------------------------------*
*
イベント GET BKPF の呼び出し
*-------------------------------------------------------*
FORM PUT_BKPF.

  SELECT * FROM BKPF
           WHERE BUKRS      =  LFB1-BUKRS
             AND BELNR      IN SBELNR
             AND GJAHR      IN SGJAHR.
    PUT BKPF.
  ENDSELECT.
ENDFORM.                                "PUT_BKPF  

PROGRAM 命令には追加 DEFINING DATABASE TEST_LDB があります。これは、論理データベース TEST_LDB に所属するデータベースプログラムを定義します。

構造のノードは、適切なテーブル作業領域を生成する TABLES 命令により宣言されます。また NODES 命令を使用して、データベーステーブルをノードとして定義できます。論理データベースのノードがデータベーステーブルでなければ、NODES 命令を使用する必要があります。インタフェース作業領域は、データベースプログラムとユーザが 共有して、データを渡すインタフェースとして動作します。ここで「ユーザ」という用語は、論理データベースがリンクされている実行可能プログラムか、または汎用モジュール LDB_PROCESS を指します。

サブルーチンの INIT PBO は、選択画面を初期化します。

PAI サブルーチンでは、選択画面でユーザ入力の権限チェックを加えることができます。また信憑性または値範囲のチェックも可能です。チェックが失敗すれば、エラーダイアログに書き込むことができます。その後選択画面の対応する項目は、ふたたび入力の準備ができます。

PUT_<node> サブルーチンは、ユーザにより入力された選択基準にしたがってデータベーステーブルを読み取り、実行可能プログラム内の関連するイベントを開始します。このプログラムは、論理データベースの基本構造の表示のみを目的としています。レスポンス時間を改善する再設定は含まれません。サブルーチンが呼び出される順序は、論理データベースの構造により決定されます。

このグラフィックは添付のテキストに説明されています

 

 

 

 

 

 

 

 

コンテンツフレーム終了