Abap 在偏移量中使用变量,在表表达式组件中使用长度?
我想看看是否有办法做到以下几点Abap 在偏移量中使用变量,在表表达式组件中使用长度?,abap,internal-tables,Abap,Internal Tables,我想看看是否有办法做到以下几点 IF line_exists( company_accounts2[ saknr+0(2) = wa_company_accounts-saknr+0(wa_account_levels-num_of_digits) ] ). ENDIF. 但是saknr+0(2)中的数字2有一个参数,特别是在等式的另一边(wa_account_levels-num_of_digits)。有没有别的办法?因为如果我用wa_account_levels-num_of_dig
IF line_exists( company_accounts2[ saknr+0(2) = wa_company_accounts-saknr+0(wa_account_levels-num_of_digits) ] ).
ENDIF.
但是saknr+0(2)中的数字2有一个参数,特别是在等式的另一边(wa_account_levels-num_of_digits)。有没有别的办法?因为如果我用wa_account_levels-num_of_digits替换2,我会得到错误“长度规格”wa_account_levels-num_of_digits不是数字。”提前谢谢 注:什么不起作用,这是我在下面问的问题,上面的代码是以下代码:
IF line_exists( tab[ matnr+0(ls_mara-num_of_digits) = ls_mara-matnr+0(ls_mara-num_of_digits) ] ).
此代码不起作用。它工作得很好,因为您想要实现您的
wa\u帐户\u levels-num\u数字
应该具有原始类型i
(INT1
,INT2
,INT4
,INT8
)
这是工作的马拉样品
SELECT * UP TO 5 ROWS
FROM mara
INTO TABLE @DATA(tab).
READ TABLE tab INTO DATA(ls_mara) INDEX 1.
IF line_exists( tab[ matnr+0(2) = ls_mara-matnr+0(ls_mara-stfak) ] ).
ENDIF.
更新:用于读取访问的表组件的动态规范:
如果组件的数据类型类似于字符且平坦,则可以在组件名称后附加偏移量/长度+off(len)(如在子字符串访问中)以访问组件的子区域只能为off和len指定直接指定的数字或常数
将等式的左侧传递为:
我无法用计算机再现这个问题。也许
WA\u ACCOUNT\u LEVELS-NUM\u OF \u DIGITS
确实不是数字?它的具体类型是什么?我知道这个代码是有效的。但我想参数化等式的左侧。不可能,请参阅更新
DATA(lv_text) = |saknr+({ wa_account_levels-num_of_digits })|.
IF line_exists( company_accounts2[ (lv_text) = wa_company_accounts-saknr+0(wa_account_levels-num_of_digits) ] ).
CONTINUE.
ELSE.
"make the APPEND
ENDIF.