Hi 大家好
今天來介紹ABAP中的MACRO
宏(Macro)通常是用來封裝一個或多個語句的,這樣可以簡化長或重複的代碼,宏定義後,可以在 ABAP 程序中多次調用。
定義宏的語法是Define
DEFINE macro_name.
" 宏的內容
" 可以是多行 ABAP 語句
END-OF-DEFINITION.
用&來傳參數
DEFINE display_parameters.
WRITE: / 'Parameter 1:', &1, 'Parameter 2:', &2.
END-OF-DEFINITION.
display_parameters 'Hello' 'World'. "代表第一個參數為Hello 第二個參數為World
輸出來就會長這樣
Parameter 1: Hello Parameter 2: World
前面有提到宏是為了解決重複的代碼
像是定義alv欄位也可以用宏解決
data:fields_tb type slis_t_fieldcat_alv with header line.
define: set_alv_field.
clear: fields_tb.
fields_tb-fieldname = &1.
fields_tb-ref_fieldname = &2.
fields_tb-ref_tabname = &3.
fields_tb-no_out = &4.
fields_tb-no_zero = &5.
if &5 = 'X'.
fields_tb-decimals_out = 0.
endif.
fields_tb-no_zero = &5.
fields_tb-fix_column = &6 .
fields_tb-outputlen = &7.
fields_tb-seltext_l = &8.
fields_tb-seltext_m = &8.
fields_tb-seltext_s = &8.
fields_tb-emphasize = 'C300'.
append fields_tb.
end-of-definition.
定義一個內表fields_tb,結構參照slis_t_fieldcat_alv用來定義欄位屬性
set_alv_field 'MATNR' '' '' '' '' '' '18' 'Material'.
set_alv_field 'WERKS' '' '' '' '' '' '4' 'Plant'.
set_alv_field 'MAKTX' '' '' '' '' '' '40' 'Description'.
這樣就可以一次定義多個欄位屬性
以上就是今天的分享
下次如果有遇到code要重複很多次的話
不彷試試看能不能用宏解決吧