Nothing Special   »   [go: up one dir, main page]

Abap New Syntax With Example

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 7

1.

Inline Declaration:
Before 7.4 New syntaxes were not introduced the variable needs to be
declared before using it, now using inline declaration variable can we
declare and use at the same time, Below are some of the syntax which
has changed after 7.4.

Whenever data is to be moved to a variable, can be declared at the


same instance,
Old Syntax.
DATA var1 TYPE char5.
var1 = ‘ABC’.New Syntax.
DATA(var1) = ‘ABC’.

Select Single From DataBase Table 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.

Selecting Data From DataBase Table 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.
Declaration of the work area while operation on Internal Table,
Old Syntax.
DATA wa TYPE structure
LOOP AT itab INTO wa.
or
READ TABLE itab into wa WITH KEY field1 = var1.New Syntax.
LOOP AT itab INTO data(wa).
or
READ TABLE itab into data(wa) WITH KEY field1 = var1.

Moving Data From One Table To Other.


Old Syntax.
DATA lt_tab LIKE itab.
lt_tab[] = itab[].New Syntax.
DATA(lt_tab) = itab[].

Assigning Field Symbols


Old Syntax.
FIELD-SYMBOLS: <line> type …
LOOP AT itab ASSIGNING <line>.
or
READ TABLE itab ASSIGNING <line> WITH KEY FLD1 = VAR1.New Syntax.
LOOP AT itab ASSIGNING FIELD-SYMBOL(<line>).
OR
READ TABLE itab ASSIGNING FIELD-SYMBOL(<line>) WITH KEY FLD1 =
VAR1.

2.Table Expression:
In SAP whenever the data is to be taken from Internal Table to any
variable in Code for further processing, Loop or Read Table are
generally used to get that data from Internal Table to work area and
then move to another variable, so this effort can be lessened by using
the new syntax.

Get line from table to Work Area.


Old Syntax.
READ TABLE itab INTO DATA(wa) WITH KEY fld1 = var1.New Syntax.
DATA(wa) = itab[ fld1 = var1 ].

Read table with Index 1.


Old Syntax.
READ TABLE itab INTO DATA(wa) index 1.New Syntax.
DATA(wa) = itab[ 1 ].

Get a particular field from one table to another variable.


Old Syntax.
READ TABLE itab INTO wa WITH KEY fld1 = var1.
IF sy-subrc EQ 0.
lv_var2 = wa-var2.
ENDIF.New Syntax.
lv_var2 = itab[ fld1 = var1 ]-var2.

Check particular Value is in Internal Table.


Old Syntax.
READ TABLE itab TRANSPORTING NO FIELDS WITH KEY fld1 = var1.
IF sy-subrc = 0.ENDIF.New Syntax.
IF line_exists( itab[ fld1 = var1 ] ).ENDIF.

Get Index Number of Particular Entry From Internal Table.


Old Syntax.
READ TABLE itab TRANSPORTING NO FIELDS fld1 = var1.
IF sy-subrc eq 0
lv_tabix = sy-tabix.
ENDIF.New Syntax.
lv_tabix = line_index( itab[ fld1 = var1 ] ).

Modify Entry in Table.


Old Syntax.
READ TABLE itab ASSIGNING <lfs_tab> fld1 = var1.
IF sy-subrc eq 0
<lfs_tab>-fld2 = 'Text'.
ENDIF.New Syntax.
itab[ fld1 = var1 ]-fld2 = 'Text'.
Note: While Using these Syntaxes in case of Table Expression use with
Try Catch with cx_sy_itab_line_not_found and Entry.

3.Data Operations:
Here are some of the new Syntax which can be used for manipulating,
changing, and storing data according to requirement.

Adding or Removing Leading Zeros to a Variable.


Old Synatx.
For Removing Leading Zeros
CALL FUNCTION ‘CONVERSION_EXIT_ALPHA_OUTPUT’
EXPORTING
input = var1
IMPORTING
OUTPUT = var1 .
For Adding Leading Zeros
CALL FUNCTION ‘CONVERSION_EXIT_ALPHA_INPUT’
EXPORTING
input = var1
IMPORTING
OUTPUT = var1 .New Syntax.
For Removing Leading Zeros
var1 = |{ var1 ALPHA = OUT}|.
For Adding Leading Zeros
var1 = |{ var1 ALPHA = IN }|.

