2015年11月10日 星期二

ABAP/4 : How to debug background program

有的時侯常會需要確認還未執行的 Background JOB 設定的 Variant 是否正確,或是執行後發生異常時想要再用相同條件確認原因,以及正在執行的 JOB 是目前卡在哪一段程式時,則可透過以下方式進行 Background Debug

以下面程式做測試

REPORT Z_TST_5 MESSAGE-ID ZCO.

DATA: I_BKPF LIKE STANDARD TABLE OF BKPF WITH HEADER LINE.
DATA: I_BSEG LIKE STANDARD TABLE OF BSEG WITH HEADER LINE.

PARAMETERS: P_BUKRS LIKE BKPF-BUKRS.

START-OF-SELECTION.

  SELECT * UP TO 50000 ROWS INTO CORRESPONDING FIELDS OF TABLE I_BKPF
    FROM BKPF.

  LOOP AT I_BKPF.

    SELECT * INTO CORRESPONDING FIELDS OF TABLE I_BSEG
      FROM BSEG
     WHERE BUKRS = I_BKPF-BUKRS
       AND BELNR = I_BKPF-BELNR
       AND GJAHR = I_BKPF-GJAHR.

  ENDLOOP.

  SELECT * UP TO 50000 ROWS INTO CORRESPONDING FIELDS OF TABLE I_BKPF
    FROM BKPF.

  LOOP AT I_BKPF.

    SELECT * INTO CORRESPONDING FIELDS OF TABLE I_BSEG
      FROM BSEG
     WHERE BUKRS = I_BKPF-BUKRS
       AND BELNR = I_BKPF-BELNR
       AND GJAHR = I_BKPF-GJAHR.

  ENDLOOP.
END-OF-SELECTION.

先在要 Debug 的程式設定中斷點

方法一 SM37 : 選擇 Canceled or Release 的 JOB (Active 在後面說明),在 Command Mode 輸入 JDBG,並按下 Enter (注意,只有自己的帳號 Background JOB 才能 Debug)
即會進入 Debug Mode,此時如果執行的程式有設中斷點,可直接按下執行
程式即會停在中斷點上,這時即可檢查 Canceled 的原因以及 Release 的 JOB 其畫面輸入的相關條件或 Background JOB 設定的 Variant 值 (注意,如果已變動的資料不會回朔到之前執行的狀態,這邊只能確認該 JOB 當時執行的條件為何)
Active 的 JOB 則要改用 JOB / Capture: active job 則可進入正在執行的 Program

方法二 SM66 : 

先將 JOB 執行於 Background,再使用 SM66 點選指定的 JOB,並選擇 Debug
系統會立刻跳出目前執行到的程式位置,並且轉成前景執行 (注意,此時離開 Debug 即退出程式)

方法三:SM50

執行 SM50,並於指定的程式選擇 Debug,同樣會進入 Debug 畫面
注意,此時離開 Debug 即退出程式

沒有留言:

張貼留言

How to install & specified python version or distreibtuion package version in google colab

在買了 RTX 3080 要來 挖礦...  嗯~是跑機器學習後,結果發現了 GOOGLE COLAB,其實之前在「GAN 對抗式生成網路」一書就有看到,但資訊人就是什麼都想自己安裝,在本機用 Anaconda + pyCharm 弄了 GPU 環境,結果有天從新竹回家發現家裡沒...