网上找到一些ABAP 新语法的例子:
“--------------VALUE # 构建内表----------------------------------------------
DATA r_data TYPE RANGE OF MARA-MATNR. "内表不带表头
*RANGES r_data FOR MARA-MATNR. "这种定义的RANGES带表头,下面的VALUS语法不支持的
r_data = VALUE #(
sign = 'I' option = 'BT' ( low = 10 high = 20 )
( low = 100 high = 150 )
option = 'GT' ( low = 180 )
option = 'LT' ( low = 200 )
option = 'EQ' ( low = 8 )
sign = 'E' option = 'BT' ( low = 15 high = 18 )
).
cl_demo_output=>display( r_data ).
“----VALUE、内表直接访问-------------------------------------------
DATA : LT_MARA LIKE TABLE OF MARA WITH HEADER LINE.
SELECT * FROM MARA INTO TABLE LT_MARA UP TO 10 ROWS.
DATA(WA) = VALUE MARA( MATNR = '3010001001' MATKL = '3010' ). "产生一个MARA的结构
LOOP AT LT_MARA ASSIGNING FIELD-SYMBOL(<FS>).
<FS>-MATNR = |{ <FS>-MATNR ALPHA = OUT }|. "去掉前导0
WRITE : / SY-TABIX,<FS>-MATNR.
ENDLOOP.
cl_demo_output=>display( LT_MARA[] ). "窗口显示一个内表
LOOP AT LT_MARA INTO DATA(LS_MARA) .
IF LS_MARA-MATNR eq '002321321'.
ENDIF.
" WRITE : / SY-TABIX,LS_MARA-MATNR.
ENDLOOP.
cl_demo_output=>display( LT_MARA[] ).
LT_MARA[ 5 ]-MATNR = ''. "直接访问内表第5行
LS_MARA = LT_MARA[ 5 ].
这里有很详细的说明:
何喜在国庆节分享的 新语法 SQL中自动加0:

新语法 SQL中自动减0:

REPORT ZJAMES_20211008.
* SELECT MATNR , LPAD( SERNR , 18 , '0' ) AS A
* FROM OBJK
* INTO TABLE @DATA(LT_OBJK).
SELECT MATNR , LTRIM( SERNR , '0' ) AS SERNR
FROM OBJK
INTO TABLE @DATA(LT_OBJK).
BREAK-POINT.
本文介绍了ABAP编程语言中的新语法特性,如内表操作的VALUE#函数、自动填充0和-0的SQL技巧,以及实例展示了如何构造内表、访问内表元素和使用新SQL语法。适合学习者了解和实践ABAP编程的最新进展。
https://www.cnblogs.com/learnning/p/10647174.html
1998

被折叠的 条评论
为什么被折叠?



