abap html编辑表格,ABAP 7.4 新语法-内嵌生命和内表操作(转)

1.内嵌声明

2.内表操作

3.opensql

*&---------------------------------------------------------------------*

1. 内嵌声明

1)声明符号: DATA(...)

再也不需要建立一堆的临时变量了

2)指针声明符:FILED-SYMBOL(…)

*&---------------------------------------------------------------------*

7.40之前-变量

DATA text TYPE string.

text = `...`.

7.40之后-变量

DATA(text) = `...`.

*&---------------------------------------------------------------------*

7.40之前-工作区

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之前-引用声明

24796fde65efbe2fb82d623e841f9455.gif

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( ).

a13b9903d2577acf94942906a4a49937.gif

7.40之后-引用声明

DATA(ixml) = cl_ixml=>create( ).

DATA(stream_factory) = ixml->create_stream_factory( ).

DATA(document) = ixml->create_document( ).

*&---------------------------------------------------------------------*

740之前-指针声明

02994cee14a7731f4d10e76e5165adad.gif

FIELD-SYMBOL: LIKE LINE OF ITAB.

LOOP AT itab ASSIGNING .

...

ENDLOOP.

447e2d228e6177b2e9ed33aebee16e20.gif

740之后-指针声明

8ac9b082742d0c7d8fee07f9879e5eb6.gif

LOOP AT ITAB ASSIGNING FIELD-SYMBOL().

ENDLOOP.

READ TABLE itab assigning field-symbol() ....

80c44be779a1524cc4f8419265e36cff.gif

2. 内表操作

VALUE

MOVE-CORRESPONDING

CORRESPOING

FOR

REDUCE

GROUP BY

FILTER

VALUE语法:

结构赋值

... 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' ) ) .

1e94efca0f854880ca04e686da3ceef6.png

7ad0e7ec32b129877dca905eb8779bef.gif

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

70e0545c23cbd87aaab943b49fbd3901.gif

MOVE-CORRESPONDING语法:

35b5b51f711b55b96422d8a877870b90.png

CORRESPONDING语法:

48b7acf3df1755f9977024fc74d0b924.png

itab[ … ]语法

… itab[ … ] …

相当于read table itab ….

u缺点

如果对应没找到,会抛出CX_SY_ITAB_LINE_NOT_FOUND异常

系统变量SY-SUBRC不会记录成功与否

u改进

IF line_exists ( itab[…] )

…..

ENDIF

通过这行语法判断行是否查找到

FOR语法

描述

加强版本的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 …..

6cb36e04d6f917e1f47461c7c304f707.png

REDUCE语法

70f8a90e7b05c178f57db6ab4af97d8b.png

GROUP BY语法

7cdef6c702c66386dfdc7ac208546a55.png

8d0ce271a1ebaa2b5d224953e2e3a55b.png

96298ba1c7b2dd1137c76cdd9456c14f.png

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

05e52bf0cf3d03eaac26ff82d1907cdd.png

SELECT SINGLE @ABAP_TRUE INTO @DATA(EXISTS) FROM KNA1 WHERE KUNNR EQ @I_KNA1-KUNNR.

IF EXISTS <> ABAP_TRUE.

ENDIF.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值