BW特殊字符处理函数

FUNCTION zfm_bi_invlid_character.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     REFERENCE(STR_IN) TYPE  STRING
*"  EXPORTING
*"     REFERENCE(STR_OUT) TYPE  STRING
*"----------------------------------------------------------------------
  DATA: zbgms(1000TYPE .
  DATA: intbgms TYPE i.
  DATA: bufferbgms TYPE xstring,
        hex_00     TYPE VALUE '00',
        hex_01     TYPE VALUE '01',
        hex_02     TYPE VALUE '02',
        hex_03     TYPE VALUE '03',
        hex_04     TYPE VALUE '04',
        hex_05     TYPE VALUE '05',
        hex_06     TYPE VALUE '06',
        hex_07     TYPE VALUE '07',
        hex_08     TYPE VALUE '08',
        hex_09     TYPE VALUE '09',
        hex_0a     TYPE VALUE '0A',
        hex_0b     TYPE VALUE '0B',
        hex_0c     TYPE VALUE '0C',
        hex_0d     TYPE VALUE '0D',
        hex_0e     TYPE VALUE '0E',
        hex_0f     TYPE VALUE '0F',
        hex_10     TYPE VALUE '10',
        hex_11     TYPE VALUE '11',
        hex_12     TYPE VALUE '12',
        hex_13     TYPE VALUE '13',
        hex_14     TYPE VALUE '14',
        hex_15     TYPE VALUE '15',
        hex_16     TYPE VALUE '16',
        hex_17     TYPE VALUE '17',
        hex_18     TYPE VALUE '18',
        hex_19     TYPE VALUE '19',
        hex_1a     TYPE VALUE '1A',
        hex_1b     TYPE VALUE '1B',
        hex_1c     TYPE VALUE '1C',
        hex_1d     TYPE VALUE '1D',
        hex_1e     TYPE VALUE '1E',
        hex_1f     TYPE VALUE '1F',
        hex_sp     TYPE VALUE '20',
        conv1      TYPE REF TO cl_abap_conv_out_ce,
        conv2      TYPE REF TO cl_abap_conv_in_ce.

  zbgms = str_in.
 TRANSLATE zbgms TO UPPER CASE.
  intbgms strlen( zbgms ).

  conv1 = cl_abap_conv_out_ce=>create(
  encoding 'UTF-8'
  endian 'L'
  ).

  CALL METHOD conv1->writedata = zbgms n = intbgms ).
  bufferbgms = conv1->get_buffer).

*   用空格(hex_sp)替换字符(hex_0A)#和!@(hex_0D);介于 HEX00 和 HEX1F 之间的十六位格式的字符替换为空
  REPLACE ALL OCCURRENCES OF hex_00 IN bufferbgms WITH hex_sp IN BYTE MODE.
  REPLACE ALL OCCURRENCES OF hex_01 IN bufferbgms WITH hex_sp IN BYTE MODE.
  REPLACE ALL OCCURRENCES OF hex_02 IN bufferbgms WITH hex_sp IN BYTE MODE.
  REPLACE ALL OCCURRENCES OF hex_03 IN bufferbgms WITH hex_sp IN BYTE MODE.
  REPLACE ALL OCCURRENCES OF hex_04 IN bufferbgms WITH hex_sp IN BYTE MODE.
  REPLACE ALL OCCURRENCES OF hex_05 IN bufferbgms WITH hex_sp IN BYTE MODE.
  REPLACE ALL OCCURRENCES OF hex_06 IN bufferbgms WITH hex_sp IN BYTE MODE.
  REPLACE ALL OCCURRENCES OF hex_07 IN bufferbgms WITH hex_sp IN BYTE MODE.
  REPLACE ALL OCCURRENCES OF hex_08 IN bufferbgms WITH hex_sp IN BYTE MODE.
  REPLACE ALL OCCURRENCES OF hex_09 IN bufferbgms WITH hex_sp IN BYTE MODE.
  REPLACE ALL OCCURRENCES OF hex_0a IN bufferbgms WITH hex_sp IN BYTE MODE.
  REPLACE ALL OCCURRENCES OF hex_0b IN bufferbgms WITH hex_sp IN BYTE MODE.
  REPLACE ALL OCCURRENCES OF hex_0c IN bufferbgms WITH hex_sp IN BYTE MODE.
  REPLACE ALL OCCURRENCES OF hex_0d IN bufferbgms WITH hex_sp IN BYTE MODE.
  REPLACE ALL OCCURRENCES OF hex_0e IN bufferbgms WITH hex_sp IN BYTE MODE.
  REPLACE ALL OCCURRENCES OF hex_0f IN bufferbgms WITH hex_sp IN BYTE MODE.
  REPLACE ALL OCCURRENCES OF hex_10 IN bufferbgms WITH hex_sp IN BYTE MODE.
  REPLACE ALL OCCURRENCES OF hex_11 IN bufferbgms WITH hex_sp IN BYTE MODE.
  REPLACE ALL OCCURRENCES OF hex_12 IN bufferbgms WITH hex_sp IN BYTE MODE.
  REPLACE ALL OCCURRENCES OF hex_13 IN bufferbgms WITH hex_sp IN BYTE MODE.
  REPLACE ALL OCCURRENCES OF hex_14 IN bufferbgms WITH hex_sp IN BYTE MODE.
  REPLACE ALL OCCURRENCES OF hex_15 IN bufferbgms WITH hex_sp IN BYTE MODE.
  REPLACE ALL OCCURRENCES OF hex_16 IN bufferbgms WITH hex_sp IN BYTE MODE.
  REPLACE ALL OCCURRENCES OF hex_17 IN bufferbgms WITH hex_sp IN BYTE MODE.
  REPLACE ALL OCCURRENCES OF hex_18 IN bufferbgms WITH hex_sp IN BYTE MODE.
  REPLACE ALL OCCURRENCES OF hex_19 IN bufferbgms WITH hex_sp IN BYTE MODE.
  REPLACE ALL OCCURRENCES OF hex_1a IN bufferbgms WITH hex_sp IN BYTE MODE.
  REPLACE ALL OCCURRENCES OF hex_1b IN bufferbgms WITH hex_sp IN BYTE MODE.
  REPLACE ALL OCCURRENCES OF hex_1c IN bufferbgms WITH hex_sp IN BYTE MODE.
  REPLACE ALL OCCURRENCES OF hex_1d IN bufferbgms WITH hex_sp IN BYTE MODE.
  REPLACE ALL OCCURRENCES OF hex_1e IN bufferbgms WITH hex_sp IN BYTE MODE.   
REPLACE ALL OCCURRENCES OF hex_1f IN bufferbgms WITH hex_sp IN BYTE MODE.

*   class cl_abap_conv_in_ce definition load.   conv2 
= cl_abap_conv_in_ce=>create(   
encoding 'UTF-8'   endian 
'L'   
input = bufferbgms   
).   

CALL METHOD conv2->read(     
EXPORTING       n    
= intbgms     
IMPORTING       
data = zbgms              
).   


SHIFT zbgms LEFT DELETING LEADING ' '.
*     SHIFT zbgms RIGHT DELETING TRAILING ' '.

* The only # sign is not permitted   
IF strlen( zbgms 1.     
IF zbgms(1'#'.       zbgms
(1' '.     
ENDIF.   
ENDIF.

*  Exclamation mark is not permitted as a first symbol of the field  content   
IF zbgms(1'!'.     zbgms
(1' '.   
ENDIF.   str_out 

= zbgms.

ENDFUNCTION.

posted @ 2017-11-10 16:37  我得意的笑了笑的  阅读(400)  评论(0编辑  收藏  举报