Professional Documents
Culture Documents
DATA: lt_vbap TYPE SORTED TABLE OF mty_vbap WITH UNIQUE KEY vbe
ln posnr
, lt_vbep TYPE SORTED TABLE OF mty_vbep WITH UNIQUE KEY vbe
ln posnr etenr
, lt_lips TYPE SORTED TABLE OF mty_lips WITH UNIQUE KEY vbe
ln posnr
, lt_request TYPE TABLE OF bapideliciousrequest
, lt_created TYPE TABLE OF bapideliciouscreateditems
, lt_return TYPE TABLE OF bapiret2
, lt_vbpok TYPE TABLE OF vbpok
.
DATA: ls_request LIKE LINE OF lt_request
, ls_vbkok TYPE vbkok
, ls_header TYPE bapiobdlvhdrcon
, ls_header_control TYPE bapiobdlvhdrctrlcon
, ls_vbpok LIKE LINE OF lt_vbpok
.
DATA: ld_error TYPE c
, ld_vbeln TYPE vbeln_va
, ld_has_er TYPE abap_bool VALUE abap_false
.
DATA: lo_exc TYPE REF TO zcx_general_exceptions
.
IF id_vbeln_va IS INITIAL .
lo_exc->param = 'Ordem não informada'.
RAISE EXCEPTION lo_exc.
ENDIF.
IF sy-subrc NE 0.
lo_exc->param = 'Não há itens para esta ordem'.
RAISE EXCEPTION lo_exc.
ENDIF.
IF sy-subrc NE 0.
lo_exc->param = 'Não há itens para esta ordem'.
RAISE EXCEPTION lo_exc.
ENDIF.
ls_request-quantity_sales_uom = ls_request-
quantity_sales_uom + <ls_vbep>-bmeng.
ENDLOOP.
IF ls_request-quantity_sales_uom LE 0.
CONTINUE.
ENDIF.
ls_request-quantity_sales_uom = ls_request-quantity_sales_uom.
ls_request-document_numb = <ls_vbap>-vbeln.
ls_request-document_item = <ls_vbap>-posnr.
ls_request-quantity_base__uom = ls_request-quantity_sales_uom.
ls_request-id = 1.
ls_request-document_type = 'A'.
ls_request-delivery_date = sy-datum.
ls_request-material = <ls_vbap>-matnr.
ls_request-plant = <ls_vbap>-werks.
ls_request-stge_loc = <ls_vbap>-lgort.
* ls_request-sales_unit = <ls_vbap>-vrkme.
ls_request-date = sy-datum.
ls_request-goods_issue_date = sy-datum.
ls_request-goods_issue_time = sy-uzeit.
APPEND ls_request TO lt_request.
ENDLOOP.
ld_has_er = space.
LOOP AT lt_return ASSIGNING <ls_return> WHERE type CA 'AEX'.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ld_has_er = 'X'.
IF ld_has_er EQ space.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
ENDIF.
READ TABLE lt_created
ASSIGNING <ls_created>
INDEX 1.
cd_vbeln_vl = <ls_created>-document_numb.
cd_vbtyp_vl = <ls_created>-document_category_sd.
ENDIF.
**********************************************************************
**
* Picking
**********************************************************************
**
IF id_do_picking EQ abap_true.
SELECT vbeln
posnr
matnr
lfimg
umvkz
umvkn
INTO TABLE lt_lips
FROM lips
WHERE vbeln EQ cd_vbeln_vl.
IF sy-subrc NE 0.
lo_exc->param = 'Remessa'.
lo_exc->param2 = cd_vbeln_vl.
lo_exc->param3 = 'não existe!'.
lo_exc->param4 = 'Continue o processo de forma STANDARD'.
RAISE EXCEPTION lo_exc.
ENDIF.
ENDIF.
*
************Post goods issue.
IF id_post_goods_issue EQ abap_true
OR id_do_picking EQ abap_true
OR id_volum IS NOT INITIAL.
CLEAR ls_vbkok.
ls_vbkok-vbeln_vl = cd_vbeln_vl.
ls_vbkok-vbtyp_vl = cd_vbtyp_vl.
ls_vbkok-anzpk = id_volum.
ls_vbkok-kzapk = 'X'.
ls_vbkok-wabuc = id_post_goods_issue.
ENDIF.
ENDIF.
FREE lo_exc.
ENDMETHOD.