ABAP 代码中的 MODIFY TABLE 子句出错

Error in MODIFY TABLE clause in ABAP code

修改 table 子句时出错。这里有什么问题。 我怀疑这与拥有唯一的密钥有关- colb.

DATA : BEGIN OF line1,
   cola TYPE i,
   colb TYPE i,
   END OF line1.
DATA mytable1 LIKE HASHED TABLE OF line1 WITH UNIQUE KEY colb.

DO 4 TIMES.
   line1-cola = sy-index.
   line1-colb = sy-index ** 2.
   INSERT line1 INTO TABLE mytable1.
ENDDO.

line1-colb = 80.
**MODIFY TABLE mytable1 FROM line1 TRANSPORTING colb
where (colb > 2) and (cola < 5).**

LOOP AT mytable1 INTO line1.
   WRITE :/ line1-cola, line1-colb.
ENDLOOP.

Error:
".", "ASSIGNING <fs>", "REFERENCE INTO data-reference", or "ASSIGNING            
<fs> CASTING" expected after "COLB".            

Note: Error line is in bold. The error is shown in red.

这已经在 documentation 很长时间了:

You may not use a key field as a TRANSPORTING field with HASHED or SORTED tables.

@vwegert 是对的,您不能更改 HASHED 和 SORTED table 中的键值。另一方面,您的错误是语法上的。如果你改变:

MODIFY TABLE mytable1 FROM line1 TRANSPORTING colb where colb > 2 and cola < 5.

对于

MODIFY mytable1 FROM line1 TRANSPORTING colb where colb > 2 and cola < 5. "'TABLE' word omitted 

这也是一个语法错误,但是,SAP 会更清楚地显示错误:

You cannot change the search key using "MODIFY". "COLB" is contained in the table key of "MYTABLE1".

勾选documentation。在 'MODIFY' 语句中指定条件(或包含 'WHERE')时,不应使用 'TABLE'.

一词

如果您仍想修改关键字段,则将内部 table 更改为 'STANDARD',如下所示:

DATA mytable1 LIKE STANDARD TABLE OF line1 WITH KEY colb.

希望对您有所帮助。