sap 提取字符串中汉字

sap 提取字符串中汉字 

http://blog.chinaunix.net/uid-15016030-id-22250.html

DATA: alpha_num(120) TYPE c.
alpha_num = ' abcdefghijklopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789,./;''[]\-=`<>?:"{}|_+~!@#$%^&*()'.
IF input CA alpha_num.
  output = '不仅仅全是汉字'.
ELSE.
  output = '全是汉字'.
ENDIF.
IF NOT input CO alpha_num.
  output = '含有汉字'.
ELSE.
  output = '不含有任何汉字'.
ENDIF.

提取汉字
data len type i.
data n type i.
len = strlen( input ).
do len times.
  n = sy-index - 1.
  if not alpha_num cs input+n(1).
    concatenate output input+n(1) into output.
  endif.
enddo.
 
 
Verysky补充:         
原博文:alpha_num = ' abcdefghijklopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789,./;''[]\-=`<>?:"{}|_+~!@#$%^&*()'.
调整:alpha_num = 'abcdefghijklopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789,./;''[]\-=`<>?:"{}|_+·~!@#$%^&*()'.
新调整的去除了开头的空格、加上了字符“·”(tab键上面那个);判断时先对INPUT进行压缩处理;
 
例子:
    DATAALPHA_NUM(120TYPE C.
  DATAGT_MARA TYPE TABLE OF MARA WITH HEADER LINE.
  TABLESMAKT.
  ALPHA_NUM 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789,./;''[]\-=`<>?:"{}|_+·~!@#$%^&*()'.

  SELECT *
    INTO CORRESPONDING FIELDS OF TABLE GT_MARA
    FROM MARA
    WHERE PSTAT EQ 'K'.
  IF SY-SUBRC EQ 0.
    LOOP AT GT_MARA.
      SELECT SINGLE *
        INTO MAKT
        FROM MAKT
        WHERE MATNR EQ GT_MARA-MATNR
          AND SPRAS EQ '1'.
      CONDENSE MAKT-MAKTX.
      IF MAKT-MAKTX CO ALPHA_NUM.
        CLEARG_MESSAGE.
        CONCATENATE GT_MARA-MATNR '----物料描述没有汉字:' MAKT-MAKTX INTO G_MESSAGE.
        WRITE/ G_MESSAGE.
      ENDIF.
    ENDLOOP.
    LOOP AT GT_MARA.
      SELECT SINGLE *
        INTO MAKT
        FROM MAKT
        WHERE MATNR EQ GT_MARA-MATNR
          AND SPRAS EQ '1'.
      CONDENSE MAKT-MAKTX.
      IF MAKT-MAKTX CN ALPHA_NUM.
        CLEARG_MESSAGE.
        CONCATENATE GT_MARA-MATNR '----物料描述有汉字:' MAKT-MAKTX INTO G_MESSAGE.
        WRITE/ G_MESSAGE.
      ENDIF.
    ENDLOOP.
  ENDIF.
posted @ 2013-01-31 17:20  VerySky  阅读(610)  评论(0)    收藏  举报