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