ABAP② 標準関数/命令

・SPLIT

 ※分割
 DATA:
  P1 TYPE STRING VALUE ‘zzzzzz’
  P2 TYPE STRING VALUE ‘zzzzzz’
  P3 TYPE STRING VALUE ‘zzzzzz’
 SPLIT ‘aaa***bbb***ccc’ AT ‘***’ INTO P1 P2 P3.
 ※結果 P1:aaa P2:bbb P3:ccc
  元の内容は上書きされる。
 SPLIT ‘aaa***bbb***ccc’ AT ‘***’ INTO P1 P2.
 ※結果 P1:aaa P2:bbb***ccc
  P1に分割結果を格納した残りが全てP2に格納される。

・STRLEN

 ※文字列の長さを取得
 I = STRLEN(‘12345’) *結果:5

・CHECK

 条件がFalseの時に処理を抜ける。
 LOOP.
  CHECK I <> 10.
  I = I + 1.
 ENDLOOP.

・ASSIGN

 ※変数のメモリ上のアドレスを参照する
 DATA MyChar C VALUE ‘X’.
 FIELD-SYMBOLS: <FS>.
 *はMyCharと同じメモリ領域を参照する。<FS>の型は’C’になる。
 ASSIGN MyChar TO <FS>.

 UNASSIGN <FS>. (ASSIGNの解放)
 ASSIGN COMPONENT 5 OF STRUCTURE 構造体名 TO <FS>.

・DESCRIBE TABLE

 ※レコード件数取得
 DESCRIBE TABLE MyTable LINES LineCnt.

・DESCRIBE FIELD

 ※型取得
 DATA MyType(1) TYPE C.
 DATA MyChar(2) TYPE C VALUE ‘5’.
 DESCRIBE FIELD MyChar TYPE MyType. ⇒’C’

・CONDENSE

 ※圧縮
 DATA myChar TYPE C LENGTH 10 VALUE ‘ A B C ‘.
 CONDENSE myChar. ⇒’A B C’
 CONDENSE myChar NO-GAPS. ⇒ ‘ABC’

・READ TABLE

 READ TABLE myTable INTO myRow.
 READ TABLE myTable INTO myRow INDEX 1.
 READ TABLE myTable INTO myRow WITH KEY フィールド1 = ~.

・CLEAR

 ※初期化
 CLEAR myData.

・SPACE

 ※NULL
 IF myData = SPACE.
  ~.
 ENDIF.

・INITIAL

 ※初期値
 IF myData IS NOT INITIAL.
  ~.
 ENDIF.

・REPLACE

※置換
  DATA STR(5) TYPE C.
  STR = ‘abcde’
  REPLACE ‘bcd’ WITH ‘xxx’ INTO STR.
  WRITE STR.
  ※結果「axxxe」

・CONCATENATE

※文字列連結
  DATA strBefore TYPE string.
  DATA strAfter  TYPE string.
  strBefore = ‘aaa’
  CONCATENATE ‘(‘ strBefore ‘)’ INTO strAfter.
  ※結果 strAfter = ‘(aaa)’