<div>Hi All</div>  <div>&nbsp;</div>  <div>I am Arghadip. I was implementing SRM Workflow WS145000015(Item Based approval For shopping Cart). I am facing the issue of Workitem getting Logically Deleted as soon as a Approver is approving a Line Item. I have also checked and found that the Restart event is getting triggered which is Logically deleting the Workitem and starting the approval Step all to over again. Can anyone tell me what is wrong in my programming in BADI.Please get back to me as it is urgent. Thanks in advance</div>  <div>&nbsp;</div>  <div>I am attaching my Code here Please reiew:</div>  <div>METHOD</div>  <div>&nbsp;</div>  <div>*-----------------------------------------------------------------------<BR>METHOD if_ex_bbp_wfl_approv_badi~get_remaing_approvers .<BR>* -------------------------------------------------------------------- *<BR>* Interface parameters:<BR>* -------------------------------------------------------------------- *<BR>*
 OBJECT_ID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE&nbsp; CRMT_OBJECT_ID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "Import<BR>* OBJECT_TYPE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE&nbsp; CRMT_SUBOBJECT_CATEGORY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "Import<BR>* GUID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE&nbsp; BBP_GUID_32&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "Import<BR>* ACTUAL_APPROVAL_INDEX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE&nbsp; SWH_NUMC10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "Import<BR>* APPROVAL_HISTORY_TABLE&nbsp;&nbsp;&nbsp;&nbsp; TYPE&nbsp;
 BBP_WFL_APPROVAL_HISTORY_BADI "Import<BR>* ITEM_APPROVAL_HISTORY_TABLE TYPE BBPT_WFL_ITEM_APPROVAL_BADI&nbsp;&nbsp; "Import<BR>* APPROVAL_TABLE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE&nbsp; BBPT_WFL_APPROVAL_TABLE_BADI&nbsp; "Export<BR>* ITEM_APPROVAL_TABLE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE&nbsp; BBPT_WFL_ITEM_APPROVAL_BADI&nbsp;&nbsp; "Export<BR>* NO_FURTHER_APPROVAL_NEEDED TYPE&nbsp; BOOLEAN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "Export<BR>* ITEM_APPROVAL_OBJ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE&nbsp; BBPT_WFL_ITEM_APPROVAL_OBJ&nbsp; "Changing<BR>* -------------------------------------------------------------------- *</div>  <div>* This a default implementation that gives idea about of how line item<BR>* approval should work as well to find the number of approval required<BR>* and to find the
 approvers.</div>  <div>* Global data---------------------------------------------------------*<BR>* TYPES---------------------------------------------------------------*<BR>&nbsp; TYPES : BEGIN OF ty_account.<BR>&nbsp; INCLUDE TYPE bbp_pds_acc.<BR>&nbsp; TYPES:&nbsp; app_crit_name&nbsp; TYPE bbp_wfl_app_criterion,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; app_crit_value TYPE char32.<BR>&nbsp; TYPES:&nbsp; END OF ty_account.</div>  <div>&nbsp; TYPES :<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BEGIN OF ty_item_copy,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; app_crit_value1 TYPE bbp_wfl_app_property,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; END OF ty_item_copy.</div>  <div>&nbsp; TYPES : ty_item_info&nbsp;&nbsp;&nbsp; TYPE STANDARD TABLE OF zrp2p0bgst001,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ty_account_copy TYPE STANDARD TABLE OF ty_account.</div>  <div>* FIELD-SYMBOLS-------------------------------------------------------*<BR>&nbsp; FIELD-SYMBOLS
 :<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;l_fs_account&gt;&nbsp;&nbsp;&nbsp; TYPE ty_account.</div>  <div>* DATA----------------------------------------------------------------*<BR>&nbsp; DATA : it_item_info TYPE ty_item_info,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wa_item_info TYPE zrp2p0bgst001.</div>  <div>&nbsp; DATA : v_tabix&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE sytabix,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v_num_apprv&nbsp;&nbsp;&nbsp;&nbsp; TYPE swh_numc10 VALUE '0',<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v_value_per_con TYPE bbp_value&nbsp; VALUE '0',<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v_value_per&nbsp;&nbsp;&nbsp;&nbsp; TYPE bbp_value.<BR>&nbsp; DATA : v_temp_value TYPE bbp_value&nbsp;&nbsp; VALUE '0',<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v_temp_level TYPE swh_numc10&nbsp; VALUE '0'.<BR>&nbsp; DATA:&nbsp; v_call_crit1&nbsp;&nbsp;&nbsp;&nbsp;
 TYPE bbp_wfl_app_criterion,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v_call_value1&nbsp;&nbsp;&nbsp; TYPE bbp_wfl_app_property,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v_co_code&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE bbp_wfl_app_property,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v_plant_value&nbsp;&nbsp;&nbsp; TYPE bbp_wfl_app_property,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v_account_type&nbsp;&nbsp; TYPE bbp_wfl_app_criterion ,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v_comp_code&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE bbp_wfl_app_criterion ,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v_plant&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE bbp_wfl_app_criterion ,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v_acc_desc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE bbp_step_description .</div>  <div>&nbsp; DATA:&nbsp;&nbsp; v_guid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 TYPE crmt_object_guid.</div>  <div>* WORKAREA------------------------------------------------------------*<BR>&nbsp; DATA:&nbsp; wa_header&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE bbp_pds_sc_header_d,<BR>* tables and work area.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; it_item&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE TABLE OF bbp_pds_sc_item_d,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wa_item&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE bbp_pds_sc_item_d,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; it_item_copy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE TABLE OF bbp_pds_sc_item_d,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wa_item_copy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE bbp_pds_sc_item_d,<BR>* accounting structures<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; it_account&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE TABLE OF
 bbp_pds_acc,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wa_account&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE bbp_pds_acc,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wa_account_copy&nbsp;&nbsp; TYPE ty_account,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wa_approver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE bbp_wfl_approval_table_badi.</div>  <div>* CONSTANTS-----------------------------------------------------------*<BR>* Business objects<BR>&nbsp; CONSTANTS:<BR>&nbsp;&nbsp; c_po&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE crmt_subobject_category_db VALUE 'BUS2201',<BR>&nbsp;&nbsp; c_shop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE crmt_subobject_category_db VALUE 'BUS2121',<BR>&nbsp;&nbsp; c_contract&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE crmt_subobject_category_db VALUE 'BUS2000113'.</div>  <div>* Approval Criteria and properties used<BR>&nbsp; CONSTANTS:<BR>&nbsp;&nbsp;&nbsp; c_cost_centre&nbsp; TYPE
 bbp_wfl_app_criterion&nbsp; VALUE 'COST_CTR',<BR>&nbsp;&nbsp;&nbsp; c_prod_categ&nbsp;&nbsp; TYPE bbp_wfl_app_criterion&nbsp; VALUE 'PROD_CAT'.</div>  <div>* Case when the object type bus212...---------------------------------*</div>  <div>&nbsp; CASE object_type.</div>  <div>&nbsp;&nbsp;&nbsp; WHEN c_shop.<BR>* -----------&nbsp;&nbsp; shopping cart --------------------------------------- *<BR>*&nbsp;&nbsp;&nbsp;&nbsp; Get the details of the shopping cart<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CALL FUNCTION 'BBP_PD_SC_GETDETAIL'<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EXPORTING<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i_object_id = object_id<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IMPORTING<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e_header&nbsp;&nbsp;&nbsp; = wa_header<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TABLES<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e_item&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
 it_item<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e_account&nbsp;&nbsp; = it_account.</div>  <div>*&nbsp;&nbsp;&nbsp;&nbsp; Proceed if it_item is not initial.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IF NOT it_item IS INITIAL.<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Keep the copy the it_item into it_item_copy<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and keep the unique be_plant.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; it_item_copy[] = it_item[].<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SORT it_item_copy BY be_plant.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DELETE ADJACENT DUPLICATES FROM it_item_copy<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; COMPARING be_plant.</div>  <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SELECT&nbsp; mandt<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zplant<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 zcost_ctr<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zorder_no<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zasset_no<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zlevel<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zvalue<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zapprover<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM zrp2p0bgst001<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INTO TABLE it_item_info<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FOR ALL ENTRIES IN it_item<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zplant = it_item-be_plant.<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; No sy-subrc check is required as this method is
 called only<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if the table contains some value such checks done before this.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SORT it_item_info BY zplant zcost_ctr<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zorder_no zasset_no zlevel zvalue.</div>  <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SORT it_item BY guid.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SORT it_account BY p_guid.</div>  <div>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; looping at it_item is done to fetch the approver for every<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; line item<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LOOP AT it_item INTO wa_item WHERE del_ind IS INITIAL.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; READ TABLE it_account INTO
 wa_account<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WITH KEY p_guid = wa_item-guid.</div>  <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IF sy-subrc = 0.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v_tabix = sy-tabix.<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; looping is done at every account so that every approver is<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; found for every acc corresponding to each line item.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LOOP AT it_account&nbsp; INTO wa_account FROM v_tabix.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IF wa_account-p_guid &lt;&gt; wa_item-guid.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 EXIT.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ELSE.<BR>* Comments for process -----------------------------------------------*<BR>*&nbsp; CALCULATING THE VALUE PER COST CENTER /INTERNAL ORDER OR ASSET.<BR>*&nbsp; ALONG WITH ,CALCULATING THE VALUE THE AMT NEED TO BE CONVERTED<BR>*&nbsp; IN USD AS THE VALUES ARE MAINTAINED IN USD.<BR>*&nbsp; SO FUNCTION MODULE IS CALLED TO CONVERT THE WA_ITEM-CURRENCY<BR>*&nbsp; INTO USD USING CONVERT_TO_LOCAL_CURRENCY.<BR>*---------------------------------------------------------------------*<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v_value_per_con = wa_account-distr_perc * wa_item-value / 100.</div>  <div>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY'<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 EXPORTING<BR>**&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CLIENT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = SY-MANDT<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; date&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = sy-datum<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreign_amount&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = v_value_per_con<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreign_currency&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
 wa_item-currency<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; local_currency&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 'USD'<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; type_of_rate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 'M'<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; read_tcurr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 'X'<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IMPORTING<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; local_amount&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
 v_value_per<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EXCEPTIONS<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; no_rate_found&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 1<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; overflow&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 2<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; no_factors_found&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 3<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; no_spread_found&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
 4<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; derived_2_times&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 5<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OTHERS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 6<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .<BR>** if error occurs system generated message is displayed.<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IF sy-subrc &lt;&gt; 0.<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MESSAGE ID sy-msgid TYPE sy-msgty NUMBER
 sy-msgno<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ENDIF.<BR>*--------------------------------------------------------------------*<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v_value_per = v_value_per_con.<BR>*--------------------------------------------------------------------*</div>  <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; READ TABLE it_item_info INTO wa_item_info WITH KEY<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zplant&nbsp;&nbsp;&nbsp; =
 wa_item-be_plant<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zcost_ctr = wa_account-cost_ctr<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zorder_no = wa_account-order_no<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zasset_no = wa_account-asset_no.</div>  <div>* Comment on logic----------------------------------------------------*<BR>* AS THE TABLE ZRP2P0BGST001, ONLY ONE OUT OF COST CENTER,<BR>* INTERNAL ORDER AND ASSET NUMBER<BR>* WILL BE FILLED AND REST WILL BE EMPTY, CORRSOPONDING TO COMPANY CODE,<BR>* SO ABOVE WILL FETCH FIRST RECORD AS THE it_ITEM_INFO IS SORTED.<BR>* FIRST RECORD WITH THE REQUIRED VALUE IS
 READ.<BR>*---------------------------------------------------------------------*<BR>*--------------------------------------------------------------------*<BR>* begin of modification.--<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IF sy-subrc = 0.<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v_temp_value = wa_item_info-zvalue.<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v_temp_level = wa_item_info-zlevel.<BR>*<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IF v_value_per &lt; v_temp_value.<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v_num_apprv = -1.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; " NO APPROVER
 REQUIRED.<BR>*<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ELSE.<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LOOP AT it_item_info INTO wa_item_info<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zplant&nbsp;&nbsp;&nbsp; = wa_item-be_plant&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AND<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zcost_ctr = wa_account-cost_ctr&nbsp;&nbsp;
 AND<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zorder_no = wa_account-order_no&nbsp;&nbsp; AND<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zasset_no = wa_account-asset_no .<BR>*<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IF wa_item_info-zvalue&nbsp; GE v_value_per<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AND v_value_per GT v_temp_value&nbsp; .<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 v_num_apprv&nbsp; =&nbsp; v_temp_level.<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EXIT.<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ELSE.<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v_temp_value = wa_item_info-zvalue.<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v_temp_level = wa_item_info-zlevel.<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ENDIF.<BR>*<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 ENDLOOP.<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ENDIF.<BR>*<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IF v_num_apprv IS INITIAL.<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v_num_apprv = v_temp_level.<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ENDIF.<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ELSE.<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CLEAR:&nbsp; v_temp_value,v_temp_level.<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ENDIF.<BR>* end of
 modification.--<BR>*--------------------------------------------------------------------*<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; As the v_num_apprv is assigned some value other than 0.<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and for all values v_num_apprv &lt;&gt; -1 it shud proceed.<BR>*-begin of modification ++-------------------------------------------*<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v_num_apprv = actual_approval_index .<BR>*-end of modification ++-------------------------------------------*</div>  <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IF v_num_apprv &lt;&gt; -1.<BR>* Comment on logic----------------------------------------------------*<BR>* NOW THE NUMBER OF APPROVER IS KNOWN SO THE APPROVER IS<BR>* FOUND USING THE RFC AND THE CUSTOM TABLE ZRP2P0BGST001
 IS UPDATED<BR>* WITH LATEST APPROVERS.<BR>*---------------------------------------------------------------------*<BR>* To Find out Account id of what type ie cost center/IO/Asset.</div>  <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IF NOT wa_account-cost_ctr IS INITIAL.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v_call_value1 = wa_account-cost_ctr.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v_account_type = 'COST_CTR'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v_acc_desc&nbsp; = 'Cost center approval'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 ENDIF.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IF NOT wa_account-order_no IS INITIAL.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v_call_value1 = wa_account-order_no.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v_account_type = 'ORDER_NO'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v_acc_desc&nbsp; = 'Internal Order approval'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ENDIF.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IF NOT wa_account-asset_no IS
 INITIAL.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v_call_value1 = wa_account-asset_no.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v_account_type = 'ASSET_NO'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v_acc_desc&nbsp; = 'Asset Number approval'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v_comp_code = 'COMPANY_CODE'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v_co_code&nbsp;&nbsp; = wa_item-be_co_code.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ENDIF.</div> 
 <div>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Defining the PLANT and plant value.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v_plant = 'PLANT'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v_plant_value = wa_item-be_plant.</div>  <div>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Calling the Custom function to find the approvers.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CALL FUNCTION 'ZBBP_WFL_DIN_ITEM_APPROVAL_GET'<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EXPORTING<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 sc_guid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = wa_header-guid<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; item_guid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = wa_item-guid<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; approval_description&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = v_acc_desc<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hide_items_not_responsible = 'X'<BR>* each cost center approver should see only items he is responsible<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 criterion1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = v_account_type<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; criterion2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = v_comp_code<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; criterion3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = v_plant<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; value1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
 v_call_value1<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; value2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = v_co_code<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; value3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = v_plant_value<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; approval_index&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = v_num_apprv<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 CHANGING<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; approval_table&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = approval_table<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; item_approval_table&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = item_approval_table<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; item_approval_obj&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = item_approval_obj.</div>  <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ENDIF.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ENDIF.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CLEAR
 wa_account.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ENDLOOP.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ENDIF.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ENDLOOP.<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Once done clear the wa_approver<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CLEAR: wa_approver , wa_account,wa_item, wa_item_info.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ENDIF.<BR>&nbsp; ENDCASE.<BR>*--------------------------------------------------------------------*<BR>* temporary change adding&nbsp; one more line to apprv table.<BR>&nbsp; IF approval_table IS INITIAL.<BR>&nbsp;&nbsp;&nbsp; no_further_approval_needed = 'X'.<BR>&nbsp; ENDIF.</div>  <div>*&nbsp; DATA:<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_wa_approval_table&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE bbp_wfl_approval_table_badi.<BR>*<BR>*&nbsp; READ TABLE approval_table INTO l_wa_approval_table INDEX&nbsp; 1.<BR>*&nbsp; l_wa_approval_table-approval_agent =
 'USARGK'.<BR>*&nbsp; l_wa_approval_table-approval_index = '0000000003'.<BR>*&nbsp; APPEND l_wa_approval_table TO approval_table.<BR>*--------------------------------------------------------------------*</div>  <div>ENDMETHOD.</div>  <div>&nbsp;</div>  <div>&nbsp;</div>  <div>FUNCTION MODULE</div>  <div>&nbsp;</div>  <div>FUNCTION zbbp_wfl_din_item_approval_get.<BR>*"----------------------------------------------------------------------<BR>*"*"Local Interface:<BR>*"&nbsp; IMPORTING<BR>*"&nbsp;&nbsp;&nbsp;&nbsp; VALUE(SC_GUID) TYPE&nbsp; BBP_GUID<BR>*"&nbsp;&nbsp;&nbsp;&nbsp; VALUE(ITEM_GUID) TYPE&nbsp; BBP_GUID<BR>*"&nbsp;&nbsp;&nbsp;&nbsp; VALUE(APPROVAL_DESCRIPTION) TYPE&nbsp; BBP_STEP_DESCRIPTION OPTIONAL<BR>*"&nbsp;&nbsp;&nbsp;&nbsp; VALUE(HIDE_ITEMS_NOT_RESPONSIBLE) TYPE&nbsp; BOOLEAN OPTIONAL<BR>*"&nbsp;&nbsp;&nbsp;&nbsp; VALUE(CRITERION1) TYPE&nbsp; BBP_WFL_APP_CRITERION<BR>*"&nbsp;&nbsp;&nbsp;&nbsp; VALUE(CRITERION2) TYPE&nbsp; BBP_WFL_APP_CRITERION DEFAULT
 ''<BR>*"&nbsp;&nbsp;&nbsp;&nbsp; VALUE(CRITERION3) TYPE&nbsp; BBP_WFL_APP_CRITERION DEFAULT ''<BR>*"&nbsp;&nbsp;&nbsp;&nbsp; VALUE(VALUE1) TYPE&nbsp; BBP_WFL_APP_PROPERTY DEFAULT ''<BR>*"&nbsp;&nbsp;&nbsp;&nbsp; VALUE(VALUE2) TYPE&nbsp; BBP_WFL_APP_PROPERTY DEFAULT ''<BR>*"&nbsp;&nbsp;&nbsp;&nbsp; VALUE(VALUE3) TYPE&nbsp; BBP_WFL_APP_PROPERTY DEFAULT ''<BR>*"&nbsp;&nbsp;&nbsp;&nbsp; VALUE(APPROVAL_INDEX) TYPE&nbsp; SWH_NUMC10<BR>*"&nbsp; CHANGING<BR>*"&nbsp;&nbsp;&nbsp;&nbsp; REFERENCE(APPROVAL_TABLE) TYPE&nbsp; BBPT_WFL_APPROVAL_TABLE_BADI<BR>*"&nbsp;&nbsp;&nbsp;&nbsp; REFERENCE(ITEM_APPROVAL_TABLE) TYPE&nbsp; BBPT_WFL_ITEM_APPROVAL_BADI<BR>*"&nbsp;&nbsp;&nbsp;&nbsp; REFERENCE(ITEM_APPROVAL_OBJ) TYPE&nbsp; BBPT_WFL_ITEM_APPROVAL_OBJ<BR>*"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OPTIONAL<BR>*"----------------------------------------------------------------------<BR>* Local data-----------------------------------------------------------*</div>  <div>&nbsp; TYPES: ty_option TYPE
 STANDARD TABLE OF rfc_db_opt,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ty_fields TYPE STANDARD TABLE OF rfc_db_fld,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ty_data&nbsp;&nbsp; TYPE STANDARD TABLE OF tab512.</div>  <div>&nbsp; DATA:<BR>&nbsp;&nbsp;&nbsp; l_wa_approval_table&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE bbp_wfl_approval_table_badi,<BR>&nbsp;&nbsp;&nbsp; l_wa_item_approval_table TYPE bbps_wfl_item_approval,<BR>&nbsp;&nbsp;&nbsp; l_wa_approval_def&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE zrp2p0bgst001.</div>  <div>&nbsp; DATA:<BR>&nbsp;&nbsp;&nbsp; l_v_app_obj_guid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE bbp_guid_32,<BR>&nbsp;&nbsp;&nbsp; l_v_is_new_approval_object TYPE boolean.</div>  <div>&nbsp; DATA : l_it_update_tab&nbsp;&nbsp; TYPE STANDARD TABLE OF zrp2p0bgst001,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_it_approval_def TYPE STANDARD TABLE OF
 zrp2p0bgst001,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_wa_update_tab&nbsp;&nbsp; TYPE zrp2p0bgst001.</div>  <div>&nbsp; DATA : l_it_actor_tab&nbsp;&nbsp;&nbsp; TYPE STANDARD TABLE OF swhactor,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_wa_actor_tab&nbsp;&nbsp;&nbsp; TYPE swhactor,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_it_ac_container TYPE STANDARD TABLE OF swcont,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_wa_ac_container TYPE swcont.</div>  <div>&nbsp; DATA : l_it_options TYPE ty_option,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_it_fields&nbsp; TYPE ty_fields,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_it_data&nbsp;&nbsp;&nbsp; TYPE ty_data.</div>  <div>&nbsp; DATA : l_wa_options TYPE&nbsp; rfc_db_opt,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_wa_fields&nbsp; TYPE&nbsp; rfc_db_fld,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_wa_data&nbsp;&nbsp;&nbsp; TYPE&nbsp; tab512.</div> 
 <div>&nbsp; DATA : l_v_apprv_asset TYPE usnam,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_v_apprv_cc&nbsp;&nbsp;&nbsp; TYPE verak.</div>  <div>&nbsp; DATA : l_v_cost_ctr TYPE&nbsp; bbp_wfl_app_property VALUE '',<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_v_order_no TYPE&nbsp; bbp_wfl_app_property VALUE '',<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_v_asset_no TYPE&nbsp; bbp_wfl_app_property VALUE ''.</div>  <div>&nbsp; DATA : l_v_query_table TYPE dd02l-tabname.<BR>&nbsp; DATA : l_apprv_count&nbsp;&nbsp; TYPE char1 VALUE '0'.</div>  <div>* Constants-----------------------------------------------------------*<BR>&nbsp; CONSTANTS:<BR>&nbsp;&nbsp;&nbsp; l_c_agent_is_user TYPE otype VALUE 'US'.</div>  <div>* Comment on login ---------------------------------------------------*<BR>* First find the right approval object the item belongs to.<BR>* All items of an approval object are approved together in<BR>* this approval step, and therefore only
 one workitem is<BR>* created for this items.<BR>*---------------------------------------------------------------------*<BR>&nbsp; CALL FUNCTION 'BBP_WFL_DIN_APP_OBJ_GET'<BR>&nbsp;&nbsp;&nbsp; EXPORTING<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sc_guid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = sc_guid<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; criterion1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = criterion1<BR>*&nbsp;&nbsp; CRITERION2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = ''<BR>*&nbsp;&nbsp; CRITERION3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = ''<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; value1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = value1<BR>*&nbsp;&nbsp; VALUE2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
 ''<BR>*&nbsp;&nbsp; VALUE3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = ''<BR>&nbsp;&nbsp; IMPORTING<BR>*&nbsp; If 2 items of the same shopping cart have the same<BR>*&nbsp; values for the criterias, this function returns the<BR>*&nbsp; same (!!!) approval object guid<BR>&nbsp;&nbsp;&nbsp;&nbsp; approval_obj_guid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = l_v_app_obj_guid<BR>&nbsp;&nbsp;&nbsp; TABLES<BR>&nbsp;&nbsp;&nbsp;&nbsp; item_app_obj&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = item_approval_obj<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .<BR>* Check what type of account is ie Order no/Internal order/ASSET.<BR>&nbsp; IF criterion1 = 'ORDER_NO'.<BR>&nbsp;&nbsp;&nbsp; l_v_order_no = value1.<BR>&nbsp;&nbsp;&nbsp; CONCATENATE 'AUFNR' '=' value1 INTO l_wa_options-text<BR>&nbsp;&nbsp;&nbsp; SEPARATED BY space.<BR>&nbsp;&nbsp;&nbsp; APPEND l_wa_options TO l_it_options.</div> 
 <div>&nbsp;&nbsp;&nbsp; l_wa_fields-fieldname = 'AUFNR'.<BR>&nbsp;&nbsp;&nbsp; l_wa_fields-length&nbsp;&nbsp;&nbsp; = '000012'.<BR>&nbsp;&nbsp;&nbsp; l_wa_fields-offset&nbsp;&nbsp;&nbsp; = '000000'.<BR>&nbsp;&nbsp;&nbsp; l_wa_fields-type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 'C'.<BR>&nbsp;&nbsp;&nbsp; APPEND l_wa_fields TO l_it_fields.</div>  <div>&nbsp;&nbsp;&nbsp; l_wa_fields-fieldname = 'KOSTV'.<BR>&nbsp;&nbsp;&nbsp; l_wa_fields-length&nbsp;&nbsp;&nbsp; = '000010'.<BR>&nbsp;&nbsp;&nbsp; l_wa_fields-offset&nbsp;&nbsp;&nbsp; = '000000'.<BR>&nbsp;&nbsp;&nbsp; l_wa_fields-type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 'C'.<BR>&nbsp;&nbsp;&nbsp; APPEND l_wa_fields TO l_it_fields.</div>  <div>&nbsp;&nbsp;&nbsp; CALL FUNCTION 'RFC_READ_TABLE' DESTINATION 'E10CLNT121'<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EXPORTING<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; query_table&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 'COAS'<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 delimiter&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = '|'<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TABLES<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OPTIONS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = l_it_options<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fields&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = l_it_fields<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; data&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = l_it_data<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EXCEPTIONS<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; table_not_available&nbsp; = 1<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; table_without_data&nbsp;&nbsp; = 2<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; option_not_valid&nbsp;&nbsp;&nbsp;&nbsp; = 3<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; field_not_valid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
 4<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; not_authorized&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 5<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; data_buffer_exceeded = 6<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OTHERS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 7.</div>  <div>&nbsp;&nbsp;&nbsp; IF sy-subrc = 0.</div>  <div>*&nbsp;&nbsp;&nbsp;&nbsp; as l_it_data table contains only one record<BR>*&nbsp;&nbsp;&nbsp;&nbsp; so no sorting required.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; READ TABLE l_it_data INTO l_wa_data INDEX 1.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; value1 = l_wa_data-wa+12(10).</div>  <div>&nbsp;&nbsp;&nbsp; ENDIF.<BR>*&nbsp;&nbsp; at the end of this if internal order is passed its responsible<BR>*&nbsp;&nbsp; cost obtained and is placed in value1 field.</div>  <div>&nbsp;&nbsp;&nbsp; CLEAR : l_wa_data , l_wa_options , l_wa_fields ,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_it_data ,
 l_it_options , l_it_fields .<BR>&nbsp; ENDIF.</div>  <div>* RFC to read table for finding the person responsible for the<BR>* cost center / asset ie approver.<BR>&nbsp; CASE criterion1 .</div>  <div>&nbsp;&nbsp;&nbsp; WHEN 'COST_CTR' OR 'ORDER_NO'.</div>  <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IF criterion1 = 'COST_CTR'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_v_cost_ctr = value1.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ENDIF.</div>  <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CONCATENATE 'KOSTL' '=' value1 INTO l_wa_options-text<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SEPARATED BY space.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; APPEND l_wa_options TO l_it_options.</div>  <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_wa_fields-fieldname = 'VERAK'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_wa_fields-length&nbsp;&nbsp;&nbsp; = '000020'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_wa_fields-offset&nbsp;&nbsp;&nbsp; = '000000'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_wa_fields-type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
 'C'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; APPEND l_wa_fields TO l_it_fields.</div>  <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_wa_fields-fieldname = 'KOSTL'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_wa_fields-length&nbsp;&nbsp;&nbsp; = '000010'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_wa_fields-offset&nbsp;&nbsp;&nbsp; = '000000'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_wa_fields-type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 'C'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; APPEND l_wa_fields TO l_it_fields.</div>  <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_v_query_table = 'CSKS'.</div>  <div>&nbsp;&nbsp;&nbsp; WHEN 'ASSET_NO'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .</div>  <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_v_asset_no = value1.</div>  <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CONCATENATE 'ANLN1' '=' value1 'AND' 'BUKRS' '=' value2 INTO<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_wa_options-text SEPARATED BY space.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; APPEND l_wa_options TO l_it_options.</div>  <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 l_wa_fields-fieldname = 'XV0NM'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_wa_fields-length&nbsp;&nbsp;&nbsp; = '000012'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_wa_fields-offset&nbsp;&nbsp;&nbsp; = '000000'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_wa_fields-type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 'C'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; APPEND l_wa_fields TO l_it_fields.</div>  <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_wa_fields-fieldname = 'ANLN1'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_wa_fields-length&nbsp;&nbsp;&nbsp; = '000012'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_wa_fields-offset&nbsp;&nbsp;&nbsp; = '000000'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_wa_fields-type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 'C'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; APPEND l_wa_fields TO l_it_fields.</div>  <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_wa_fields-fieldname = 'BUKRS'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_wa_fields-length&nbsp;&nbsp;&nbsp; = '000004'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_wa_fields-offset&nbsp;&nbsp;&nbsp; =
 '000000'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_wa_fields-type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 'C'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; APPEND l_wa_fields TO l_it_fields.</div>  <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_v_query_table = 'ANLX'.</div>  <div>&nbsp; ENDCASE.</div>  <div>* select all the record friom zrp2p0bgst001...<BR>* based on above plant and cost_ctr/io/asset.<BR>&nbsp; SELECT * FROM zrp2p0bgst001<BR>&nbsp; INTO TABLE l_it_update_tab<BR>&nbsp; WHERE<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zplant = value3&nbsp;&nbsp;&nbsp; AND<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zcost_ctr = l_v_cost_ctr AND<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zorder_no = l_v_order_no AND<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zasset_no = l_v_asset_no.</div>  <div>&nbsp; IF sy-subrc = 0.<BR>&nbsp;&nbsp;&nbsp; SORT l_it_update_tab BY zplant zcost_ctr<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zorder_no zasset_no zlevel zvalue.</div>  <div>*&nbsp;&nbsp; now prepare the workarea for
 updating the table zrp2p0bgst001.<BR>&nbsp;&nbsp;&nbsp; READ TABLE l_it_update_tab INTO l_wa_approval_def WITH<BR>&nbsp;&nbsp;&nbsp; KEY zplant&nbsp;&nbsp;&nbsp; = value3<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zcost_ctr = l_v_cost_ctr<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zorder_no = l_v_order_no<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zasset_no = l_v_asset_no<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zlevel&nbsp;&nbsp;&nbsp; = 1&nbsp; .<BR>*&nbsp;&nbsp; sy-subrc check not required as the function module is caled<BR>*&nbsp;&nbsp; only when the table contains the value and as such abvoe<BR>*&nbsp;&nbsp; sy-subrc is true so below will fetch atleast one record.</div>  <div>&nbsp; ENDIF.</div>  <div>&nbsp; CALL FUNCTION 'RFC_READ_TABLE' DESTINATION 'E10CLNT121'<BR>&nbsp;&nbsp;&nbsp; EXPORTING<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; query_table&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = l_v_query_table<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 delimiter&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = '|'<BR>&nbsp;&nbsp;&nbsp; TABLES<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OPTIONS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = l_it_options<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fields&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = l_it_fields<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; data&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = l_it_data<BR>&nbsp;&nbsp;&nbsp; EXCEPTIONS<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; table_not_available&nbsp; = 1<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; table_without_data&nbsp;&nbsp; = 2<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; option_not_valid&nbsp;&nbsp;&nbsp;&nbsp; = 3<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; field_not_valid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 4<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; not_authorized&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 5<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 data_buffer_exceeded = 6<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OTHERS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 7.</div>  <div>&nbsp; IF sy-subrc = 0.<BR>&nbsp;&nbsp;&nbsp; READ TABLE l_it_data INTO l_wa_data INDEX 1.<BR>&nbsp;&nbsp;&nbsp; IF l_v_query_table = 'CSKS'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_v_apprv_cc = l_wa_data-wa+0(20).<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_wa_approval_def-zapprover = l_v_apprv_cc.<BR>&nbsp;&nbsp;&nbsp; ENDIF.<BR>&nbsp;&nbsp;&nbsp; IF l_v_query_table = 'ANLX'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_v_apprv_asset = l_wa_data-wa+0(12).<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_wa_approval_def-zapprover = l_v_apprv_asset.<BR>&nbsp;&nbsp;&nbsp; ENDIF.<BR>&nbsp; ENDIF.<BR>**********************************************************************<BR>*--BEGING OF CHANGE MAJOR ONE.------------------------------------*<BR>**********************************************************************<BR>*&nbsp; IF ( approval_index =
 0 or approval_index = 1. ).</div>  <div>* this will pick max three records as per the requirement<BR>&nbsp; DO 3 TIMES.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; " begin of do.<BR>&nbsp;&nbsp;&nbsp; l_apprv_count = l_apprv_count + 1.<BR>&nbsp;&nbsp;&nbsp; l_wa_approval_def-zlevel&nbsp;&nbsp;&nbsp; = l_apprv_count .<BR>*&nbsp;&nbsp; if the count is more than one then next level of approver<BR>*&nbsp;&nbsp; is found using the rfc call swx_get_manager and stored as per.<BR>&nbsp;&nbsp;&nbsp; IF l_apprv_count &gt; 1.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_apprv_count = l_apprv_count - 1.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; READ TABLE l_it_update_tab INTO l_wa_update_tab<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WITH KEY zlevel = l_apprv_count .<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IF sy-subrc = 0 .<BR>* Comment&nbsp; on login ------------------------------------------------*<BR>* NOW FOR FINDING THE
 SECOND LEVEL OF APPROVER<BR>* 1ST LEVEL OF APPROVER IS FOUND USING ABOVE READ.<BR>* THE FIRST LEVEL OF APPROVER IS USED TO FIND THE SECOND<BR>* LEVEL OF APPROVER USING THE SWX_GET_MANAGER.<BR>* PREPARE THE TABLES FOR SWX_GET_MANAGER<BR>*-------------------------------------------------------------------*<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; REFRESH : l_it_ac_container.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_wa_ac_container-element = 'ORG_OBJECT'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_wa_ac_container-tab_index = '000001'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_wa_ac_container-elemlength = '006'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_wa_ac_container-type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 'C'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CONCATENATE l_c_agent_is_user l_wa_update_tab-zapprover<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INTO l_wa_ac_container-value .<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; APPEND
 l_wa_ac_container TO l_it_ac_container.</div>  <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CALL FUNCTION 'SWX_GET_MANAGER' DESTINATION 'E10CLNT121'<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TABLES<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; actor_tab&nbsp;&nbsp;&nbsp; = l_it_actor_tab<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ac_container = l_it_ac_container<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EXCEPTIONS<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nobody_found = 1<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OTHERS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 2.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IF sy-subrc = 0.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; READ TABLE l_it_actor_tab INTO l_wa_actor_tab WITH KEY<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; otype =
 l_c_agent_is_user.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_wa_approval_def-zapprover = l_wa_actor_tab-objid.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ENDIF.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ENDIF.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_apprv_count = l_apprv_count + 1.<BR>&nbsp;&nbsp;&nbsp; ENDIF.<BR>*&nbsp;&nbsp; before updating populate the table l_it_approval_def<BR>*&nbsp;&nbsp; l_it_update_tab is read based on next l_apprv_count and<BR>*&nbsp;&nbsp; updates the approver and its value.<BR>&nbsp;&nbsp;&nbsp; READ TABLE l_it_update_tab INTO l_wa_update_tab<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WITH KEY zlevel = l_apprv_count .<BR>&nbsp;&nbsp;&nbsp; IF sy-subrc = 0.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_wa_approval_def-zplant = l_wa_update_tab-zplant.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_wa_approval_def-zcost_ctr = l_wa_update_tab-zcost_ctr.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_wa_approval_def-zorder_no =
 l_wa_update_tab-zorder_no.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_wa_approval_def-zasset_no = l_wa_update_tab-zorder_no.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_wa_approval_def-zvalue = l_wa_update_tab-zvalue.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; APPEND l_wa_approval_def TO l_it_approval_def.<BR>&nbsp;&nbsp;&nbsp; ENDIF.</div>  <div>*&nbsp;&nbsp; modify the table l_it_update_tab so that along with the custom<BR>*&nbsp;&nbsp; database table the table in use in this function module ie<BR>*&nbsp;&nbsp; l_it_update_tab also remain updated.<BR>*&nbsp;&nbsp; benefit is that if the modify to dtab fails. the process works fine.<BR>&nbsp;&nbsp;&nbsp; MODIFY l_it_update_tab FROM l_wa_approval_def<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TRANSPORTING zapprover<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE zlevel = l_wa_approval_def-zlevel
 AND<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zvalue = l_wa_approval_def-zvalue.</div>  <div>*&nbsp;&nbsp; now enqueue the table for modification.<BR>&nbsp;&nbsp;&nbsp; CALL FUNCTION 'ENQUEUE_E_TABLE'<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EXPORTING<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tabname&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 'ZRP2P0BGST001'<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EXCEPTIONS<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreign_lock&nbsp;&nbsp; = 1<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; system_failure = 2<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OTHERS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 3.<BR>*&nbsp;&nbsp; now modify the table, for updation of approver.<BR>&nbsp;&nbsp;&nbsp; IF sy-subrc = 0.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MODIFY zrp2p0bgst001 FROM l_wa_approval_def.<BR>*&nbsp;&nbsp;&nbsp;&nbsp; if sy-subrc goes 0 commit work is
 called.<BR>*&nbsp;&nbsp;&nbsp;&nbsp; also the l_it_update_tab need to be updated.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IF sy-subrc = 0.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; COMMIT WORK.</div>  <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ENDIF.<BR>&nbsp;&nbsp;&nbsp; ENDIF.<BR>*&nbsp;&nbsp; now dequeue the table after the updation.<BR>&nbsp;&nbsp;&nbsp; CALL FUNCTION 'DEQUEUE_E_TABLE'<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EXPORTING<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tabname = 'ZRP2P0BGST001'.<BR>*&nbsp;&nbsp; once all done clear the work areas.<BR>&nbsp;&nbsp;&nbsp; CLEAR : l_wa_approval_def-zlevel , l_wa_approval_def-zapprover.<BR>&nbsp; ENDDO.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; " END OF DO STATEMENT.</div>  <div>* sort l_it_approval_def table.<BR>&nbsp; SORT l_it_approval_def BY zlevel ASCENDING.</div>  <div>&nbsp; IF
 approval_index = 2 .<BR>&nbsp;&nbsp;&nbsp; DELETE l_it_approval_def INDEX 1.<BR>&nbsp; ENDIF.<BR>&nbsp; IF approval_index = 3.<BR>&nbsp;&nbsp;&nbsp; DELETE l_it_approval_def INDEX 1.<BR>&nbsp;&nbsp;&nbsp; DELETE l_it_approval_def INDEX 1.<BR>&nbsp; ENDIF.<BR>&nbsp; IF approval_index &gt; 3.<BR>&nbsp;&nbsp;&nbsp; REFRESH : l_it_approval_def .<BR>&nbsp; ENDIF.<BR>*ENDIF.<BR>**********************************************************************<BR>*--end of major change.---------------------------------------------*<BR>**********************************************************************<BR>*&nbsp;&nbsp; fill approval table (who is responsible for which approval<BR>*&nbsp;&nbsp; object in which approval step)<BR>&nbsp; SORT l_it_approval_def BY zplant zcost_ctr zorder_no zasset_no<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zlevel zvalue.<BR>&nbsp; LOOP AT
 l_it_approval_def INTO l_wa_approval_def.<BR>&nbsp;&nbsp;&nbsp; l_wa_approval_table-approval_index&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = l_wa_approval_def-zlevel.<BR>&nbsp;&nbsp;&nbsp; CONCATENATE l_c_agent_is_user l_wa_approval_def-zapprover<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INTO l_wa_approval_table-approval_agent.</div>  <div>&nbsp;&nbsp;&nbsp; l_wa_approval_table-approval_description = approval_description.</div>  <div>&nbsp;&nbsp;&nbsp; l_wa_approval_table-approval_object_guid = l_v_app_obj_guid.</div>  <div>&nbsp;&nbsp;&nbsp; l_wa_approval_table-hide_items_not_responsible =<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hide_items_not_responsible.</div>  <div>&nbsp;&nbsp;&nbsp; APPEND l_wa_approval_table TO
 approval_table.<BR>&nbsp; ENDLOOP.<BR>* fill item table (which items belongs to which approval object)<BR>&nbsp; l_wa_item_approval_table-approval_object_guid = l_v_app_obj_guid.<BR>&nbsp; l_wa_item_approval_table-approval_item_guid&nbsp;&nbsp; = item_guid.<BR>&nbsp; APPEND l_wa_item_approval_table TO item_approval_table.</div>  <div>ENDFUNCTION.</div>  <div>&nbsp;</div>  <div>&nbsp;</div>  <div>&nbsp;</div>  <div>Arghadip Kar</div>  <div>email:dharam015@gmail.com</div>  <div>phone no :913325579917</div><p>&#32;



      <hr size=1>Ahhh...imagining that irresistible "new car" smell?<br> Check out
<a href="http://us.rd.yahoo.com/evt=48245/*http://autos.yahoo.com/new_cars.html;_ylc=X3oDMTE1YW1jcXJ2BF9TAzk3MTA3MDc2BHNlYwNtYWlsdGFncwRzbGsDbmV3LWNhcnM-">new cars at Yahoo! Autos.</a>