我正在尝试从表格行中的字段中提取值。但是我无法访问它,因为我的表没有标题行。 我有以下代码:
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上下文不再支持带有标题的表。
有人可以帮我吗?
谢谢
答案 0 :(得分:4)
您将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.