博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
神一样的 Abap include Structure
阅读量:4346 次
发布时间:2019-06-07

本文共 3053 字,大约阅读时间需要 10 分钟。

刚看到abap的结构体时,感觉它和其它的语言没有什么分别。但是看到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' .

 

参考:

转载于:https://www.cnblogs.com/ITHelper/archive/2013/01/05/2846045.html

你可能感兴趣的文章
Http协议的学习
查看>>
【转】轻松记住大端小端的含义(附对大端和小端的解释)
查看>>
设计模式那点事读书笔记(3)----建造者模式
查看>>
ActiveMQ学习笔记(1)----初识ActiveMQ
查看>>
Java与算法之(2) - 快速排序
查看>>
Windows之IOCP
查看>>
WebSocket & websockets
查看>>
openssl 升级
查看>>
ASP.NET MVC:通过 FileResult 向 浏览器 发送文件
查看>>
CVE-2010-2883Adobe Reader和Acrobat CoolType.dll栈缓冲区溢出漏洞分析
查看>>
使用正确的姿势跨域
查看>>
AccountManager教程
查看>>
Android学习笔记(十一)——从意图返回结果
查看>>
算法导论笔记(四)算法分析常用符号
查看>>
ultraedit激活
查看>>
总结(6)--- python基础知识点小结(细全)
查看>>
亿级曝光品牌视频的幕后设定
查看>>
ARPA
查看>>
JSP开发模式
查看>>
我的Android进阶之旅------>Android嵌入图像InsetDrawable的使用方法
查看>>