DATA: lt_tt TYPE TABLE OF bapi_pp_timeticket,
ls_tt TYPE bapi_pp_timeticket,
lt_dr TYPE TABLE OF bapi_coru_return,
ls_dr TYPE bapi_coru_return,
ls_return TYPE bapiret1,
ls_gm TYPE bapi2017_gm_item_create,
lt_gm TYPE TABLE OF bapi2017_gm_item_create,
lt_link TYPE TABLE OF bapi_link_conf_goodsmov,
ls_link TYPE bapi_link_conf_goodsmov,
propose LIKE bapi_pp_conf_prop.
DATA: lv_aufnr TYPE afko-aufnr,
lv_aplzl TYPE afvc-aplzl,
lv_aufpl TYPE afvc-aufpl,
ls_afvv TYPE afvv.
DATA: lv_exit TYPE c.
DATA: ev_rueck TYPE afru-rueck,
ev_rmzhl TYPE afru-rmzhl.
DATA :lv_in TYPE init.
DATA :lv_line TYPE i.
BREAK pwc-ljf.
CONSTANTS:
cn_flagx TYPE c VALUE 'X'.
LOOP AT gt_out ASSIGNING FIELD-SYMBOL(<fs_out>) WHERE che = 'X'
GROUP BY ( aufnr = <fs_out>-aufnr bc = <fs_out>-bc ) .
CLEAR :lv_aplzl,lv_aufpl,ls_tt,ls_afvv,lv_aufnr,ev_rueck,ev_rmzhl,lt_tt[],lt_gm[],lv_in,lt_link[],lv_line.
* SELECT SINGLE afvc~aplzl afvc~aufpl vornr
* INTO (lv_aplzl, lv_aufpl,ls_tt-operation )
* FROM afvc INNER JOIN afko
* ON afvc~aufpl = afko~aufpl
* WHERE afko~aufnr = ls_tt-orderid .
*
* SELECT SINGLE * FROM afvv INTO ls_afvv
* WHERE aufpl = lv_aufpl
* AND aplzl = lv_aplzl.
" LOOP AT lt_tt ASSIGNING FIELD-SYMBOL(<ls_time>).
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = <fs_out>-aufnr
IMPORTING
output = lv_aufnr.
ls_tt-operation = <fs_out>-vornr ."'0010'.
ls_tt-orderid = lv_aufnr.
ls_tt-yield = <fs_out>-menge. "待确认的产量
ls_tt-scrap = <fs_out>-xmnga. "当前要确认废品
ls_tt-postg_date = <fs_out>-budat.
ls_tt-dev_reason = <fs_out>-bc.
ls_tt-conf_activity1 = <fs_out>-jgzq.
ls_tt-conf_activity2 = <fs_out>-jqzj.
ls_tt-conf_activity3 = <fs_out>-mjzj.
ls_tt-conf_activity4 = <fs_out>-dzq.
ls_tt-conf_activity5 = <fs_out>-zbsj.
ls_tt-conf_activity6 = <fs_out>-qt.
APPEND ls_tt TO lt_tt.
CLEAR ls_tt.
LOOP AT GROUP <fs_out> ASSIGNING FIELD-SYMBOL(<fs_gm>).
ls_gm-material = <fs_gm>-matnr.
CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
EXPORTING
input = ls_gm-material
IMPORTING
output = ls_gm-material.
ls_gm-orderid = lv_aufnr. "生产订单号
ls_gm-plant = s_werks-low.
ls_gm-stge_loc = <fs_gm>-lgort .
ls_gm-entry_qnt = <fs_gm>-erfmg .
SELECT SINGLE meins FROM mara INTO ls_gm-entry_uom WHERE matnr = ls_gm-material.
ls_gm-stge_bin = <fs_gm>-lgort.
ls_gm-move_type = <fs_out>-bwart."'261'.
ls_gm-activity = <fs_out>-vornr."'0010'.
SELECT SINGLE rsnum rspos FROM resb
INTO ( ls_gm-reserv_no , ls_gm-res_item )
WHERE aufnr = <fs_gm>-aufnr AND matnr = ls_gm-material.
APPEND ls_gm TO lt_gm.
CLEAR ls_gm.
lv_in = lv_in + 1.
ls_link-index_confirm = 1.
ls_link-index_goodsmov = lv_in.
APPEND ls_link TO lt_link.
CLEAR ls_link.
ENDLOOP.
CLEAR :lt_dr[],ls_return .
CALL FUNCTION 'BAPI_PRODORDCONF_CREATE_TT'
IMPORTING
return = ls_return
TABLES
timetickets = lt_tt
goodsmovements = lt_gm
link_conf_goodsmov = lt_link
detail_return = lt_dr.
CLEAR lv_exit.
LOOP AT lt_dr INTO ls_dr WHERE type CA 'EA'.
lv_exit = 'X'.
EXIT.
ENDLOOP.
IF lv_exit = 'X'.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
<fs_out>-led = icon_red_light.
<fs_out>-message = ls_dr-message.
ELSE.
LOOP AT lt_dr INTO ls_dr WHERE type CA 'IS'.
ev_rueck = ls_dr-conf_no.
ev_rmzhl = ls_dr-conf_cnt.
EXIT.
ENDLOOP.
*
* DO 5 TIMES.
* SELECT SINGLE *
* FROM afwi INTO @DATA(afwi)
* WHERE rueck = @ev_rueck
* AND rmzhl = @ev_rmzhl.
*
* IF afwi-mjahr IS NOT INITIAL.
* EXIT.
* ELSE.
* WAIT UP TO 1 SECONDS.
* ENDIF.
* ENDDO.
*
* IF afwi-mjahr+0(2) <> '49'.
* CLEAR afwi.
* ENDIF.
* IF afwi IS INITIAL.
* CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
* <fs_out>-led = icon_red_light.
* <fs_out>-message = '生产完工入库物料凭证未生成成功,请检查处理!'.
" ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
<fs_out>-led = icon_green_light.
CONCATENATE <fs_out>-message '确认序号:' ev_rmzhl INTO <fs_out>-message.
"ENDIF.
ENDIF.
ENDLOOP.
LOOP AT gt_out ASSIGNING <fs_out> WHERE che = 'X' AND led = ''.
LOOP AT gt_out INTO DATA(ls_out) WHERE che = 'X' AND led <> '' AND bc = <fs_out>-bc AND aufnr = <fs_out>-aufnr .
<fs_out>-led = ls_out-led.
<fs_out>-message = ls_out-message.
ENDLOOP.
ENDLOOP.