Abap include Structure include type

来源:互联网 发布:阿里云小号 编辑:程序博客网 时间:2024/06/06 05:29

这里说的是结构包含结构的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' .

原创粉丝点击