zoukankan      html  css  js  c++  java
  • ABAP开发基础知识:4) 结构体(Structure)

          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)

        

  • 相关阅读:
    3.怎样将ASP.NET MVC应用程序发布到IIS
    7.ASP.NET MVC 5.0中的Routing【路由】
    2.第一个ASP.NET MVC 5.0应用程序
    5. ASP.NET MVC 中的Areas【区域】是什么
    JVM系列五:JVM监测&工具[整理中]
    C# 编写 windows 服务 采用多线对数据库操作
    安装MVC4的悲惨历程
    Mac上安装FFmpeg命令行
    host asp.net程序的小型IIS
    msdn windows 电驴资源(转)
  • 原文地址:https://www.cnblogs.com/foxting/p/2390623.html
Copyright © 2011-2022 走看看