Skip to content

ABAP Keyword Documentation →  ABAP - Reference →  Processing Internal Data →  Internal Tables →  Processing Statements for Internal Tables 

REPLACE IN TABLE itab

Short Reference

Other versions: 7.31 | 7.40 | 7.54

Syntax


REPLACE [{FIRST OCCURRENCE}|{ALL OCCURRENCES} OF] pattern 
        IN TABLE itab [table_range] WITH new
        [IN {CHARACTER|BYTE} MODE]
        [replace_options].

Effect

The internal table itab is scanned row-by-row for the character or byte strings specified by pattern and replaces any occurrences with the content of the operand new. new is a character-like expression position.

itab expects a standard table without secondary table keys. The rows in the table must be character-like or byte-like, depending on the CHARACTER or BYTE MODE addition. Byte or character strings that cover multiple table rows are not replaced.

The table_range addition can be used to restrict the search range in the table. When searching in individual table rows, the other additions operate in the same way as in the statement REPLACE pattern IN for elementary character or byte strings, with an extra addition, REPLACEMENT LINE, returning the row number of an occurrence.

In string processing for row types of fixed length, trailing blanks are respected, whereas with new they are ignored.


Note

Replacements using REPLACE IN TABLE give better performance than running a LOOP and using REPLACE to make replacements in individual rows.

System Fields

sy-subrc Meaning
0 The search string was replaced by the content of new and the full result is available in the table row(s).
2 The search pattern was replaced by the content of new and the result of the replacement was truncated on the right in at least one table row.
4 The search pattern in pattern was not found in the internal table.
8 The operands pattern or new do not contain interpretable double-byte characters.

The values of sy-tabix and sy-fdpos are not changed.


Example

A simple "DM-Euro Conversion".

DATA itab TYPE TABLE OF string. 

APPEND 'Beer  - 3 DM' TO itab. 
APPEND 'Pizza - 8 DM' TO itab. 

REPLACE ALL OCCURRENCES OF REGEX '\b(DM)\b' 
  IN TABLE itab WITH 'EUR' 
  RESPECTING CASE. 

Exceptions


Catchable Exceptions

CX_SY_REPLACE_INFINITE_LOOP

  • Cause: Substring of length 0 generates an endless loop when searching for all occurrences.
    Runtime Error: REPLACE_INFINITE_LOOP

CX_SY_TAB_RANGE_OUT_OF_BOUNDS

  • Cause: Illegal offset or row specification in the addition of FROM ... OFFSET ... TO OFFSET.
    Runtime Error: INVALID_TABLE_RANGE

CX_SY_INVALID_REGEX

  • Cause: Illegal expression after the addition REGEX.
    Runtime Error: INVALID_REGEX

Continue

REPLACE IN TABLE table_range

REPLACE IN TABLE - options