【ABAP】STRLEN命令

概要

文字の長さを数値で返す命令となります。
注意点としてはECC6.0以降(US ※1)は文字数をカウントし、R/3(NUS ※2)ではバイト数をカウントします。
例えば’あいうえお’の文字であれば文字数をカウントした場合は値「5」、バイト数をカウントした場合は「10」を返却します。

※1:US – Unicode Systems
※2:NUS – Non Unicode Systems

命令文

命令文としては以下の通りです。
変数Bにカウントしたい文字列の値を格納し、変数Aにカウント数値が格納されます。

変数A = STRLEN( 変数B ).

特徴

STRLEN命令を使用する時のエラーとなる原因や注意点は以下の通りです。

  • データ型はC,N,D,TまたはSTRINGでなければならない。
  • データ型がNの場合は前0が自動付与され、前0もカウントされるため注意。
  • 半角空白文字のみまたは文字列の末尾に半角空白文字がある場合はカウントされない。
  • USでは文字数をカウントし、NUSではバイト数をカウントする。

プログラム例

サンプルプログラムの結果はUS環境となります。

DATA: L_STRLENA(10) TYPE C,
      L_STRLENB(10) TYPE C,
      L_STRLENC(10) TYPE C,
      L_STRLEND     TYPE D,
      L_STRLENE(5)  TYPE N,
      L_STRLENF(10) TYPE C,
      L_SLENA TYPE I,
      L_SLENB TYPE I,
      L_SLENC TYPE I,
      L_SLEND TYPE I,
      L_SLENE TYPE I,
      L_SLENF TYPE I.

  L_STRLENA = 'ABCあいう'.
  L_STRLENB = ' Dえ Eお'.  "半角空白と全角空白
  L_STRLENC = 'かEFき   '.  "全角空白と半角空白
  L_STRLEND = '20200501'.
  L_STRLENE = '1'.
  L_STRLENF = ' '.  "半角空白のみ

  L_SLENA = STRLEN( L_STRLENA ).
  L_SLENB = STRLEN( L_STRLENB ).
  L_SLENC = STRLEN( L_STRLENC ).
  L_SLEND = STRLEN( L_STRLEND ).
  L_SLENE = STRLEN( L_STRLENE ).
  L_SLENF = STRLEN( L_STRLENF ).

WRITE:/ L_SLENA, L_STRLENA,
      / L_SLENB, L_STRLENB,
      / L_SLENC, L_STRLENC,
      / L_SLEND, L_STRLEND,
      / L_SLENE, L_STRLENE,
      / L_SLENF, L_STRLENF.

実行結果は以下のカウント値と文字列が出力されます。

STRLENA 6 ABCあいう
STRLENB 6 Dえ Eお
STRLENC 5 かEFき 
STRLEND 8 20200501
STRLENE 5 00001
STRLENF 0