New syntax for if statement - COND in ABAP
* From ABAP 7.4 onwards, SAP introduced COND statement.
* We need to use COND statement instead of IF statement.
* In IF statement, we need to specify the variable which is getting filled in every
condition.
* In COND statement, we need not to mention the variable, which is getting filled in every condition, so COND statement is more effective way for conditional logic rather than IF statement.
Report
REPORT zab_rp_if_cond.
TABLES: vbak.
TYPES: BEGIN OF ls_vbak,
vbeln TYPE vbak-vbeln,
netwr TYPE vbak-netwr,
END OF ls_vbak.
DATA: lr_vbak TYPE ls_vbak,
lt_vbak TYPE TABLE OF ls_vbak,
lv_text TYPE char20.
SELECT-OPTIONS: s_vbeln FOR vbak-vbeln.
SELECT vbeln netwr
FROM vbak
INTO TABLE lt_vbak
WHERE vbeln IN s_vbeln.
LOOP AT lt_vbak INTO lr_vbak.
IF lr_vbak-netwr > 0 AND lr_vbak-netwr <= 5000.
lv_text = 'Low price'.
ELSEIF lr_vbak-netwr > 5000 AND lr_vbak-netwr <= 10000.
lv_text = 'Medium price'.
ELSE.
lv_text = 'High price'.
ENDIF.
WRITE: / lr_vbak-vbeln , lr_vbak-netwr, lv_text.
ENDLOOP.
New syntax-COND
REPORT zab_rp_if_cond.
TABLES: vbak.
SELECT-OPTIONS: s_vbeln FOR vbak-vbeln.
SELECT vbeln,netwr
FROM vbak
INTO TABLE @DATA(lt_vbak)
WHERE vbeln IN @s_vbeln.
LOOP AT lt_vbak INTO DATA(lr_vbak).
DATA(lv_text) = COND char20( WHEN lr_vbak-netwr > 0 AND lr_vbak-netwr <= 5000 THEN 'Low price'
WHEN lr_vbak-netwr > 5000 AND lr_vbak-netwr <= 10000 THEN 'Medium price'
ELSE 'High price' ).
WRITE: / lr_vbak-vbeln , lr_vbak-netwr, lv_text.
ENDLOOP.
Input
Output
******************************Thank You***************************
Comments
Post a Comment