类CL_ABAP_TYPEDESCR,动态取得运行时类型
類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.
總結
以上是生活随笔為你收集整理的类CL_ABAP_TYPEDESCR,动态取得运行时类型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OO实现ALV TABLE 一:最简单的
- 下一篇: Function实现ALV Table六