ABAPString - ooxxvv/MySAPnotes GitHub Wiki

ABAPString

  • 和字串處理的相關資料。

正規表示法

特殊字元

  • 字串中加入換行 (enter) , 定位鍵 (tab)
  • 空白 => SPACE
  • 單引號 => 在字串中用兩個連續的單引號來表示
DATA: l_a TYPE C.

l_a = ''''.

使用 Class

DATA : crlf(2) TYPE c.
DATA : l_html(4096) TYPE C.
crlf = cl_ABAP_char_utilities=>cr_lf.
CONCATENATE l_html crlf '_FUNCTION'
       '30'
       'WWW_GET_REPORT' '>' INTO l_html.

使用 Type (X)

  • 可用 ASCII 碼來指定元
  • 換行 (enter)
  • CR => 13 , LF => 10
  • Windows 用 CRLF , UNIX 用 LF , MAC 用 CR
  • 定位 (tab) => 09
DATA : l_cr TYPE x VALUE 13,
       l_lf TYPE x VALUE 10,
       l_tab TYPE x VALUE 09.

將字串補前置零

  • CONVERSION_EXIT_ALPHA_INPUT => 補前置零,但字串中有特殊符號(例小數點)則無法使用。
  • 可用下面的 PERFORM 來達成。
FORM add_front_zero CHANGING fo_string.
  DATA: l_subrc LIKE sy-subrc.

  IF fo_string IS INITIAL.
    EXIT.
  ENDIF.

  WHILE l_subrc EQ 0.
    REPLACE space WITH '0' INTO fo_string.
    l_subrc = sy-subrc.
  ENDWHILE.

ENDFORM.                    " add_front_zero

關於字串的函數

轉換或判斷字串內容為不同型態的變數

將字串轉成日期變數

判斷字串是否可轉為數字

  • 用例外的方式來判斷
DATA: l_int TYPE i.
PARAMETERS: p_str TYPE string.

*-用例外的方式來判斷是否為變數
TRY.
    MOVE p_str TO l_int.
    MESSAGE i398(00) WITH 'is INT'.

  CATCH cx_sy_conversion_no_number cx_sy_conversion_overflow.
    MESSAGE i398(00) WITH 'not INT'.
ENDTRY.