ABAP开发基础知识:4) 结构体(Structure)

简介: ABAP中除了简单类型之外,用户还可以在程序中定义结构体类型,将相同性质的字段进行归类,便于整理及操作。结构体不属于数据字典对象,在程序运行时会被作为临时对象创建。       语法:        TYPES|DATA:BEGIN OF STRUCTURE,                            k1[TYPE type]|[LIKE obj].

      ABAP中除了简单类型之外,用户还可以在程序中定义结构体类型,将相同性质的字段进行归类,便于整理及操作。结构体不属于数据字典对象,在程序运行时会被作为临时对象创建。

      语法:

       TYPES|DATA:BEGIN OF STRUCTURE,

                           k1[TYPE type]|[LIKE obj]...,

                           k2[TYPE type]|[LIKE obj]...,

                           ......

                           kn[TYPE type]|[LIKE obj]...,

                   END OF STRUCTURE.

       或:  TYPES|DATA STRUCTURE TYPE str_type|LIKE str_dob.

      例如一个职员的信息如下:

      DATA:BEGIN OF USERINFO

               SID TYPE STRING,

               NAME TYPE STRING,

               TEL(20) TYPE C,

       END OF USERINFO.

       这样就定义好一个职员结构,ABAP中可以使用语句<Structure>-<fieldname>进行操作指字的字段(在.ENT或是JAVA中都是用操作符".",而ABAP却是用"-",开始用时真有点习惯,呵)。

       USERINFO-SID =  'A20013'.

       USERINFO-NAME = 'KEN'.

       USERINFO-TEL = 'XXX'.

       用语句链输出:

       WRITE:USERINFO-SID,USERINFO-NAME,USERINFO-TEL.

       *输出结果:A20013      KEN     XXX

        结构体语法操作灵活,能够直接参考其它类型结构体来新建:

       DATA:EMPLOYEE LIKE USERINFO.

       EMPLOYEE-SID = 'FLY647';

       EMPLOYEE-NAME = 'SUPER'.

       EMPLOYEE-TEL = 'SXXX'.

       用语句链输出:

       WRITE:EMPLOYEE-SID,EMOLOYEE-NAME,EMPLOYEE-TEL.

      *输出结果:FLY647    SUPER    SXXX

 

        当然还有另外一种定义结构用TYPES关键字,笔者觉得用TYPES定义的更为灵活,就像是定义一个类一样。

        TYPES:BEGIN OF PERSON,

                  nameTYPE STRING,

                  sex(1) TYPE C,

                  age TYPE I,

         END OF PERSON.

         实例化对象:

         DATA p1 TYPE PERSON.

          p1-name = 'Obama'.

          p1-sex = 'Male'.

          p1-age = '50'.

          用语句链输出:

          WRITE:p1-name,p1-sex,p1-age.

       *输出结果:Obama   Male  50

       这样你可以多定义几个对象,而用DATA定义的结构在内存中只能存在一次,没有TYPES定义的灵活(本人经验有限,如果有不正确的地方欢迎指出)。

        

       接下来是介绍ABAP中结构的继承功能,通过参照某个已存在的结构体来创建一个属性相同的新结构体,并且可以在新建的结构体中按实际需求增加字段。定义结构体继承的具体语句为:INCLUDE STRUCTURE。参照上文中的UISERINFO结构来新建继承新的结构。

        DATA:BEGIN OF STAFFINFO. <此处是.操作符>

                 INCLUDE STRUCTURE USERINFO.

        DATA:BIRTHDAY TYPE D,

                 ADDRESS(50) TYPE C,

        END OF STAFFINFO.

        这样就完成了继承关系。

        STAFFINFO-SID = 'SKY001'.

        STAFFINFO-NAME = 'SKY'.

        STAFFINFO-TEL = '010XXX'.

        STAFFINFO-BIRTHDAY = '2012-03-11'.

        STAFFINFO-ADDRESS = 'BEIJING'.

        WRITE:STAFFINFO-SID,STAFFINFO-NAME,STAFFINFO-TEL,STAFFINFO-BIRTHDAY,STAFFINFO-ADDRESS.

        *输出结果:SKY001    SKY    010XXX   2012-03-11  BEIJING.

        与变量的定义类似,结构体的初始化通过语句CLEAR来实现.

        总结:

        用DATA关键字定义的结构可以实现继承关系,而TYPES关键字定义的结构则不可以实现,在实际的编码过程中还是按具体要求做取舍。

        (由于本人经验有限,可能有很多遗漏或者错误的地方,也欢迎高手们提出,这也的我成长的来源,THANKS)

    

