是否可以使用 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 ) ).