abap - “MOVE”适用于文字,但不适用于内部表
问题描述
我正在处理 SAP 中的自动化报告,我无法输入gt_output3-namev
to的值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
例如,您可以通过 LOOPing 表来获取 的值:
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.
推荐阅读
- python - 具有多个嵌套类别的 Pandas DataFrame 到 JSON
- reactjs - 使用 React 路由器进行历史推送堆叠
- makefile - 如何静默变量属性(分配)?
- php - Laravel 7:将数据库结果分成 3 行结果,并将每个结果放入 bootstrap4 行
- python - 在字典中查找项目忽略关键案例
- go - 如何在 golang 中写入标准输入?
- angular - 使用angular8和springboot上传文件上传
- reactjs - 如何通过单击 React 挂钩中的按钮向 API 发送请求?
- google-cloud-run - 谷歌云中的空队列使用管道工 R api 运行
- azure - 在流分析工作并将它们路由到服务总线之后,事件中心中的事件会发生什么?