bus2121 - setreleased - setrejected

Download BUS2121 - SetReleased - SetRejected

If you can't read please download the document

Upload: xdgr

Post on 30-Sep-2015

12 views

Category:

Documents


2 download

DESCRIPTION

.

TRANSCRIPT

***** Implementation of object type BUS2121 *INCLUDE .BEGIN_DATA OBJECT. " Do not change.. DATA is generated* only private members may be inserted into structure privateDATA: begin of private,* to declare private attributes remove comments and* insert private attributes here ... _reqlinema1 LIKE reqlinema, _reqlinesr1 LIKE reqlinesr, _reqlineacct1 LIKE reqacct, _reqline1 LIKE reqline, totalvalue1 " LIKE reqhead-total_value, like reqhead-total_value_long, limit LIKE reqheads-limit,*the new SC structures gs_header LIKE bbp_pds_sc_header_d , gt_item LIKE bbp_pds_sc_item_d OCCURS 0 , gt_partner LIKE bbp_pds_partner OCCURS 0 , gt_tax LIKE bbp_pds_tax OCCURS 0, end of private, BEGIN OF KEY, REQUIREMENTREQUEST LIKE REQHEAD-REQNO, END OF KEY, REQUISITIONERUSER TYPE SWC_OBJECT, SLMANAGERUSER TYPE SWC_OBJECT, SLMANAGERUSERLIST TYPE SWC_OBJECT OCCURS 0, PURCHASINGORGANIZATION TYPE REQLINE-PROC_ORG, PURCHASINGGROUP TYPE REQLINE-PROC_GROUP, TOTALVALUESTRING TYPE REQHEAD-DOC_NAME, TOTALVALUE TYPE REQHEAD-TOTAL_VALUE_LONG, CATALOGIDLIST TYPE REQLINE-CATALOGID OCCURS 0, PLANT TYPE REQLINEMA-PLANT, LINEITEMMOSTEXPENSIVE TYPE REQHEAD-TOTAL_VALUE_LONG, MATERIALMOSTEXPENSIVE TYPE REQHEAD-TOTAL_VALUE_LONG, DOCTYPE TYPE REQLINEMA-DOC_TYPE, MATERIALGROUPLIST TYPE REQLINEMA-MAT_GRP OCCURS 0, MATERIALGROUP TYPE REQLINEMA-MAT_GRP, ACCTASSCAT TYPE REQACCT-ACC_CAT, LIMIT TYPE REQHEAD-TOTAL_VALUE, COSTCENTERLIST TYPE REQACCT-COST_CTR OCCURS 0, EXISTFREETEXTLINEITEM TYPE TLANSUPTA-COMPLETE, CATALOGID TYPE REQLINE-CATALOGID, TOTALTAXAMOUNT TYPE REQHEAD-TOTAL_VALUE, GROSSTOTALVALUE TYPE REQHEAD-TOTAL_VALUE_LONG, MAILTOAPPROVER TYPE BBP_S_WFL_APPROVALSTATE-APPROVALSTATE OCCURS 0, MAILTOWFLCREATOR TYPE BBP_S_WFL_APPROVALSTATE-APPROVALSTATE OCCURS 0, MAILTOREVIEWER TYPE BBP_S_WFL_APPROVALSTATE-APPROVALSTATE OCCURS 0, CREATEDBY_US TYPE WFSYST-AGENT, CREATEDBY TYPE BBP_PDS_SC_HEADER_D-CREATED_BY, CHANGEDBY TYPE BBP_PDS_SC_HEADER_D-CHANGED_BY, SPENDINGLIMITOFREQUESTER TYPE REQHEAD-TOTAL_VALUE_LONG, EXISTNOVENDORLINEITEM TYPE TLANSUPTA-COMPLETE, EXISTNOPRICELINEITEM TYPE TLANSUPTA-COMPLETE, SCVALUESPENT TYPE BBP_PDHGP-USR_BUDGET_VALUE, USERBUDGETSPENT TYPE BBP_USRBDGT-AMOUNTSPENT, USERBUDGETDEFINED TYPE BBPS_USER_BUDGET-USER_BUDGET, EXISTFOLLOWONRFQ TYPE BBP_PDS_SC_ITEM_D-RFQ_IND, PURCHASINGGROUPLIST TYPE REQLINE-PROC_GROUP OCCURS 0, BUDGETLINK TYPE T100-TEXT, _REQHEAD LIKE REQHEAD, _REQHEADS LIKE REQHEADS.END_DATA OBJECT. " Do not change.. DATA is generatedCONSTANTS: c_vendor TYPE bbp_partner_ftyp VALUE '0012', c_shop TYPE crmt_subobject_category_db VALUE 'BUS2121', c_it_limit LIKE crmd_orderadm_i-itm_type VALUE 'LIMI'.DATA: msgarg1 TYPE char200, msgarg2 TYPE char200, msgarg3 TYPE char200, msgarg4 TYPE char200, re_reqline LIKE reqline OCCURS 0 WITH HEADER LINE, re_reqhead LIKE reqhead, re_reqlinema LIKE reqlinema OCCURS 0 WITH HEADER LINE, re_reqlinesr LIKE reqlinesr OCCURS 0 WITH HEADER LINE, re_reqlimit TYPE TABLE OF BBP_PDS_LIMIT WITH HEADER LINE, re_reqheads LIKE reqheads, re_reqlineacct LIKE reqacct OCCURS 0 WITH HEADER LINE.TABLES reqheads.TABLES reqlinema.TABLES reqlinesr.* ====================================================================begin_method setreleased changing container.DATA: releasesuccessful TYPE char1.DATA: ld_reqno TYPE reqhead-reqno, ld_object_id TYPE crmd_orderadm_h-object_id, ld_is_pd TYPE xflag, ls_header TYPE bbp_pds_sc_header_d, lt_messages TYPE TABLE OF bbp_pds_messages WITH HEADER LINE, lv_initiator TYPE wfsyst-initiator, lv_changer TYPE sy-uname, lv_msgid TYPE sy-msgid, lv_msgno TYPE sy-msgno.swc_get_element container 'Reqno' ld_reqno.MOVE object-key-requirementrequest TO ld_object_id.IF ld_object_id IS INITIAL. MOVE ld_reqno TO ld_object_id.ENDIF.CALL FUNCTION 'BBP_PD_SC_CHECK_IS_PD' EXPORTING iv_object_id = ld_object_id IMPORTING ev_is_pd = ld_is_pd.IF NOT ld_is_pd IS INITIAL.* 3.0 shopping cart REFRESH lt_messages. CALL FUNCTION 'BBP_PD_SC_GETDETAIL' EXPORTING i_object_id = ld_object_id I_WITH_ITEMDATA = '' IMPORTING e_header = ls_header TABLES e_messages = lt_messages. PERFORM collect_messages TABLES lt_messages. REFRESH lt_messages. swc_get_element container 'Initiator' lv_initiator. MOVE lv_initiator TO lv_changer.* iv_status = 1 corresponds to 'released' CALL FUNCTION 'BBP_PD_SC_STATUS_CHANGE_WF' EXPORTING iv_guid = ls_header-guid iv_status = 1 iv_changer = lv_changer TABLES et_messages = lt_messages EXCEPTIONS invalid_value_for_status = 1001 error_in_status_change = 1002 OTHERS = 01. IF sy-subrc 0. CLEAR releasesuccessful.* show errors in workflow protocol CASE sy-subrc. WHEN 1001. " invalid value for status exit_return 1001 sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. WHEN 1002. "error in status change exit_return 1002 sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDCASE.* send messages to the internal application monitor PERFORM collect_messages TABLES lt_messages.* send message to the EBP application monitor 'approval-> other errors' CLEAR: lv_msgid, lv_msgno. lv_msgid = 'BBP_WFL'. lv_msgno = 40. "Fehler beim Setzen Einkaufkorbsstatus auf'Released' PERFORM message_to_monitor USING lv_msgid lv_msgno. RETURN. ELSE. releasesuccessful = 'X'. swc_set_element container 'SetReleasedSuccessful' releasesuccessful. ENDIF.ELSE. "IF NOT ld_is_pd IS INITIAL* send message to the EBP application monitor 'approval-> other errors' CLEAR: lv_msgid, lv_msgno. lv_msgid = 'BBP_WFL'. lv_msgno = 39. "Objekt ist kein Procurement Dokument PERFORM message_to_monitor USING lv_msgid lv_msgno. RETURN.ENDIF.end_method.* =====================================================================begin_method setrejected changing container.DATA: rejectionsuccessful TYPE char1, ld_reqno TYPE reqhead-reqno, ld_object_id TYPE crmd_orderadm_h-object_id, ld_is_pd TYPE xflag, ls_header TYPE bbp_pds_sc_header_d, lt_messages TYPE TABLE OF bbp_pds_messages WITH HEADER LINE, lv_initiator TYPE wfsyst-initiator, lv_changer TYPE sy-uname, lv_msgid TYPE sy-msgid, lv_msgno TYPE sy-msgno.swc_get_element container 'Reqno' ld_reqno.MOVE object-key-requirementrequest TO ld_object_id.IF ld_object_id IS INITIAL. MOVE ld_reqno TO ld_object_id.ENDIF.CALL FUNCTION 'BBP_PD_SC_CHECK_IS_PD' EXPORTING iv_object_id = ld_object_id IMPORTING ev_is_pd = ld_is_pd.IF NOT ld_is_pd IS INITIAL.* 3.0 shopping cart CALL FUNCTION 'BBP_PD_SC_GETDETAIL' EXPORTING i_object_id = ld_object_id I_WITH_ITEMDATA = '' IMPORTING e_header = ls_header TABLES e_messages = lt_messages. PERFORM collect_messages TABLES lt_messages. REFRESH lt_messages. swc_get_element container 'Initiator' lv_initiator. MOVE lv_initiator TO lv_changer.* iv_status = 2 corresponds to 'rejected' CALL FUNCTION 'BBP_PD_SC_STATUS_CHANGE_WF' EXPORTING iv_guid = ls_header-guid iv_status = 2 iv_changer = lv_changer TABLES et_messages = lt_messages EXCEPTIONS invalid_value_for_status = 1001 error_in_status_change = 1002 OTHERS = 01. IF sy-subrc 0. CLEAR rejectionsuccessful.* show errors in workflow protocol CASE sy-subrc. WHEN 1001. " invalid value for status exit_return 1001 sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. WHEN 1002. "error in status change exit_return 1002 sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDCASE.* send messages to the internal application monitor PERFORM collect_messages TABLES lt_messages. REFRESH lt_messages.* send message to the EBP application monitor 'approval-> other errors' CLEAR: lv_msgid, lv_msgno. lv_msgid = 'BBP_WFL'. lv_msgno = 41. "Fehler beim Setzen Einkaufkorbsstatus auf'Rejected' PERFORM message_to_monitor USING lv_msgid lv_msgno. RETURN. ELSE. rejectionsuccessful = 'X'. swc_set_element container 'SetRejectedSuccessful' ENDIF.ELSE. "IF NOT ld_is_pd IS INITIAL* 2.0 shopping cart CALL FUNCTION 'BBP_REQREQ_REJECT' EXPORTING reqno = object-key-requirementrequest IMPORTING rejection_successfull = rejectionsuccessful EXCEPTIONS not_found = 1001 foreign_lock = 1002 no_enqueue_possible = 1003 OTHERS = 01. CASE sy-subrc. WHEN 0. " OK* WHEN 1001. " NOT_FOUND* exit_return 1001 sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.* WHEN 1002. " foreign_lock* exit_return 1002 sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.* WHEN 1003. " no_enqueue_possible* exit_return 1003 sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. WHEN OTHERS. " to be implemented ENDCASE.ENDIF.end_method.