Getting Data into Variable Depending on Condition.


Old Syntax.
IF cond1.
var1 = fld1.
ELSE.
var1 = fld2.
ENDIF.New Syntax.
var1 = COND #( WHEN cond1 THEN fld1 ELSE fld2 ).

Case Endcase.
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 ).

Creating Table and Filling Data into a Table


Old Syntax.
DATA: itab TYPE TABLE OF structure,
wa TYPE structure.wa-fld1 = 1.
wa-fld2 = 'A'.
APPEND wa TO itab.
CLEAR WA.wa-fld1 = 2.
wa-fld2 = 'B'.
APPEND wa TO itab.
CLEAR WA.New Syntax.
DATA(itab) = VALUE structure(( fld1 = 1 fld2 = 'A' )
( fld1 = 2 fld2 = 'B' )).

Adding New entries to Internal Table already having entries.


Old Syntax.
DATA: itab TYPE TABLE OF structure,
wa TYPE structure.wa-fld1 = 1.
wa-fld2 = 'A'.
APPEND wa TO itab.
CLEAR WA.wa-fld1 = 2.
wa-fld2 = 'B'.
APPEND wa TO itab.
CLEAR WA.New Syntax.
itab = VALUE #( BASE itab
( fld1 = 1 fld2 = 'A' )
( fld1 = 2 fld2 = 'B' ) ).

Concatenate for data type apart from C, N, D, T, or STRING. Before 7.4


use to get Syntax Error saying this, but with new Syntax, it’s possible
for any Data Type.
Old Syntax.
CONCATENATE 'The Value in inr is' var1 into fld1.New Syntax.
fld1 = |The Value in inr is { var1 }|.
Moving Data from one Container to another.
Old Syntax.
MOVE-CORRESPONDING itab1 to itab2.New Syntax.
itab2 = CORRESPONDING #( itab1 ).

Using Above Syntax only fields which are identical in the container will
be moved to move it to other fields this new syntax can be used.
itab2 = CORRESPONDING #( itab1 MAPPING t1_fld1 = t2_fld1
t1_fld2 = t2_fld2 ).

If some fields need to excluded while moving corresponding fields, this


syntax can be used.
itab2 = CORRESPONDING #( itab1 EXCEPT t1_fld3,t1_fld4 ).

Moving Data From Table to other by Splitting it into two fields.


*--Defining Structure
TYPES: BEGIN OF gty_s_rseg_key,
belnr TYPE belnr_d,
gjahr TYPE gjahr,
END OF gty_s_rseg,
gty_rseg TYPE STANDARD TABLE OF gty_s_rseg WITH EMPTY KEY.Old
Syntax.
DATA: lt_awkey TYPE gty_rseg,
lw_awkey TYPE gty_s_rseg.LOOP AT lt_bkpf into lw_bkpf.
lw_awkey-belnr = lw_bkpf-awkey+0(10).
lw_awkey-gjahr = lw_bkpf-awkey+10(4).
APPEND lw_awkey to lt_awkey
ENDLOOP.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) ) ).

Display Message combining two or more Fileds.


Old Syntax.
DATA lv_name TYPE sy-ucomm.
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'.

Object-Oriented.
Old Syntax.
DATA: binary_content TYPE solix_tab.
DATA: xl_content TYPE xstring .CALL METHOD
cl_document_bcs=>xstring_to_solix
EXPORTING
ip_xstring = xl_content
receiving
rt_solix = binary_contentNew Syntax.
binary_content = cl_bcs_convert=>xstring_to_solix( ip_xstring =
xl_content ).

Creating Object For OOABAP.


Old Syntax.
DATA oref TYPE REF TO class.
CREATE OBJECT oref EXPORTING …New Syntax.
DATA oref TYPE REF TO class.
oref = NEW #( … ).
or
with an inline declaration
DATA(oref) = NEW class( … )

You might also like