Abap 使用where修改itab字段

Abap 使用where修改itab字段,abap,Abap,如何编写下面的代码 MODIFY git_oi_tab FROM VALUE #( dmbtr = dmbtr * -1 ) TRANSPORTING dmbtr WHERE shkzg = 'H'. DMBTR*-1中的DMBTR未知 谢谢 埃利亚斯 另外,我发现了这一点,但这不是我想要的,因为它返回了计算字段,但清除了ITAB it_final_数据中的所有其他字段 it_final_data = VALUE

如何编写下面的代码

MODIFY git_oi_tab FROM VALUE #( dmbtr = dmbtr * -1 ) 
                    TRANSPORTING dmbtr
                    WHERE shkzg = 'H'.
DMBTR*-1中的DMBTR未知

谢谢 埃利亚斯

另外,我发现了这一点,但这不是我想要的,因为它返回了计算字段,但清除了ITAB it_final_数据中的所有其他字段

it_final_data = VALUE #( LET lit_final_data = it_final_data IN FOR lwa_final_data IN lit_final_data  
             ( ovh_ifrs_diff_value = lwa_final_data-ovh_ifrs_value * lv_1st_ledger_amount / sum_OVH_IFRS ) ).

在所有行中,如果字段
SHKZG
等于
'H'

在这种情况下,您将无法绕过循环:

LOOP AT git_oi_tab ASSIGNING FIELD-SYMBOL(<ls_oi_tab>) WHERE shkzg = 'H'.
     <ls_oi_tab>-dmbtr = <ls_oi_tab>-dmbtr * -1.
ENDLOOP.
在git_oi_选项卡上循环分配字段-SYMBOL(),其中shkzg='H'。 -dmbtr=-dmbtr*-1。 结束循环。
如果使用
MODIFY itab FROM wa
变量,则不会为每一行单独构造
wa
。按原样取一次,并应用于所有行。你不能在这里隐藏任何动态逻辑。

我想我可以从代码中推断出你的问题,如果你能用自己的话解释就好了。不能使用MODIFY,我也不建议使用构造函数表达式。相反,使用一个经典的循环。我这样做了,但我仍在尝试找到一个新的更好的方法。谢谢菲利普