6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【ABAP】VBKDとVBPAからのデータ抽出

Last updated at Posted at 2021-09-06

#やること
VBKD(販売伝票:ビジネスデータ)や、VBPA(販売伝票:取引先)のように、ヘッダデータと明細データが同じテーブルに格納されている場合のデータ抽出について。

こちらのテーブルから明細に関する情報を取得する場合は、①明細データが存在したら明細データを、②存在しなかったらヘッダデータを取得する必要があります。

いままで、明細&ヘッダのデータを抽出してからREAD TABLEで、とか、SELECT CASEとかやりましたが、SELECT COALESCE でスッキリ書けたので、サンプルを書いておきます。

#参考
COALESCEに関するSAP HELPはこちら

#サンプル
以下、VBKDの請求日(FKDAT)を取得する場合

SELECT_VBKD.abap
SELECT
  FROM VBAP
    INNER JOIN VBKD AS HEADER       "ヘッダデータ
       ON VBAP~VBELN = HEADER~VBELN
      AND HEADER~POSNR IS INITIAL
    LEFT OUTER JOIN VBKD AS DETAIL  "明細データ
       ON VBAP~VBELN = DETAIL~VBELN
      AND VBAP~POSNR = DETAIL~POSNR
  FIELDS
    VBAP~VBELN,
    VBAP~POSNR,
    COALESCE( DETAIL~FKDAT, HEADER~FKDAT ) AS FKDAT, "明細が存在すれば明細、なければヘッダ
    DETAIL~FKDAT AS D, "明細
    HEADER~FKDAT AS H  "ヘッダ
  INTO TABLE @DATA(RESULT).

CL_DEMO_OUTPUT=>DISPLAY( RESULT ).
6
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?