ABAP 7.4 新语法-内嵌生命和内表操作
1.內(nèi)嵌聲明
2.內(nèi)表操作
3.opensql
*&---------------------------------------------------------------------*
1. 內(nèi)嵌聲明
1)聲明符號: DATA(...)
?????????? 再也不需要建立一堆的臨時(shí)變量了
2)指針聲明符:FILED-SYMBOL(…)
*&---------------------------------------------------------------------*
7.40之前-變量
DATA text TYPE string. text = `...`.7.40之后-變量
DATA(text) = `...`.
*&---------------------------------------------------------------------*
7.40之前-工作區(qū)
DATA wa like LINE OF itab. LOOP AT itab INTO wa. ... ENDLOOP.7.40之后-工作區(qū)
LOOP AT itab INTO DATA(wa). ... ENDLOOP.*&---------------------------------------------------------------------*
7.40之前-返回參數(shù)
DATA xml TYPE xstring. CALL TRANSFORMATION ... RESULT XML xml.7.40之后-返回參數(shù)
CALL TRANSFORMATION ... RESULT XML DATA(xml).*&---------------------------------------------------------------------*
7.40之前-傳輸參數(shù)
DATA a1 TYPE ...DATA a2 TYPE ...oref->meth( IMPORTING p1 = a1 IMPORTING p2 = a2 ... )7.40之后-傳輸參數(shù)
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>) ....
?
?
?2. 內(nèi)表操作
- VALUE
- MOVE-CORRESPONDING
- CORRESPOING
- FOR
- REDUCE
- GROUP BY
- FILTER
VALUE語法:
???? 結(jié)構(gòu)賦值
???? ... VALUE dtype | #(? [BASE dobj] comp1 = dobj1 comp2 = dobj2 ... ) ...
???? 內(nèi)表賦值
???? ... VALUE dtype | #( [BASE itab] (? (line1-com1 = dobj1) ( line2 ..) ... ) ...
?
"內(nèi)表不能帶表頭IT_VKORG = VALUE #( KUNNR = E_KNA1-KUNNR ( VKORG = '3000' )( VKORG = '6008' ) ) .
MOVE-CORRESPONDING語法:
CORRESPONDING語法:
?
?
itab[ … ]語法
???? … itab[ … ] …
???? 相當(dāng)于read table itab ….
?
u缺點(diǎn)???? 如果對應(yīng)沒找到,會拋出CX_SY_ITAB_LINE_NOT_FOUND異常
???? 系統(tǒng)變量SY-SUBRC不會記錄成功與否
?
u改進(jìn)???? IF line_exists ( itab[…] )
??????? …..
???? ENDIF
???? 通過這行語法判斷行是否查找到
FOR語法
描述???? 加強(qiáng)版本的loop at語法,與REDUCE、VALUE關(guān)鍵字配合使用
?
語法???? …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語法
描述???? 可以根據(jù)指定值(一個(gè))或者指定內(nèi)表(多個(gè))的值過濾itab并返回itab類型的結(jié)果集
?
語法 ???? FILTER? type( ?itab?? [EXCEPT] ??[IN ftab] ??[USING KEY keyname ]?
?????????????????????????????????????????????????????????????????? WHERE c1 op f1 ?[AND c2 op f2 ?[...] ]? ) ...
?
變式???? FILTER? type( itab …) 對應(yīng)一個(gè)值過濾
???? FILTER? type( itab in tab …)對應(yīng)多個(gè)值過濾
?
其它???? EXCEPT如果不指定則表示滿足條件的找出來,如果指定則表示不滿足條件的找出來
???? WHERE對應(yīng)過濾的條件,是必須要指定的
3. OPEN SQL
總結(jié)
以上是生活随笔為你收集整理的ABAP 7.4 新语法-内嵌生命和内表操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MIME type类型
- 下一篇: SAP 常用业务数据表设计