我正在SAP中处理自动化报告,但我无法输入gt_output3-namev
的值来gt_output-namev01
。
当我只移动字符串文字(设置了"1")时,它有效。
当我移动gt_output3-namev
时它不起作用(保持空)。
我该如何解决这个问题?谢谢
我尝试调试,我可以看到gt_output3-namev
的值不是用gt_output-namev01
写的。
SELECT
knvk~lifnr, knvk~namev, knvk~name1, knvk~titel_ap, knvk~telf1, knvk~abtnr
FROM knvk
WHERE knvk~lifnr = @lv_lifnr AND knvk~abtnr = '0002'
INTO TABLE @gt_output3.
IF sy-subrc = '0'.
MOVE gt_output3-namev TO gt_output-namev01. ---> doesn't work
MOVE '1' TO gt_output-name101. ---> works
MOVE '1' TO gt_output-titel_ap01.
MOVE '1' TO gt_output-telf101.
MOVE '1' TO gt_output-smtp_addr01.
ENDIF.
APPEND gt_output TO gt_final.
gt_output3
是一个带有标题行的表格
这意味着您有一个同名的表和一个结构。它非常方便,但现在已经过时了,因为它导致了许多混乱。
由于 SELECT 的原因,它以表的形式包含值,但在您的情况下,gt_output3
从未被赋予值作为结构。这会导致MOVE
出现问题(注意:移动现在也已过时,请改用=
):
MOVE gt_output3-namev TO gt_output-namev01.
您可以通过循环访问表来获取gt_output3
的值,例如:
LOOP AT gt_output3 ASSIGNING FIELD-SYMBOL(<ls_output3>).
gt_output-namev01 = <ls_output3>-namev.
注意:gt_output
在这里被视为一个结构,而不是一个内部表(从其命名约定中猜错了)。可能您也已将其定义为带有标题行的内部表,因此最好删除标题行并声明/使用单独的结构化变量(例如data gs_output like line of gt_output
和gs_output-namev01 ...
)。
如果您有 ABAP 740 或更高版本,则可以按行号直接访问行,例如访问第一行:
gt_output-namev01 = gt_output3[ 1 ]-namev.