How to remove special characteristics while loading data into SAP BW
Function module to remove special characteristics while loading data into SAP BW from different sources.
* Create ZSTRING OF LENGH "25O" AND TYPE "CHAR".
* Create STR_IN and STR_OUT with reference to ZSTRING.
FUNCTION < >.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" REFERENCE(STR_IN) TYPE Z_STRING
*" EXPORTING
*" REFERENCE(STR_OUT) TYPE Z_STRING
*"----------------------------------------------------------------------
CONSTANTS:
cc_okchar(59) TYPE c VALUE ' !"%&''()*+,-./:;<=>?_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'.
DATA:
lc_okchar1(72) TYPE c,
lc_okchar2(59) TYPE c,
lc_okchar(131) TYPE c,
l_d_offset LIKE sy-index,
ls_string TYPE Z_STRING,
li_strlen TYPE i.
* Get the list of allowed characters.
CALL FUNCTION 'RSKC_ALLOWED_CHAR_GET'
IMPORTING
e_allowed_char = lc_okchar1
e_default_char = lc_okchar2.
IF sy-subrc IS INITIAL.
* No error .. set the Ok Char variable
CONCATENATE lc_okchar1 lc_okchar2 INTO lc_okchar.
CONDENSE lc_okchar NO-GAPS.
ELSE.
* Error ... Just use the value in the constant.
lc_okchar = cc_okchar.
ENDIF.
ls_string = STR_IN.
CONDENSE ls_string.
TRANSLATE ls_string TO UPPER CASE.
* Remove initial characters that can cause problems: !, #, ?, etc
IF ls_string(1) = '!'.
ls_string(1) = ' '.
ELSEIF ls_string(1) = '#'.
ls_string(1) = ' '.
ELSEIF ls_string(1) = '?'.
ls_string(1) = ' '.
ENDIF.
* Get the length of the string being processed.
DESCRIBE FIELD ls_string LENGTH li_strlen IN CHARACTER MODE.
* Process string and remove unwanted characters
DO li_strlen TIMES.
l_d_offset = sy-index - 1.
IF ls_string+l_d_offset(1) CO lc_okchar.
*Character allowed, do nothing
ELSE.
ls_string+l_d_offset(1) = ' '.
ENDIF.
ENDDO.
str_out = ls_string.
ENDFUNCTION.
0 Responses to How to remove special characteristics while loading data into SAP BW
Something to say?