zoukankan      html  css  js  c++  java
  • 数值中文分离计算

      业务需要,成绩一栏里,有数值有文字。文字固定。

      导入SAP 时,我就遇到了困难,要是关键指标。这个文字就录入错误。要是字符型的。那么怎么计算了。信息对象都不好建

      按月导入,所以服务店与时间共同构成KEY。这样才不会在DSO覆盖。

      

      解决方法:字符串导入,上传到DSO时分离出数值在新的信息对象ZCJ,原来的就在ZCJ1。这样两列。

      这样用原来的列做过滤,剩下的用ZCJ来做计算就好。问题解决。

      

      过程:

      在数据源时其实可以不建信息对象。设置一个char类型就好 。信息对象模板其实可以为空。不一定非要填写。

      

    建好DSO,创建转换:

      

      我一开始想法错误了。我把ZCJ弄成纯数值   ,顺便以为ZCJ1 以为也要弄成纯文字型的。其实不必,它原来就是不考核,带一些数值没关系。它只是记录,不参与计算。顺便过滤。都不用操作。

      开始以为要彻底把一件东西分开。其实不用,只要从中原来里分离出数值就好。因为是多出来一列。同一条数据。明白了吧。

      那这样就直接在ZCJ里写例程就好

      这样用一个字符串转数值函数就可以把数值带出来,字符串变成0。形成新列

    DATA: OUT TYPE _ty_s_TG_1-/BIC/ZCJ.    *定义一个接受函数的值   (这个重要)
    CALL FUNCTION 'ZUNITS_STRING_CONVERT'  *字符转换的函数
      EXPORTING
        UNITS_STRING       = SOURCE_FIELDS-ZCJ1      *输入的值
        DCPFM              = 'X'     *类型
    *   MLLN               = 'M'
    *   TSND               = 'T'
     IMPORTING
       UNITS              = OUT     * 输出
     EXCEPTIONS
       INVALID_TYPE       = 1    
       OTHERS             = 2     *判断类型
    
              .
    IF SY-SUBRC = 0.     *等于0 ,表示执行成功
      RESULT =  OUT.     *输出数值
    * Implement suitable error handling here
    ELSEIF SY-SUBRC = 1.   * 失败类型,表示文字不考核。零
      RESULT = 0.
    ELSEIF SY-SUBRC = 2.   * 其他的原因,返回一下。
     raise exception type CX_RSROUT_ABORT.
    ENDIF.

     完成

  • 相关阅读:
    第九章 引用
    第八章 指针
    第六章 面向对象
    第五章 if语句与运算符
    第四章 C++数据类型
    第三章 初步了解函数
    第二章 做一个简短的C++程序
    第一章 初始C++
    vs2012 快捷键+方法
    vue如何修改生效日期范围,以及转化成yyyy-mm-dd的格式
  • 原文地址:https://www.cnblogs.com/sakura3/p/8473917.html
Copyright © 2011-2022 走看看