按索引更改表行

问题描述 投票:-2回答:4

我如何为字段提供具有特定索引的值。或者,如果该字段不是初始字段,那么我想更改此索引上的值例如:

TYPES : BEGIN OF itab,
         number1 type n,
endof itab.

lv_tabix = sy-tabix.

itab-number1 index lv-tabix = '1'.
sap abap
4个回答
3
投票

如果您使用的是最新的ABAP版本,则只需使用table expressions

TRY. 

    itab[ lv-tabix ]-number1  = '1'.

 CATCH cx_sy_itab_line_not_found INTO DATA(exc). 
 cl_demo_output=>display( exc->get_text( ) ). 
ENDTRY. 

2
投票

检查句子MODIFY(itab)的帮助:https://help.sap.com/doc/abapdocu_750_index_htm/7.50/en-US/abapmodify_itab_single.htm

DATA: workarea TYPE your_type.

workarea-field = value.
"modifying for an index
MODIFY your_table INDEX your_index FROM workarea TRANSPORTING field.
"modifying for a condition
MODIFY your_table FROM workarea TRANSPORTING field WHERE your_condition.

或者您也可以使用安东在我面前指出的FIELD-SYMBOLS。


1
投票

您应按索引阅读表,并首先将目标行分配给归档符号:

READ TABLE {your itab} INDEX lv_tabix ASSIGNING FIELD-SYMBOL(<fs>).
<fs>-number1 = '1'.

取决于您的服务器版本,可能需要单独的字段符号声明:

 FIELD-SYMBOLS <fs> TYPE {your table line type}

检查阅读表在线帮助https://help.sap.com/doc/abapdocu_752_index_htm/7.52/en-US/abapread_table_outdesc.htm#!ABAP_ALTERNATIVE_2@2@


0
投票

此?

TYPES: begin OF ty_itab,
       number1 TYPE n,
END OF ty_itab.

DATA: itab TYPE TABLE OF ty_itab,
      wa_itab like line of itab,
      lv_tabix TYPE sy-tabix.

APPEND wa_itab TO itab.

lv_tabix = sy-tabix.
READ TABLE itab INTO wa_itab INDEX lv_tabix.
wa_itab-number1 = '1'.
MODIFY itab FROM wa_itab INDEX lv_tabix.

BREAK-POINT.

debug

© www.soinside.com 2019 - 2024. All rights reserved.