1、換行符
當通過EXCEL上傳獲取數據的時候,常常會無意中帶有換行符,換行符在DEBUG的時候我們會看到其會在字符串前后家雙引號記憶在字符串后加#,也就是會變成“XXX#”這樣,當然你通過CA等方式判斷是否包含#這個字符的時候,是會判斷失敗的,那要怎么判斷呢
做如下定義:
DATA: crlf(2) TYPE c.
crlf = cl_abap_char_utilities=>cr_lf.
crlf其實就是換行符,debug可以看到其是兩個#,也就是##,然后再通過lv_str ca crlf的方式去判斷,就會判斷成功
如果需要去除#,則需要如下FORM,當然這個FORM也只能將帶#的字符串中的#變成空格,所以如果要變成純字符串,還需要對其中的空格及雙引號進行處理
FORM remove_cr_lf USING p_str.
DATA: tcodepage TYPE cpcodepage.
CALL FUNCTION 'NLS_GET_FRONTEND_CP'
EXPORTING
langu = sy-langu
fetype = 'MS'
IMPORTING
frontend_codepage = tcodepage
EXCEPTIONS
illegal_syst_codepage = 1
no_frontend_cp_found = 2
internal_or_db_error = 3
OTHERS = 4.
CALL FUNCTION 'SCP_REPLACE_STRANGE_CHARS'
EXPORTING
intext = p_str
inter_cp = tcodepage
replacement = 32 " 等於space, ASC
IMPORTING
outtext = p_str
EXCEPTIONS
invalid_codepage = 1
codepage_mismatch = 2
internal_error = 3
cannot_convert = 4
fields_not_type_c = 5
OTHERS = 6.
ENDFORM.
2、日期的特殊情況
當通過EXCEL上傳導入日期格式的數據時,系統常常會將數據變成既不是INITIAL又不是’00000000‘,DEBUG看到的卻是空值,通過CLEAR處理則會變成’00000000‘
所以這個時候如何判斷這個日期字段是否有值呢,就只能用 lv_date = ''來判斷了,這個就會判斷成功
感覺很神奇