death114 发表于 2015-9-21 07:16:09

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进行压缩处理;

例子:
    DATA: ALPHA_NUM(120) TYPE C.
DATA: GT_MARA TYPE TABLE OF MARA WITH HEADER LINE.
TABLES: MAKT.
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.
      CLEAR: G_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.
      CLEAR: G_MESSAGE.
      CONCATENATE GT_MARA-MATNR '----物料描述有汉字:' MAKT-MAKTX INTO G_MESSAGE.
      WRITE: / G_MESSAGE.
      ENDIF.
    ENDLOOP.
ENDIF.
页: [1]
查看完整版本: sap 提取字符串中汉字