在ABAP中,存在着一条法则:名字不一定代表实际规则(具体可看最近的相关讨论)。

但是如你们所知的,存在着一个很好的例外: 所有涉及到使用CORRESPONDING为结构赋值的关键字的语法形式(偶然地)有着相同的名字..

  • 在ABAP 7.40之前,主要有用MOVE-CORRESPONDING来复制结构组件、Open SQL的SELECT的CORRESPONDING附加字段,以及某些过时的计算语句等。
  • 在ABAP 7.40中,MOVE-CORRESPONDING可以用于操纵带有结构的内表。并且7.40引入了一个新的构造器操作符CORRESPONDING,它允许显式地将结构的组件映射到不同名字的组件上。

还缺了点什么?答案是动态的映射!这个特性在ABAP 7.50中得到了引入。

新的系统类  CL_ABAP_CORRESPONDING允许你适用动态指定的映射规则为结构或内表的组件赋值。

映射规则需要创建在一个映射表中,然后传递给映射对象。

例子如下:

DATA(mapper) =cl_abap_corresponding=>create(

source
=struct1

destination
=struct2

mapping
= VALUE cl_abap_corresponding=>mapping_table(

( level
= 0kind= cl_abap_corresponding=>mapping_component

srcname
=‘…’

dstname
=‘…’ )

( level
= 0kind= cl_abap_corresponding=>mapping_component

srcname
=‘…’

dstname
=‘…’ )

( level
= 0kind= cl_abap_corresponding=>mapping_component

srcname
=‘…’

dstname
= ‘…’ ) ) ).

标签: none

添加新评论