我试图从表行中的字段中获取值。但是我无法访问它,因为我的表没有标题行。我有以下代码:
DATA: t2 TYPE TABLE OF komlfp,
go_settlement TYPE REF TO cl_wb2_rebate_settlement_2.
TRY.
CREATE OBJECT go_settlement.
go_settlement->settlement(
EXPORTING
iv_testrun = 'X'
iv_bldat = sy-datum
iv_wfdat = sy-datum
is_contract = wa_view
is_contract_first = wa_view
IMPORTING
et_komlfk = t1
et_komlfp = t2 ).
CATCH cx_wb2_rebates.
ENDTRY.
我现在想要的是使用值t2-kzwi6d,但我总是得到:
"T2"是一个没有标题行的表,因此没有组件称为"KZWI6D"。
我已经尝试过用标题行声明表,但当我尝试时,我得到了:
OO上下文中不再支持带有标头的表。
有人能帮我吗?
感谢
您将t2创建为一个没有标题行的表,因此程序无法识别任何列名。
一种解决方案是将其定义为一个带有标题行的表,尽管这种方法被认为是过时的。
DATA: t2 TYPE STANDARD TABLE OF komlfp WITH HEADER LINE.
另一种选择是动态获取字段值。但是,您必须确保它确实存在,并且分配有效,因此需要进行更多的错误管理。
DATA: t2 TYPE STANDARD TABLE OF komlfp.
FIELD-SYMBOLS: <t2_line> LIKE LINE OF t2,
<kzwi6d> TYPE kzwi6.
LOOP AT t2 ASSIGNING <t2_line>.
ASSIGN COMPONENT 'KZWI6D' OF STRUCTURE <t2_line> TO <kzwi6d>.
ENDLOOP.
编辑:正如Sandra所指出的,您不必动态执行,也可以像这样直接获取值:
DATA: t2 TYPE STANDARD TABLE OF komlfp.
FIELD-SYMBOLS: <t2_line> LIKE LINE OF t2.
LOOP AT t2 ASSIGNING <t2_line>.
" you now have access to the value using <t2_line>-kzwi6d
ENDLOOP.