是否可以使用 VALUE 运算符将 table 数据转换为类似类型
Is it possible to convert table data to similar type using VALUE operator
我认为这个问题最好用一个例子来说明。我有 2 个不同数据类型的表(但是 table_type1
很容易转换为 table_type2
)
i_tab1 type table_type1
(fields: matnr
,maktx
,spras
)
i_tab2 type table_type2
(fields: mandt
,matnr
)
是否可以使用 VALUE
运算符,可能与 FOR line in i_tab1
(或类似的内联命令)一起将 i_tab1 的数据转换和传输到 i_tab2 ?我在想类似下面的事情:
i_tab2 = VALUE # (for line in i_tab1
BASE = gt_itab2 (
MANDT = sy-mandt;
MATNR = line-matnr
)
).
你很接近。这是您可能会觉得有用的解决方案。
REPORT ZZZ.
TYPES: BEGIN OF tab1_line,
matnr TYPE mara-matnr,
maktx TYPE makt-maktx,
spras TYPE makt-spras,
END OF tab1_line,
BEGIN OF tab2_line,
mandt TYPE t000-mandt,
matnr TYPE mara-matnr,
END OF tab2_line,
table_type1 TYPE STANDARD TABLE OF tab1_line WITH EMPTY KEY,
table_type2 TYPE STANDARD TABLE OF tab2_line WITH EMPTY KEY.
DATA:
g_tab1 TYPE table_type1,
g_tab2 TYPE table_type2.
START-OF-SELECTION.
g_tab2 = VALUE #( BASE g_tab2 FOR i IN g_tab1 ( mandt = sy-mandt matnr = i-matnr ) ).
我认为这个问题最好用一个例子来说明。我有 2 个不同数据类型的表(但是 table_type1
很容易转换为 table_type2
)
i_tab1 type table_type1
(fields:matnr
,maktx
,spras
)
i_tab2 type table_type2
(fields:mandt
,matnr
)
是否可以使用 VALUE
运算符,可能与 FOR line in i_tab1
(或类似的内联命令)一起将 i_tab1 的数据转换和传输到 i_tab2 ?我在想类似下面的事情:
i_tab2 = VALUE # (for line in i_tab1
BASE = gt_itab2 (
MANDT = sy-mandt;
MATNR = line-matnr
)
).
你很接近。这是您可能会觉得有用的解决方案。
REPORT ZZZ.
TYPES: BEGIN OF tab1_line,
matnr TYPE mara-matnr,
maktx TYPE makt-maktx,
spras TYPE makt-spras,
END OF tab1_line,
BEGIN OF tab2_line,
mandt TYPE t000-mandt,
matnr TYPE mara-matnr,
END OF tab2_line,
table_type1 TYPE STANDARD TABLE OF tab1_line WITH EMPTY KEY,
table_type2 TYPE STANDARD TABLE OF tab2_line WITH EMPTY KEY.
DATA:
g_tab1 TYPE table_type1,
g_tab2 TYPE table_type2.
START-OF-SELECTION.
g_tab2 = VALUE #( BASE g_tab2 FOR i IN g_tab1 ( mandt = sy-mandt matnr = i-matnr ) ).