从ABAP结构中拾取字段值

  • 本文关键字:字段 ABAP 结构 abap
  • 更新时间 :
  • 英文 :


我试图从表行中的字段中获取值。但是我无法访问它,因为我的表没有标题行。我有以下代码:

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.

相关内容

  • 没有找到相关文章

最新更新