ABAP动态表创建
DATA: dyn_tab TYPE REF TO data,
dyn_str TYPE REF TO data.
FIELD-SYMBOLS: <dyn_tab> TYPE STANDARD TABLE,
<dyn_str> TYPE any,
<fs> TYPE any.
DATA: cond TYPE string.
*动态表创建及取数
CREATE DATA dyn_tab TYPE STANDARD TABLE OF (zfi_t_037a-tname).
ASSIGN dyn_tab->* TO <dyn_tab>.
CREATE DATA dyn_str LIKE LINE OF <dyn_tab>.
ASSIGN dyn_str->* TO <dyn_str>.
*获取单据凭证数据
CONCATENATE zfi_t_037a-keyfd 'EQ' 'ORKEY' INTO cond SEPARATED BY space.
SELECT * FROM (zfi_t_037a-tname) INTO CORRESPONDING FIELDS OF TABLE <dyn_tab>
WHERE (cond).
SELECT SINGLE (gv_zjpzh) FROM (gv_tname) INTO belnr WHERE (gv_cond).
DATA:GO_TAB TYPE REF TO DATA.
FIELD-SYMBOLS <FS_TAB> TYPE STANDARD TABLE. "ALV动态表使用指针
FIELD-SYMBOLS <FS_STRU> TYPE ANY. "ALV动态结构使用指针
DATA:
elem_type TYPE REF TO cl_abap_elemdescr, "元素类型
struct_type TYPE REF TO cl_abap_structdescr, "结构类型
itab_type TYPE REF TO cl_abap_tabledescr, "表类型
dref_str TYPE REF TO data,
dref_tab TYPE REF TO data,
comp_tab TYPE cl_abap_structdescr=>component_table WITH HEADER LINE."结构字段表
DATA:
L_ZLEN TYPE I,
L_DEC TYPE I.
LOOP AT UT_DFIES INTO DATA(LS_DFIES).
CASE LS_DFIES-INTTYPE.
WHEN 'C'.
L_ZLEN = LS_DFIES-LENG.
elem_type ?= cl_abap_elemdescr=>get_C( L_ZLEN ).
WHEN 'P'.
L_ZLEN = LS_DFIES-LENG.
L_DEC = LS_DFIES-DECIMALS.
elem_type ?= cl_abap_elemdescr=>get_p( P_LENGTH = L_ZLEN P_DECIMALS = L_DEC ).
WHEN 'I'.
elem_type ?= cl_abap_elemdescr=>get_I( ).
WHEN 'D'.
elem_type ?= cl_abap_elemdescr=>get_d( ).
WHEN 'F'.
elem_type ?= cl_abap_elemdescr=>get_f( ).
WHEN 'T'.
elem_type ?= cl_abap_elemdescr=>get_t( ).
WHEN 'N'.
L_ZLEN = LS_DFIES-LENG.
elem_type ?= cl_abap_elemdescr=>get_N( L_ZLEN ).
WHEN OTHERS.
L_ZLEN = LS_DFIES-LENG.
elem_type ?= cl_abap_elemdescr=>get_C( L_ZLEN ).
ENDCASE.
comp_tab-name = LS_DFIES-FIELDNAME."为结构新增一个成员
comp_tab-type = elem_type.
APPEND comp_tab.
ENDLOOP.
* 追加checkbox列
elem_type ?= cl_abap_elemdescr=>get_C( 1 ).
comp_tab-name = 'ZCHEXCBOX'."为结构新增一个成员
comp_tab-type = elem_type.
APPEND comp_tab.
* 追加单元格表编辑状态列
itab_type ?= cl_abap_elemdescr=>DESCRIBE_BY_NAME('LVC_T_STYL').
comp_tab-name = 'ZSTYLE'."为结构新增一个成员
comp_tab-type = itab_type.
APPEND comp_tab.
struct_type = cl_abap_structdescr=>create( comp_tab[] ).
CREATE DATA dref_str TYPE HANDLE struct_type."使用结构类型对象来创建结构对象
IF dref_str IS BOUND.
ASSIGN dref_str->* TO <FS_STRU>.
ENDIF.
* 基于结构类型对象创建内表类型对象
itab_type = cl_abap_tabledescr=>create( struct_type ).
CREATE DATA GO_TAB TYPE HANDLE itab_type."使用内表类型对象来创建内表类型
* 引用构建的表
IF GO_TAB IS BOUND.
ASSIGN GO_TAB->* TO <FS_TAB>.
ENDIF.
post SAP-Garson
原文链接:https://blog.csdn.net/weixin_42396921/article/details/82622444文章来自于网络,如果侵犯了您的权益,请联系站长删除!