Professional Documents
Culture Documents
FUNCTION ZBPM Update Generic Form Data.
FUNCTION ZBPM Update Generic Form Data.
FUNCTION ZBPM Update Generic Form Data.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" VALUE(IV_ID) TYPE CHAR20
*" VALUE(IV_DOCUMENT_STATUS) TYPE CHAR20 OPTIONAL
*" VALUE(IV_PROCESS_INSTANCE_ID) TYPE CHAR50 OPTIONAL
*" VALUE(IV_FORM_TYPE) TYPE CHAR10
*" VALUE(IV_MATRIX_APP) TYPE CHAR255 OPTIONAL
*" EXPORTING
*" VALUE(EV_STATUS) TYPE CHAR1
*"----------------------------------------------------------------------
DATA: lv_status TYPE char100,
ls_ovet_req TYPE zbpm_ovt_reqdat,
ls_allowance_req TYPE zbpm_allo_req,
ls_ggp_header TYPE zbpm_ggp_header,
ls_incident TYPE zbpm_incident,
lv_doc_status TYPE char20,
lv_lifnr TYPE lifnr,
lt_ven_err TYPE bapiret2_t,
lt_ven_log TYPE STANDARD TABLE OF zbpm_vend_err,
lv_index TYPE i,
lt_pr_vendor TYPE zbpm_tt_vendor_pr,
lv_banfn TYPE banfn,
lv_prupstatus TYPE flag,
lv_err_msg TYPE char255,
lv_ven_doc_status TYPE char20,
lt_ref TYPE STANDARD TABLE OF string,
lv_doc_id TYPE zdtmg_docid,
lv_lifn_temp TYPE lifnr,
lv_entity_type TYPE zbpm_plant-entity_type,
lv_return TYPE flag.
IF iv_form_type EQ 'OVERTIME'.
ls_ovet_req-id = iv_id.
ls_ovet_req-transactionid = iv_id.
ls_ovet_req-document_status = iv_document_status.
ls_ovet_req-process_instance_id = iv_process_instance_id.
ls_ovet_req-matrix_approvers = iv_matrix_app.
MODIFY zbpm_ovt_reqdat FROM ls_ovet_req.
IF sy-subrc EQ 0.
COMMIT WORK AND WAIT.
IF sy-subrc NE 0.
ev_status = abap_true.
ENDIF.
ENDIF.
ELSEIF iv_form_type EQ 'ALLOWANCE'.
SELECT SINGLE *
FROM zbpm_allo_req INTO ls_allowance_req
WHERE docid EQ iv_id.
IF sy-subrc EQ 0.
* ls_ovet_req-id = iv_id.
* ls_ovet_req-transactionid = iv_id.
* ls_ovet_req-document_status = iv_document_status.
* ls_ovet_req-process_instance_id = iv_process_instance_id.
* ls_ovet_req-matrix_approvers = iv_matrix_app.
* modify zbpm_ovt_reqdat from ls_ovet_req.
IF sy-subrc EQ 0.
COMMIT WORK AND WAIT.
IF sy-subrc NE 0.
ev_status = abap_true.
ENDIF.
ENDIF.
IF sy-subrc EQ 0.
COMMIT WORK AND WAIT.
IF sy-subrc NE 0.
ev_status = abap_true.
ENDIF.
ENDIF.
lv_doc_status = iv_document_status.
IF iv_document_status EQ 'Cancelled'.
IF lv_gi EQ abap_true.
lv_doc_status = 'Partially Delivered'.
ENDIF.
ENDIF.
IF sy-subrc EQ 0.
COMMIT WORK AND WAIT.
IF sy-subrc NE 0.
ev_status = abap_true.
ENDIF.
ENDIF.
IF sy-subrc EQ 0.
COMMIT WORK AND WAIT.
IF sy-subrc NE 0.
ev_status = abap_true.
ELSE.
IF iv_document_status = 'Need More Info'.
"Send notification email to Department PICs
CLEAR: ls_incident.
ls_incident-id = iv_id.
ls_incident-process_instance_id = iv_process_instance_id.
IF ev_status = abap_true.
lv_doc_status = 'Pending Update'.
ev_status = 'F'. "Failed to update all materials
ENDIF.
ENDIF.
IF lv_doc_status IS INITIAL.
lv_doc_status = iv_document_status.
ENDIF.
IF sy-subrc EQ 0.
COMMIT WORK AND WAIT.
IF sy-subrc NE 0.
ev_status = abap_true.
ENDIF.
ENDIF.
IF iv_document_status EQ 'Verified'.
SELECT SINGLE *
FROM zbpm_vendor_req INTO @DATA(ls_vendor)
WHERE docid EQ @iv_id.
IF sy-subrc EQ 0.
IF ls_vendor-existing EQ abap_false.
lv_lifnr = ls_vendor-lifnr.
ELSE.
lv_lifnr = ls_vendor-ex_lifnr.
ENDIF.
IF lv_lifnr IS INITIAL.
ev_status = abap_true.
ELSE.
SELECT SINGLE *
FROM zbpm_vend_err
INTO @DATA(ls_error)
WHERE docid EQ @iv_id AND
message NE @space.
IF sy-subrc NE 0.
IF iv_form_type EQ 'VENPR'.
SELECT *
FROM zbpm_pur_req_itm
INTO TABLE @DATA(lt_pur_itm)
WHERE banfn EQ @ls_vendor-refid AND
lifnr EQ @iv_id.
lv_banfn = ls_vendor-refid.
IF lv_prupstatus EQ 'S'.
lv_prupstatus = abap_true.
ELSE.
UPDATE zbpm_pur_req_itm SET bapierr = lv_err_msg
WHERE banfn EQ lv_banfn AND
lifnr EQ iv_id.
ENDIF.
ELSE.
lv_prupstatus = abap_true.
ENDIF.
IF lv_prupstatus EQ abap_true.
IF ls_vendor-existing EQ abap_true.
ELSE.
ev_status = abap_true.
ENDIF.
IF lv_lifn_temp IS INITIAL.
SELECT SINGLE *
FROM zbpm_vendor_req INTO @DATA(ls_vendor_temp)
WHERE refid EQ @lv_banfn.
IF sy-subrc EQ 0.
lv_lifn_temp = ls_vendor_temp-docid.
ENDIF.
ENDIF.
SELECT *
FROM zbpm_pur_req_itm
INTO TABLE @DATA(lt_pur_itm_ref)
WHERE banfn EQ @lv_banfn AND
lifnr EQ @lv_lifn_temp.
* lv_banfn = <fs_ref>.
IF sy-subrc EQ 0.
LOOP AT lt_pur_itm_ref ASSIGNING FIELD-
SYMBOL(<fs_pur_itm_ref>).
APPEND INITIAL LINE TO lt_pr_vendor ASSIGNING FIELD-
SYMBOL(<fs_pr_vendo_ref>).
<fs_pr_vendo_ref>-bnfpo = <fs_pur_itm_ref>-bnfpo.
<fs_pr_vendo_ref>-lifnr = lv_lifnr.
ENDLOOP.
ENDIF.
IF lv_prupstatus EQ 'S'.
lv_prupstatus = abap_true.
ELSE.
UPDATE zbpm_pur_req_itm SET bapierr = lv_err_msg
WHERE banfn EQ lv_banfn AND
lifnr EQ lv_lifn_temp.
ENDIF.
ELSE.
lv_prupstatus = abap_true.
ENDIF.
IF lv_prupstatus EQ abap_true.
IF ls_vendor_temp-existing EQ abap_true.
UPDATE zbpm_pur_req_itm SET lifnr = lv_lifnr
name1 = ls_vendor_temp-
ex_name1
bapierr = space
WHERE banfn EQ lv_banfn AND
lifnr EQ lv_lifn_temp.
ELSE.
UPDATE zbpm_pur_req_itm SET lifnr = lv_lifnr
bapierr = space
WHERE banfn EQ lv_banfn AND
lifnr EQ lv_lifn_temp.
ENDIF.
lv_doc_id = lv_banfn.
CALL FUNCTION 'ZFM_BPM_RESUME_PR_PROCESS' IN BACKGROUND
TASK DESTINATION 'Z_PI_COMMON_CONNECTION_PRPO'
EXPORTING
iv_docid = lv_doc_id
iv_vender_id = lv_lifnr.
ELSE.
ev_status = abap_true.
EXIT.
ENDIF.
ENDLOOP.
ENDIF.
ENDIF.
ELSE.
ev_status = 'E'.
lv_ven_doc_status = 'Pending Verification'.
ENDIF.
ENDIF.
ELSE.
ev_status = abap_true.
ENDIF.
ENDIF.
IF sy-subrc EQ 0.
COMMIT WORK AND WAIT.
IF sy-subrc NE 0.
IF ev_status IS INITIAL.
ev_status = abap_true.
ENDIF.
ENDIF.
ENDIF.
lv_ven_doc_status = iv_document_status.
IF iv_document_status EQ 'Verified'.
SELECT SINGLE *
FROM zbpm_vendor_req INTO ls_vendor
WHERE docid EQ iv_id.
IF sy-subrc EQ 0.
IF ls_vendor-existing EQ abap_false.
lv_lifnr = ls_vendor-lifnr.
ELSE.
lv_lifnr = ls_vendor-ex_lifnr.
ENDIF.
IF lv_lifnr IS INITIAL.
ev_status = abap_true.
ELSE.
SELECT SINGLE *
FROM zbpm_vend_err
INTO ls_error
WHERE docid EQ iv_id AND
message NE space.
IF sy-subrc NE 0.
CLEAR ev_status.
ELSE.
ev_status = 'E'.
lv_ven_doc_status = 'Pending Verification'.
ENDIF.
ENDIF.
ELSE.
ev_status = abap_true.
ENDIF.
ENDIF.
IF sy-subrc EQ 0.
COMMIT WORK AND WAIT.
IF sy-subrc NE 0.
IF ev_status IS INITIAL.
ev_status = abap_true.
ENDIF.
ENDIF.
ENDIF.
"End of addition by Leo <TRLEO>
ENDIF.
ENDFUNCTION.