本文修改于2021.01.30,下列第一段代码为以前写的,后面第二段为,后来闲来无事看自己博客时,感觉写的挺傻的,就做了修改
REPORT ZLQLS.
DATA gv_CHAR TYPE C LENGTH 30 .
DATA GV_CANSHU TYPE C LENGTH 30 VALUE '900.00千克/个' .
DATA GV_SHUZI TYPE C .
DATA GV_SHU TYPE C LENGTH 20 .
PERFORM FRM_ZHUANHUAN USING GV_CANSHU CHANGING GV_SHU .
WRITE / : GV_SHU .
*&---------------------------------------------------------------------*
*& Form FRM_ZHUANHUAN
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> GV_CANSHU
*& <-- GV_SHU
*&---------------------------------------------------------------------*
FORM FRM_ZHUANHUAN USING P_CANSHU
CHANGING P_SHU.
DATA LV_CHAR TYPE C .
DATA LV_CHAR2 TYPE C .
DATA LV_SHU TYPE P .
DO .
LV_CHAR = P_CANSHU .
IF LV_CHAR = ''.
EXIT .
ELSE.
IF LV_CHAR = '.' OR LV_CHAR = ','.
P_SHU = P_SHU && LV_CHAR .
ELSE .
CALL FUNCTION 'MOVE_CHAR_TO_NUM'
EXPORTING
CHR = LV_CHAR
IMPORTING
NUM = LV_SHU
EXCEPTIONS
CONVT_NO_NUMBER = 1
CONVT_OVERFLOW = 2
OTHERS = 3
.
IF SY-SUBRC = 0.
LV_CHAR2 = LV_SHU .
P_SHU = P_SHU && LV_CHAR2 .
ENDIF.
ENDIF.
ENDIF.
SHIFT P_CANSHU BY 1 PLACES .
ENDDO .
ENDFORM.
方法2
REPORT ZLQT_SPLIT_NUMB.
DATA GV_CHAR TYPE STRING .
PARAMETERS P_CHAR TYPE STRING DEFAULT 'QW1RE4AF,SD6QWERF2AEFW7FF.DFGS0RAE1GEG'.
DATA(LV_STRLENS) = STRLEN( P_CHAR ) . "获取字符串长度
CLEAR GV_CHAR .
DO LV_STRLENS - 1 TIMES.
DATA(LV_TMP) = P_CHAR+SY-INDEX(1) . "按照顺序截取出单个字符
IF LV_TMP CO '0123456789.,'. "如果该字符包含在其中,将其拼接进最终展示结果,其中同样可以加入单位
GV_CHAR = GV_CHAR && LV_TMP .
ENDIF.
ENDDO.
WRITE GV_CHAR .