case statement in select query (7.4+)
* The separator between the columns is comma (,).
* ABAP data objects used in open SQL statements are called as host variables and they are prefixed with @.
* We can use the conditional statements like CASE in the select query itself.
Report
REPORT zab_rp_select_query_new_case.
TABLES:vbak.
TYPES: BEGIN OF ls_vbak,
vbeln TYPE vbak-vbeln,
erdat TYPE vbak-erdat,
erzet TYPE vbak-erzet,
ernam TYPE vbak-ernam,
vbtyp TYPE vbak-vbtyp,
END OF ls_vbak.
TYPES: BEGIN OF ls_vbak1,
vbeln TYPE vbak-vbeln,
erdat TYPE vbak-erdat,
erzet TYPE vbak-erzet,
ernam TYPE vbak-ernam,
description(15) TYPE c,
END OF ls_vbak1.
DATA: lt_vbak TYPE TABLE OF ls_vbak,
lt_vbak1 TYPE TABLE OF ls_vbak1,
lr_vbak TYPE ls_vbak,
lr_vbak1 TYPE ls_vbak1.
SELECT-OPTIONS: s_vbeln FOR vbak-vbeln.
SELECT vbeln erdat erzet ernam vbtyp
FROM vbak
INTO TABLE lt_vbak
WHERE vbeln IN s_vbeln.
LOOP AT lt_vbak INTO lr_vbak.
lr_vbak1-vbeln = lr_vbak-vbeln.
lr_vbak1-erdat = lr_vbak-erdat.
lr_vbak1-erzet = lr_vbak-erzet.
lr_vbak1-ernam = lr_vbak-ernam.
IF lr_vbak-vbtyp = 'C'.
lr_vbak1-description = 'Internal'.
ELSE.
lr_vbak1-description = 'External'.
ENDIF.
APPEND lr_vbak1 TO lt_vbak1.
CLEAR: lr_vbak1.
ENDLOOP.
cl_demo_output=>display( lt_vbak1 ).
New syntax
REPORT zab_rp_select_query_new_case.
TABLES:vbak.
SELECT-OPTIONS: s_vbeln FOR vbak-vbeln.
SELECT vbeln,erdat,erzet,ernam, "vbtyp,
CASE vbtyp
WHEN 'C' THEN 'Internal'
ELSE 'External'
END AS description
FROM vbak
INTO TABLE @DATA(lt_vbak)
WHERE vbeln IN @s_vbeln.
cl_demo_output=>display( lt_vbak ).
Input
Output
******************************Thank You***************************
Comments
Post a Comment