<div>Arghadip,</div>
<div>&nbsp;</div>
<div>Why don&#39;t you put a break point in your BAdi and see whether approval table is getting filled.To debugg do following.</div>
<div>1. put a break point in your BAdi.</div>
<div>2. Create a shopping cart. Don&#39;t &#39;order&#39; it but &#39;held&#39;.</div>
<div>3. go to tcodee : BBP_PD</div>
<div>&nbsp;&nbsp;&nbsp; enter Object Type as BUS2121 and Object ID your SC #.</div>
<div>4. execute. It should stop in your break point.<br><br>-Nash</div>
<div><span class="gmail_quote">On 4/9/07, <b class="gmail_sendername">arghadip kar</b> &lt;<a href="mailto:arghadipkar@yahoo.com">arghadipkar@yahoo.com</a>&gt; wrote:</span>
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">
<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 &#39;0&#39;,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_value_per TYPE bbp_value.<br>&nbsp; DATA : l_temp_value TYPE bbp_value VALUE &#39;0&#39;,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l_temp_level TYPE SWH_NUMC10 VALUE &#39;0&#39;.
</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 &#39;BUS2201&#39;,<br>&nbsp;&nbsp; c_shop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE crmt_subobject_category_db VALUE &#39;BUS2121&#39;,<br>&nbsp;&nbsp; c_contract&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE crmt_subobject_category_db VALUE &#39;BUS2000113&#39;.
<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 &#39;COST_CTR&#39;,<br>&nbsp;&nbsp;&nbsp; c_prod_categ&nbsp;&nbsp; TYPE bbp_wfl_app_criterion&nbsp; VALUE &#39;PROD_CAT&#39;.
</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 &#39;BBP_PD_SC_GETDETAIL&#39;<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. &quot; 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 &#39;US&#39; + user<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_approver-approval_agent = &#39;USADMNIN1&#39;.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_approver-name = &#39;Peter Admin&#39;.<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 = &#39;COST_CTR&#39;.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lv_acc_desc&nbsp; = &#39;Cost center approval&#39;.
<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 = &#39;ORDER_NO&#39;.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lv_acc_desc&nbsp; = &#39;Internal Order approval&#39;.
<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 = &#39;ASSET_NO&#39;.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lv_acc_desc&nbsp; = &#39;Asset Number approval&#39;.
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lv_comp_code = &#39;COMPANY_CODE&#39;.<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 = &#39;PLANT&#39;.<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 &#39;ZBBP_WFL_DIN_ITEM_APPROVAL_GET&#39;<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 = &#39;X&#39;<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_c
 o_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>*&quot;----------------------------------------------------------------------<br>*&quot;*&quot;Local Interface:<br>*&quot;&nbsp; IMPORTING<br>*&quot;&nbsp;&nbsp;&nbsp;&nbsp; VALUE(SC_GUID) TYPE&nbsp; BBP_GUID
