FORM frm_process_co11n_bdc TABLES tp_message STRUCTURE zifsret01
tp_item STRUCTURE zrmxpps002
USING up_head TYPE zrmxpps001
up_aufnr LIKE afko-aufnr
CHANGING cp_eind TYPE c
.
DATA:
ls_item TYPE zrmxpps002,
ls_message TYPE zifsret01.
DATA: lv_msg TYPE string,
lv_bwtar TYPE bwtar_d,
lv_menge(18) TYPE c.
REFRESH:gt_bdcdata[],gt_bdcmsg[].
* 凭证类型
IF up_head-vtype = cns_vtype_2.
lv_bwtar = "OEM".
ELSE.
lv_bwtar = "PRD".
ENDIF.
*
PERFORM frm_fill_bdc USING: "X" "SAPLCORU" "0100",
"" "CORUF-AUFNR" up_aufnr,
"" "CORUF-VORNR" "10", "默认0010
"" "BDC_OKCODE" "/00". "回车
lv_menge = up_head-menge.
PERFORM frm_fill_bdc USING: "X" "SAPLCORU" "0150",
"" "AFRUD-LMNGA" lv_menge, "确认数量
"" "CORUF-TEILR" "X", "部分确认
"" "BDC_OKCODE" "=RZUS". "人员附加信息标签页
* 在人员附加信息标签页填写凭证日期
PERFORM frm_fill_bdc USING: "X" "SAPLCORU" "0150",
"" "AFRUD-BUDAT" up_head-budat,
"" "BDC_OKCODE" "=MB03". "跳转到物料移动
*"默认行带出的评估类型
PERFORM frm_fill_bdc USING: "X" "SAPLCOWB" "0130",
"" "BDC_CURSOR" "COWB_COMP-BWTAR(01)",
"" "COWB_COMP-BWTAR(01)" lv_bwtar,
"" "BDC_OKCODE" "/00". "回车
* 消耗物料的行
LOOP AT tp_item INTO ls_item.
lv_menge = ls_item-menge.
PERFORM frm_fill_bdc USING: "X" "SAPLCOWB" "0130",
"" "COWB_COMP-MATNR(02)" ls_item-matnr,
"" "COWB_COMP-ERFME(02)" ls_item-meins,
"" "COWB_COMP-WERKS(02)" ls_item-werks,
"" "COWB_COMP-LGORT(02)" ls_item-lgort,
"" "COWB_COMP-ERFMG(02)" lv_menge,
"" "BDC_OKCODE" "/00". "回车
PERFORM frm_fill_bdc USING: "X" "SAPLCOWB" "0130",
"" "BDC_OKCODE" "=P+". "翻页
ENDLOOP.
* 保存
PERFORM frm_fill_bdc USING: "X" "SAPLCOWB" "0130",
"" "BDC_OKCODE" "=WEIT". "保存
CALL TRANSACTION "CO11" USING gt_bdcdata
MODE gv_mode
UPDATE "S"
MESSAGES INTO gt_bdcmsg.
COMMIT WORK AND WAIT.
LOOP AT gt_bdcmsg.
* it_log-aufnr = it_data-aufnr.
* it_log-vornr = it_data-vornr.
MESSAGE ID sy-msgid TYPE gt_bdcmsg-msgtyp NUMBER gt_bdcmsg-msgnr
WITH gt_bdcmsg-msgv1 gt_bdcmsg-msgv2 gt_bdcmsg-msgv3 gt_bdcmsg-msgv4
INTO lv_msg.
CLEAR ls_message.
ls_message-class = "BUS".
ls_message-msgtyp = gt_bdcmsg-msgtyp.
ls_message-msgno = gt_bdcmsg-msgnr.
ls_message-msgtxt = lv_msg.
APPEND ls_message TO tp_message.
IF gt_bdcmsg-msgtyp = "E" OR
gt_bdcmsg-msgtyp = "A".
cp_eind = "X".
ENDIF.
ENDLOOP.
ENDFORM. " FRM_PROCESS_CO11N_BDC