目录
相关文章
|
SQL 设计模式 前端开发
【置顶】SAP ABAP开发实战——从入门到精通系列目录
本文章为SAP ABAP开发实战——从入门到精通系列的目录以及关于该教程的后续写作计划表
3191 0
【置顶】SAP ABAP开发实战——从入门到精通系列目录
开发语言漫谈-ABAP
ABAP是SAP公司专门用于SAP软件环境的专门语言
|
BI
SAP ABAP在线预览文档对象的开发实现
应用场景:有些定制化开发(报表/功能增强等)完成之后,客户需要将其操作手册或者相关文档放在某个报表的初始画面,供实际操作者在线查阅,当然这个功能也同样类似于模板的下载,这里就以在线预览(直接打开)为例进行说明。
529 0
|
前端开发 JavaScript 数据库
如何使用 Restful ABAP Programming 编程模型开发一个支持增删改查的 Fiori 应用(二)
Restful ABAP Programming 编程模式是 ABAP 这门编程语言在不断向前进化的过程中,诞生的一门新的编程模型,简称为RAP模型。
392 0
如何使用 Restful ABAP Programming 编程模型开发一个支持增删改查的 Fiori 应用(二)
|
程序员 BI
也谈SAP业务顾问如何避免被ABAP开发顾问怒打
也谈SAP业务顾问如何避免被ABAP开发顾问怒打
也谈SAP业务顾问如何避免被ABAP开发顾问怒打
abap开发function module时使用tables传递参数报错过时的解决方法
如下图,我写了一个Function Module我要在tables中添加一个参数TABLES参数已过时不管怎么点击保存按钮,一直报错,怎么办呢?不管是不是过时,狂点回车,就保存了
2052 0
ABAP开发基础知识:1) ABAP基础程序类型(ABAP Elementary Data Types)
ABAP程序共包含8种基本数据类型定义,下表 数据类型名称 描述 属性 C Character Text(字符类型) 默认长度=1,默认值=blank,最大长度无限制 N Numeric Text(数字类型) 默认长度=1,默认值=“0.
1054 0
ABAP开发基础知识:2) 变量的声明(Declaring Variables)
本篇文件主要讲解的是在ABAP编程过程中如何声明变量。     1.按类型定义变量     ABAP的变量需要通过关键字DATA进行声明,当同时声明多个变量时,需要在DATA后面加冒号,如“DATA:”,每个变量可以分配默认值,使用"VALUE ‘默认值’"进行定义,基本语法如下:     DATA  (长度)  TYPE   VALUE  . 例如:定义一个C类型变量“TEST1”,长度为10,默认值为“Hello Sap” 。
1907 0
ABAP开发基础知识:3) 自定义数据类型(User-Defined Data Types)
在前面曾经介绍过,ABAP共有8种基本数据类型,但是这些数据类型属性太为单一,为了方便开发人员操作和理解,SAP还提供自定义数据类型,让用户能自行定义数据类型的名称及属性,通过关键字TYPES能够实现自定义功能,其语法格式与变量定义类似,通过TYPES声明的参数可以被其它常量、变量引用,不能直接赋值。
1298 0
|
SQL C# 数据管理
ABAP开发基础知识:5) 内表(Internal Table)
内表与结构体基本类似,它同样是程序运行中被临时创建的一个存储空间,它是一个可包含多条记录的数据表。     内表共有3种类型:     1)Standard:标准表     2)Sorted:排序表     3)Hashed:哈希表,一般用的比较少     本篇文件将重点介绍Standart型内表的定义及功能     1.内表的定义     通过关键字DATA对内表进行创建,内一的定义可以直接参考结构体或者其它内表及透明表,也可以直接定义字段,其中关键字如下:     UNIQUE|NON-UNIQUE:指定关键字,只能应用于排序表或者哈希表。
2020 0