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,我也不建议使用构造函数表达式。相反,使用一个经典的循环。我这样做了,但我仍在尝试找到一个新的更好的方法。谢谢菲利普