SAP中完工确认CO11N的bapi

57 篇文章 6 订阅
57 篇文章 3 订阅
REPORT  z0905.
TABLES:aufk.
* 定义数据内表
DATA: gt_afko TYPE STANDARD TABLE OF afko.

* Work Area 定义
DATA: gw_afko  TYPE afko,
      gw_afpo  TYPE afpo,
      gw_afvc  TYPE afvc,
      gw_afvv  TYPE afvv.

DATA: gv_index  TYPE sy-tabix,
      gv_result TYPE c.
SELECT-OPTIONS: so_aufnr FOR aufk-aufnr.
DATA:
*BAPI相关定义
      propose             LIKE bapi_pp_conf_prop,
      timetickets         LIKE bapi_pp_timeticket       OCCURS 0 WITH HEADER LINE,
      goodsmovements      LIKE bapi2017_gm_item_create  OCCURS 0 WITH HEADER LINE,
      link_conf_goodsmov  LIKE bapi_link_conf_goodsmov  OCCURS 0 WITH HEADER LINE,
      return_detail       LIKE bapi_coru_return         OCCURS 0 WITH HEADER LINE,
      return              LIKE bapiret1                 OCCURS 0 WITH HEADER LINE.

CONSTANTS:
      cn_flagx TYPE c VALUE 'X'.

* Get Data...
* Header
CLEAR gt_afko[].
SELECT aufnr rsnum aufpl
  INTO CORRESPONDING FIELDS OF TABLE gt_afko
  FROM afko
  WHERE aufnr IN so_aufnr  "生产工单号
  .

* Data Proccess...
CLEAR gw_afko.
LOOP AT gt_afko INTO gw_afko.

  IF sy-subrc = 0.

    CLEAR gw_afvc.
    SELECT SINGLE
      aufpl       "订单工序的工艺路线号
      aplzl       "订单的通用计数器
      vornr       "工序
      plnfl       "顺序
      arbid
      aplfl       "序列(新) 有值
      INTO CORRESPONDING FIELDS OF gw_afvc
      FROM afvc
      WHERE aufpl = gw_afko-aufpl.

    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-orderid       = so_aufnr-low . "工单号
      timetickets-operation     = gw_afvc-vornr.  "工序号
      timetickets-yield         = 40. "工单生产数量
      timetickets-sequence      = gw_afvc-aplfl.  "
      APPEND timetickets.
      CLEAR  timetickets.

* 3.货物移动属性
* 第一次赋值,用于获取相关默认属性值
      CLEAR: goodsmovements,goodsmovements[].
      goodsmovements-orderid    =  so_aufnr-low.  "生产订单号
      goodsmovements-order_itno = gw_afvc-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.
        gv_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.
          gv_result = cn_flagx.

        ENDIF.

      ENDLOOP.
      CLEAR gw_afvv.
      SELECT SINGLE * FROM afvv
        INTO CORRESPONDING FIELDS OF gw_afvv
        WHERE aufpl = gw_afvc-aufpl
          AND aplzl = gw_afvc-aplzl.
      LOOP AT timetickets.
        timetickets-yield  = 40.    "待确认的产量(用户输入确认值)
        timetickets-postg_date = '20210702'.    "过账日期
        timetickets-conf_activity1 = timetickets-yield.
        timetickets-conf_acti_unit1 = gw_afvv-vge01.
        timetickets-conf_activity2 = timetickets-yield.
        timetickets-conf_acti_unit2 = gw_afvv-vge02.
        timetickets-conf_activity3 =   timetickets-yield.
        timetickets-conf_acti_unit3 = gw_afvv-vge03.
        timetickets-conf_activity4 = timetickets-yield.
        timetickets-conf_acti_unit4 = gw_afvv-vge04.
        timetickets-conf_activity5 = timetickets-yield.
        timetickets-conf_acti_unit5 = gw_afvv-vge05.
        timetickets-conf_activity6 = timetickets-yield.
        timetickets-conf_acti_unit6 = gw_afvv-vge06.
        MODIFY timetickets.

      ENDLOOP.
      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 gv_result.
      READ TABLE return WITH KEY type = 'E'.
      IF sy-subrc = 0.

        CONCATENATE '错误:' return-message INTO return-message.
        gv_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.
          gv_result = cn_flagx.

        ENDIF.
      ENDLOOP.

      IF gv_result NE cn_flagx.
        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
          EXPORTING
            wait = cn_flagx.
      ENDIF.

    ENDIF.
  ENDIF.

ENDLOOP.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值