ABAP 文字列の置換:REPLACE命令

  データ定義&編集

概要


REPLACE命令は特定の文字が含まれているかを検索し、含まれている場合はその文字を置換する命令である。

サンプルコード:文字の置換

DATA: V_TEXT TYPE String.

V_TEXT = 'AAAAFINDCBBBFINDB'.

REPLACE 'FIND' IN V_TEXT WITH 'XX'.
IF SY-SUBRC = 0.
  WRITE V_TEXT. "AAAAXXCBBBFINDB
ENIDF.

説明

当例ではREPLACE命令を使用し、変数:V_TEXTから’FIND’という文字を’XX’に置換するという文になる。システム変数:SY-SUBRCには見つける事ができたら’0’が返り、見つける事ができなかった場合は’4’が返ってくる為、それぞれの処理をIF文等で分岐してから記述する事ができる。
この場合、’FIND’が2箇所あるが最初の’FIND’のみ置換される為、”AAAAXXCBBBBFINDB”という結果が返ってくる。全ての文字を置換する例は後述を参照。

サンプルコード:全ての文字の置換

DATA: V_TEXT TYPE String.

V_TEXT = 'AAAAFINDCBBBFINDB'.

REPLACE ALL OCCURRENCES OF 'FIND' IN V_TEXT WITH 'XX'.
IF SY-SUBRC = 0.
  WRITE V_TEXT. "AAAAXXCBBBXXB
ENIDF.

説明

最初の例と同様に、当例ではREPLACE命令を使用し、変数:V_TEXTから’FIND’という文字を’XX’に置換するという文になる。
異なる点としては、最初の文字だけを置換するか、全ての文字を置換するかという点になる。全ての文字を置換する場合は、ALL OCCURRENCES OFというオプションが必要になる。最初の文字を置換する場合は、FIRST OCCURRENCES OFという記述になるが、デフォルトとしてはFIRST OCCURRENCES OFの為、記述は省略する事が多いだろう。
この場合、’FIND’を全て置換する為、”AAAAXXCBBBBXXB”という結果が返ってくる。

REPLACE命令のまとめ

文字を置換したい場合、文字を消したい場合に使用できる事を覚えておこう。
特定の文字を別の文字に置き換えたり、金額や数量の桁区切り(,)を消したりするのに有効だ。