<br>*&quot;&nbsp;&nbsp;&nbsp;&nbsp; VALUE(ITEM_GUID) TYPE&nbsp; BBP_GUID<br>*&quot;&nbsp;&nbsp;&nbsp;&nbsp; VALUE(APPROVAL_DESCRIPTION) TYPE&nbsp; BBP_STEP_DESCRIPTION OPTIONAL<br>*&quot;&nbsp;&nbsp;&nbsp;&nbsp; VALUE(HIDE_ITEMS_NOT_RESPONSIBLE) TYPE&nbsp; BOOLEAN OPTIONAL<br>*&quot;&nbsp;&nbsp;&nbsp;&nbsp; VALUE(CRITERION1) TYPE&nbsp; BBP_WFL_APP_CRITERION
<br>*&quot;&nbsp;&nbsp;&nbsp;&nbsp; VALUE(CRITERION2) TYPE&nbsp; BBP_WFL_APP_CRITERION DEFAULT &#39;&#39;<br>*&quot;&nbsp;&nbsp;&nbsp;&nbsp; VALUE(CRITERION3) TYPE&nbsp; BBP_WFL_APP_CRITERION DEFAULT &#39;&#39;<br>*&quot;&nbsp;&nbsp;&nbsp;&nbsp; VALUE(VALUE1) TYPE&nbsp; BBP_WFL_APP_PROPERTY DEFAULT &#39;&#39;
<br>*&quot;&nbsp;&nbsp;&nbsp;&nbsp; VALUE(VALUE2) TYPE&nbsp; BBP_WFL_APP_PROPERTY DEFAULT &#39;&#39;<br>*&quot;&nbsp;&nbsp;&nbsp;&nbsp; VALUE(VALUE3) TYPE&nbsp; BBP_WFL_APP_PROPERTY DEFAULT &#39;&#39;<br>*&quot;&nbsp;&nbsp;&nbsp;&nbsp; VALUE(APPROVAL_INDEX) TYPE&nbsp; SWH_NUMC10<br>*&quot;&nbsp; CHANGING
<br>*&quot;&nbsp;&nbsp;&nbsp;&nbsp; REFERENCE(APPROVAL_TABLE) TYPE&nbsp; BBPT_WFL_APPROVAL_TABLE_BADI<br>*&quot;&nbsp;&nbsp;&nbsp;&nbsp; REFERENCE(ITEM_APPROVAL_TABLE) TYPE&nbsp; BBPT_WFL_ITEM_APPROVAL_BADI<br>*&quot;&nbsp;&nbsp;&nbsp;&nbsp; REFERENCE(ITEM_APPROVAL_OBJ) TYPE&nbsp; BBPT_WFL_ITEM_APPROVAL_OBJ
<br>*&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OPTIONAL<br>*&quot;----------------------------------------------------------------------</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 &#39;US&#39;.</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 &#39;BBP_WFL_DIN_APP_OBJ_GET&#39;<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; = &#39;&#39;<br>*&nbsp;&nbsp; CRITERION3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = &#39;&#39;
<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; = &#39;&#39;<br>*&nbsp;&nbsp; VALUE3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = &#39;&#39;<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| &quot;cost center&quot; | 1000&nbsp;&nbsp; |
<br>*** |approval object2| &quot;cost center&quot; | 1200&nbsp;&nbsp; |<br>*** |approval object3| &quot;prod categ &quot; | 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 = &#39;X&#39;.<br>******&nbsp; ENDIF.<br>******<br>******&nbsp; IF lv_is_new_approval_object = &#39;X&#39;.</div>
<div>*** Now read your own approval table based on your criteria&#39;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 &#39;&#39;,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lv_order_no TYPE&nbsp; bbp_wfl_app_property VALUE &#39;&#39;,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lv_asset_no TYPE&nbsp; bbp_wfl_app_property VALUE &#39;&#39;.</div>
<div>&nbsp; DATA : lv_query_table TYPE dd02l-tabname.<br>&nbsp; DATA : l_apprv_count TYPE char1 VALUE &#39;0&#39;.</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 = &#39;ORDER_NO&#39;.</div>
<div>&nbsp;&nbsp;&nbsp; lv_order_no = value1.</div>
<div>*&nbsp;&nbsp;&nbsp; ls_options-text = &#39;AUFNR = VALUE1&#39;.<br>&nbsp;&nbsp;&nbsp; CONCATENATE &#39;AUFNR&#39; &#39;=&#39; 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 = &#39;AUFNR&#39;.<br>&nbsp;&nbsp;&nbsp; ls_fields-length&nbsp;&nbsp;&nbsp; = &#39;000012&#39;.<br>&nbsp;&nbsp;&nbsp; ls_fields-offset&nbsp;&nbsp;&nbsp; = &#39;000000&#39;.<br>&nbsp;&nbsp;&nbsp; ls_fields-type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = &#39;C&#39;.<br>&nbsp;&nbsp;&nbsp; APPEND ls_fields TO lt_fields.
</div>
<div>&nbsp;&nbsp;&nbsp; ls_fields-fieldname = &#39;KOSTV&#39;.<br>&nbsp;&nbsp;&nbsp; ls_fields-length&nbsp;&nbsp;&nbsp; = &#39;000010&#39;.<br>&nbsp;&nbsp;&nbsp; ls_fields-offset&nbsp;&nbsp;&nbsp; = &#39;000000&#39;.<br>&nbsp;&nbsp;&nbsp; ls_fields-type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = &#39;C&#39;.<br>&nbsp;&nbsp;&nbsp; APPEND ls_fields TO lt_fields.
</div>
<div>&nbsp;&nbsp;&nbsp; CALL FUNCTION &#39;RFC_READ_TABLE&#39; DESTINATION &#39;E10CLNT121&#39;<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; = &#39;COAS&#39;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; delimiter&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = &#39;|&#39;<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 &#39;COST_CTR&#39; OR &#39;ORDER_NO&#39;.</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IF criterion1 = &#39;COST_CTR&#39;.<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 = &#39;KOSTL = VALUE1&#39;.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CONCATENATE &#39;KOSTL&#39; &#39;=&#39; 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 = &#39;VERAK&#39;.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_fields-length&nbsp;&nbsp;&nbsp; = &#39;000020&#39;.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_fields-offset&nbsp;&nbsp;&nbsp; = &#39;000000&#39;.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_fields-type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = &#39;C&#39;.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; APPEND ls_fields TO lt_fields.
</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_fields-fieldname = &#39;KOSTL&#39;.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_fields-length&nbsp;&nbsp;&nbsp; = &#39;000010&#39;.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_fields-offset&nbsp;&nbsp;&nbsp; = &#39;000000&#39;.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_fields-type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = &#39;C&#39;.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; APPEND ls_fields TO lt_fields.
</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lv_query_table = &#39;CSKS&#39;.</div>
<div><br>&nbsp;&nbsp;&nbsp; WHEN &#39;ASSET_NO&#39;&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 = &#39;ANLN1 = VALUE1 AND BUKRS = VALUE2&#39;.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CONCATENATE &#39;ANLN1&#39; &#39;=&#39; VALUE1 &#39;AND&#39; &#39;BUKRS&#39; &#39;=&#39; 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 = &#39;XV0NM&#39;.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_fields-length&nbsp;&nbsp;&nbsp; = &#39;000012&#39;.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_fields-offset&nbsp;&nbsp;&nbsp; = &#39;000000&#39;.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_fields-type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = &#39;C&#39;.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; APPEND ls_fields TO lt_fields.
</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_fields-fieldname = &#39;ANLN1&#39;.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_fields-length&nbsp;&nbsp;&nbsp; = &#39;000012&#39;.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_fields-offset&nbsp;&nbsp;&nbsp; = &#39;000000&#39;.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_fields-type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = &#39;C&#39;.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; APPEND ls_fields TO lt_fields.
</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_fields-fieldname = &#39;BUKRS&#39;.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_fields-length&nbsp;&nbsp;&nbsp; = &#39;000004&#39;.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_fields-offset&nbsp;&nbsp;&nbsp; = &#39;000000&#39;.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_fields-type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = &#39;C&#39;.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; APPEND ls_fields TO lt_fields.
</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lv_query_table = &#39;ANLX&#39;.</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 &#39;RFC_READ_TABLE&#39; DESTINATION &#39;E10CLNT121&#39;<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; = &#39;|&#39;<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 = &#39;CSKS&#39;.<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 = &#39;ANLX&#39;.<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; &quot; 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 = &#39;ORG_OBJECT&#39;.
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_ac_container-tab_index = &#39;000001&#39;.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_ac_container-elemlength = &#39;006&#39;.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_ac_container-type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = &#39;C&#39;.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CONCATENATE &#39;US&#39; 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 &#39;SWX_GET_MANAGER&#39; DESTINATION &#39;R10CLNT120&#39;<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 &#39;ENQUEUE_E_TABLE&#39;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EXPORTING<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tabname&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = &#39;ZRP2P0BGST001&#39;
<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 &#39;DEQUEUE_E_TABLE&#39;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EXPORTING<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tabname = &#39;ZRP2P0BGST001&#39;.
</div>
<div>&nbsp;&nbsp;&nbsp; CLEAR : ls_approval_def-zlevel , ls_approval_def-zapprover.<br>&nbsp; ENDDO. &quot; 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><span class="sg">
<div>Arghadip</div></span><span class="ad">
<div>&nbsp;</div>
<div>&nbsp;</div>
<p>
<hr size="1">
TV dinner still cooling?<br><a onclick="return top.js.OpenExtLink(window,event,this)" href="http://us.rd.yahoo.com/evt=49979/*http://tv.yahoo.com/" target="_blank">Check out &quot;Tonight&#39;s Picks&quot;</a> on Yahoo! TV. 
<p></p></p></span><br>_______________________________________________<br>SAP-WUG mailing list<br><a onclick="return top.js.OpenExtLink(window,event,this)" href="mailto:SAP-WUG@mit.edu">SAP-WUG@mit.edu</a><br><a onclick="return top.js.OpenExtLink(window,event,this)" href="http://mailman.mit.edu/mailman/listinfo/sap-wug" target="_blank">
http://mailman.mit.edu/mailman/listinfo/sap-wug</a><br><br></blockquote></div><br>