ABAP CORRESPONDING 的相关语法
CORRESPONDING
CORRESPONDING
和 VALUE
这两个表达式主要侧重于在表上下文中创建结构和移动数据内容。新命令取代了 MOVE_CORRESPONDING
,正如您可能已经想到的那样。可以在传输时直接定义新类型。该命令还具有一些定义的附加功能
MOVE_CORRESPONDING
语法:
MOVE-CORRESPONDING [EXACT] struc1 TO struc2
[EXPANDING NESTED TABLES].
语句 MOVE-CORRESPONDING
的此变体要求为 struc1 和 struc2 指定结构。 网格 - 作为语句 MOVE-CORRESPONDING 的操作数 - 以与普通结构相同的方式处理,也可以指定。
" Easy
Move DATA(ls_t001) = CORRESPONDING t001( ls_data ).
它看起来不同,如果你想合并几个结构,这里你需要一个添加,否则之前映射的值将从你的目标结构中删除。这就是所谓的 MOVE_CORRESPONDING
的基础。在下面的示例中,我们将三个结构组合成一个目标结构:
ls_data = CORRESPONDING #( ls_t001 ).
ls_data = CORRESPONDING #( BASE( ls_data ) ls_bkpf ).
ls_data = CORRESPONDING #( BASE( ls_data ) ls_skb1 ).
添加将已填充的字段从 ls_data 中转移,然后将它们添加到附加结构的字段中
CORRESPONDING 新语法 - 映射
另一个非常有趣的附加功能是不适合名称的字段的映射。以前,您必须使用 MOVE_CORRESPONDING ,然后映射所有偏差字段。现在可以在“映射”命令之后完成此操作。
语法:
... [ MAPPING {t1 = s1 [ duplicates]}|( t1 = s1 [ duplicates] [MAPPING ...] [EXCEPT ...] )
{t2 = s2 [ duplicates]}|( t2 = s2 [ duplicates] [MAPPING ...] [EXCEPT ...] )
... ]
[ EXCEPT {ti tj ...}|* ] ...
新使用的 CORRESPONDING
关键词与 MAPPING
和 EXCEPT
组合允许两个结构之间更强大的数据传输。例如:
ls_data = CORRESPONDING #( ls_t001 MAPPING company_code = bukrs description = butxt ).
Value
VALUE
命令主要用于创建结构和表。插入、更新或追加的使用非常灵活,节省了编码空间,最重要的是,它节省了初始化工作,因为结构仅由 Value
语句生成。在值的括号之间,将进行必填字段的分配。您只需要填写所需的字段,其余的将填充初始值。
" Fill a Range
DATA lt_bukrs TYPE RANGE OF t001-bukrs.
APPEND VALUE #( sign = 'I' option = 'EQ' low = 'A001' ) TO lt_bukrs.
APPEND VALUE #( sign = 'I' option = 'EQ' low = 'A002' ) TO lt_bukrs.
APPEND VALUE #( sign = 'I' option = 'EQ' low = 'A003' ) TO lt_bukrs.
" Create a structure
DATA(ls_t001) = VALUE t001( bukrs = 'A001' butxt = 'Value-Test' land1 = 'EN' ).
" Create table
TYPES tt_data TYPE STANDARD TABLE OF char25 WITH EMPTY KEY.
DATA(lt_data) = VALUE tt_data( ( '123' ) ( '456' ) ( '789' ) ).
ADD 语句
语句 ADD 和 ADD-CORRESPOND 用于添加字段并将结果存储在字段变量中。下面是这两个语句关键字的语法和用法。
ADD dobj1 TO dobj2.
上面的语句等同于:
dobj2 = dobj2 + dobj1.
解释:dobj1 的内容与 dobj2 的内容相加,结果被分配给 dobj2 。数据对象 dobj1 和 dobj2 必须是数字。只能指定数据对象,没有调用或其他表达方式。
以下的语法在 ABAP 750 已经过时:
ADD <x1> THEN <x2> UNTIL <xz> GIVING <y>.
ADD n1 THEN n2 UNTIL nz TO m.
ADD n1 THEN n2 UNTIL nz … ACCORDING TO sel …GIVING m.
ADD n1 FROM m1 TO mz GIVING m.
带有 THEN
和 UNTILL
的变体中,字符串由数据对象 <x1> 和 <x2> 之间的距离定义。在与 <x1> 的距离是该距离的多个值(最多并包括位置 y)的所有内存位置,必须存储具有相同技术类型属性的数字数据对象。将添加所有这些数据对象的内容。
在带有 TO
的变体中,总计将添加到数据对象结果的内容中,并将结果分配给它。
在具有 GIVING
的变体中,总计直接分配给数据对象结果。数据对象结果必须是数值变量。如果使用 ACCORDING 条件,则仅当字符串中的数据对象在字符串中的位置满足选择表 sel 中的条件时,才会将字符串的数据对象添加到总计中。
选择表中的 low
和 high
变量需要数据类型 i。
ADD-CORRESPONDING
DATA: BEGIN OF VECTOR,
X TYPE I,
Y TYPE I,
LENGTH TYPE I,
END OF VECTOR,
BEGIN OF CIRCLE,
VOLUME TYPE P
Y TYPE P,
RADIUS TYPE I,
X TYPE I,
END OF CIRCLE.
…
ADD-CORRESPONDING VECTOR TO CIRCLE.
- 点赞
- 收藏
- 关注作者
评论(0)