RTTI是Runtime Type Information,就是用来决定运行时的属性,包括描述表,描述字段;现在有一个描述信息的Super class CL_ABAP_TYPEDESCR来获取描述信息。
以下是CL_ABAP_TYPEDESCR的Sub Class
CL_ABAP_STRUCTDESCR "用来返回结构的属性
CL_ABAP_TABLEDESCR "用来返回表的属性
CL_ABAP_DATADESCR "用来返回数据相关的属性
CL_ABAP_ELEMDESCR "返回元素的属性,例如长度等;
CL_ABAP_REFDESCR "返回参考数据的相关属性
*-----------------------------------------------------------------------------------------------*
TYPES: BEGIN OF STR_MAT, WERKS TYPE WERKS_D, MATNR TYPE MATNR, MAKTX TYPE MAKTX, END OF STR_MAT.
DATA: LO_STR TYPE REF TO CL_ABAP_STRUCTDESCR, TAB_COMP TYPE CL_ABAP_STRUCTDESCR=>COMPONENT_TABLE.
(1)获取结构的属性 LO_STR ?= CL_ABAP_TYPEDESCR=>DESCRIBE_BY_NAME( 'STR_MAT' ).
"方法DESCRIBE_BY_NAME 就是根据表或者结构的名来获取相关的结构属性;
也可以换成如下的写法:
DATA: WA_MAT TYPE STR_MAT.
LO_STR ?= CL_ABAP_TYPEDESCR=>DESCRIBE_BY_DATA( WA_MAT ).
"方法:DESCRIBE_BY_DATA就是根据工作区或内表来获取结构属性
(2)在获取结构属性之后,需要找到结构下的COMPONENT TABLE,就需要使用方法GET_COMPONENTS() TAB_COMP = LO_STR->GET_COMPONENTS( ).