SAP技術者のサンプルコード置き場

ABAPの動作確認をしたコードと簡単な説明を置いておきます。

【ABAP】特定項目が変更されていたら変更履歴情報を表示 DISPLAY CHANGE HISTORY INFO WHEN SPECIFIC FIELDS ARE CHANGED

こんにちは。

販売伝票明細の拒否理由(VBAP-ABGRU)が変更されている場合に 変更履歴内容をLEFT OUTER JOINで取得するロジックです。 テーブルキー(TABKEY)のON条件として、 CONCATでクライアント・伝票番号・明細番号を文字列結合しているところに 注目してください。  

SELECT FROM VBAK AS T1
    INNER join vbap as t2
      on t1~vbeln = t2~vbeln
    left outer join cdpos as t3
        on  t3~objectclas = 'VERKBELEG'
        and concat( @sy-mandt, concat( t1~vbeln, t2~posnr ) ) = t3~TABKEY
        and t3~FNAME = 'ABGRU'
    left outer join cdhdr as t4
       on   t3~OBJECTCLAS t4~OBJECTCLAS
       and  t1~vbeln            = t4~OBJECTID
       and  t3~CHANGENR  = t4~CHANGENR
    fields
      t1~vbeln,
      t2~posnr,
      t2~abgru,
      t3~objectclas,
      t3~fname,
      t4~USERNAME,
      concat_with_space( t4~UDATE,  t4~UTIME, 1 ) as udatetime
into table @data(results).

cl_demo_output=>display( results ).