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.
SAP中完工确认CO11N的bapi
最新推荐文章于 2024-04-19 13:29:42 发布