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(15TYPE 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.
  CLEARlr_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=>displaylt_vbak ).

Input


Output


******************************Thank You***************************

Comments

Popular posts from this blog

Pf status and user command in factory method - OOPS ALV in ABAP

fetch the data from table and send an email in ABAP

Enhancements in abap