類CL_ABAP_TYPEDESCR和它的子類的結構圖
CL_ABAP_TYPEDESCR
|
|--CL_ABAP_DATADESCR
| |
| |--CL_ABAP_ELEMDESCR
| |--CL_ABAP_REFDESCR
| |--CL_ABAP_COMPLEXDESCR
| |
| |--CL_ABAP_STRUCTDESCR
| |--CL_ABAP_TABLEDESCR
|
|--CL_ABAP_OBJECTDESCR
|
|--CL_ABAP_CLASSDESCR
|--CL_ABAP_INTFDESCR
例子1:
TYPES:
BEGIN OF TYP_DEPT,
ID(10) TYPE N,
NAME(10) TYPE C,
END OF TYP_DEPT.
DATA:
WA_DEPT TYPE TYP_DEPT,
DESCR_REF TYPE REF TO CL_ABAP_STRUCTDESCR.
FIELD-SYMBOLS:
<FS_DEPT> TYPE ABAP_COMPDESCR.
************************************************************************
* START-OF-SELECTION
************************************************************************
START-OF-SELECTION.
DESCR_REF ?= CL_ABAP_TYPEDESCR=>DESCRIBE_BY_DATA( WA_DEPT ).
LOOP AT DESCR_REF->COMPONENTS ASSIGNING <FS_DEPT>.
WRITE: / <FS_DEPT>-NAME.
ENDLOOP.
例子2:
TYPES:
my_table TYPE HASHED TABLE OF i WITH UNIQUE KEY TABLE
LINE.
DATA:
descr_ref TYPE ref to
cl_abap_tabledescr.
FIELD-SYMBOLS:
<key_comp_wa> TYPE
abap_keydescr.
START-OF-SELECTION.
descr_ref ?=
cl_abap_typedescr=>describe_by_name( 'MY_TABLE' ).
WRITE: /
'Typename :', descr_ref->absolute_name.
WRITE: / 'Kind :',
descr_ref->type_kind.
WRITE: / 'Length :',
descr_ref->length.
WRITE: / 'Decimals :',
descr_ref->decimals.
WRITE: / 'Table Kind :',
descr_ref->table_kind.
WRITE: / 'Initial Size :',
descr_ref->initial_size.
WRITE: / 'Key Def Kind :',
descr_ref->key_defkind.
WRITE: / 'Has Unique Key:',
descr_ref->has_unique_key.
WRITE: / 'Key Components:'.
LOOP AT
descr_ref->key ASSIGNING <key_comp_wa>.
WRITE
<key_comp_wa>-name.
ENDLOOP.