先用BAPI_PROCORDCONF_GET_TT_PROP取一个工序的数据(额定工时)

但是测试发现有的工单工时没取出来,现在手工算了

然后用

BAPI_PRODORDCONF_CREATE_TT 生产订单报工

 

 

 

demo

 

*报工

  loop at gt_alv.

*    read table gt_aufm_sum with key aufnr = gt_alv-aufnr binary search.

*    if sy-subrc = 0.

* 1.需要更新的数据设置

    clear propose.

*    propose-quantity          = cn_flagx.   "更新数量

    propose-date_and_time     = cn_flagx.   "更新作业时间

    propose-goodsmovement     = cn_flagx.   "更新货物移动

 

* 2.作业时间

    clear: timetickets,timetickets[].

    timetickets-conf_no       = gt_alv-rueck. "确认

*    timetickets-orderid       = gt_alv-aufnr. "工单号

*    timetickets-operation     = gt_alv-vornr.  "工序号

*    timetickets-sequence      = gt_alv-aplfl.  "

    timetickets-yield         = gt_alv-menge. "工单生产数量

    append timetickets.

    clear  timetickets.

 

* 3.货物移动属性

* 第一次赋值,用于获取相关默认属性值

    clear: goodsmovements,goodsmovements[].

    goodsmovements-orderid    = gt_alv-aufnr.  "生产订单号

    goodsmovements-order_itno = gt_alv-vornr.   "工序号

    append goodsmovements.

    clear  goodsmovements.

 

* 4.调用BAPI,获取默认属性值

    call function 'BAPI_PRODORDCONF_GET_TT_PROP'

      exporting

        propose            = propose

      importing

        return             = return

      tables

        timetickets        = timetickets

        goodsmovements     = goodsmovements

        link_conf_goodsmov = link_conf_goodsmov

        detail_return      = return_detail.

 

* 5.输出异常信息

*      if return-type = 'E' or return-type = 'A'.

*        concatenate '错误:' return-message into return-message.

*        lv_result = cn_flagx.

*      endif.

*

*      loop at return_detail where type is not initial.

*        if return_detail-type = 'E' or return_detail-type = 'A'.

*          concatenate '错误:' return_detail-message into return-message.

*          lv_result = cn_flagx.

*        endif.

*      endloop.

 

    loop at timetickets.

      timetickets-postg_date = gt_alv-budat.

      timetickets-conf_activity1 = gt_alv-vgw01 * gt_alv-menge. "有些工单读不到标准工时

      timetickets-conf_acti_unit1 = gt_alv-vge01.

      timetickets-conf_activity2 = gt_alv-vgw02 * gt_alv-menge.

      timetickets-conf_acti_unit2 = gt_alv-vge02.

      timetickets-conf_activity3 = gt_alv-vgw03 * gt_alv-menge.

      timetickets-conf_acti_unit3 = gt_alv-vge03.

      timetickets-conf_activity4 = gt_alv-vgw04 * gt_alv-menge.

      timetickets-conf_acti_unit4 = gt_alv-vge04.

      timetickets-conf_activity5 = gt_alv-vgw05 * gt_alv-menge.

      timetickets-conf_acti_unit5 = gt_alv-vge05.

      timetickets-conf_activity6 = gt_alv-vgw06 * gt_alv-menge.

      timetickets-conf_acti_unit6 = gt_alv-vge06.

      modify timetickets.

    endloop.

 

* 7. 调用BAPI,报工确认

    clear: return, return[].

    clear: return_detail, return_detail[].

    call function 'BAPI_PRODORDCONF_CREATE_TT'

      exporting

        post_wrong_entries = '1'

        testrun            = ''      "标识为 X,则为试运行 不提交至系统

      importing

        return             = return

      tables

        timetickets        = timetickets

        goodsmovements     = goodsmovements

        link_conf_goodsmov = link_conf_goodsmov

        detail_return      = return_detail.

 

    clear lv_result.

    read table return with key type = 'E'.

    if sy-subrc = 0.

      concatenate '错误:' return-message into return-message.

      lv_result = cn_flagx.

    endif.

    loop at return_detail where type is not initial.

      if return_detail-type = 'E' or return_detail-type = 'A'.

        concatenate '错误:' return_detail-message into return-message.

        lv_result = cn_flagx.

      endif.

    endloop.

 

    if lv_result ne cn_flagx.

      call function 'BAPI_TRANSACTION_COMMIT'

        exporting

          wait = 'X'.

      gt_alv-rtype = 'S'.

      gt_alv-rtmsg = '成功'.

 

*合计产线数量

      read table timetickets index 1.

      lt_ztpp0032n-zzline = gt_alv-zzline.

      lt_ztpp0032n-budat = gt_alv-budat.

      lt_ztpp0032n-lmnga = gt_alv-menge.

      lt_ztpp0032n-ism01 = timetickets-conf_activity1..

      lt_ztpp0032n-aedat = sy-datum.

      lt_ztpp0032n-aezet = sy-uzeit.

      lt_ztpp0032n-aenam = sy-uname.

      append lt_ztpp0032n.

    else.

      call function 'BAPI_TRANSACTION_ROLLBACK'.

      gt_alv-rtype = 'E'.

      gt_alv-rtmsg = return-message.

    endif.

*    endif.

    modify gt_alv.

  endloop.