java table abap,Abap类包装通用表

我想构建一个包装任意内部表的容器ABAP类 .

我最初的方法是定义TYPE REF TO DATA的成员变量,并将引用传递给构造函数 .

问题是由于指针,实例仍然依赖于原始itab . 因此,如果原始表从内存中释放,则无法再访问数据 . 我需要有一个存储在对象中的表数据的真实副本,所以我能够将对象传递到itab的原始范围之外 .

有没有办法在ABAP中实现这一目标?

带有引用的示例代码在最后定义的场景中崩溃:

CLASS lcl_test_itab_wrapper DEFINITION

LOCAL

FINAL

CREATE PUBLIC.

PUBLIC SECTION.

CLASS-METHODS:

access_outside_itab_scope.

METHODS:

constructor

IMPORTING

itab TYPE table,

access_itab_data.

PROTECTED SECTION.

PRIVATE SECTION.

CLASS-METHODS:

sample_itab_setup

RETURNING VALUE(result) TYPE REF TO lcl_test_itab_wrapper.

DATA:

table_ref TYPE REF TO data.

ENDCLASS.

CLASS lcl_test_itab_wrapper IMPLEMENTATION.

METHOD access_itab_data.

FIELD-SYMBOLS

ASSIGN me->table_ref->* TO

WRITE:/ lines(

ENDMETHOD.

METHOD constructor.

me->table_ref = REF #( itab ).

ENDMETHOD.

METHOD sample_itab_setup.

DATA:

dummy_itab TYPE TABLE OF string.

APPEND 'test_record' TO dummy_itab.

CREATE OBJECT result EXPORTING itab = dummy_itab.

ENDMETHOD.

METHOD access_outside_itab_scope.

DATA(o_instance) = sample_itab_setup( ).

" Here it crashes as the referenced itab was freed already.

" I'd need to have a real itab copy stored in the instance

o_instance->access_itab_data( ).

ENDMETHOD.

Update: Solution 基于@vwegert回答

替换构造函数引用赋值:

CREATE DATA me->table_ref LIKE itab.

FIELD-SYMBOLS

ASSIGN me->table_ref->* TO

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值