Как я могу дать полю значение с определенным индексом.Или, если поле не начальное, я хочу изменить значение этого индекса. Пример:
TYPES : BEGIN OF itab, number1 type n, endof itab. lv_tabix = sy-tabix. itab-number1 index lv-tabix = '1'.
Это?
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.
Проверьте подсказку предложения 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.
Или вы можете использовать ПОЛЕВЫЕ СИМВОЛЫ, как было указано до меня Антоном.
Просто используйте табличные выражения для этого, если вы находитесь в последних выпусках ABAP:
TRY. itab[ lv-tabix ]-number1 = '1'. CATCH cx_sy_itab_line_not_found INTO DATA(exc). cl_demo_output=>display( exc->get_text( ) ). ENDTRY.
Вы должны прочитать таблицу по индексу и назначить целевую строку первому символу поля:
READ TABLE {your itab} INDEX lv_tabix ASSIGNING FIELD-SYMBOL(<fs>). <fs>-number1 = '1'.
В зависимости от версии вашего сервера может потребоваться отдельное объявление символа поля:
FIELD-SYMBOLS <fs> TYPE {your table line type}
Проверьте READ TABLE онлайн справку https://help.sap.com/doc/abapdocu_752_index_htm/7.52/en-US/abapread_table_outdesc.htm#!ABAP_ALTERNATIVE_2@2@