-1

我正在尝试查看是否有办法执行以下操作

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”不是数字。”
提前致谢

PS。什么不起作用,这就是我在上面的代码下面要问的是以下代码:

IF line_exists( tab[ matnr+0(ls_mara-num_of_digits) = ls_mara-matnr+0(ls_mara-num_of_digits) ] ).

此代码不起作用。

4

2 回答 2

3

将等式的左侧作为括号之间的文本变量传递,其中包含变量的名称及其偏移量

  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.
于 2020-12-09T12:55:10.620 回答
1

它完美地工作,因为你想要实现你wa_account_levels-num_of_digits应该有原始类型iINT1, INT2, INT4,INT8在数据库中)。

这是工作 MARA 样本

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 指定直接指定的数字或常数

于 2020-12-08T13:06:37.577 回答