用于修改内部表的新ABAP语法

2020-09-05 14:31发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

是否有可能使用新的abap语法修改内部表,可能在FOR ... IN迭代中? 我需要修改现有内部表的每一行的列中的值,并将其分配给新的内部表。 我正在尝试使用类似这样的东西:

类型:tt_1带空键的YGT_COST类型表。

DATA:lr_gen TYPE REF TO data。

场符号:类型标准表。

FIELD-SYMBOLS: TYPE ANY。

使用空密钥创建YGT_COST的数据lr_gen类型标准表。

ASSIGN lr_gen-> *至

创建数据lr_gen类型YGT_COST。

ASSIGN lr_gen-> *至。 *

= ct_table。

DATA(lt_table)=值tt_1(FOR IN (new_update ='X'))。

*//但是,上面的语句创建的内部表lt_table的行类型为,但是只在 new_update 列中填充了" X"。 其余的列将作为初始内容渲染到新的内部表 lt_table 中。

我期望的是仅用'X'更新列 new_update ,其余列应具有结构中的值。 请注意,由于涉及大量列,从到lt_table对应字段的列到列映射是不可行的。

最佳Rgds

愿望

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

是否有可能使用新的abap语法修改内部表,可能在FOR ... IN迭代中? 我需要修改现有内部表的每一行的列中的值,并将其分配给新的内部表。 我正在尝试使用类似这样的东西:

类型:tt_1带空键的YGT_COST类型表。

DATA:lr_gen TYPE REF TO data。

场符号:类型标准表。

FIELD-SYMBOLS: TYPE ANY。

使用空密钥创建YGT_COST的数据lr_gen类型标准表。

ASSIGN lr_gen-> *至

创建数据lr_gen类型YGT_COST。

ASSIGN lr_gen-> *至。 *

= ct_table。

DATA(lt_table)=值tt_1(FOR IN (new_update ='X'))。

*//但是,上面的语句创建的内部表lt_table的行类型为,但是只在 new_update 列中填充了" X"。 其余的列将作为初始内容渲染到新的内部表 lt_table 中。

我期望的是仅用'X'更新列 new_update ,其余列应具有结构中的值。 请注意,由于涉及大量列,从到lt_table对应字段的列到列映射是不可行的。

最佳Rgds

愿望

付费偷看设置
发送
6条回答
haha101010
1楼-- · 2020-09-05 15:02

我很困惑:

问题标题让想想的人只想更新一个内部表的一个组件。

但是内部的问题即将转移到 另一个内部表,其中一个组件设置为固定值,并且该结构的所有其他组件应保持不变。

所以我将回答两个问题(因为其他答案使我感到困惑)。

1)回答标题:"新ABAP"吗? 如果仅通过"构造表达式"表示,则否,因为它只是"创建"数据,而不是"更新"。 要进行更新,您必须使用"旧的" ABAP语句...,但是您仍然可以在其中使用构造表达式(因为具有通用的行类型,所以需要使用括号):

 MODIFY <  tab> FROM VALUE ygt_cost(new_update ='X')TRANSPORTING('new_update')WHERE(`new_update <>'X'`)。  

更多信息:修改itab_lines a)

2)要回答实际问题,要传输所有其他组件,请使用BASE:

 DATA(lt_table)= VALUE tt_1(FOR  IN (  VALUE ygt_cost(BASE  new_update ='X')))。

更多信息:结构的值#| dtype(BASE ...)

微wx笑
2楼-- · 2020-09-05 14:55

此语法是已知的,并且已经在其中使用。 但是我实际上是在寻找 ABAP 7.50 。 例如...下面是填充内部表的方法(循环的替换)。

DATA(gt_citys)= VALUE ty_citys(FOR ls_ship在gt_ships中(route ='R0001')(ls_ship–city))。

太Q了
3楼-- · 2020-09-05 15:08

使用LET表达式,您可以分配值或分配 使用逻辑将字段设置为意图值。

类型:
   ty_tab1的开头,
     val1类型char1,
     val2类型i,
   ty_tab1的结尾,
   tt_tab1使用空键键入ty_tab1的标准表。

 数据(lt_tab1)=值tt_tab1(
                    (val1 ='A'val2 = 100)
                    (val1 ='B'val2 = 200))。

 cl_demo_output => write(lt_tab1)。

 *让
 数据(lt_tab2)=值tt_tab1(
                   用于lt_tab1索引中的wa进入idx
                   令x = wa-val2 + idx
                   in(val1 = wa-val1 val2 = x))。

 cl_demo_output => write(lt_tab2)。
 cl_demo_output => display()。
compass1988
4楼-- · 2020-09-05 14:52
My梦
5楼-- · 2020-09-05 14:47

Vijaya Simha Chintarlapalli Reddy

您可以在LET之后使用函数方法来修改所需的字段:

 DATA(itab1)= VALUE#(对于tab2中的ls1 LET ls_tmp = conv_class-> conv(ls1)IN(ls_tmp))。  
SAP浪
6楼-- · 2020-09-05 15:02

vishwanath vedula 请使用"代码"按钮格式化代码。

一周热门 更多>