CALL TRANSACTION
CALL TRANSACTION 'tcode' USING bdc_tab ... 是 ABAP 里提供的一個方便的執行批量輸入的語句,使用它可以通過程序代碼完成多個事務碼的連續執行。
bdc_tab 這個批輸入任務表的填寫方式,網上有很多例子了,大家用到的時候可以搜索。用事務碼 SHDB 可以生成填寫這個表的內容,按照 ABAP 字典結構類型 BDCDATA 的定義對應填寫就可以了。
下面詳細介紹一下這種調用方式中的執行參數:
... { {[MODE mode] [UPDATE upd]}
| [OPTIONS FROM opt] }
[MESSAGES INTO itab] ... .
MODE 確定批輸入的執行模式,有下面幾個可選值:
執行模式 | 作用 |
"A" | 顯示所有輸入屏幕,如果在 bdc_tab 中包含該屏幕的功能碼,則會出現小窗口顯示這個功能碼。它也是默認值,如果指定不是下面的值,則都認為是 A。 |
"E" | 只有在出現錯誤時才顯示屏幕,用戶可以修正數據,修正后程序可以繼續處理。 |
"N" | 不顯示屏幕的靜默模式。如果到達被調用事務的斷點,則系統處理終止,並設置一些系統字段。sy-subrc 為 1001,sy-msgty 為 "S"、sy-msgid 為 "00"、sy-msgno 為 "344"、sy-msgv1 為 "SAPMSSY3"、sy-msgv2 為 "0131"。 |
"P" | 不顯示屏幕的調試模式。如果到達被調用事務的斷點,則系統自動轉到 ABAP 調試器,這種方式主要用於調試過程。 |
UPDATE 確定批輸入的更新模式,有下面幾個可選值:
更新模式 | 作用 |
"A" | 異步更新。被調用程序的更新按照沒有指定 COMMIT WORK 語句和 AND WAIT 附加的方式執行。也就是說,數據更新被放到更新隊列里,由另一個專門的更新進程執行,主程序一旦提交數據就繼續執行,而不管提交的更新是否執行完成。這種方式比較適合於用一個事務碼大量更新指定數據,比如維護主數據等。 |
"S" | 同步更新。被調用程序的更新按照指定了 COMMIT WORK 語句和 AND WAIT 附加的方式執行。也就是說,數據更新被放到更新隊列里,由專門的更新進程執行,但是主程序會等到數據提交完成,返回結果信息后才繼續執行。這種方式比較適合於數據一致性要求比較高,多個不同事務碼的連續處理。 |
"L" | 本地更新。被調用程序的更新按照執行 SET UPDATE TASK LOCAL 語句的方式執行。也就是說,數據更新在主程序所在的進程中完成,主程序必定等到被調用事務完成才繼續執行。 |