ABAP 7.x
Dr. Kerem Köseoğlu
www.keremkoseoglu.com
Variable definition
Data
go_bapi->create_doc(
EXPORTING
iv_var1 = ‘SAMPLE’
iv_var2 = ‘SAMPLE’
IMPORTING
ev_belnr = DATA(lv_belnr)
ev_gjahr = DATA(lv_gjahr)
ev_bukrs = DATA(lv_bukrs)
).
Data
DATA(lv_name) = class=>get_name( lv_kunnr ).
Field symbol
LOOP AT gt_itab
ASSIGNING FIELD-SYMBOL(<ls_itab>).
ENDLOOP.
Pointer
LOOP AT gt_itab
REFERENCE INTO DATA(lr_itab).
ENDLOOP.
Value assignment
Value
DATA(ls_kna1) = VALUE kna1(
kunnr = ‘1234567890’
name1 = ‘SAMPLE’
).
Value #
DATA ls_kna1 TYPE kna1.
ls_kna1 = VALUE #(
kunnr = ‘1234567890’
name1 = ‘SAMPLE’
).
Value # with method
DATA ls_kna1 TYPE kna1.
ls_kna1 = VALUE #(
kunnr = lv_kunnr1
name1 = get_name( kunnr = lv_kunnr1 )
).
Conv
check_doc(
iv_xblnr = CONV #( lv_aufnr )
).
Cond
get_date_interval(
IMPORTING
!ev_begin = DATA(lv_begin)
!ev_end = DATA(lv_end)
).
DATA(lv_status) = COND char5(
WHEN sy-datum LT lv_begin THEN ‘EARLY’
WHEN sy-datum GT lv_end THEN ‘LATE’
ELSE ‘OK’
).
Switch
DATA(lv_status) = SWITCH char10(
sy-msgty
WHEN ‘S’ THEN ‘PERFECT’
WHEN ‘W’ THEN ‘OK’
ELSE ‘ERROR’
).
String templates
DATA(lv_string) =
|Today is { sy-datum }| &&
| ,time is { sy-uzeit }| &&
| ,system status: { get_status( ) }|.
XSDBOOL
rv_result = XSDBOOL( sy-subrc eq 0 ).
Pointer
DATA(lr_ref) = REF #( lv_value ).
Internal tables
Assign / Index
ASSIGN lt_itab[ 3 ] TO FIELD-SYMBOL(<ls_itab>).
Assign / Key
ASSIGN lt_itab[
bukrs = ’1234’
belnr = ‘1234567890’
gjahr = ‘2018’
] TO FIELD-SYMBOL(<ls_itab>).
Assign / Hashed key
ASSIGN lt_itab[
KEY primary_key COMPONENTS
bukrs = ’1234’
belnr = ‘1234567890’
gjahr = ‘2018’
] TO FIELD-SYMBOL(<ls_itab>).
Reference
DATA(lr_ref) = REF #(
lt_itab[
bukrs = ’1234’
belnr = ‘1234567890’
gjahr = ‘2018’
]
).
Default
DATA(lv_name1) = CONV name1_gp(
lt_kna1[ kunnr = lv_kunnr ]-name1
DEFAULT space
).
Line check
IF line_exists( lt_itab[ kunnr = lv_kunnr ] ).
" ...
ENDIF.
Corresponding
DATA(lt_malzeme) = CORRESPONDING tt_malz( lt_mara ).
Corresponding / Mapping / Except
DATA(lt_malzeme) = CORRESPONDING tt_malz(
lt_mara
MAPPING material = matnr
EXCEPT meins
).
For
DATA(lt_liste) = VALUE tt_liste(
FOR ls_mara IN lt_mara
WHERE ( mtart EQ ‘ABCD’ )
(
material = ls_mara-matnr
text = ls_mara-maktx
)
).
For Groups
DATA(lt_bukrs) = VALUE tt_bukrs(
FOR GROUPS grp OF ls_bkpf IN lt_bkpf
WHERE ( gjahr EQ lv_gjahr )
GROUP BY ls_bkpf-bukrs
( bukrs = grp )
).
Reduce
lv_sum = REDUCE #(
INIT x TYPE menge_d
FOR ls_mseg IN lt_mseg
WHERE ( matnr EQ lv_matnr )
NEXT x = x + ls_mseg-menge
).
Secondary index
TYPES:
tt_bkpf
TYPE STANDARD TABLE OF bkpf
WITH DEFAULT KEY
WITH UNIQUE HASHED KEY k1 COMPONENTS bukrs belnr gjahr
WITH NON-UNIQUE SORTED KEY k2 COMPONENTS xblnr.
Queries
Select into dynamic itab
SELECT matnr, mtart, matkl
FROM mara
WHERE matnr IN @s_matnr
INTO TABLE @DATA(lt_mat).
Select into dynamic variable
SELECT SINGLE name1
FROM kna1
WHERE kunnr eq @lv_kunnr
INTO @DATA(lv_name1).
Literals
DATA lt_werks_rng TYPE RANGE OF werks_d.
SELECT
‘I’ AS sign,
‘EQ’ AS option,
werks AS low
FROM t001w
INTO CORRESPONDING FIELDS OF TABLE @lt_werks_rng.
Select all fields
SELECT
marc~*,
t001w~name1
FROM
marc
INNER JOIN t001w ON t001w~werks EQ marc~werks
INTO TABLE @DATA(lt_marc).
Select Case
SELECT
CASE
WHEN strkorr NE @space THEN strkorr
ELSE trkorr
END AS request_no
FROM e070
INTO TABLE @DATA(lt_request).
Select Calculation
SELECT
brgew,
ntgew,
gewei,
ABS( brgew – ntgew ) AS diff
FROM mara
INTO TABLE @DATA(lt_material).
Union All
SELECT name1
FROM kna1
WHERE loevm EQ @abap_false
UNION ALL
SELECT name1
FROM lfa1
WHERE loevm eq @abap_false
INTO TABLE @DATA(lt_names).
Union Distinct
SELECT stcd1, stcd2
FROM kna1
WHERE loevm EQ @abap_false
UNION DISTINCT
SELECT stcd1, stcd2
FROM lfa1
WHERE loevm eq @abap_false
INTO TABLE @DATA(lt_tax).
Object Oriented
New
DATA(lo_obj) = NEW zcl_class( ).
New #
DATA lo_obj TYPE REF TO zcl_class.
lo_obj = NEW #( ).
Cast
DATA(lo_obj2) = CAST zcl_002( lo_obj1 ).
Is Instance Of
IF lo_obj2 IS INSTANCE OF lo_obj1.
" ...
ENDIF.
Default Ignore
INTERFACE zif_demo PUBLIC.
METHODS:
method1 DEFAULT IGNORE,
method2.
Final
Yeni ABAP
Avantaj
• Kısa & net kod
• Hızlı geliştirme
• Hatalarda azalma
• Performans
Dezavantaj
• Acemilik
• Anlaşılırlık
• Taşınabilirlik
• IDE
Teşekkürler!
Dr. Kerem Köseoğlu
www.keremkoseoglu.com
Sunum: slideshare.net/DrKeremKoseoglu

SITIST 2018 Part 1 - New ABAP Syntax