数值中文分离计算

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

  导入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.

 

 完成

 

posted @ 2018-02-26 16:31  Sakura_柏  阅读(224)  评论(0编辑  收藏  举报