Using ABAP, changing a value in itab by getting data from database table

You should do this using a MODIFY statement as shown below ?

LOOP AT itab.
   SELECT SINGLE matnr INTO itab-matnr
      FROM zlldet WHERE palet = itab-palet.
   MODIFY itab.
ENDLOOP.

Also note that when you have an internal table itab with a header line, it means that you have a table itab and structure itab and usage of this depends on the situation. Few of the commands like MODIFY and LOOP AT use both at the same time.

Modern Approach Without Header Line

The modern approach is to avoid header lines and use explicit work areas ?

DATA itab TYPE TABLE OF [something].
DATA wa TYPE [something].
LOOP AT itab INTO wa. " copies each line into wa
   SELECT SINGLE matnr INTO wa-matnr
      FROM zlldet WHERE palet = wa-palet.
   MODIFY itab FROM wa. " writes the changed line back to the table
ENDLOOP.

Using Field Symbols for Better Performance

You can also use field symbols instead of using MODIFY, which provides better performance ?

FIELD-SYMBOLS: <fs_itab> TYPE [something].
LOOP AT itab ASSIGNING <fs_itab>.
   SELECT SINGLE matnr INTO <fs_itab>-matnr
      FROM zlldet WHERE palet = <fs_itab>-palet.
ENDLOOP.

Performance Optimization

To keep your code performance optimized, avoid using SELECT statements inside the loop. You should use range tables and use SELECT statement only before the loop ?

" Collect all palet values first
DATA: lt_palet TYPE TABLE OF [palet_type],
      lt_zlldet TYPE TABLE OF zlldet.

LOOP AT itab INTO wa.
   APPEND wa-palet TO lt_palet.
ENDLOOP.

" Single database access
SELECT matnr, palet FROM zlldet
   INTO TABLE lt_zlldet
   FOR ALL ENTRIES IN lt_palet
   WHERE palet = lt_palet-table_line.

" Update internal table
LOOP AT itab INTO wa.
   READ TABLE lt_zlldet INTO DATA(ls_zlldet) WITH KEY palet = wa-palet.
   IF sy-subrc = 0.
      wa-matnr = ls_zlldet-matnr.
      MODIFY itab FROM wa.
   ENDIF.
ENDLOOP.

Conclusion

Use MODIFY statements with work areas or field symbols to update internal table values efficiently. Always optimize database access by avoiding SELECT statements inside loops.

Updated on: 2026-03-13T19:19:27+05:30

2K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements