ABAP Old vs New Syntax Cheat Sheet
- Assigning Value to a Variable
*--Old Syntax
DATA var1 TYPE char5.
var1 = 'ABC'.
*--New Syntax
DATA(var1) = 'ABC'.
2. SELECT SINGLE INTO Work Area
*--Old Syntax
DATA wa TYPE ...
SELECT SINGLE fld1 fld2 FROM ...
INTO wa
WHERE fld1 = var1
AND fld2 = var2.
*--New Syntax
SELECT SINGLE fld1, fld2 FROM ...
INTO @DATA(wa)
WHERE fld1 = @var1
AND fld2 = @var2.
3. SELECT INTO Internal Table
*--Old Syntax
DATA itab TYPE TABLE OF ...
SELECT fld1 fld2 FROM ...
INTO TABLE itab
WHERE fld1 = var1
AND fld2 = var2.
*--New Syntax
SELECT fld1, fld2 FROM ...
INTO TABLE @DATA(itab)
WHERE fld1 = @var1
AND fld2 = @var2.
4. Declaration of Work Area in Loop/Read
*--Old Syntax
DATA wa TYPE structure.
LOOP AT itab INTO wa.
READ TABLE itab INTO wa WITH KEY field1 = var1.
*--New Syntax
LOOP AT itab INTO DATA(wa).
READ TABLE itab INTO DATA(wa) WITH KEY field1 = var1.
5. Copying One Table to Another
*--Old Syntax
DATA lt_tab LIKE itab.
lt_tab[] = itab[].
*--New Syntax
DATA(lt_tab) = itab[].
6. Assigning Field Symbols
*--Old Syntax
FIELD-SYMBOLS: <line> TYPE ...
LOOP AT itab ASSIGNING <line>.
READ TABLE itab ASSIGNING <line> WITH KEY fld1 = var1.
*--New Syntax
LOOP AT itab ASSIGNING FIELD-SYMBOL(<line>).
READ TABLE itab ASSIGNING FIELD-SYMBOL(<line>) WITH KEY fld1 = var1.
7. Table Expressions
*--Read by Key:
DATA(wa) = itab[ fld1 = var1 ].
*--Read by Index:
DATA(wa) = itab[ 1 ].
*--Get Single Field:
lv_var2 = itab[ fld1 = var1 ]-var2.
*--Check if Line Exists:
IF line_exists( itab[ fld1 = var1 ] ).
ENDIF.
*--Get Line Index:
lv_tabix = line_index( itab[ fld1 = var1 ] ).
*--Modify Table Entry:
itab[ fld1 = var1 ]-fld2 = 'Text'.
"Use TRY...CATCH cx_sy_itab_line_not_found when using table expressions.
8. Leading Zero Conversion
*--Old Syntax
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING input = var1
IMPORTING output = var1.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING input = var1
IMPORTING output = var1.
*--New Syntax
var1 = |{ var1 ALPHA = OUT }|.
var1 = |{ var1 ALPHA = IN }|.
9. Conditional Assignment
*--Old Syntax
IF cond1.
var1 = fld1.
ELSE.
var1 = fld2.
ENDIF.
*--New Syntax
var1 = COND #( WHEN cond1 THEN fld1 ELSE fld2 ).
10. CASE to SWITCH
*--Old Syntax
CASE var1.
WHEN cond1.
var1 = fld1.
WHEN cond2.
var1 = fld2.
ENDCASE.
*--New Syntax
var1 = SWITCH #( var1
WHEN cond1 THEN fld1
WHEN cond2 THEN fld2 ).
11. Creating & Populating Internal Table
*--Old Syntax
DATA: itab TYPE TABLE OF structure,
wa TYPE structure.
wa-fld1 = 1.
wa-fld2 = 'A'.
APPEND wa TO itab.
CLEAR wa.
*--New Syntax
DATA(itab) = VALUE structure(
( fld1 = 1 fld2 = 'A' )
( fld1 = 2 fld2 = 'B' ) ).
12. Append to Existing Internal Table
itab = VALUE #( BASE itab
( fld1 = 1 fld2 = 'A' )
( fld1 = 2 fld2 = 'B' ) ).
13. String Templates for Any Data Type
*--Old Syntax
CONCATENATE 'The Value in inr is' var1 INTO fld1.
*--New Syntax
fld1 = |The Value in inr is { var1 }|.
14. Merge Two Internal Tables
*--Old Syntax
LOOP AT itab1 INTO wa1.
APPEND wa1 TO itab3.
ENDLOOP.
LOOP AT itab2 INTO wa2.
APPEND wa2 TO itab3.
ENDLOOP.
*--New Syntax
itab3 = itab1.
itab3 = CORRESPONDING #( BASE (itab3) itab2 ).
15. MOVE-CORRESPONDING Alternative
*--Old Syntax
MOVE-CORRESPONDING itab1 TO itab2.
*--New Syntax
itab2 = CORRESPONDING #( itab1 ).
"With field mapping:"
itab2 = CORRESPONDING #( itab1 MAPPING
t1_fld1 = t2_fld1
t1_fld2 = t2_fld2 ).
"Excluding fields:"
itab2 = CORRESPONDING #( itab1 EXCEPT t1_fld3 t1_fld4 ).
16. Splitting Fields While Moving Between Tables
*--Old Syntax
TYPES: BEGIN OF gty_s_rseg_key,
belnr TYPE belnr_d,
gjahr TYPE gjahr,
END OF gty_s_rseg.
TYPES: gty_rseg TYPE STANDARD TABLE OF gty_s_rseg_key WITH EMPTY KEY.
*--New Syntax
DATA(lt_awkey) = VALUE gty_rseg(
FOR <lfs_bkpf> IN lt_bkpf
( belnr = <lfs_bkpf>-awkey+0(10)
gjahr = <lfs_bkpf>-awkey+10(4) ) ).
17. Message With Variables
*--Old Syntax
DATA lv_output TYPE char20.
CONCATENATE 'The User ID is' lv_name INTO lv_output SEPARATED BY space.
MESSAGE lv_output TYPE 'E' DISPLAY LIKE 'E'.
*--New Syntax
MESSAGE |The User ID is { lv_name }| TYPE 'E' DISPLAY LIKE 'E'.
18. OO ABAP – Method Call
*--Old Syntax
DATA: binary_content TYPE solix_tab,
xl_content TYPE xstring.
CALL METHOD cl_document_bcs=>xstring_to_solix
EXPORTING ip_xstring = xl_content
RECEIVING rt_solix = binary_content.
*--New Syntax
binary_content = cl_bcs_convert=>xstring_to_solix( ip_xstring = xl_content ).
19. Object Creation in OO ABAP
*--Old Syntax
DATA oref TYPE REF TO class.
CREATE OBJECT oref EXPORTING ...
*--New Syntax
DATA oref TYPE REF TO class.
oref = NEW #( ... ).
"or with inline declaration:"
DATA(oref) = NEW class( ... ).