abap - 如何用另一个内部表更新一个内部表?
问题描述
我有这张表,您会注意到该列VKBUR
是空的:
VKGRP
使用列作为键使用另一个表中的条目填充此列的最佳方法是什么?
总之,我想VKBUR
使用来自L_T_ZCUSTSL04
源的数据来填充列。他们的密钥VKGRP
来自两个表:
使用此查找表,我想将值传递VKBUR
到上表中。
非常感谢您的帮助,祝您周末愉快。
解决方案
另一种可能的方法是使用表格推导和表格表达式来填充表格
TYPES: BEGIN OF ty_mara,
matnr TYPE matnr,
matkl TYPE matkl,
maktx TYPE maktx,
END OF ty_mara,
BEGIN OF ty_text,
matnr TYPE matnr,
maktx TYPE maktx,
END OF ty_text.
DATA: gt_text TYPE STANDARD TABLE OF ty_text.
DATA: gt_mara TYPE STANDARD TABLE OF ty_mara.
TYPES: tty_empty TYPE STANDARD TABLE OF ty_mara WITH EMPTY KEY.
SELECT matnr, matkl UP TO 10 ROWS
FROM mara
INTO TABLE @gt_mara.
SELECT matnr, maktx
INTO TABLE @gt_text
FROM makt
FOR ALL ENTRIES IN @gt_mara
WHERE matnr = @gt_mara-matnr.
DATA(gt_result) = VALUE tty_empty( FOR wa IN gt_mara ( matnr = wa-matnr matkl = wa-matkl maktx = VALUE maktx( gt_text[ matnr = wa-matnr ]-maktx OPTIONAL ) ) ).
然而,与 Dan 的方式相比,它有几个缺点,因为它需要静态表声明,并且它创建新的 itab 而不是修改现有的。所以我建议坚持丹的方式。
当然,使用旧的良好循环和表表达式可以避免构建新表:
LOOP AT gt_mara ASSIGNING FIELD-SYMBOL(<fs_mara>).
maktx = VALUE maktx( gt_text[ matnr = <fs_mara>-matnr ]-maktx OPTIONAL ).
ENDLOOP.
推荐阅读
- qt - 如何在 CMake 项目中使用 QtMqtt?
- r - 我正在尝试在 r 中绘制分段函数
- python - 尽管导入了所有包,Bert Tokenizer 仍无法正常工作。对此有新的语法更改吗?
- mysql - 如何检查所有行在一列中是否有相似的数据
- javascript - 无法将“页面 [大小]”参数传递给 API 请求
- c - 如何在没有指针的情况下存储变量的地址
- windows - 从 Linux VM 切换到 Windows VM docker toolbox windows 8.1
- apache-spark - 如何在一个微批量的 Spark 结构化流中设置批量大小
- arrays - 如何在Swift中删除除第一个/最后n个元素之外的所有数组项
- javascript - 未捕获的类型错误:无法读取 HTMLTableCellElement 处未定义的属性“样式”