インフリー技術情報発信ブログ

ERP(SAP)導入コンサルティング、ABAP開発、ホームページ制作、WEBシステム構築などを手掛ける、株式会社インフリーです。

文字列処理

今回は、よく使用する文字列処理命令について、紹介したいと思います。

CONCATENATE 2つ以上の文字列を結合します
    DATA: str_a TYPE string,
               str_b TYPE string,
               str_c TYPE string.  

     str_a = 'A'.
     str_b = 'B'.
    CONCATENATE str_a str_b INTO str_c SEPARATED BY space.
 
   上記処理の結果、str_c には、「A B」が格納されます。
また、『LINES OF ~』を指定すると、内部テーブルの全行を一気に結合できます。
   例:CONCATENATE LINES OF itab_d INTO str_c SEPARATED BY space.
   内部テーブルの項目を指定して結合できれば、より便利なんですけどね。。。
私は、SPLIT命令(後述参照)で内部テーブルに分割した文字列を元に戻すときによく使います。       

FIND 文字列の内容を検索します。
    DATA: str_a TYPE string,
              str_b TYPE string.

    str_a = 'AC'.
    str_b = 'BBBBACCCC'.

    FIND str_a in str_b.

    オプションを使って、探したい値の開始位置を調べるときに使うことが多いです。
    例:FIND str_a in str_b MATCH OFFSET int_e.



SPLIT 「CONCATENATE」と逆に文字列を分割します。
    DATA: str_a  TYPE string,
              str_b  TYPE string.
    DATA: itab_f TYPE TABLE CHAR10.   

    str_a = 'A'.
    str_b = 'BABBACCAC'.
    SPLIT str_b AT str_a INTO TABLE itab_f.

    「itab_f」には、1行目に「B」2行目に「BB」3行目に「C」4行目に「CC」が格納されます。
  「INTO TABLE ~」の箇所は、内部テーブルでなくても大丈夫ですが、
分割数が固定である必要があり、分割数分変数を用意しなくてはならないため、
内部テーブルに分割してしまうほうが、便利だと思います。

CONDENSE 空白の削除
    DATA: str_a  TYPE string.
    str_a = 'A b C d   E'.

    CONDENCE str_a.
    CONDENCE str_a NO-GAPS.

    1回目の命令の後は、「A b C d E」になります。
文字列と文字列の間の空白が1つ残るので、「E」の前の空白がなくなるだけです。
2回目の命令の後は、「AbCdE」になります。
オプション「NO-GAPS」を付けることで、すべての空白が削除されます。

今回は以上です。

インフリー技術情報発信ブログ © 2013 Frontier Theme