ABAP 文字列の分割:SPLIT命令

  データ定義&編集

概要

SPLIT命令は特定の文字で値を分割する命令だ。
タブ区切りや、カンマ区切り等のファイルからデータを取得し
値を各項目に振り分けたい時に使用する事が多いだろう。
また、XMLファイル等を使用してインターフェースする仕組みをもっている場合等にも使用するだろう。

サンプルコード:カンマ区切り

DATA: V_CHAR(15) TYPE C,
      V_COL1(5)  TYPE C,
      V_COL2(5)  TYPE C,
      V_COL3(5)  TYPE C.

V_CHAR = 'ABC;DEF;GHI'.
SPLIT V_CHAR AT ';' INTO V_COL1 V_COL2 V_COL3.

説明

当例ではSPLIT命令を使用する事で値’ABC;DEF;GHI’をそれぞれ変数:V_COL1、V_COL2、V_COL3に値を代入する事が可能だ。
V_COL1には’ABC’、V_COL2には’DEF’、V_COL3には’GHI’が代入され、区切り文字に使用された;(セミコロン)は除去される。

サンプルコード:複数の区切り文字

DATA: V_CHAR(15) TYPE C,
      V_COL1(15)  TYPE C,
      V_COL2(15)  TYPE C,
      V_COL3(15)  TYPE C.

V_CHAR = 'ABC;DEF,GHI'.
SPLIT V_CHAR AT ';' INTO V_COL1 V_COL2.
* V_COL1 = ABC V_COL2 = DEF,GHI

SPLIT V_COL2 AT ',' INTO V_COL2 V_COL3.
* V_COL2 = DEF V_COL3 = GHI

説明

当例では複数の区切り文字を使用している為、一度にSPLIT命令を使用して取得できないケースを説明しよう。
値は’ABC;DEF,GHI’のように;(セミコロン)と,(カンマ)で区切りたい為、最初の例のようにまとめて行う事ができない。
このような場合は、手間だが一つずつ区切る事をお勧めする。
まずは、;(セミコロン)で区切る事により、V_COL1に’ABC’を代入する事ができる。この時V_COL2には残りの値が’DEF,GHI’
が残るので、もう一度同じように,(カンマ)で区切る。そうするとV_COL2には’DEF’、そしてV_COL3には’GHI’が代入される事になるだろう。