Abap include Structure include type

这里说的是结构包含结构的include不是程序包含程序的include


include 的主要作用是实现结构体的继承关系,详见如下例子:

"人员结构休类型 
TYPES : BEGIN OF personinfo , 
  sid TYPE string, 
  name TYPE string, 
END OF personinfo.


"员工信息类型 
TYPES : BEGIN OF staffinfo , 
  email TYPE string. 
INCLUDE TYPE personinfo AS pinfo . 
TYPES END OF staffinfo.


通过INCLUDE, staffinfo继承了personinfo的字段。

注意此时的BEGIN OF 和 END OF,都是以"."结束的,是一个完整的语句。中间包含的INCLUDE子句也是完整的语句。其自身的字段,则是BEGIN OF 或 TYPES END OF的组成部分。

因此如下形式也是正确的:

"员工信息类型 
TYPES : BEGIN OF staffinfo .  
INCLUDE TYPE personinfo AS pinfo . 
TYPES : email TYPE string, 
END OF staffinfo.

"员工信息类型 
TYPES : BEGIN OF staffinfo , 
  email TYPE string. 
INCLUDE TYPE personinfo AS pinfo . 
TYPES : age type i , END OF staffinfo .

DATA luke TYPE staffinfo . 
luke- sid = '532525198504040913' . 
luke- name = 'luke' . 
luke- email = 'luke@sap.com' . 
WRITE : / , luke- sid ,luke - name, luke -email . 
WRITE : / , luke- pinfo -sid , luke- pinfo -name , luke- email .  这咱语法也是正确的。

考虑一种场景,同时包括相同的类型多次:

"员工信息类型 
TYPES : BEGIN OF staffinfo , 
  email TYPE string. 
INCLUDE TYPE personinfo AS pinfo1 .

  INCLUDE TYPE personinfo AS pinfo2 .

TYPES : age type i , END OF staffinfo .

此时 luke- sid 将出现语法错误.解决方案:RENAMING WITH SUFFIX 选项,为其加上后缀。

"员工信息类型 
TYPES : BEGIN OF staffinfo , 
  email TYPE string. 
INCLUDE TYPE personinfo AS pinfo1 RENAMING WITH SUFFIX _pinfo1 . 
INCLUDE TYPE personinfo AS pinfo2 RENAMING WITH SUFFIX _pinfo2 . 
TYPES : age type i , END OF staffinfo . 
DATA luke TYPE staffinfo . 
luke- sid_pinfo1 = '532525198504040913' . 
luke- name_pinfo1 = 'luke' . 
luke- sid_pinfo2 = '532525198504040913_pinfo2' . 
luke- name_pinfo2 = 'luke2' . 
luke- email = 'luke@sap.com' . 
WRITE : / , luke- sid_pinfo1 ,luke - sid_pinfo2, luke -name_pinfo1 , luke- email .

以上部分是使用types声明的,也可以换成data关键字

"人员结构休类型 
types : begin of PersonInfo , 
  SID type string, 
  Name type string, 
end of PersonInfo. 
"员工信息类型 
data : BEGIN OF staffinfo , 
  email TYPE string. 
INCLUDE type PersonInfo as pInfo RENAMING WITH SUFFIX _pinfo . 
data : age type i , END OF staffinfo . 
DATA luke like staffinfo . 
luke- sid_pinfo = '532525198504040913' . 
luke- name_pinfo = 'luke' . 
luke- pInfo- sid ='' . 
luke- email = 'luke@sap.com' .

"人员结构休类型 
data : begin of PersonInfo , 
  SID type string, 
  Name type string, 
end of PersonInfo. 
"员工信息类型 
data : BEGIN OF staffinfo , 
  email TYPE string. 
INCLUDE structure PersonInfo as pInfo RENAMING WITH SUFFIX _pinfo. 
data : age type i , END OF staffinfo . 
DATA luke like staffinfo . 
luke- sid_pinfo = '532525198504040913' . 
luke- name_pinfo = 'luke' . 
luke- pInfo- sid ='' . 
luke- email = 'luke@sap.com' .

Structure还可以嵌套其它Structure,如下:

"员工信息类型 
data : BEGIN OF staffinfo , 
BEGIN OF birthday , 
Date type d , 
time type t , 
END OF birthday ,    
  email TYPE string. 
INCLUDE type PersonInfo as pInfo RENAMING WITH SUFFIX _pinfo . 
data : age type i , END OF staffinfo . 
DATA luke like staffinfo . 
luke- sid_pinfo = '532525198504040913' . 
luke- name_pinfo = 'luke' . 
luke- pInfo- sid ='' . 
luke- email = 'luke@sap.com' . 
luke- birthday- Date ='20120101' .

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值