<div>Hi All</div>  <div>&nbsp;</div>  <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; I am having problem to execute Workflow Template WS14500015.The Workflow is not recognizing any of the Approval table that I am populating in the BADI. The BADI is getting called as a custom table is getting updated. Can anyone tell me what is missing in my code that is hindering in populating the approval table that will help me poulate agents. Do I need to implement any OSS Notes for it. I found that there is a Function Module bbp_pdh_wfl_trace. Do I need to pouplate any field of any table to enable Workflow to work. Here I am attaching my piece of code:</div>  <div>&nbsp;</div>  <div>Implementation Name<BR>ZR0BGS_EBP_SC</div>  <div>interface : IF_EX_BBP_WFL_APPROV_BADI~GET_REMAING_APPROVERS<BR>METHOD if_ex_bbp_wfl_approv_badi~get_remaing_approvers .<BR>* This a default implementation that gives idea about of how line item<BR>* approval should work</div>  <div>*****begin of code : Dharmendra
 ***********</div>  <div>&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 :BEGIN OF ty_item_copy,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; app_crit_value1 TYPE bbp_wfl_app_property,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; END OF ty_item_copy.</div>  <div>&nbsp; TYPES :<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ty_item_info 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>&nbsp;</div>  <div>&nbsp; DATA : lt_item_info TYPE ty_item_info,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lt_account_copy TYPE ty_account_copy,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 ls_item_info TYPE zrp2p0bgst001.</div>  <div>&nbsp; DATA :l_tabix&nbsp;&nbsp;&nbsp; TYPE sytabix,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_num_apprv TYPE SWH_NUMC10 VALUE '0',<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_value_per TYPE bbp_value.<BR>&nbsp; DATA : l_temp_value TYPE bbp_value VALUE '0',<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_temp_level TYPE SWH_NUMC10 VALUE '0'.</div>  <div><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><BR>*****end of code***************************</div>  <div>&nbsp;</div>  <div>&nbsp; DATA:<BR>&nbsp;&nbsp; ls_header&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE bbp_pds_sc_header_d,</div>  <div>* tables for different approval criteria<BR>&nbsp;&nbsp; lv_call_crit1&nbsp;&nbsp;&nbsp;&nbsp; TYPE bbp_wfl_app_criterion,<BR>&nbsp;&nbsp; lv_call_value1&nbsp;&nbsp;&nbsp; TYPE
 bbp_wfl_app_property,<BR>&nbsp;&nbsp; lv_co_code&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE bbp_wfl_app_property,<BR>&nbsp;&nbsp; lv_plant_value&nbsp;&nbsp;&nbsp; TYPE bbp_wfl_app_property,</div>  <div>* local help variables<BR>&nbsp;&nbsp; lv_guid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE crmt_object_guid,</div>  <div>* item fields and structures<BR>&nbsp;&nbsp; ls_item&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE bbp_pds_sc_item_d,<BR>****dk****<BR>&nbsp;&nbsp; lt_item_copy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE TABLE OF bbp_pds_sc_item_d,<BR>&nbsp;&nbsp; ls_item_copy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE bbp_pds_sc_item_d,<BR>&nbsp;&nbsp; lv_account_type&nbsp;&nbsp;&nbsp; TYPE bbp_wfl_app_criterion ,<BR>&nbsp;&nbsp; lv_comp_code&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE bbp_wfl_app_criterion ,<BR>&nbsp;&nbsp; lv_plant&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE bbp_wfl_app_criterion
 ,<BR>&nbsp;&nbsp; lv_acc_desc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE bbp_step_description ,<BR>****dk****<BR>&nbsp;&nbsp; lt_item&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE TABLE OF bbp_pds_sc_item_d,<BR>* accounting structures<BR>&nbsp;&nbsp; ls_account&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE bbp_pds_acc,<BR>&nbsp;&nbsp; lt_account&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE TABLE OF bbp_pds_acc,<BR>&nbsp;&nbsp; ls_account_copy&nbsp;&nbsp; TYPE ty_account.</div>  <div>&nbsp; DATA: ls_approver TYPE bbp_wfl_approval_table_badi.</div>  <div><BR>* Business objects (local)<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'.<BR>&nbsp; .</div>  <div>* Approval Criteria and properties used (local)<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><BR>&nbsp; CASE object_type.</div>  <div>&nbsp;&nbsp;&nbsp; WHEN c_shop.<BR>* -----------&nbsp;&nbsp; shopping cart ---------------------------------- *</div>  <div>*** 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; EXPORTING<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i_object_id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = object_id<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IMPORTING<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 e_header&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = ls_header<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TABLES<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e_item&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; = lt_item<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e_account&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = lt_account<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .<BR>****dk****</div>  <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lt_account_copy[] = lt_account[].</div>  <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IF NOT lt_item IS INITIAL.</div>  <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lt_item_copy[] =
 lt_item[].<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SORT lt_item_copy BY be_plant.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DELETE ADJACENT DUPLICATES FROM lt_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 lt_item_info<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FOR ALL ENTRIES IN lt_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 = lt_item-be_plant.</div>  <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SORT lt_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.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ENDIF.<BR>****dk~~****<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SORT lt_item BY guid.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SORT lt_account BY p_guid.</div>  <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LOOP AT lt_item INTO ls_item WHERE del_ind IS
 INITIAL.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; READ TABLE lt_account INTO ls_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; WITH KEY p_guid = ls_item-guid.</div>  <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IF sy-subrc = 0.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_tabix = sy-tabix.</div>  <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LOOP AT lt_account&nbsp; INTO ls_account FROM l_tabix.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IF ls_account-p_guid &lt;&gt; ls_item-guid.<BR>&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; ELSE.<BR>********logic**dk*****<BR>** CALCULATING THE VALUE PER COST CENTER /INTERNAL ORDER OR ASSET.</div> 
 <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_value_per = ls_account-distr_perc * ls_item-value / 100.</div>  <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; READ TABLE lt_item_info INTO ls_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; zplant&nbsp;&nbsp;&nbsp; = ls_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; zcost_ctr = ls_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; zorder_no = ls_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;
 zasset_no = ls_account-asset_no.<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. ..<BR>** CORRSOPONDING TO COMPANY CODE , SO ABOVE WILL<BR>** FETCH FIRST RECORD.</div>  <div>** FIRST RECORD WITH THE REQUIRED VALUE IS READ.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_temp_value = ls_item_info-zvalue.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_temp_level = ls_item_info-zlevel.</div>  <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IF l_value_per &lt; l_temp_value.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_num_apprv = -1. " NO APPROVER REQUIRED.</div>  <div>&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; LOOP AT lt_item_info INTO ls_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; 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; zplant&nbsp;&nbsp;&nbsp; = ls_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; zcost_ctr = ls_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; zorder_no = ls_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; zasset_no = ls_account-asset_no .</div>  <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IF ls_item_info-zvalue&nbsp; GE l_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; AND l_value_per GT l_temp_value&nbsp; .<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_num_apprv&nbsp; =&nbsp; l_temp_level.<BR>&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;
 ELSE.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_temp_value = ls_item_info-zvalue.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_temp_level = ls_item_info-zlevel.<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; ENDLOOP.<BR>&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; IF l_num_apprv IS INITIAL.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_num_apprv = l_temp_level.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ENDIF.</div>  <div>*** IF L_NUM_APPRV
 IS -1 THEN CALL BELOW.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IF l_num_apprv = -1.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IF approval_table[] IS INITIAL.<BR>* if no approver found because send sc to default administrator<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_approver-approval_index = actual_approval_index.<BR>*** the agent is 'US' + user<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_approver-approval_agent = 'USADMNIN1'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_approver-name = 'Peter Admin'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; APPEND ls_approver TO
 approval_administrators.<BR>&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; ELSE.</div>  <div>** NOW THE NUMBER OF APPROVER IS KNOWN SO THE APPROVER IS<BR>** FOUND USING THE RFC AND THE CUSTOM<BR>** TABLE ZRP2P0BGST001 IS UPDATED WITH LATEST APPROVER.</div>  <div>*** Found out to which cost center/IO/AN this item belongs<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; READ TABLE lt_account INTO ls_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; WITH KEY p_guid = ls_item-guid.<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; IF NOT ls_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; lv_call_value1 = ls_account-cost_ctr.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lv_account_type = 'COST_CTR'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lv_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 ls_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; lv_call_value1 = ls_account-order_no.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lv_account_type = 'ORDER_NO'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lv_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 ls_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; lv_call_value1 =
 ls_account-asset_no.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lv_account_type = 'ASSET_NO'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lv_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; lv_comp_code = 'COMPANY_CODE'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lv_co_code&nbsp;&nbsp; = ls_item-be_co_code.<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; ENDIF.</div>  <div>*** above to Found out to which cost center/IO/AN this item belongs<BR>***** DEFINING THE PLANT VALUE IN THE
 LV_PLANT_VALUE.</div>  <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lv_plant = 'PLANT'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lv_plant_value = ls_item-be_plant.</div>  <div>&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; EXPORTING<BR>&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; = ls_header-guid<BR>&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; = ls_item-guid<BR>&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; = lv_acc_desc<BR>&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; criterion1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = lv_account_type<BR>&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; = lv_comp_code<BR>&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; = lv_plant<BR>&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; = lv_call_value1<BR>&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; =
 lv_co_code<BR>&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; = lv_plant_value<BR>&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; = l_num_apprv<BR>&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; 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;
 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; 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; ENDIF.<BR>*******logic***~~~*****<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ENDIF.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ENDLOOP.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ENDIF.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ENDLOOP.</div>  <div>&nbsp; ENDCASE.</div>  <div>ENDMETHOD.</div>  <div>&nbsp;</div>  <div><BR>function modue</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>*"----------------------------------------------------------------------</div>  <div><BR>***************************************************************<BR>*** This is only an example function you could use as an example<BR>*** for implementing your own logic for approval determination!!<BR>***!!! It is not designed to be used in productive systems!!!<BR>****************************************************************</div>  <div>&nbsp; DATA:<BR>&nbsp;&nbsp;&nbsp; ls_approval_table&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE bbp_wfl_approval_table_badi,<BR>&nbsp;&nbsp;&nbsp; ls_item_approval_table TYPE bbps_wfl_item_approval,<BR>&nbsp;&nbsp;&nbsp; ls_approval_def&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 TYPE zrp2p0bgst001.</div>  <div>&nbsp; DATA:<BR>&nbsp;&nbsp;&nbsp; lv_app_obj_guid&nbsp;&nbsp; TYPE bbp_guid_32,<BR>&nbsp;&nbsp;&nbsp; lv_is_new_approval_object TYPE boolean.</div>  <div>&nbsp; CONSTANTS:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c_agent_is_user TYPE otype VALUE 'US'.</div>  <div>*** First find the right approval object the item belongs to.<BR>*** All items of an approval object are approved togheter in<BR>*** this approval step, and therefore only one workitem is<BR>*** created for this items. IF possible use this standard function<BR>*** BBP_WFL_DIN_APP_OBJ_GET for creating the approval object.</div>  <div>&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>*** If 2 items of the same shopping cart have the same<BR>*** values for the criterias, this function returns the<BR>*** same (!!!) approval object guid<BR>&nbsp;&nbsp;&nbsp;&nbsp; approval_obj_guid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = lv_app_obj_guid<BR>&nbsp;&nbsp;&nbsp; TABLES<BR>*** This table saves the
 criterias&nbsp; for which the approval object<BR>*** was created. For example:<BR>*** |approval object1| "cost center" | 1000&nbsp;&nbsp; |<BR>*** |approval object2| "cost center" | 1200&nbsp;&nbsp; |<BR>*** |approval object3| "prod categ " | office |<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;&nbsp; .</div>  <div>*** Check if this approval object already exists in the approval<BR>*** table<BR>******&nbsp; READ TABLE approval_table INTO ls_approval_table<BR>******&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WITH KEY approval_object_guid = lv_app_obj_guid<BR>******&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; = approval_index.<BR>******&nbsp; IF sy-subrc EQ 4.<BR>******&nbsp;&nbsp;&nbsp;
 lv_is_new_approval_object = 'X'.<BR>******&nbsp; ENDIF.<BR>******<BR>******&nbsp; IF lv_is_new_approval_object = 'X'.</div>  <div>*** Now read your own approval table based on your criteria's</div>  <div>*********************dk******************<BR>&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 TYPE STANDARD TABLE OF tab512.</div>  <div>&nbsp; DATA : lt_update_tab TYPE STANDARD TABLE OF zrp2p0bgst001,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lt_approval_def TYPE STANDARD TABLE OF zrp2p0bgst001,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_update_tab TYPE zrp2p0bgst001.</div>  <div>&nbsp; DATA : lt_actor_tab TYPE STANDARD TABLE OF swhactor,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_actor_tab TYPE swhactor,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lt_ac_container
 TYPE STANDARD TABLE OF swcont,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_ac_container TYPE swcont.</div>  <div><BR>&nbsp; DATA : lt_options TYPE ty_option,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lt_fields TYPE ty_fields,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lt_data TYPE ty_data.</div>  <div>&nbsp; DATA : ls_options TYPE&nbsp; rfc_db_opt,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_fields&nbsp; TYPE&nbsp; rfc_db_fld,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_data&nbsp;&nbsp;&nbsp; TYPE&nbsp; tab512.</div>  <div>&nbsp; DATA : lv_apprv_asset TYPE usnam,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lv_apprv_cc&nbsp;&nbsp;&nbsp; TYPE verak.</div>  <div>&nbsp; DATA : lv_cost_ctr TYPE&nbsp; bbp_wfl_app_property VALUE '',<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lv_order_no TYPE&nbsp; bbp_wfl_app_property VALUE '',<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lv_asset_no TYPE&nbsp;
 bbp_wfl_app_property VALUE ''.</div>  <div>&nbsp; DATA : lv_query_table TYPE dd02l-tabname.<BR>&nbsp; DATA : l_apprv_count TYPE char1 VALUE '0'.</div>  <div>***** if passed value is an internal order then ******<BR>***** cost center is derived from the coas and then preson<BR>***** responsible from the cskx table.<BR>&nbsp; IF criterion1 = 'ORDER_NO'.</div>  <div>&nbsp;&nbsp;&nbsp; lv_order_no = value1.</div>  <div>*&nbsp;&nbsp;&nbsp; ls_options-text = 'AUFNR = VALUE1'.<BR>&nbsp;&nbsp;&nbsp; CONCATENATE 'AUFNR' '=' VALUE1 INTO LS_OPTIONS-TEXT<BR>&nbsp;&nbsp;&nbsp; SEPARATED BY SPACE.<BR>&nbsp;&nbsp;&nbsp; APPEND ls_options TO lt_options.</div>  <div>&nbsp;&nbsp;&nbsp; ls_fields-fieldname = 'AUFNR'.<BR>&nbsp;&nbsp;&nbsp; ls_fields-length&nbsp;&nbsp;&nbsp; = '000012'.<BR>&nbsp;&nbsp;&nbsp; ls_fields-offset&nbsp;&nbsp;&nbsp; = '000000'.<BR>&nbsp;&nbsp;&nbsp; ls_fields-type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 'C'.<BR>&nbsp;&nbsp;&nbsp; APPEND ls_fields TO lt_fields.</div> 
 <div>&nbsp;&nbsp;&nbsp; ls_fields-fieldname = 'KOSTV'.<BR>&nbsp;&nbsp;&nbsp; ls_fields-length&nbsp;&nbsp;&nbsp; = '000010'.<BR>&nbsp;&nbsp;&nbsp; ls_fields-offset&nbsp;&nbsp;&nbsp; = '000000'.<BR>&nbsp;&nbsp;&nbsp; ls_fields-type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 'C'.<BR>&nbsp;&nbsp;&nbsp; APPEND ls_fields TO lt_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; = lt_options<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 fields&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = lt_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; = lt_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>**AS LT_DATA TABLE CONTAINS ONLY ONE RECORD SO NO SORTING REQUIRED.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; READ TABLE lt_data INTO ls_data INDEX 1.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; value1 = ls_data-wa+12(10).</div>  <div>&nbsp;&nbsp;&nbsp; ENDIF.<BR>*** AT THE END OF THIS IF INTERNAL ORDER IS PASSED ITS RESPONSIBLE<BR>*** COST OBTAINED AND PLACED IN VALUE1 FIELD.<BR>&nbsp;&nbsp;&nbsp; CLEAR : ls_data , ls_options , ls_fields ,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lt_data , lt_options , lt_fields .<BR>&nbsp; ENDIF.<BR>****************************************</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; lv_cost_ctr =
 value1.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ENDIF.</div>  <div>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_options-text = 'KOSTL = VALUE1'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CONCATENATE 'KOSTL' '=' VALUE1 INTO LS_OPTIONS-TEXT<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SEPARATED BY SPACE.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; APPEND ls_options TO lt_options.</div>  <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_fields-fieldname = 'VERAK'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_fields-length&nbsp;&nbsp;&nbsp; = '000020'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_fields-offset&nbsp;&nbsp;&nbsp; = '000000'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_fields-type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 'C'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; APPEND ls_fields TO lt_fields.</div>  <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_fields-fieldname = 'KOSTL'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_fields-length&nbsp;&nbsp;&nbsp; = '000010'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_fields-offset&nbsp;&nbsp;&nbsp; =
 '000000'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_fields-type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 'C'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; APPEND ls_fields TO lt_fields.</div>  <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lv_query_table = 'CSKS'.</div>  <div><BR>&nbsp;&nbsp;&nbsp; WHEN 'ASSET_NO'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .</div>  <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lv_asset_no = value1.</div>  <div>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_options-text = 'ANLN1 = VALUE1 AND BUKRS = VALUE2'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CONCATENATE 'ANLN1' '=' VALUE1 'AND' 'BUKRS' '=' VALUE2 INTO<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LS_OPTIONS-TEXT SEPARATED BY SPACE.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; APPEND ls_options TO lt_options.</div>  <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_fields-fieldname = 'XV0NM'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_fields-length&nbsp;&nbsp;&nbsp; = '000012'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_fields-offset&nbsp;&nbsp;&nbsp; = '000000'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 ls_fields-type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 'C'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; APPEND ls_fields TO lt_fields.</div>  <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_fields-fieldname = 'ANLN1'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_fields-length&nbsp;&nbsp;&nbsp; = '000012'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_fields-offset&nbsp;&nbsp;&nbsp; = '000000'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_fields-type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 'C'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; APPEND ls_fields TO lt_fields.</div>  <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_fields-fieldname = 'BUKRS'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_fields-length&nbsp;&nbsp;&nbsp; = '000004'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_fields-offset&nbsp;&nbsp;&nbsp; = '000000'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_fields-type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 'C'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; APPEND ls_fields TO lt_fields.</div>  <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lv_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 lt_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 = lv_cost_ctr AND<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zorder_no = lv_order_no AND<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zasset_no = lv_asset_no.</div>  <div>&nbsp; IF sy-subrc = 0.<BR>&nbsp;&nbsp;&nbsp; SORT lt_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>**** NOW PREPARE THE WORKAREA FOR UPDATING THE TABLE ZRP2P0BGST001..<BR>&nbsp;&nbsp;&nbsp; READ TABLE LT_UPDATE_TAB INTO LS_APPROVAL_DEF WITH<BR>&nbsp;&nbsp;&nbsp; KEY zplant&nbsp;&nbsp;&nbsp; = value3<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zcost_ctr =
 lv_cost_ctr<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zorder_no = lv_order_no<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zasset_no = lv_asset_no<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ZLEVEL&nbsp;&nbsp;&nbsp; = 1&nbsp; .</div>  <div>&nbsp;&nbsp;&nbsp; IF SY-SUBRC = 0.<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LS_APPROVAL_DEF-ZVALUE =<BR>&nbsp;&nbsp;&nbsp; ENDIF.</div>  <div>&nbsp; ELSE.<BR>*** RAISE ERROR AS NO RECORDS FOUND.<BR>&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; = lv_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; =
 lt_options<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fields&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = lt_fields<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; data&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = lt_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 lt_data INTO
 ls_data INDEX 1.<BR>&nbsp;&nbsp;&nbsp; IF lv_query_table = 'CSKS'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lv_apprv_cc = ls_data-wa+0(20).<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_approval_def-zapprover = lv_apprv_cc.<BR>&nbsp;&nbsp;&nbsp; ENDIF.<BR>&nbsp;&nbsp;&nbsp; IF lv_query_table = 'ANLX'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lv_apprv_asset = ls_data-wa+0(12).<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_approval_def-zapprover = lv_apprv_asset.<BR>&nbsp;&nbsp;&nbsp; ENDIF.<BR>&nbsp; ENDIF.</div>  <div>**** NOW PREPARE THE WORKAREA FOR UPDATING THE TABLE ZRP2P0BGST001..<BR>****&nbsp; ls_approval_def-mandt = sy-mandt.<BR>****&nbsp; ls_approval_def-zplant = value3.<BR>****&nbsp; ls_approval_def-zcost_ctr = lv_cost_ctr.<BR>****&nbsp; ls_approval_def-zorder_no = lv_order_no.<BR>****&nbsp; ls_approval_def-zasset_no = lv_asset_no.</div>  <div>&nbsp;</div>  <div>*** THIS WILL PICK MAX THREE RECORDS AS PER THE CORRECT<BR>*** REQUIREMENT.</div>  <div>&nbsp; DO approval_index TIMES.&nbsp; " begin
 of do.<BR>&nbsp;&nbsp;&nbsp; l_apprv_count = l_apprv_count + 1.<BR>&nbsp;&nbsp;&nbsp; ls_approval_def-zlevel&nbsp;&nbsp;&nbsp; = l_apprv_count .<BR>*** IF THE COUNT IS MORE THAN ONE THEN NEXT LEVEL OF APPROVER<BR>*** IS FOUND USING THE RFC CALL SWX_GET_MANAGER AND STORED.<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 lt_update_tab INTO ls_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>*** 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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_ac_container-element =
 'ORG_OBJECT'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_ac_container-tab_index = '000001'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_ac_container-elemlength = '006'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_ac_container-type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 'C'.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CONCATENATE 'US' ls_update_tab-zapprover<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INTO ls_ac_container-value .<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_ac_container-value&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = ls_update_tab-zapprover.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; APPEND ls_ac_container TO lt_ac_container.</div>  <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CALL FUNCTION 'SWX_GET_MANAGER' DESTINATION 'R10CLNT120'<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; =
 lt_actor_tab<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ac_container = lt_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 lt_actor_tab INTO ls_actor_tab INDEX 1.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_approval_def-zapprover = ls_actor_tab-objid.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ENDIF.<BR>*** CODE ENDS FOR FINDING THE HIGHER OERDR OF MANAGER.<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>*** BEFORE UPDATING POPULATE THE TABLE LT_APPROVAL_DEF***<BR>***
 LT_UPDATE_TAB IS READ BASED ON NEXT L_APPRV_COUNT AND<BR>*** UPDATING THE APPROVER AND VALUE.<BR>&nbsp;&nbsp;&nbsp; READ TABLE lt_update_tab INTO ls_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; LS_APPROVAL_DEF-ZVALUE = LS_UPDATE_TAB-ZVALUE.<BR>&nbsp;&nbsp;&nbsp; APPEND ls_approval_def TO lt_approval_def.<BR>&nbsp;&nbsp;&nbsp; ENDIF.<BR>*** 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>**** NOW MODIFY THE TABLE FOR UPDATING THE APPROVER.<BR>&nbsp;&nbsp;&nbsp; IF sy-subrc = 0.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MODIFY zrp2p0bgst001 FROM ls_approval_def.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IF SY-SUBRC = 0.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; COMMIT WORK.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ENDIF.<BR>&nbsp;&nbsp;&nbsp; ENDIF.<BR>**** 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'.</div>  <div>&nbsp;&nbsp;&nbsp; CLEAR : ls_approval_def-zlevel , ls_approval_def-zapprover.<BR>&nbsp; ENDDO. " END OF DO STATEMENT.</div>  <div>*********************~~~******************</div>  <div><BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IF sy-subrc NE 4.<BR>*** Fill approval table (who is responsible for which approval<BR>*** object in which approval
 step)<BR>&nbsp; SORT lt_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 lt_approval_def INTO ls_approval_def.</div>  <div>&nbsp;&nbsp;&nbsp; ls_approval_table-approval_index&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = ls_approval_def-zlevel.<BR>&nbsp;&nbsp;&nbsp; CONCATENATE c_agent_is_user ls_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 ls_approval_table-approval_agent.</div>  <div>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_approval_table-name = ls_approval_def-agent_string1.<BR>&nbsp;&nbsp;&nbsp; ls_approval_table-approval_description = approval_description.</div>  <div>&nbsp;&nbsp;&nbsp; ls_approval_table-approval_object_guid =
 lv_app_obj_guid.</div>  <div>&nbsp;&nbsp;&nbsp; ls_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 ls_approval_table TO approval_table.<BR>&nbsp; ENDLOOP.<BR>***&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IF ls_approval_def-approval_agent2 IS NOT INITIAL.<BR>****** Second approver for the same workitem exists<BR>***&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CONCATENATE c_agent_is_user ls_approval_def-approval_agent2<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; INTO ls_approval_table-approval_agent.<BR>***&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_approval_table-name =
 ls_approval_def-agent_string2.<BR>***&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; APPEND ls_approval_table TO approval_table.<BR>***&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ENDIF.<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ENDIF.<BR>******&nbsp;&nbsp;&nbsp; ENDIF.</div>  <div>*** Fill item table (Which items belongs to which approval object)<BR>&nbsp; ls_item_approval_table-approval_object_guid = lv_app_obj_guid.<BR>&nbsp; ls_item_approval_table-approval_item_guid&nbsp;&nbsp; = item_guid.<BR>&nbsp; APPEND ls_item_approval_table TO item_approval_table.</div>  <div>&nbsp;</div>  <div>ENDFUNCTION.</div>  <div>&nbsp;</div>  <div>Please analyse the code and provide me solution. Thanks in advance</div>  <div>Thanks and Regards</div>  <div>Arghadip</div>  <div>&nbsp;</div>  <div>&nbsp;</div><p>&#32;

<hr size=1>TV dinner still cooling?<br><a href="http://us.rd.yahoo.com/evt=49979/*http://tv.yahoo.com/">Check out "Tonight's Picks"</a> on Yahoo! TV.