BUG!!!

来源:互联网 发布:win10装centos双系统 编辑:程序博客网 时间:2024/06/10 05:02

今天正式系统的数据出了问题,我找了半天发现是我之前写的一段代码出了问题!

检查了半天,终于找出了BUG,特记录如下:

问题一:

   "get the max number of internal number
  SELECT MAX( intno ) INTO lv_cur FROM zco_sum.

获取当前内表中已经存在的最大的internal number。乍一看貌似没有什么问题,但是intno的定义是char类型的,导致系统认为9 > 10。

哭了......

 

问题二:

   SORT i_data BY kokrs perab budat.
  CLEAR: li_item,li_item[],i_data,i_sum1,i_sum1[],i_cosum[].
  LOOP AT i_data.
    "this posting row has been send out
    IF i_data-docnum IS NOT INITIAL.
      CONTINUE.
    ENDIF.
    "standard process
    MOVE-CORRESPONDING i_data TO i_sum1.
    MOVE-CORRESPONDING i_data TO li_item.
    "get cost center by partner object
    li_item-kostl = i_data-parob+6(10).

    CONDENSE li_item-kostl NO-GAPS.
    "get order number from table zfi_co
    SELECT SINGLE gaufnr 

      INTO li_item-recodr 

      FROM zfi_co 

         WHERE prctr = li_item-prctr 

         AND gaufnr LIKE 'NAR%'.
    APPEND li_item.
    CLEAR li_item.
    AT END OF budat.

            ......

            APPEND i_sum1.
      CLEAR: i_sum1,li_item[].

     ENDAT.
    CLEAR : i_data.
  ENDLOOP.

这个LOOP总是有获取不到数据的情况,经过数据的追踪,终于发现:AT END OF budat.  如果应该执行这句语句的时候,正好赶上IF i_data-docnum IS NOT INITIAL. 那么这条语句就被CONTINUE.了。以至于不能APPEND i_sum1. 再哭......

 

哎,写代码真的要万分小心! 稍不留神,数据就出大问题了。

 

戒骄戒躁,脚踏实地!

                      --自勉

原创粉丝点击