本文主要介绍一下SAP ABAP中的声明数据类型的TYPE系列关键字,主要包括了TYPE、TYPE TABLE OF、TYPE LINE OF、TYPE REF TO
TYPE
TYPE关键字是数据类型定义中最重要的关键字,可以参照预定义数据类型,全局数据字典数据类型或者用户自定义数据类型。关于【TYPE】关键字的使用此前已经详细尽述,在此不再赘述。具体可以参考下面两文:
SAP ABAP——数据类型(二)【TYPES自定义数据类型详解】
TYPE LINE OF
TYPE LINE OF主要用来参照表类型中的一行定义结构体类型,表类型可以是数据字典表类型也可以是用户自定义的表类型。
TYPES <ty_name> TYPE LINE OF <ty_tab_name>.
参照数据字典表类型
TYPES:ty_hrhcp00 TYPE LINE OF hrhcp00_dc_orginfo. DATA:gs_hrhcp00 TYPE ty_hrhcp00.
上面给出了参照数据字典表类型定义一行结构体类型的代码示例,并且最后使用了【DATA】语句将结构体类型实例化并且加入断点进行观察,具体效果如下图所示:
参照用户自定义表类型
TYPES:ty_tab_sflight TYPE TABLE OF sflight, ty_sflight TYPE LINE OF ty_tab_sflight. DATA gv_sflight TYPE ty_sflight.
上面给出了参照用户自定义表类型定义一行结构体类型的代码示例,并且最后使用了【DATA】语句将结构体类型实例化并且加入断点进行观察,具体效果如下图所示:
TYPE TABLE OF
【TYPE TABLE OF】语句是用来定义内表数据类型的语句。在SAP ABAP中拥有标准表类型、排序表类型、哈希表类型三种内表数据类型。关于内表数据的相关知识可以参考笔者的第七章系列文章:SAP ABAP——内表
*定义标准表类型 TYPES: <ty_tab_standard_name> TYPE [STANDARD] TABLE OF <type> [WITH NON-UNIQUE KEY <k1 k2 ... kn>] [INITIAL SIZE <n>]. *定义排序表类型 TYPES: <ty_tab_sorted_name> TYPE SORTED TABLE OF <type> [WITH [NON-UNIQUE|UNIQUE] KEY <k1 k2 ... kn>][INITIAL SIZE <n>]. *定义哈希表类型 TYPES: <ty_tab_hashed_name> TYPE HASHED TABLE OF <type> [WITH UNIQUE KEY <k1 k2 ... kn>] [INITIAL SIZE <n>].
定义标准表类型
*参照数据库表sflight定义标准表 TYPES:ty_tab_sflight TYPE TABLE OF sflight WITH NON-UNIQUE KEY carrid connid fldate.
定义排序表类型
*参照数据库表sflight定义排序表 TYPES:ty_tab_sflight TYPE SORTED TABLE OF sflight WITH NON-UNIQUE KEY carrid connid fldate.
定义哈希表类型
*参照数据库表sflight定义哈希表 TYPES:ty_tab_sflight TYPE HASHED TABLE OF sflight WITH UNIQUE KEY carrid connid fldate.
TYPE REF TO
【TYPE REF TO】语句是用来参照类自定义类的语句,可以参照的类包括全局类和本地类。关于该语句的的讲解在此只做简单的介绍,具体面向对象的知识将在该系列文章后续章节【面向对象ABAP程序设计(ABAP OOP)】中讲解!
TYPES:<cl_name> TYPE REF TO <type>.
参照本地类
*本地类 lcl_data定义 CLASS lcl_data DEFINITION. PUBLIC SECTION. CLASS-METHODS: get_data IMPORTING iv_date TYPE d. ENDCLASS. "lcl_data DEFINITION *本地类 lcl_data实例化 CLASS lcl_data IMPLEMENTATION. METHOD get_data. * do something ENDMETHOD. "get_Data ENDCLASS. "lcl_data IMPLEMENTATION TYPES:cl_data_ty TYPE REF TO lcl_data.
参照全局类
TYPES:cl_alv_ty TYPE REF TO CL_GUI_ALV_GRID.