Learn from the mis takes of others.
You can't live long enough to make them yourself.
试着从别人的错误当中学习,
因为你没办法用自己的生命实际感受过每一个错误。
1
程序效果
2
源码分享
*&\----------------------------------------------------------------------
*& 4\. CORRESPONDING关键字 理解:字段映射
*&\----------------------------------------------------------------------
*& 语法:… CORRESPONDING dtype|#( [BASE ( base )] struct|itab [mapping|except] )
*& 后缀:MAPPING 映射字段,注意避免dump;
*& EXCEPT 排除映射字段
*&\----------------------------------------------------------------------
BEGIN OF gty_student ,
name ( 10 ) TYPE c , "姓名
gender TYPE c , "性别
age TYPE i , "年龄
id ( 10 ) TYPE n , "学生ID
class ( 10 ) TYPE c , "班级
score TYPE p DECIMALS 1 , "成绩
level ( 10 ) TYPE c , "级别
ispass TYPE c , "是否通过
END OF gty_student ,gty_t_student TYPE TABLE OF gty_student WITH EMPTY KEY .
BEGIN OF gty_teacher ,
name ( 10 ) TYPE c , "姓名
gender TYPE c , "性别
age TYPE i , "年龄
seniority TYPE i , "工龄
office ( 12 ) TYPE c , "办公室
END OF gty_teacher ,gty_t_teacher TYPE TABLE OF gty_teacher WITH EMPTY KEY .
"初始结构数据
DATA ( ls_corr01 ) = VALUE gty_teacher ( name = 'Tom' gender = '男'age = 20 office = '101办公室' seniority = 10 ).
DATA ( ls_corr02 ) = VALUE gty_student ( name = 'Lisa' gender ='女' age = 18 ).
"基础
DATA ( ls_teacher01 ) = ls_corr01 .
DATA ( ls_teacher02 ) = ls_corr01 .
ls_teacher01 = CORRESPONDING gty_teacher ( ls_corr02 )."无BASE,无映射字段,置初始值
ls_teacher02 = CORRESPONDING gty_teacher ( BASE ( ls_corr01 )ls_corr02 ). "无映射字段,保留原值(同MOVE-CORRESPONDING ... to ...)
"后缀
DATA ( ls_teacher03 ) = CORRESPONDING gty_teacher ( ls_corr02 MAPPINGseniority = age EXCEPT age ).
DATA ( ls_teacher04 ) = CORRESPONDING gty_teacher ( BASE ( ls_corr01
) ls_corr02 MAPPING seniority = age EXCEPT age ).*------------------------------------*
"初始化内表数据
DATA ( lt_corr01 ) = VALUE gty_t_teacher ( ( name = 'Tom' gender ='男' age = 20 office = '101办公室' seniority = 10 )
( name = 'Tom2' gender = '男' age = 21 office = '102办公室' seniority
= 11 )
( name = 'Tom3' gender = '男' age = 22 office = '103办公室' seniority
= 12 ) ).
DATA ( lt_corr02 ) = VALUE gty_t_student ( ( name = 'Lisa' gender ='女' age = 18 )
( name = 'Lisa2' gender = '女' age = 19 ) ).
"基础
DATA ( lt_teacher01 ) = lt_corr01 .
DATA ( lt_teacher02 ) = lt_corr01 .
lt_teacher01 = CORRESPONDING gty_t_teacher ( lt_corr02 )."无BASE,清空原表数据,映射赋值
lt_teacher02 = CORRESPONDING gty_t_teacher ( BASE ( lt_corr01 )lt_corr02 ). "有BASE,保留内表数据,映射APPEND
"后缀
DATA ( lt_teacher03 ) = CORRESPONDING gty_t_teacher ( lt_corr02 MAPPINGseniority = age EXCEPT age ).
DATA ( lt_teacher04 ) = CORRESPONDING gty_t_teacher ( BASE ( lt_corr01
) lt_corr02 MAPPING seniority = age EXCEPT age ).3
AI解释
仅供参考
这段ABAP代码主要介绍了ABAP中新引入的 ` CORRESPONDING ` 关键字的用法,其中核心点如下:
** 结构体之间的字段映射: ** 使用 ` ls_teacher01 = CORRESPONDING gty_teacher( ls_corr02). ` ,通过 ` CORRESPONDING ` 将结构体 ` gty_student ` 的字段映射到结构体 ` gty_teacher
` ,实现两者之间相同字段的赋值。
**结构体之间的字段映射,保留原值:** 使用 ` ls_teacher02 = CORRESPONDING gty_teacher( BASE (ls_corr01 ) ls_corr02 ). ` ,通过 ` CORRESPONDING ` 将结构体 ` gty_student `
的字段映射到结构体 ` gty_teacher ` ,保留 ` ls_corr01 ` 的原始值。
**字段映射中的MAPPING和EXCEPT后缀:** 使用 ` ls_teacher03 = CORRESPONDING gty_teacher(
ls_corr02 MAPPING seniority = age EXCEPT age ). ` ,通过 ` MAPPING ` 指定映射关系,` EXCEPT ` 排除不需要映射的字段。
**内表之间的字段映射:** 使用 ` lt_teacher01 = CORRESPONDING gty_t_teacher( lt_corr02 ).` ,通过 ` CORRESPONDING ` 将内表 ` gty_t_student ` 的字段映射到内表 ` gty_t_teacher `
,清空原表数据,并映射赋值。
**内表之间的字段映射,保留原值:** 使用 ` lt_teacher02 = CORRESPONDING gty_t_teacher( BASE (lt_corr01 ) lt_corr02 ). ` ,通过 ` CORRESPONDING ` 将内表 ` gty_t_student `
的字段映射到内表 ` gty_t_teacher ` ,保留 ` lt_corr01 ` 的原始值,并进行映射APPEND。
**内表字段映射中的MAPPING和EXCEPT后缀:** 使用 ` lt_teacher03 = CORRESPONDING
gty_t_teacher( lt_corr02 MAPPING seniority = age EXCEPT age ). ` ,通过 `MAPPING ` 指定映射关系, ` EXCEPT ` 排除不需要映射的字段。
通过这些例子,你可以向新手解释如何使用 ` CORRESPONDING `
关键字进行结构体和内表之间字段的映射,以及如何使用后缀进行更加灵活的映射操作。
以上是今日分享,希望对你有所帮助~~~
欢迎点赞、留言、分享
往期推荐
[ ABAP 新语法-构建演示数据
](https://mp.weixin.qq.com/s?__biz=Mzg3OTE2Njg0OQ==&mid=2247495390&idx=1&sn=55b0041df577df441aecbbe5891acfd6&chksm=cf0a3a30f87db326b5fde73627d116158d2ada96a929979de6705ab67a6fbfd0a686f11455b4&scene=21#wechat_redirect)
[ ABAP 新语法-ITAB[ idx ]、ITAB[ key ]
](https://mp.weixin.qq.com/s?__biz=Mzg3OTE2Njg0OQ==&mid=2247495421&idx=1&sn=5bf5211e0efd337c99f468b404a74241&chksm=cf0a3a13f87db30581864047c526686107ab52627f151d2a7b351ffc4042ccf0c663e2bc90c6&scene=21#wechat_redirect)
[ ABAP 新语法-VALUE
](https://mp.weixin.qq.com/s?__biz=Mzg3OTE2Njg0OQ==&mid=2247495430&idx=1&sn=49d1f2dcb5cdeb6244ac6c8d5bcf065f&chksm=cf0a3be8f87db2feb7ed67e350579b4d62c1466feee276b3bbc79f89a31e59e1c7a493fa8975&scene=21#wechat_redirect)
点个 在看 你最好看