ABAP-新語法 COND/SWITCH
阿新 • • 發佈:2022-03-07
眾所周知,ABAP提供了新語法COND/SWITCH,可以用來給變數賦值,代替if以及case when,使得程式碼更加簡潔。
一般情況下,在我們主觀意願上來說,以下程式碼,看似是等價的。
IF lv_strISINITIAL.
lv_str = 'new value'.
ENDIF.
lv_str=COND#(WHENlv_strISINITIALTHEN'newvalue').
但是其實不是,因為COND when 只是定義了lv_str 為空時候的賦值,那麼變數本身就有值呢?
答案是,會給一個空值。
至此,我們就發現了一個小BUG,所以新語法轉化為舊的語法,是這樣的,
IFlv_strISINITIAL.
lv_str='newvalue'.
ELSE.
lv_str=''.
ENDIF.
這顯然會與我們的初衷背道而馳,解決的方式也很簡單,那就是定義好COND的所有條件。
lv_str = COND #( WHEN lv_str IS INITIAL THEN 'new value' ELSE lv_str ).
這樣一來,我們便不會丟失原始的值了。
SWITCH的語法和COND道理相同。
"New lv_str = SWITCH #( n WHEN 1 THEN 'A' WHEN 2 THEN 'B' ). "Old CASE n. WHEN 1. lv_str = 'A'. WHEN 2. lv_str = 'B'. WHEN OTHERS. lv_str = ''. ENDCASE.
這是一個比較小的點,但是往往這些不引人注目的點,會帶來較大的BUG。
轉載:https://www.cnblogs.com/yibing-jia/p/14212557.html