ABAP动态编程---动态创建数据类型

代码演示了如何创建structure类型,并以其为行类型创建内表.

DATA: lrf_result_descr TYPE REF TO cl_abap_structdescr,
lt_comp TYPE cl_abap_structdescr=>component_table,
l_comp LIKE LINE OF lt_comp.

DATA: lrf_res_tabledescr TYPE REF TO cl_abap_tabledescr.

DATA: lrf_datadescr TYPE REF TO cl_abap_datadescr.

lrf_datadescr ?= cl_abap_datadescr=>describe_by_name( 'WERKS_D' ).
l_comp-name = 'WERKS'.
l_comp-type = lrf_datadescr.
l_comp-as_include = abap_false.
l_comp-suffix = ''.
APPEND l_comp TO lt_comp.

lrf_datadescr ?= cl_abap_datadescr=>describe_by_name( 'ARBPL' ).
l_comp-name = 'ARBPL'.
l_comp-type = lrf_datadescr.
l_comp-as_include = abap_false.
l_comp-suffix = ''.
APPEND l_comp TO lt_comp.

lrf_result_descr = cl_abap_structdescr=>create( lt_comp ).
lrf_res_tabledescr = cl_abap_tabledescr=>create( lrf_result_descr ).

DATA: lw_result TYPE REF TO data,
lt_result TYPE REF TO data.

CREATE DATA lw_result TYPE HANDLE lrf_result_descr.
CREATE DATA lt_result TYPE HANDLE lrf_res_tabledescr.

FIELD-SYMBOLS: <lt_res> TYPE STANDARD TABLE,
<lw_res> TYPE ANY,
<lw_any> TYPE ANY.

ASSIGN lt_result->* TO <lt_res>.
ASSIGN lw_result->* TO <lw_res>.

ASSIGN COMPONENT 'WERKS' OF STRUCTURE <lw_res>
TO <lw_any>.
<lw_any> = '0000000'.
APPEND <lw_res> TO <lt_res>.

ASSIGN COMPONENT 'WERKS' OF STRUCTURE <lw_res>
TO <lw_any>.
<lw_any> = '9999999'.
APPEND <lw_res> TO <lt_res>.

LOOP AT <lt_res> INTO <lw_res>.
ASSIGN COMPONENT 'WERKS' OF STRUCTURE <lw_res>
TO <lw_any>.

WRITE: / <lw_any>.

ENDLOOP.

动态编程是运行时才开始创建类型, 对程序的运行有影响,不建议经常使用.但在一些像比较通用功能的实现中, 如查询ABAP Dictionary中的透明表的数据内容,就可以采用动态编程实现.


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值