在 table 表达式组件中使用偏移量和长度变量?

Use variable in offset and length in table expression component?

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

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) ] ).

此代码无效。

它完美地工作,因为你想要实现你的 wa_account_levels-num_of_digits 应该有原始类型 i (INT1, 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.

UPDATE:table 组件的动态规范以供读取访问 is not possible:

If the data type of the components is character-like and flat, an offset/length +off(len) can be appended to the name of the component (as in substring access) to access subareas of the component. Only directly specified numbers or constants can be specified for off and len.

将等号的左边作为 text variable between parentheses, which contains the name of the variable and its offset:

  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.