2.內表操做sql
3.opensqloop
1)聲明符號: DATA(...)spa
不再須要創建一堆的臨時變量了3d
2)指針聲明符:FILED-SYMBOL(…)指針
*&---------------------------------------------------------------------*code
7.40以前-變量xml
DATA text TYPE string. text = `...`.
7.40以後-變量blog
DATA(text) = `...`.
*&---------------------------------------------------------------------*string
7.40以前-工做區it
DATA wa like LINE OF itab. LOOP AT itab INTO wa. ... ENDLOOP.
7.40以後-工做區
LOOP AT itab INTO DATA(wa). ... ENDLOOP.
*&---------------------------------------------------------------------*
7.40以前-返回參數
DATA xml TYPE xstring. CALL TRANSFORMATION ... RESULT XML xml.
7.40以後-返回參數
CALL TRANSFORMATION ... RESULT XML DATA(xml).
*&---------------------------------------------------------------------*
7.40以前-傳輸參數
DATA a1 TYPE ... DATA a2 TYPE ... oref->meth( IMPORTING p1 = a1 IMPORTING p2 = a2 ... )
7.40以後-傳輸參數
oref->meth( IMPORTING p1 = DATA(a1) IMPORTING p2 = DATA(a2) ... )
*&---------------------------------------------------------------------*
7.40以前-引用聲明
DATA ixml TYPE REF TO if_ixml. DATA stream_factory TYPE REF TO if_ixml_stream_factory. DATA document TYPE REF TO if_ixml_document. ixml = cl_ixml=>create( ). stream_factory = ixml->create_stream_factory( ). document = ixml->create_document( ).
7.40以後-引用聲明
DATA(ixml) = cl_ixml=>create( ). DATA(stream_factory) = ixml->create_stream_factory( ). DATA(document) = ixml->create_document( ).
*&---------------------------------------------------------------------*
740以前-指針聲明
FIELD-SYMBOL:<LFS_TAB> LIKE LINE OF ITAB. LOOP AT itab ASSIGNING <LFS_TAB>. ... ENDLOOP.
740以後-指針聲明
LOOP AT ITAB ASSIGNING FIELD-SYMBOL(<LFS_TAB>). … ENDLOOP.
READ TABLE itab assigning field-symbol(<line2>) ....
結構賦值
... VALUE dtype | #( [BASE dobj] comp1 = dobj1 comp2 = dobj2 ... ) ...
內表賦值
... VALUE dtype | #( [BASE itab] ( (line1-com1 = dobj1) ( line2 ..) ... ) ...
"內表不能帶表頭
IT_VKORG = VALUE #( KUNNR = E_KNA1-KUNNR ( VKORG = '3000' ) ( VKORG = '6008' ) ) .
DATA itab TYPE RANGE OF i. itab = VALUE #( sign = 'I' option = 'BT' ( low = 1 high = 10 ) ( low = 21 high = 30 ) ( low = 41 high = 50 ) option = 'GE' ( low = 61 ) ). cl_demo_output=>DISPLAY( itab ).
… itab[ … ] …
至關於read table itab ….
若是對應沒找到,會拋出CX_SY_ITAB_LINE_NOT_FOUND異常
系統變量SY-SUBRC不會記錄成功與否
IF line_exists ( itab[…] )
…..
ENDIF
經過這行語法判斷行是否查找到
增強版本的loop at語法,與REDUCE、VALUE關鍵字配合使用
…FOR i = ... [THEN expr] UNTIL | WHILE log_exp ...
…VALUE itab( FOR i = … [THEN expr] UNTIL | WHILE log_exp ... )
…REDUCE type( INIT FOR …. NEXT …..
REDUCE語法
GROUP BY語法
FELTER語法
能夠根據指定值(一個)或者指定內表(多個)的值過濾itab並返回itab類型的結果集
FILTER type( itab [EXCEPT] [IN ftab] [USING KEY keyname ]
WHERE c1 op f1 [AND c2 op f2 [...] ] ) ...
FILTER type( itab …) 對應一個值過濾
FILTER type( itab in tab …)對應多個值過濾
EXCEPT若是不指定則表示知足條件的找出來,若是指定則表示不知足條件的找出來
WHERE對應過濾的條件,是必需要指定的
3. OPEN SQL
SELECT SINGLE @ABAP_TRUE INTO @DATA(EXISTS) FROM KNA1 WHERE KUNNR EQ @I_KNA1-KUNNR. IF EXISTS <> ABAP_TRUE. ENDIF.