SAP abap 抽取字符串中的数字(包含,和.)

本文修改于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 .

 

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值