WS14500015 Not working properly
Nash John
emailtonash at gmail.com
Mon Apr 9 10:12:05 EDT 2007
Arghadip,
Why don't you put a break point in your BAdi and see whether approval table
is getting filled.To debugg do following.
1. put a break point in your BAdi.
2. Create a shopping cart. Don't 'order' it but 'held'.
3. go to tcodee : BBP_PD
enter Object Type as BUS2121 and Object ID your SC #.
4. execute. It should stop in your break point.
-Nash
On 4/9/07, arghadip kar <arghadipkar at yahoo.com> wrote:
>
> Hi All
>
> I am having problem to execute Workflow Template WS14500015.TheWorkflow 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:
>
> Implementation Name
> ZR0BGS_EBP_SC
> interface : IF_EX_BBP_WFL_APPROV_BADI~GET_REMAING_APPROVERS
> METHOD if_ex_bbp_wfl_approv_badi~get_remaing_approvers .
> * This a default implementation that gives idea about of how line item
> * approval should work
> *****begin of code : Dharmendra ***********
> TYPES : BEGIN OF ty_account.
> INCLUDE TYPE bbp_pds_acc.
> TYPES: app_crit_name TYPE bbp_wfl_app_criterion,
> app_crit_value TYPE char32.
> TYPES: END OF ty_account.
> TYPES :BEGIN OF ty_item_copy,
> app_crit_value1 TYPE bbp_wfl_app_property,
> END OF ty_item_copy.
> TYPES :
> ty_item_info TYPE STANDARD TABLE OF zrp2p0bgst001,
> ty_account_copy TYPE STANDARD TABLE OF ty_account.
>
> DATA : lt_item_info TYPE ty_item_info,
> lt_account_copy TYPE ty_account_copy,
> ls_item_info TYPE zrp2p0bgst001.
> DATA :l_tabix TYPE sytabix,
> l_num_apprv TYPE SWH_NUMC10 VALUE '0',
> l_value_per TYPE bbp_value.
> DATA : l_temp_value TYPE bbp_value VALUE '0',
> l_temp_level TYPE SWH_NUMC10 VALUE '0'.
>
> FIELD-SYMBOLS :
> <l_fs_account> TYPE ty_account.
>
> *****end of code***************************
>
> DATA:
> ls_header TYPE bbp_pds_sc_header_d,
> * tables for different approval criteria
> lv_call_crit1 TYPE bbp_wfl_app_criterion,
> lv_call_value1 TYPE bbp_wfl_app_property,
> lv_co_code TYPE bbp_wfl_app_property,
> lv_plant_value TYPE bbp_wfl_app_property,
> * local help variables
> lv_guid TYPE crmt_object_guid,
> * item fields and structures
> ls_item TYPE bbp_pds_sc_item_d,
> ****dk****
> lt_item_copy TYPE TABLE OF bbp_pds_sc_item_d,
> ls_item_copy TYPE bbp_pds_sc_item_d,
> lv_account_type TYPE bbp_wfl_app_criterion ,
> lv_comp_code TYPE bbp_wfl_app_criterion ,
> lv_plant TYPE bbp_wfl_app_criterion ,
> lv_acc_desc TYPE bbp_step_description ,
> ****dk****
> lt_item TYPE TABLE OF bbp_pds_sc_item_d,
> * accounting structures
> ls_account TYPE bbp_pds_acc,
> lt_account TYPE TABLE OF bbp_pds_acc,
> ls_account_copy TYPE ty_account.
> DATA: ls_approver TYPE bbp_wfl_approval_table_badi.
>
> * Business objects (local)
> CONSTANTS:
> c_po TYPE crmt_subobject_category_db VALUE 'BUS2201',
> c_shop TYPE crmt_subobject_category_db VALUE 'BUS2121',
> c_contract TYPE crmt_subobject_category_db VALUE 'BUS2000113'.
> .
> * Approval Criteria and properties used (local)
> CONSTANTS:
> c_cost_centre TYPE bbp_wfl_app_criterion VALUE 'COST_CTR',
> c_prod_categ TYPE bbp_wfl_app_criterion VALUE 'PROD_CAT'.
>
> CASE object_type.
> WHEN c_shop.
> * ----------- shopping cart ---------------------------------- *
> *** get the details of the shopping cart
> CALL FUNCTION 'BBP_PD_SC_GETDETAIL'
> EXPORTING
> i_object_id = object_id
> IMPORTING
> e_header = ls_header
> TABLES
> e_item = lt_item
> e_account = lt_account
> .
> ****dk****
> lt_account_copy[] = lt_account[].
> IF NOT lt_item IS INITIAL.
> lt_item_copy[] = lt_item[].
> SORT lt_item_copy BY be_plant.
> DELETE ADJACENT DUPLICATES FROM lt_item_copy
> COMPARING be_plant.
> SELECT mandt
> zplant
> zcost_ctr
> zorder_no
> zasset_no
> zlevel
> zvalue
> zapprover
> FROM zrp2p0bgst001
> INTO TABLE lt_item_info
> FOR ALL ENTRIES IN lt_item
> WHERE
> zplant = lt_item-be_plant.
> SORT lt_item_info BY zplant zcost_ctr
> zorder_no zasset_no zlevel zvalue.
> ENDIF.
> ****dk~~****
> SORT lt_item BY guid.
> SORT lt_account BY p_guid.
> LOOP AT lt_item INTO ls_item WHERE del_ind IS INITIAL.
> READ TABLE lt_account INTO ls_account
> WITH KEY p_guid = ls_item-guid.
> IF sy-subrc = 0.
> l_tabix = sy-tabix.
> LOOP AT lt_account INTO ls_account FROM l_tabix.
> IF ls_account-p_guid <> ls_item-guid.
> EXIT.
> ELSE.
> ********logic**dk*****
> ** CALCULATING THE VALUE PER COST CENTER /INTERNAL ORDER OR ASSET.
> l_value_per = ls_account-distr_perc * ls_item-value / 100.
> READ TABLE lt_item_info INTO ls_item_info WITH KEY
> zplant = ls_item-be_plant
> zcost_ctr = ls_account-cost_ctr
> zorder_no = ls_account-order_no
> zasset_no = ls_account-asset_no.
> ** AS THE TABLE ZRP2P0BGST001, ONLY ONE OUT OF COST CENTER
> **,INTERNAL ORDER AND ASSET NUMBER
> ** WILL BE FILLED AND REST WILL BE EMPTY. ..
> ** CORRSOPONDING TO COMPANY CODE , SO ABOVE WILL
> ** FETCH FIRST RECORD.
> ** FIRST RECORD WITH THE REQUIRED VALUE IS READ.
> l_temp_value = ls_item_info-zvalue.
> l_temp_level = ls_item_info-zlevel.
> IF l_value_per < l_temp_value.
> l_num_apprv = -1. " NO APPROVER REQUIRED.
> ELSE.
> LOOP AT lt_item_info INTO ls_item_info
> WHERE
> zplant = ls_item-be_plant AND
> zcost_ctr = ls_account-cost_ctr AND
> zorder_no = ls_account-order_no AND
> zasset_no = ls_account-asset_no .
> IF ls_item_info-zvalue GE l_value_per
> AND l_value_per GT l_temp_value .
> l_num_apprv = l_temp_level.
> EXIT.
> ELSE.
> l_temp_value = ls_item_info-zvalue.
> l_temp_level = ls_item_info-zlevel.
> ENDIF.
> ENDLOOP.
> ENDIF.
> IF l_num_apprv IS INITIAL.
> l_num_apprv = l_temp_level.
> ENDIF.
> *** IF L_NUM_APPRV IS -1 THEN CALL BELOW.
> IF l_num_apprv = -1.
> IF approval_table[] IS INITIAL.
> * if no approver found because send sc to default administrator
> ls_approver-approval_index = actual_approval_index.
> *** the agent is 'US' + user
> ls_approver-approval_agent = 'USADMNIN1'.
> ls_approver-name = 'Peter Admin'.
> APPEND ls_approver TO approval_administrators.
> ENDIF.
> ELSE.
> ** NOW THE NUMBER OF APPROVER IS KNOWN SO THE APPROVER IS
> ** FOUND USING THE RFC AND THE CUSTOM
> ** TABLE ZRP2P0BGST001 IS UPDATED WITH LATEST APPROVER.
> *** Found out to which cost center/IO/AN this item belongs
> READ TABLE lt_account INTO ls_account
> WITH KEY p_guid = ls_item-guid.
> IF sy-subrc = 0.
> IF NOT ls_account-cost_ctr IS INITIAL.
> lv_call_value1 = ls_account-cost_ctr.
> lv_account_type = 'COST_CTR'.
> lv_acc_desc = 'Cost center approval'.
> ENDIF.
> IF NOT ls_account-order_no IS INITIAL.
> lv_call_value1 = ls_account-order_no.
> lv_account_type = 'ORDER_NO'.
> lv_acc_desc = 'Internal Order approval'.
> ENDIF.
> IF NOT ls_account-asset_no IS INITIAL.
> lv_call_value1 = ls_account-asset_no.
> lv_account_type = 'ASSET_NO'.
> lv_acc_desc = 'Asset Number approval'.
> lv_comp_code = 'COMPANY_CODE'.
> lv_co_code = ls_item-be_co_code.
> ENDIF.
> ENDIF.
> *** above to Found out to which cost center/IO/AN this item belongs
> ***** DEFINING THE PLANT VALUE IN THE LV_PLANT_VALUE.
> lv_plant = 'PLANT'.
> lv_plant_value = ls_item-be_plant.
> CALL FUNCTION 'ZBBP_WFL_DIN_ITEM_APPROVAL_GET'
> EXPORTING
> sc_guid = ls_header-guid
> item_guid = ls_item-guid
> approval_description = lv_acc_desc
> hide_items_not_responsible = 'X'
> * each cost center approver should see only items he is responsible
> criterion1 = lv_account_type
> criterion2 = lv_comp_code
> criterion3 = lv_plant
> value1 = lv_call_value1
> value2 = lv_co_code
> value3 = lv_plant_value
> approval_index = l_num_apprv
> CHANGING
> approval_table = approval_table
> item_approval_table = item_approval_table
> item_approval_obj = item_approval_obj.
> ENDIF.
> *******logic***~~~*****
> ENDIF.
> ENDLOOP.
> ENDIF.
> ENDLOOP.
> ENDCASE.
> ENDMETHOD.
>
>
> function modue
>
> FUNCTION zbbp_wfl_din_item_approval_get.
> *"----------------------------------------------------------------------
> *"*"Local Interface:
> *" IMPORTING
> *" VALUE(SC_GUID) TYPE BBP_GUID
> *" VALUE(ITEM_GUID) TYPE BBP_GUID
> *" VALUE(APPROVAL_DESCRIPTION) TYPE BBP_STEP_DESCRIPTION OPTIONAL
> *" VALUE(HIDE_ITEMS_NOT_RESPONSIBLE) TYPE BOOLEAN OPTIONAL
> *" VALUE(CRITERION1) TYPE BBP_WFL_APP_CRITERION
> *" VALUE(CRITERION2) TYPE BBP_WFL_APP_CRITERION DEFAULT ''
> *" VALUE(CRITERION3) TYPE BBP_WFL_APP_CRITERION DEFAULT ''
> *" VALUE(VALUE1) TYPE BBP_WFL_APP_PROPERTY DEFAULT ''
> *" VALUE(VALUE2) TYPE BBP_WFL_APP_PROPERTY DEFAULT ''
> *" VALUE(VALUE3) TYPE BBP_WFL_APP_PROPERTY DEFAULT ''
> *" VALUE(APPROVAL_INDEX) TYPE SWH_NUMC10
> *" CHANGING
> *" REFERENCE(APPROVAL_TABLE) TYPE BBPT_WFL_APPROVAL_TABLE_BADI
> *" REFERENCE(ITEM_APPROVAL_TABLE) TYPE BBPT_WFL_ITEM_APPROVAL_BADI
> *" REFERENCE(ITEM_APPROVAL_OBJ) TYPE BBPT_WFL_ITEM_APPROVAL_OBJ
> *" OPTIONAL
> *"----------------------------------------------------------------------
>
> ***************************************************************
> *** This is only an example function you could use as an example
> *** for implementing your own logic for approval determination!!
> ***!!! It is not designed to be used in productive systems!!!
> ****************************************************************
> DATA:
> ls_approval_table TYPE bbp_wfl_approval_table_badi,
> ls_item_approval_table TYPE bbps_wfl_item_approval,
> ls_approval_def TYPE zrp2p0bgst001.
> DATA:
> lv_app_obj_guid TYPE bbp_guid_32,
> lv_is_new_approval_object TYPE boolean.
> CONSTANTS:
> c_agent_is_user TYPE otype VALUE 'US'.
> *** First find the right approval object the item belongs to.
> *** All items of an approval object are approved togheter in
> *** this approval step, and therefore only one workitem is
> *** created for this items. IF possible use this standard function
> *** BBP_WFL_DIN_APP_OBJ_GET for creating the approval object.
> CALL FUNCTION 'BBP_WFL_DIN_APP_OBJ_GET'
> EXPORTING
> sc_guid = sc_guid
> criterion1 = criterion1
> * CRITERION2 = ''
> * CRITERION3 = ''
> value1 = value1
> * VALUE2 = ''
> * VALUE3 = ''
> IMPORTING
> *** If 2 items of the same shopping cart have the same
> *** values for the criterias, this function returns the
> *** same (!!!) approval object guid
> approval_obj_guid = lv_app_obj_guid
> TABLES
> *** This table saves the criterias for which the approval object
> *** was created. For example:
> *** |approval object1| "cost center" | 1000 |
> *** |approval object2| "cost center" | 1200 |
> *** |approval object3| "prod categ " | office |
> item_app_obj = item_approval_obj
> .
> *** Check if this approval object already exists in the approval
> *** table
> ****** READ TABLE approval_table INTO ls_approval_table
> ****** WITH KEY approval_object_guid = lv_app_obj_guid
> ****** approval_index = approval_index.
> ****** IF sy-subrc EQ 4.
> ****** lv_is_new_approval_object = 'X'.
> ****** ENDIF.
> ******
> ****** IF lv_is_new_approval_object = 'X'.
> *** Now read your own approval table based on your criteria's
> *********************dk******************
> TYPES: ty_option TYPE STANDARD TABLE OF rfc_db_opt,
> ty_fields TYPE STANDARD TABLE OF rfc_db_fld,
> ty_data TYPE STANDARD TABLE OF tab512.
> DATA : lt_update_tab TYPE STANDARD TABLE OF zrp2p0bgst001,
> lt_approval_def TYPE STANDARD TABLE OF zrp2p0bgst001,
> ls_update_tab TYPE zrp2p0bgst001.
> DATA : lt_actor_tab TYPE STANDARD TABLE OF swhactor,
> ls_actor_tab TYPE swhactor,
> lt_ac_container TYPE STANDARD TABLE OF swcont,
> ls_ac_container TYPE swcont.
>
> DATA : lt_options TYPE ty_option,
> lt_fields TYPE ty_fields,
> lt_data TYPE ty_data.
> DATA : ls_options TYPE rfc_db_opt,
> ls_fields TYPE rfc_db_fld,
> ls_data TYPE tab512.
> DATA : lv_apprv_asset TYPE usnam,
> lv_apprv_cc TYPE verak.
> DATA : lv_cost_ctr TYPE bbp_wfl_app_property VALUE '',
> lv_order_no TYPE bbp_wfl_app_property VALUE '',
> lv_asset_no TYPE bbp_wfl_app_property VALUE ''.
> DATA : lv_query_table TYPE dd02l-tabname.
> DATA : l_apprv_count TYPE char1 VALUE '0'.
> ***** if passed value is an internal order then ******
> ***** cost center is derived from the coas and then preson
> ***** responsible from the cskx table.
> IF criterion1 = 'ORDER_NO'.
> lv_order_no = value1.
> * ls_options-text = 'AUFNR = VALUE1'.
> CONCATENATE 'AUFNR' '=' VALUE1 INTO LS_OPTIONS-TEXT
> SEPARATED BY SPACE.
> APPEND ls_options TO lt_options.
> ls_fields-fieldname = 'AUFNR'.
> ls_fields-length = '000012'.
> ls_fields-offset = '000000'.
> ls_fields-type = 'C'.
> APPEND ls_fields TO lt_fields.
> ls_fields-fieldname = 'KOSTV'.
> ls_fields-length = '000010'.
> ls_fields-offset = '000000'.
> ls_fields-type = 'C'.
> APPEND ls_fields TO lt_fields.
> CALL FUNCTION 'RFC_READ_TABLE' DESTINATION 'E10CLNT121'
> EXPORTING
> query_table = 'COAS'
> delimiter = '|'
> TABLES
> OPTIONS = lt_options
> fields = lt_fields
> data = lt_data
> EXCEPTIONS
> table_not_available = 1
> table_without_data = 2
> option_not_valid = 3
> field_not_valid = 4
> not_authorized = 5
> data_buffer_exceeded = 6
> OTHERS = 7.
> IF sy-subrc = 0.
> **AS LT_DATA TABLE CONTAINS ONLY ONE RECORD SO NO SORTING REQUIRED.
> READ TABLE lt_data INTO ls_data INDEX 1.
> value1 = ls_data-wa+12(10).
> ENDIF.
> *** AT THE END OF THIS IF INTERNAL ORDER IS PASSED ITS RESPONSIBLE
> *** COST OBTAINED AND PLACED IN VALUE1 FIELD.
> CLEAR : ls_data , ls_options , ls_fields ,
> lt_data , lt_options , lt_fields .
> ENDIF.
> ****************************************
> *** RFC TO READ TABLE FOR FINDING THE PERSON RESPONSIBLE FOR THE
> *** COST CENTER / ASSET IE APPROVER.
> CASE criterion1 .
> WHEN 'COST_CTR' OR 'ORDER_NO'.
> IF criterion1 = 'COST_CTR'.
> lv_cost_ctr = value1.
> ENDIF.
> * ls_options-text = 'KOSTL = VALUE1'.
> CONCATENATE 'KOSTL' '=' VALUE1 INTO LS_OPTIONS-TEXT
> SEPARATED BY SPACE.
> APPEND ls_options TO lt_options.
> ls_fields-fieldname = 'VERAK'.
> ls_fields-length = '000020'.
> ls_fields-offset = '000000'.
> ls_fields-type = 'C'.
> APPEND ls_fields TO lt_fields.
> ls_fields-fieldname = 'KOSTL'.
> ls_fields-length = '000010'.
> ls_fields-offset = '000000'.
> ls_fields-type = 'C'.
> APPEND ls_fields TO lt_fields.
> lv_query_table = 'CSKS'.
>
> WHEN 'ASSET_NO' .
> lv_asset_no = value1.
> * ls_options-text = 'ANLN1 = VALUE1 AND BUKRS = VALUE2'.
> CONCATENATE 'ANLN1' '=' VALUE1 'AND' 'BUKRS' '=' VALUE2 INTO
> LS_OPTIONS-TEXT SEPARATED BY SPACE.
> APPEND ls_options TO lt_options.
> ls_fields-fieldname = 'XV0NM'.
> ls_fields-length = '000012'.
> ls_fields-offset = '000000'.
> ls_fields-type = 'C'.
> APPEND ls_fields TO lt_fields.
> ls_fields-fieldname = 'ANLN1'.
> ls_fields-length = '000012'.
> ls_fields-offset = '000000'.
> ls_fields-type = 'C'.
> APPEND ls_fields TO lt_fields.
> ls_fields-fieldname = 'BUKRS'.
> ls_fields-length = '000004'.
> ls_fields-offset = '000000'.
> ls_fields-type = 'C'.
> APPEND ls_fields TO lt_fields.
> lv_query_table = 'ANLX'.
> ENDCASE.
> *** SELECT ALL THE RECORD FRIOM ZRP2P0BGST001...
> *** BASED ON ABOVE PLANT AND COST_CTR/IO/ASSET.
> SELECT * FROM zrp2p0bgst001
> INTO TABLE lt_update_tab
> WHERE
> zplant = value3 AND
> zcost_ctr = lv_cost_ctr AND
> zorder_no = lv_order_no AND
> zasset_no = lv_asset_no.
> IF sy-subrc = 0.
> SORT lt_update_tab BY zplant zcost_ctr
> zorder_no zasset_no zlevel zvalue.
> **** NOW PREPARE THE WORKAREA FOR UPDATING THE TABLE ZRP2P0BGST001..
> READ TABLE LT_UPDATE_TAB INTO LS_APPROVAL_DEF WITH
> KEY zplant = value3
> zcost_ctr = lv_cost_ctr
> zorder_no = lv_order_no
> zasset_no = lv_asset_no
> ZLEVEL = 1 .
> IF SY-SUBRC = 0.
> * LS_APPROVAL_DEF-ZVALUE =
> ENDIF.
> ELSE.
> *** RAISE ERROR AS NO RECORDS FOUND.
> ENDIF.
> CALL FUNCTION 'RFC_READ_TABLE' DESTINATION 'E10CLNT121'
> EXPORTING
> query_table = lv_query_table
> delimiter = '|'
> TABLES
> OPTIONS = lt_options
> fields = lt_fields
> data = lt_data
> EXCEPTIONS
> table_not_available = 1
> table_without_data = 2
> option_not_valid = 3
> field_not_valid = 4
> not_authorized = 5
> data_buffer_exceeded = 6
> OTHERS = 7.
> IF sy-subrc = 0.
> READ TABLE lt_data INTO ls_data INDEX 1.
> IF lv_query_table = 'CSKS'.
> lv_apprv_cc = ls_data-wa+0(20).
> ls_approval_def-zapprover = lv_apprv_cc.
> ENDIF.
> IF lv_query_table = 'ANLX'.
> lv_apprv_asset = ls_data-wa+0(12).
> ls_approval_def-zapprover = lv_apprv_asset.
> ENDIF.
> ENDIF.
> **** NOW PREPARE THE WORKAREA FOR UPDATING THE TABLE ZRP2P0BGST001..
> **** ls_approval_def-mandt = sy-mandt.
> **** ls_approval_def-zplant = value3.
> **** ls_approval_def-zcost_ctr = lv_cost_ctr.
> **** ls_approval_def-zorder_no = lv_order_no.
> **** ls_approval_def-zasset_no = lv_asset_no.
>
> *** THIS WILL PICK MAX THREE RECORDS AS PER THE CORRECT
> *** REQUIREMENT.
> DO approval_index TIMES. " begin of do.
> l_apprv_count = l_apprv_count + 1.
> ls_approval_def-zlevel = l_apprv_count .
> *** IF THE COUNT IS MORE THAN ONE THEN NEXT LEVEL OF APPROVER
> *** IS FOUND USING THE RFC CALL SWX_GET_MANAGER AND STORED.
> IF l_apprv_count > 1.
> l_apprv_count = l_apprv_count - 1.
> READ TABLE lt_update_tab INTO ls_update_tab
> WITH KEY zlevel = l_apprv_count .
> IF sy-subrc = 0 .
> *** NOW FOR FINDING THE SECOND LEVEL OF APPROVER
> *** 1ST LEVEL OF APPROVER IS FOUND USING ABOVE READ.
> *** THE FIRST LEVEL OF APPROVER IS USED TO FIND THE SECOND
> *** LEVEL OF APPROVER USING THE SWX_GET_MANAGER.
> *** PREPARE THE TABLES FOR SWX_GET_MANAGER
> ls_ac_container-element = 'ORG_OBJECT'.
> ls_ac_container-tab_index = '000001'.
> ls_ac_container-elemlength = '006'.
> ls_ac_container-type = 'C'.
> CONCATENATE 'US' ls_update_tab-zapprover
> INTO ls_ac_container-value .
> * ls_ac_container-value = ls_update_tab-zapprover.
> APPEND ls_ac_container TO lt_ac_container.
> CALL FUNCTION 'SWX_GET_MANAGER' DESTINATION 'R10CLNT120'
> TABLES
> actor_tab = lt_actor_tab
> ac_container = lt_ac_container
> EXCEPTIONS
> nobody_found = 1
> OTHERS = 2.
> IF sy-subrc = 0.
> READ TABLE lt_actor_tab INTO ls_actor_tab INDEX 1.
> ls_approval_def-zapprover = ls_actor_tab-objid.
> ENDIF.
> *** CODE ENDS FOR FINDING THE HIGHER OERDR OF MANAGER.
> ENDIF.
> l_apprv_count = l_apprv_count + 1.
> ENDIF.
> *** BEFORE UPDATING POPULATE THE TABLE LT_APPROVAL_DEF***
> *** LT_UPDATE_TAB IS READ BASED ON NEXT L_APPRV_COUNT AND
> *** UPDATING THE APPROVER AND VALUE.
> READ TABLE lt_update_tab INTO ls_update_tab
> WITH KEY zlevel = l_apprv_count .
> IF SY-SUBRC = 0.
> LS_APPROVAL_DEF-ZVALUE = LS_UPDATE_TAB-ZVALUE.
> APPEND ls_approval_def TO lt_approval_def.
> ENDIF.
> *** NOW ENQUEUE THE TABLE FOR MODIFICATION.*****
> CALL FUNCTION 'ENQUEUE_E_TABLE'
> EXPORTING
> tabname = 'ZRP2P0BGST001'
> EXCEPTIONS
> foreign_lock = 1
> system_failure = 2
> OTHERS = 3.
> **** NOW MODIFY THE TABLE FOR UPDATING THE APPROVER.
> IF sy-subrc = 0.
> MODIFY zrp2p0bgst001 FROM ls_approval_def.
> IF SY-SUBRC = 0.
> COMMIT WORK.
> ENDIF.
> ENDIF.
> **** NOW DEQUEUE THE TABLE AFTER THE UPDATION.
> CALL FUNCTION 'DEQUEUE_E_TABLE'
> EXPORTING
> tabname = 'ZRP2P0BGST001'.
> CLEAR : ls_approval_def-zlevel , ls_approval_def-zapprover.
> ENDDO. " END OF DO STATEMENT.
> *********************~~~******************
>
> * IF sy-subrc NE 4.
> *** Fill approval table (who is responsible for which approval
> *** object in which approval step)
> SORT lt_approval_def BY zplant zcost_ctr zorder_no zasset_no
> zlevel zvalue.
> LOOP AT lt_approval_def INTO ls_approval_def.
> ls_approval_table-approval_index = ls_approval_def-zlevel.
> CONCATENATE c_agent_is_user ls_approval_def-zapprover
> INTO ls_approval_table-approval_agent.
> * ls_approval_table-name = ls_approval_def-agent_string1.
> ls_approval_table-approval_description = approval_description.
> ls_approval_table-approval_object_guid = lv_app_obj_guid.
> ls_approval_table-hide_items_not_responsible =
> hide_items_not_responsible.
> APPEND ls_approval_table TO approval_table.
> ENDLOOP.
> *** IF ls_approval_def-approval_agent2 IS NOT INITIAL.
> ****** Second approver for the same workitem exists
> *** CONCATENATE c_agent_is_user ls_approval_def-approval_agent2
> *** INTO ls_approval_table-approval_agent.
> *** ls_approval_table-name = ls_approval_def-agent_string2.
> *** APPEND ls_approval_table TO approval_table.
> *** ENDIF.
> * ENDIF.
> ****** ENDIF.
> *** Fill item table (Which items belongs to which approval object)
> ls_item_approval_table-approval_object_guid = lv_app_obj_guid.
> ls_item_approval_table-approval_item_guid = item_guid.
> APPEND ls_item_approval_table TO item_approval_table.
>
> ENDFUNCTION.
>
> Please analyse the code and provide me solution. Thanks in advance
> Thanks and Regards
> Arghadip
>
>
>
> ------------------------------
> TV dinner still cooling?
> Check out "Tonight's Picks"<http://us.rd.yahoo.com/evt=49979/*http://tv.yahoo.com/>on Yahoo! TV.
>
>
> _______________________________________________
> SAP-WUG mailing list
> SAP-WUG at mit.edu
> http://mailman.mit.edu/mailman/listinfo/sap-wug
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.mit.edu/pipermail/sap-wug/attachments/20070409/45cd9a33/attachment.htm
More information about the SAP-WUG
mailing list