Workflow is not moving next level approver

Dear all,
We are in the upgrade from 4.6c to ECC 6.0. When I am executing the workflow it is going successfully to the first approver, depends up on the decision of the approver it should process any one of the four braches. But here my problem  it is not perocessing the approve branch after approval of request.
It is working fine in 4.6c.
Please help me.
Thanks and Regards,
Ravi

helpme please

Similar Messages

  • Workflow not move to next level approver...

    Hi Friends,
                           I have developed workflow for appraisal. Employee enter his appraisal ratings and submit  and then first,second,third level approvers enter their ratings one after another submit.
                            whenever one level approver submit,i have updated th status in our customized table and pass the status to workflow method through Set Parameter command. For example ,when employee enter his rating and once submit, i have update the status field in table with value 'Pending with First Approver' and pass the status 'pending with first approver' through Set Parameter command to workflow method. In workflow methods , I receive status value using Get Parameter command and based on tht value respective workflow item will moved to inbox of First level approver.
                      Its working fine. But  SOME TIMES status updated in table properly and workflow item keep retain in same level inbox even after submit successfully,instead of move to next level approer.
                      For example, once employee submit his appraisal rating,status 'pending with first level approver' updated in table properly. But workflow item still keep retain in employee inbox only and first level approver do not receive workflow item in his inbox.  I  tried to refresh that variable which i used in set parameter/get parameter command . but same proble continue.Could you please suggest me what will be reason for this issue?. Thank you.
    Regards,
    Hockteck..

    Hi Rick,
                           Thanks for your response. I am using Z table for reporting purpose. In Z table I update status like 'pending with employee','pending with first approver',etc. If the end users wants to know the status of apprisal for a particular employee,they can use this report and react according to the updated status.
                                               I have mentioned in this thread about  both this Z table update and pass status using set parameter id, because both these statment executed after employee or approvers submit. But Z table updated successfully and set parameter not passed successfully.
                         In my workflow I am using Loop step and this loop will continue to run  till the status become 'Completed'. when third level approver submit his appraisal details that time i pass the status 'Completed' to complete the workflow .For employee,first and second level approvers I pass the status like 'Pending with Employee','Pending with First','Pending with Second'.
                       Whenever I pass the status to workflow,using Function Module i find the next level approver based on the status. For example If the status is 'Pending with First' then in the function module I find the first level approver and pass his UserId as current agent name. Whenever this issue happen I debug and check the current agent id . But it shows only Employee ID.If the status 'Pending with First' passed to workflow properly then FM could have pass the First level approver ID. But since current agent id shows Employee Id, workflow keep exist in Employee inbox ,even after he submit successfully.
                         If 10 employees submit his apprisal ratings,for one or two employees this issue happen and for rest of the emplyess workflow completed successfully with all  approvers submissions. Any suggestions?.
    Regards,
    Hockteck.

  • Workflow: Auto forward for next level for decision with object (RFQ)

    Hi all,
    I have the same requirement as the one in this post but for RFQ approval instead of PO
    Workflow -Auto forward for next level for decision with object (PR)
    I have tried deadline monitoring, but I need to capture the level in which the RFQ is in order to escalate.
    Can someone let me know how to proceed further.
    Regards,
    nsp.

    Hi Aamir,
    As you said we have to use deadline monitoring here.
    For this case use 'Requested Start'. From your i came to know this workitem should be a dialog workitem, so the workflow will wait for the time what you have specified in the requested start and when it is reached it places the workitem in the corresponding recipient inbox.
    Regards
    Balaji E.

  • Next level approver in ESS leave request

    hi friends
    Am working in ESS leave request workflow. In my scenerio there are 4 level approver. I have function module SWX_GET_MANAGER  i have copied and customized to ZSWX_GET_MANAGER with my logic to get the next level approvers. If i entered the PERNR it return all the approver for that employee. How do the workflow know he is the 2nd level approver, he is the 3rd level approver. How can i achieve it. kindly help me...
    Regards
    vijay

    Hi Vijay,
    I think you will need to use a loop and a counter so you know the approval level. You can use this to get the manager who belongs to the level.
    Regards,
    Martin
    PS I hope you will show in the thread which solution you got so others will benefit. This forum is about sharing knowledge and one way is to give the solution in your thread, or value the appropriate answers.

  • Expanding text fields not moving next fields down the page

    I have a multi-page form with several comment boxes that I want to be expandable (if needed).  I've managed to get them to expand, but the fields following the field that is expanding dynamically are not bumping down the page.  I've gone through and read about different things to try and use (flowed, western, expand to fit, etc), but the fields following the expanding fields are not moving.
    I can send the form I am using to anyone who has a suggestion.  I am confused with the hierarchy and where stuff needs to go in order to work correctly.
    Thanks.

    Hi, it is highly recommended that you create subforms in your form. By creating parts in your form you should create subforms for each of those parts. For the textfield you are trying to make it expandable and flowable to the next page, you must make every of its parents flowed. Your main page is actually set to positioned, even if your subform containing the textfield is flowed, if each of its parents are set to flowed it should work, otherwise it will not flow to next page.
    If you set your page to flowed, it will reposition each of your fields because it is not in subforms. Make sure to create subforms for each parts, putting all fields in subforms. If you set your main page to flowed without creating subforms, all of your fields will be redesigned to be aligned left with the hierarchy order.
    Hope this help.

  • Approval Workflow does not update the Content Approval status if started automatically

    Hi,
    I’m using a simple Approval Workflow associated with
    Content Approval on site pages. It works fine when I set it to be started manually (by using
    Allow this workflow to be manually started by an authenticated user with Edit Item permissions
     option) and on the completion of the workflow the
    Content Approval status is updated accordingly. But when I set it to be started automatically (by using
    Start this workflow when a new item is created
     / Start this workflow when an item is changed
    options), it does not updates the Content Approval status. Note that I’ve set the
    Update the approval status after the workflow is completed (use this workflow to control content approval)
    option to true.
    Regards

    Hello,
    It is recommended to select "Start this workflow to approve publishing a major version of an item" when you want to use the workflow to manage content approval for
    a library.
    According to the Notes for “Enable Content Approval” option in
    this reference:
    If you are using this Approval workflow to manage content approval (moderation) for a library, and you selected the Start this workflow to approve publishing a major version
    of an item check box on the Add a Workflow page..
    If you did not select the Start this workflow to approve publishing a major version of an item check box on the Add a Workflow page because you do not want this workflow to
    be the default content approval workflow for a library, you can select the Update the approval status (use this workflow to control content approval) check box to make this workflow a secondary content approval workflow that specific users can
    start manually.
    That means having an approval workflow start automatically when a document is changed or created is not a good practice when you want to use the workflow to manage
    content approval for a library. You should either select "Start this workflow to approve publishing a major version of an item" or give users the option to start the workflow manually at the time they want to submit for an approval.
    Thanks & Regards.
    Lily Wu

  • Next level Approval....

    Hi ,
    <b>i am working on N-step Item level approval workflow.
    i am facing a problem.
    up to first level approval is working fine.
    when two approval come to picture , workflow doesn't work.
    my problem is , say for example. SC has two items, first item needs to be approval by 'A', second item needs to be approval by 'B' up to here my workflow is working fine.
    after here i got the problem, when 'A' approved the first item and 'B' won't approve the second item means , that first item should go to 'C' for value approval. here is the problem. when 'A' approved and 'B' won't approve , the work item won't go to 'C'. the moment 'A' Approved and 'B' rejected follow-on document gets create in Back-end system , instead get approve by 'C', the follow on document should create after 'C' approve.</b>
    please give me a soluction.
    thanks,
    Durai.

    Hi Durai,
    I worked on this Workflow and it is working fine.
    Basically, the whole workflow is driven by the approval objects, which you need to define within your BAdI.  The three tables you need to populate works like this:
    Approval_table:
    This table contains the list of approvers who will need to approve a given shopping cart.  Each approver needs to be linked to an approval object (approval object guid)
    Item_approval_table:
    This table links the item guid to the approval object guid.  It is possible to have more than one approval object for on line or more than on line for a given approval object. 
    Item_approval_object:
    This table should contain a definition of each unique approval object which needs to be approved in a given shopping cart and the relevant guid.
    This workflow works very different from any other workflow in SAP.  The shopping cart transaction will trigger and update the workflow containers directly when a shopping cart is ordered or changed. 
    The three main workflow containers Approverlist, ApprovalItemList and ItemAppObjTable more or less correspond to the three tables listed above. These containers are usefull to look at when you want to analyse a given workflow. 
    I suggest that you implement the logic for population of the three tables in a function module instead of directly in the BAdI.  This will make it easier to develop, analyse and debug if you have any issues.
    Hope this will help.
    Please reward few points, if this answer is helpful.
    Regards.
    Pras

  • Workflow issue : N step Item level approval for SC

    Hello Friends,
    We are working on SRM 4.0 , classic scenario , SP11.
    Here we are facing a typical issue in workflow. We are using Nstep approval for SC.
    In the standard task TS14508044, the work item text is "Approval of SC ".The shopping cart value is being populated by container element &amp;APPOBJ.OBJECTTOAPPROVE.TOTALVALUESTRING&amp;
    This same container element is used to populate the shopping cart value in the task description. However what we observe is that in the workflow log, the container element APPOBJ is initial.
    How is the total value of the shopping cart populated then?
    Also, the value of the shopping cart in the work item text and the work item description is in different currency format.
    The shoppng cart value in the work item text is in the format 12,34,567.89 whereas that in the description is in the format
    12.934.567,8
    Appreciate your inputs on this.

    Thanks Masa,
    For your valuable suggestion. Now after changing the WF-BATCH settings there is consistency in the currency format.
    Now the question is how we can change into the currency format of the user ?
    The user format is 1,234,567. 89 but still work item text and
    description is in 1.234.567, 89 format.
    Thank you

  • Project Online Workflow not moving forward after approval

    I'm building a custom workflow for a Project Online tenant using SD2013 but something is not working with approvals.
    In SD I create the workflow with very simple actions:
    1. Wait for submit
    2. Create approval task
    3. In stage transition, if task ended with "Approved", move to the next stage, if not, go to "Cancelled" step
    Everything works fine until the approval. I see the task, approve it but then nothing happens. The task appears as "Completed" and "Approved" but the workflow just stays there.
    I had this very same behavior on a couple of deployments in the past with Project Server 2010 in Spanish.
    The tenant created the Project Web App in Spanish as well. Could this be the cause? How can I correct it?
    Thanks in advance.
    Rene Alvarez

    I am also having the same issue.
    The task appears in the list, I approve it, then nothing happens. No error, no feedback, no history list log (I put in a log statement right after the approval task, it never runs), the workflow status page still remains as "Started".
    Any ideas?
    If online is as slow as processing approval actions overnight, then it is simply unusable.
    120811049008

  • Workflow is not moving to next incase of asynchronous task

    Hi Gurus,
    I have a requirement to use asynchronous method and tasks in my workflow. For completing the asynchronous tasks, I am calling SWE_EVENT_CREATE with an event to complete the task from Web Dynpro Application. However, Event Linkage has benn deactivated automatically and the task remains in InProcess status.
    Please provide your suggestions ASAP.
    Thanks in Advance
    Gopal.

    For completing the asynchronous tasks, I am calling SWE_EVENT_CREATE
    with an event to complete the task from Web Dynpro Application
    Make sure that after calling the above Funciton module you have defined a COMMIT WORK statement. But before this as you were saying that the event linkage got deactivated, so please make sure that the event linkage is active......

  • Workflow -Auto forward for next level for decision with object (PR)

    Dear All,
    I am working on PR release through workflow, with three level release codes. I need your help in setting:-
    Example:
    In case PR received through workflow at 1st level for release code Z1, and if he could not able to release it within 5 Min, PR/task should be automatically forwarded to next 2nd level for release code Z2.
    And in case 2nd level do not release within 10 Min, PR/task should be farwarded to 3rd level for decision
    etc etc
    It is some thing with lastet End, Request Start, Latest Start & Request End , but could not able to understand how to work with them in case of above situation.
    Any tips/link/document would be great for me?
    Regards
    Aamir

    Hi Aamir,
    As you said we have to use deadline monitoring here.
    For this case use 'Requested Start'. From your i came to know this workitem should be a dialog workitem, so the workflow will wait for the time what you have specified in the requested start and when it is reached it places the workitem in the corresponding recipient inbox.
    Regards
    Balaji E.

  • Determining second level approver for travel expense claim workflow

    Hi Experts...
    In Travel Expense claim workflow,we are using two level Approval.The employee has to enter his data for expense claim through ESS..Then expense claim is submitted and sent via workflow to the Travel department. Travel Dept verifies the expenses against the bill and approves the claim by selecting the next level approver and attaching the scanned copies of the bill.
    I made copy from the standard workflow WS20000040.
    How can i select the next level appover in first level approval step???
    Is there any FM or BAPI or BADI???
    Please help me ...
    Thanks in Advance
    Regards,
    Hemalatha.

    Hi Hemalatha,
    I have small tricky workaround to find out the second level of approver.The Standard Rule available can reused again by passing manager's Position.i.e
    After first level completed , store manager position in container variable and pass it to the same task rule so the task is sent to the manager's approver .
    Message me if needed more details.
    **Award Points if useful

  • WS14500015 is not working for Multilevel approval

    We are trying to Implement the Workflow Template Ws14500015. We have implemented the BADI BBP_WFL_APPROVE_BADI. The workflow works perfectly for 1st level approval. We have checked that the ApproverList Container element gets pouplated with 3 levels of approval when 1 st level approver has not approved it. But as soon as the first level approver approves it this container element is updated with one entry. Please review the code I am attaching. Any help will be highly appreciated.
    METHOD if_ex_bbp_wfl_approv_badi~get_remaing_approvers .
    Interface parameters:
    OBJECT_ID                  TYPE  CRMT_OBJECT_ID                "Import
    OBJECT_TYPE                TYPE  CRMT_SUBOBJECT_CATEGORY       "Import
    GUID                       TYPE  BBP_GUID_32                   "Import
    ACTUAL_APPROVAL_INDEX      TYPE  SWH_NUMC10                    "Import
    APPROVAL_HISTORY_TABLE     TYPE  BBP_WFL_APPROVAL_HISTORY_BADI "Import
    ITEM_APPROVAL_HISTORY_TABLE TYPE BBPT_WFL_ITEM_APPROVAL_BADI   "Import
    APPROVAL_TABLE             TYPE  BBPT_WFL_APPROVAL_TABLE_BADI  "Export
    ITEM_APPROVAL_TABLE        TYPE  BBPT_WFL_ITEM_APPROVAL_BADI   "Export
    NO_FURTHER_APPROVAL_NEEDED TYPE  BOOLEAN                       "Export
    ITEM_APPROVAL_OBJ          TYPE  BBPT_WFL_ITEM_APPROVAL_OBJ  "Changing
    This a default implementation that gives idea about of how line item
    approval should work as well to find the number of approval required
    and to find the approvers.
    Global data---------------------------------------------------------*
    TYPES---------------------------------------------------------------*
      TYPES : ty_item_info    TYPE STANDARD TABLE OF /fir/rmm0bgst001.
                  "to have the necessary values of custom table .
    DATA----------------------------------------------------------------*
      DATA : it_item_info TYPE ty_item_info,"to store the approval values.
             wa_item_info TYPE /fir/rmm0bgst001. " work area for item_info.
      DATA : v_value_per_cctr TYPE bbp_value, " contain value per account
                                              " type in line item of SC
             v_value_per      TYPE bbp_value. " value for v_value_per_cctr
                                              " in USD
      DATA : v_apprv_value    TYPE bbp_value. " amount of first level.
      DATA:  v_call_value1    TYPE bbp_wfl_app_property,"have cost_ctr,
                              "asset_no or order_no value.
             v_co_code        TYPE bbp_wfl_app_property," have company code
             v_plant_value    TYPE bbp_wfl_app_property," have plant value
             v_account_type   TYPE bbp_wfl_app_criterion ," Account type
                              " ie COST_CTR, ASSET_NO or ORDER_NO.
             v_comp_code      TYPE bbp_wfl_app_criterion ,"COMP_CODE
             v_plant          TYPE bbp_wfl_app_criterion ," PLANT
             v_acc_desc       TYPE bbp_step_description ." approval desc.
    WORKAREA------------------------------------------------------------*
      DATA:  wa_header         TYPE bbp_pds_sc_header_d, " header of line
                                                         " item
    tables and work area.
             it_item           TYPE TABLE OF bbp_pds_sc_item_d,
                                            " line item details
             wa_item           TYPE bbp_pds_sc_item_d,
                                            " have one line item detail.
    accounting structures
             it_account        TYPE TABLE OF bbp_pds_acc,
                                            " account details
             wa_account        TYPE bbp_pds_acc .
                                            " one account details.
      DATA: v_req TYPE bbp_wfl_app_criterion. " for creator.
    CONSTANTS-----------------------------------------------------------*
    Business objects
      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
      CONSTANTS:
        c_cost_centre  TYPE bbp_wfl_app_criterion  VALUE 'COST_CTR',
        c_order_no     TYPE bbp_wfl_app_criterion  VALUE 'ORDER_NO',
        c_asset_no     TYPE bbp_wfl_app_criterion  VALUE 'ASSET_NO',
        c_comp_code    TYPE bbp_wfl_app_criterion  VALUE 'COMP_CODE',
        c_plant        TYPE bbp_wfl_app_criterion  VALUE 'PLANT',
        c_cc_desc      TYPE bbp_step_description   VALUE
                                                 'Cost center approval',
        c_io_desc      TYPE bbp_step_description   VALUE
                                                 'Order type approval',
        c_as_desc      TYPE bbp_step_description   VALUE
                                                 'Asset Num approval',
        c_usd          TYPE char3 VALUE 'USD',
        c_m            TYPE char1 VALUE 'M',
        c_x            TYPE char1 VALUE 'X',
        c_apprv_times  TYPE char1 VALUE 3,
        c_1            TYPE char2 VALUE '1',
        c_as           TYPE BBP_ACC_CAT VALUE 'AS',
        c_or           TYPE BBP_ACC_CAT VALUE 'OR',
        c_cc           TYPE BBP_ACC_CAT VALUE 'CC',
        c_us           TYPE char2       VALUE 'US'.
    Case when the object type bus212...---------------------------------*
      CASE object_type.
        WHEN c_shop.
    -----------   shopping cart --------------------------------------- *
          IF NOT approval_table[] IS INITIAL.
            approval_history_table[] = approval_table[].
            item_approval_history_table[] = item_approval_table[].
            REFRESH  : approval_table, item_approval_table,
                    item_approval_obj   .
          ENDIF.
          REFRESH : it_item,it_account.
        Get the details of the shopping cart
          CALL FUNCTION 'BBP_PD_SC_GETDETAIL'
            EXPORTING
              i_object_id = object_id
            IMPORTING
              e_header    = wa_header
            TABLES
              e_item      = it_item
              e_account   = it_account.
        Proceed if it_item is not initial.
          IF NOT it_item IS INITIAL AND NOT it_account IS INITIAL.
    *read the lt_item for plant
            READ TABLE it_item INTO wa_item INDEX 1.
    CHANGE FOR REQEUSTOR.
            CONCATENATE c_us wa_item-created_by INTO v_req.
          now read the table with wa_item-be_plant.
            SELECT *
              FROM /fir/rmm0bgst001
              INTO TABLE it_item_info
              WHERE zplant = wa_item-be_plant.
            SORT it_item BY guid .
            SORT it_account BY p_guid .
            IF actual_approval_index LE c_apprv_times AND
               actual_approval_index GE c_1.
          looping at it_item is done to fetch the approver for every
          line item
              CLEAR: wa_item, wa_account.
              LOOP AT it_item INTO wa_item WHERE del_ind IS INITIAL.
                LOOP AT it_account  INTO wa_account
                  WHERE p_guid = wa_item-guid.
    to calculate the amount before calling the funciton module for
    approval table.value respective to account type
                  v_value_per_cctr =
                  wa_account-distr_perc * wa_item-value / 100.
    read the table respective to account type and for level 1 approval
    such that if the value is less than zvalue then no approval required.
                  CLEAR: wa_item_info.
                  CASE wa_account-acc_cat .
                    WHEN c_or.
                       READ TABLE it_item_info INTO wa_item_info
                        WITH KEY zlevel = c_1   " 1
                       zorder_no = wa_account-order_no
                       zplant    = wa_item-be_plant.
                    WHEN c_as.
                       READ TABLE it_item_info INTO wa_item_info
                        WITH KEY zlevel = c_1   " 1
                       zasset_no = wa_account-asset_no
                       zplant    = wa_item-be_plant.
                    WHEN c_cc.
                       READ TABLE it_item_info INTO wa_item_info
                        WITH KEY zlevel = c_1     " 1
                       zcost_ctr = wa_account-cost_ctr
                       zplant    = wa_item-be_plant.
                  ENDCASE.
                  IF sy-subrc = 0.
                    v_apprv_value = wa_item_info-zvalue.
                  ENDIF.
                now convert the amount to local currency ie usd
                  CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY'
                    EXPORTING
                    CLIENT                  = SY-MANDT
                      date                    = sy-datum
                      foreign_amount          = v_value_per_cctr
                      foreign_currency        = wa_item-currency
                      local_currency          = c_usd
                     type_of_rate            = c_m
                     read_tcurr              = c_x
                   IMPORTING
                     local_amount            = v_value_per
                   EXCEPTIONS
                     no_rate_found           = 1
                     overflow                = 2
                     no_factors_found        = 3
                     no_spread_found         = 4
                     derived_2_times         = 5
                     OTHERS                  = 6
                  IF v_value_per GE v_apprv_value AND sy-subrc = 0.
    To Find out Account id of what type ie cost center/IO/Asset.
                    IF wa_account-acc_cat eq c_cc.
                      v_call_value1 = wa_account-cost_ctr.
                      v_account_type = c_cost_centre.
                      v_acc_desc  = c_cc_desc. "'Cost center approval'.
                    ELSEIF wa_account-acc_cat eq c_or.
                      v_call_value1 = wa_account-order_no.
                      v_account_type = c_order_no.
                      v_acc_desc  = c_io_desc. "'Internal Order approval'.
                    ELSE.
                   IF NOT wa_account-asset_no IS INITIAL.
                      v_call_value1 = wa_account-asset_no.
                      v_account_type = c_asset_no..
                      v_acc_desc  = c_as_desc. "'Asset Number approval'.
                   ENDIF.
                    ENDIF.
                  Defining the PLANT and plant value.
                    v_plant = c_plant.
                    v_plant_value = wa_item-be_plant.
                  defining the COMPNAY CODE and company value.
                    v_comp_code = c_comp_code.
                    v_co_code   = wa_item-be_co_code.
                  Calling the Custom function to find the approvers.
                    CALL FUNCTION '/FIR/RP2P0BGS_ITEM_APPRV_GET'
                      EXPORTING
                        sc_guid                    = wa_header-guid
                        item_guid                  = wa_item-guid
                        approval_description       = v_acc_desc
                        hide_items_not_responsible = c_x "'X'
    each cost center approver should see only items he is responsible
                        criterion1                 = v_account_type
                        criterion2                 = v_comp_code
                        criterion3                 = v_plant
                        value1                     = v_call_value1
                        value2                     = v_co_code
                        value3                     = v_plant_value
                        approval_index           = actual_approval_index
                      TABLES
                        it_item_info               = it_item_info
                      CHANGING
                        approval_table             = approval_table
                        item_approval_table        = item_approval_table
                        item_approval_obj          = item_approval_obj.
                  ENDIF." end if if value per cost center is more than
                  " level one price.
                  CLEAR wa_account.
                ENDLOOP. " end of loop of account.
                CLEAR:  wa_account,wa_item, wa_item_info.
              ENDLOOP. " end of loop at item
    CHANGE FOR REQUESTOR.----
              DELETE approval_table WHERE approval_agent = v_req.
              IF approval_table IS INITIAL.
                no_further_approval_needed = c_x. " 'X'.
              ENDIF.
            ELSE. " end of if actual_approval_index le 3.
            this BADI-implementation defines 3 steps
              no_further_approval_needed = c_x. "'X'.
            ENDIF.
          ENDIF. " end of if the it_item is not initial.
      ENDCASE. "end of case if bus type is 2121
    ENDMETHOD.
    Function Module
    FUNCTION /fir/rp2p0bgs_item_apprv_get .
    ""Local Interface:
    *"  IMPORTING
    *"     REFERENCE(SC_GUID) TYPE  BBP_GUID OPTIONAL
    *"     REFERENCE(ITEM_GUID) TYPE  BBP_GUID OPTIONAL
    *"     REFERENCE(APPROVAL_DESCRIPTION) TYPE  BBP_STEP_DESCRIPTION
    *"       OPTIONAL
    *"     REFERENCE(HIDE_ITEMS_NOT_RESPONSIBLE) TYPE  BOOLEAN OPTIONAL
    *"     REFERENCE(CRITERION1) TYPE  BBP_WFL_APP_CRITERION OPTIONAL
    *"     REFERENCE(CRITERION2) TYPE  BBP_WFL_APP_CRITERION DEFAULT ''
    *"     REFERENCE(CRITERION3) TYPE  BBP_WFL_APP_CRITERION DEFAULT ''
    *"     REFERENCE(VALUE1) TYPE  BBP_WFL_APP_PROPERTY DEFAULT ''
    *"     REFERENCE(VALUE2) TYPE  BBP_WFL_APP_PROPERTY DEFAULT ''
    *"     REFERENCE(VALUE3) TYPE  BBP_WFL_APP_PROPERTY DEFAULT ''
    *"     REFERENCE(APPROVAL_INDEX) TYPE  SWH_NUMC10 OPTIONAL
    *"  TABLES
    *"      IT_ITEM_INFO STRUCTURE  /FIR/RMM0BGST001
    *"  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
    Local data-----------------------------------------------------------*
      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:
        wa_approval_table      TYPE bbp_wfl_approval_table_badi,
        wa_item_approval_table TYPE bbps_wfl_item_approval,
        wa_approval_def        TYPE /fir/rmm0bgst001.
      DATA:
        v_app_obj_guid           TYPE bbp_guid_32,
        v_is_new_approval_object TYPE boolean.
      DATA : it_update_tab   TYPE STANDARD TABLE OF /fir/rmm0bgst001,
             it_approval_def TYPE STANDARD TABLE OF /fir/rmm0bgst001,
             wa_update_tab   TYPE /fir/rmm0bgst001.
      DATA : it_actor_tab    TYPE STANDARD TABLE OF swhactor,
             wa_actor_tab    TYPE swhactor,
             it_ac_container TYPE STANDARD TABLE OF swcont,
             wa_ac_container TYPE swcont.
      DATA : it_options TYPE ty_option,
             it_fields  TYPE ty_fields,
             it_data    TYPE ty_data.
      DATA : wa_options TYPE  rfc_db_opt,
             wa_fields  TYPE  rfc_db_fld,
             wa_data    TYPE  tab512.
      DATA : v_apprv_io TYPE aufuser2,
             v_apprv_cc TYPE verak.
      DATA : v_cost_ctr  TYPE  bbp_wfl_app_property ,
             v_order_no  TYPE  bbp_wfl_app_property ,
             v_asset_no  TYPE  bbp_wfl_app_property ,
             v_as_value  TYPE  bbp_wfl_app_property .
      DATA : v_query_table   TYPE dd02l-tabname.
      DATA : v_apprv_count   TYPE char1 VALUE '0'.
    to find the number of lines in the table it_update_tab.
      DATA : v_lines TYPE i.
      DATA : v_app_ind TYPE swh_numc10 VALUE '0'.
      DATA : v_destination   TYPE char10,
             v_system        TYPE sysysid,
             v_mandt         TYPE symandt.
    Constants-----------------------------------------------------------*
      CONSTANTS:
        c_clnt          TYPE char4 VALUE 'CLNT',
        c_agent_is_user TYPE otype VALUE 'US',
        c_x             TYPE char1 VALUE 'X',
        c_cost_centre   TYPE bbp_wfl_app_criterion  VALUE 'COST_CTR',
        c_order_no      TYPE bbp_wfl_app_criterion  VALUE 'ORDER_NO',
        c_asset_no      TYPE bbp_wfl_app_criterion  VALUE 'ASSET_NO',
        c_csks          TYPE char4 VALUE 'CSKS',
        c_anlz          TYPE char4 VALUE 'ANLZ',
        c_coas          TYPE char4 VALUE 'COAS',
        c_verak         TYPE char5 VALUE 'VERAK',
        c_user2         TYPE char5 VALUE 'USER2',
        c_kostl         TYPE char5 VALUE 'KOSTL',
        c_aufnr         TYPE char5 VALUE 'AUFNR',
        c_bukrs         TYPE char5 VALUE 'BUKRS',
        c_anln1         TYPE char5 VALUE 'ANLN1',
        c_c             TYPE char1 VALUE 'C',
        c_and           TYPE char3 VALUE 'AND',
        c_eq            TYPE char1 VALUE '=',
        c_org_object    TYPE swc_elem VALUE 'ORG_OBJECT',
        c_deli          TYPE char1 VALUE '|',
        c_l12           TYPE ddleng VALUE '000012',
        c_off0          TYPE doffset VALUE '000000',
        c_l10           TYPE ddleng VALUE '000010',
        c_l20           TYPE ddleng VALUE '000020',
        c_l04           TYPE ddleng VALUE '000004',
        c_ind01         TYPE swc_index VALUE '000001',
        c_el06          TYPE swc_length VALUE '006',
        c_tab_name      TYPE tabname  VALUE '/fir/rmm0bgst001',
        c_r10           TYPE sysysid VALUE 'R10',
        c_r15           TYPE sysysid VALUE 'R15',
        c_r20           TYPE sysysid VALUE 'R20',
        c_r40           TYPE sysysid VALUE 'R40',
        c_e10           TYPE sysysid VALUE 'E10',
        c_e15           TYPE sysysid VALUE 'E15',
        c_e20           TYPE sysysid VALUE 'E20',
        c_e40           TYPE sysysid VALUE 'E40',
        c_121           TYPE symandt VALUE '121',
        c_300           TYPE symandt VALUE '300',
        c_100           TYPE symandt VALUE '100',
        c_120           TYPE symandt VALUE '120',
    begin of change for generic entry 06-06-2007----
        c_cc            TYPE kostl   VALUE 'CC',
        c_as            TYPE anln1   VALUE 'AS',
        c_or            TYPE aufnr   VALUE 'OR'.
    end of change for generic entry 06-06-2007----
    -perpare the system and client for RFC----
      CASE sy-sysid .
        WHEN c_r10.                                             "' R10'.
          IF sy-mandt = c_120.                                  " '120'.
            CONCATENATE c_e10 c_clnt c_121 INTO v_destination.
          ENDIF.
        WHEN c_r15.                                             " 'R15'.
          IF sy-mandt = c_120.                                  " '120'.
            CONCATENATE c_e15 c_clnt c_300 INTO v_destination.
          ENDIF.
        WHEN c_r20.                                             " 'R20'.
          IF sy-mandt = c_300.                                  " '300'.
            CONCATENATE c_e20 c_clnt c_300 INTO v_destination.
          ENDIF.
        WHEN c_r40.                                             " 'R40'.
          IF sy-mandt = c_100.                                  " '100'.
            CONCATENATE c_e40 c_clnt c_100 INTO v_destination.
          ENDIF.
      ENDCASE.
    Comment on logic ---------------------------------------------------*
    First find the right approval object the item belongs to.
    All items of an approval object are approved together in
    this approval step, and therefore only one workitem is
    created for this items.
      CALL FUNCTION 'BBP_WFL_DIN_APP_OBJ_GET'
        EXPORTING
          sc_guid                 = sc_guid
          criterion1              = criterion1
          value1                  = value1
       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       = v_app_obj_guid
        TABLES
         item_app_obj            = item_approval_obj
    Check what type of account is ie Order no/Internal order/ASSET.
    if the account type is asset_no then responsible cost center is
    found.
      CLEAR: it_update_tab, wa_update_tab.
      CASE criterion1 .
        WHEN c_asset_no.    " 'ASSET_NO'.
          v_asset_no = value1.
          CONCATENATE c_anln1 c_eq value1 " 'ANLN1' '=' value1
            c_and c_bukrs c_eq value2 INTO wa_options-text
            SEPARATED BY space.
          APPEND wa_options TO it_options.
          wa_fields-fieldname = c_anln1.                        " 'ANLN1'.
          wa_fields-length    = c_l12.                          " '000012'.
          wa_fields-offset    = c_off0.                         " '000000'.
          wa_fields-type      = c_c.      " 'C'.
          APPEND wa_fields TO it_fields.
          wa_fields-fieldname = c_kostl.  " 'KOSTL'.
          wa_fields-length    = c_l10.                          " '000010'.
          wa_fields-offset    = c_off0.                         " '000000'.
          wa_fields-type      = c_c.      " 'C'.
          APPEND wa_fields TO it_fields.
          wa_fields-fieldname = c_bukrs.  " 'BUKRS'.
          wa_fields-length    = c_l04.                          " '000004'.
          wa_fields-offset    = c_off0.                         " '000000'.
          wa_fields-type      = c_c.      " 'C'.
          APPEND wa_fields TO it_fields.
          CALL FUNCTION 'RFC_READ_TABLE' DESTINATION v_destination
            EXPORTING
              query_table          = c_anlz  " 'ANLZ'
              delimiter            = c_deli  " '|'
            TABLES
              OPTIONS              = it_options
              fields               = it_fields
              data                 = it_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 it_data table contains only one record
          so no sorting required.
            READ TABLE it_data INTO wa_data INDEX 1.
            v_as_value = wa_data-wa+13(10).
          ENDIF.
        at the end of this if asset is passed its responsible
        cost is obtained and is placed in value1 field.
          CLEAR : wa_data , wa_options , wa_fields .
          REFRESH: it_data , it_options , it_fields .
          v_cost_ctr = v_as_value.
          CONCATENATE c_kostl c_eq v_cost_ctr INTO wa_options-text
          SEPARATED BY space.
          APPEND wa_options TO it_options.
          CLEAR: wa_fields.
          wa_fields-fieldname = c_verak.   " 'VERAK'.
          wa_fields-length    = c_l20.                          " '000020'.
          wa_fields-offset    = c_off0.                         " '000000'.
          wa_fields-type      = c_c.        " 'C'.
          APPEND wa_fields TO it_fields.
          CLEAR: wa_fields.
          wa_fields-fieldname = c_kostl.    " 'KOSTL'.
          wa_fields-length    = c_l10.                          " '000010'.
          wa_fields-offset    = c_off0.                         " '000000'.
          wa_fields-type      = c_c.        " 'C'.
          APPEND wa_fields TO it_fields.
          v_query_table = c_csks. " 'CSKS'.
        set the initial value of v_asset_no by value1.
          CLEAR: v_cost_ctr .
          v_asset_no = value1.
        WHEN c_cost_centre . " 'COST_CTR' or 'ASSET_NO'.
          v_cost_ctr = value1.
          CONCATENATE c_kostl c_eq v_cost_ctr INTO wa_options-text
          SEPARATED BY space.
          APPEND wa_options TO it_options.
          CLEAR: wa_fields.
          wa_fields-fieldname = c_verak.   " 'VERAK'.
          wa_fields-length    = c_l20.                          " '000020'.
          wa_fields-offset    = c_off0.                         " '000000'.
          wa_fields-type      = c_c.        " 'C'.
          APPEND wa_fields TO it_fields.
          CLEAR: wa_fields.
          wa_fields-fieldname = c_kostl.    " 'KOSTL'.
          wa_fields-length    = c_l10.                          " '000010'.
          wa_fields-offset    = c_off0.                         " '000000'.
          wa_fields-type      = c_c.        " 'C'.
          APPEND wa_fields TO it_fields.
          v_query_table = c_csks. " 'CSKS'.
        WHEN c_order_no.    " 'ORDER_NO'.
          v_order_no = value1.
          CONCATENATE c_aufnr c_eq value1 INTO wa_options-text
          SEPARATED BY space.
          APPEND wa_options TO it_options.
          CLEAR: wa_fields.
          wa_fields-fieldname = c_user2.                        " 'USER2'.
          wa_fields-length    = c_l20.                          " '000020'.
          wa_fields-offset    = c_off0.                         " '000000'.
          wa_fields-type      = c_c.      " 'C'.
          APPEND wa_fields TO it_fields.
          CLEAR: wa_fields.
          wa_fields-fieldname = c_aufnr.   " 'AUFNR'.
          wa_fields-length    = c_l12.                          " '000012'.
          wa_fields-offset    = c_off0.                         " '000000'.
          wa_fields-type      = c_c.        " 'C'.
          APPEND wa_fields TO it_fields.
          v_query_table = c_coas. " 'COAS'.
      ENDCASE.
      LOOP AT it_item_info INTO wa_update_tab
        WHERE
              zplant    = value3       AND
              zcost_ctr = v_cost_ctr AND
              zorder_no = v_order_no AND
              zasset_no = v_asset_no.
        APPEND wa_update_tab TO it_update_tab .
      ENDLOOP.
    -begin of change for generic entry 06-06-2007----
    it_update_tab may or may not contain the value as the per the data
    maintainted. if initial then only generic value is maintained and the
    the record need to be appended.
    so the record which need to be appended shud be appended to
    it_update_tab appropiatly with the amt of generic entry.
      CLEAR : wa_update_tab.
      CASE criterion1 .
        WHEN c_asset_no.
          READ TABLE it_item_info INTO wa_update_tab WITH KEY
          zplant = value3
          zasset_no = c_as."'AS'
          IF sy-subrc = 0.
            wa_update_tab-zasset_no = v_asset_no .
            wa_update_tab-zlevel    = 1.
            APPEND wa_update_tab TO it_update_tab.
          ENDIF.
        WHEN c_cost_centre.
          READ TABLE it_item_info INTO wa_update_tab WITH KEY
          zplant = value3
          zcost_ctr = c_cc."'CC'
          IF sy-subrc = 0.
            wa_update_tab-zcost_ctr = v_cost_ctr .
            wa_update_tab-zlevel    = 1.
            APPEND wa_update_tab TO it_update_tab.
          ENDIF.
        WHEN c_order_no.
          READ TABLE it_item_info INTO wa_update_tab WITH KEY
          zplant = value3
          zorder_no = c_or."'OR'
          IF sy-subrc = 0.
            wa_update_tab-zorder_no = v_order_no .
            wa_update_tab-zlevel    = 1.
            APPEND wa_update_tab TO it_update_tab.
          ENDIF.
      ENDCASE.
    end of change for generic entry 06-06-2007----
    RFC to read table for finding the person responsible for the
    cost center / order ie approver.
      CALL FUNCTION 'RFC_READ_TABLE' DESTINATION v_destination
        EXPORTING
          query_table          = v_query_table
          delimiter            = c_deli   "'|'
        TABLES
          OPTIONS              = it_options
          fields               = it_fields
          data                 = it_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.
        CLEAR :wa_approval_def.
        READ TABLE it_data INTO wa_data INDEX 1.
        IF v_query_table = c_csks.    " 'CSKS'.
          v_apprv_cc = wa_data-wa+0(20).
          wa_approval_def-zapprover = v_apprv_cc.
        ELSE.
          v_apprv_io = wa_data-wa+0(20).
          wa_approval_def-zapprover = v_apprv_io.
        ENDIF.
      ENDIF.
      find the number of record in the update table.
      DESCRIBE TABLE it_update_tab LINES v_lines.
      The updation of table runs only for the number of records
      avaiable in the  update table ie v_lines.
      DO v_lines TIMES.        " begin of do to approval index times.
         CLEAR: it_approval_def.
        v_apprv_count = v_apprv_count + 1.
        wa_approval_def-zlevel    = v_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 as per.
        IF v_apprv_count > 1.
          v_apprv_count = v_apprv_count - 1.
          READ TABLE it_update_tab INTO wa_update_tab
               WITH KEY zlevel = v_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
            REFRESH : it_ac_container.
            wa_ac_container-element = c_org_object. " 'ORG_OBJECT'.
            wa_ac_container-tab_index = c_ind01.                " '000001'.
            wa_ac_container-elemlength = c_el06.                " '006'.
            wa_ac_container-type       = c_c.   " 'C'.
            CONCATENATE c_agent_is_user wa_update_tab-zapprover
            INTO wa_ac_container-value .
            APPEND wa_ac_container TO it_ac_container.
            CALL FUNCTION 'SWX_GET_MANAGER' DESTINATION v_destination
              TABLES
                actor_tab    = it_actor_tab
                ac_container = it_ac_container
              EXCEPTIONS
                nobody_found = 1
                OTHERS       = 2.
            IF sy-subrc = 0.
              READ TABLE it_actor_tab INTO wa_actor_tab WITH KEY
                   otype = c_agent_is_user.
              wa_approval_def-zapprover = wa_actor_tab-objid.
            ENDIF.
          ENDIF.
          v_apprv_count = v_apprv_count + 1.
        ENDIF.
      before updating populate the table it_approval_def
      it_update_tab is read based on next v_apprv_count and
      updates the approver and its value.
        READ TABLE it_update_tab INTO wa_update_tab
               WITH KEY zlevel = v_apprv_count .
        IF sy-subrc = 0.
          wa_approval_def-zplant = wa_update_tab-zplant.
          wa_approval_def-zcost_ctr = wa_update_tab-zcost_ctr.
          wa_approval_def-zorder_no = wa_update_tab-zorder_no.
          wa_approval_def-zasset_no = wa_update_tab-zasset_no.
          wa_approval_def-zvalue = wa_update_tab-zvalue.
          APPEND wa_approval_def TO it_approval_def.
    modify the table it_update_tab so that along with the custom
    database table the table in use in this function module ie
    it_update_tab also remain updated.
    benefit is that if the modify to dtab fails. the process works fine.
          MODIFY it_update_tab FROM wa_approval_def
                   TRANSPORTING zapprover
                   WHERE zlevel = wa_approval_def-zlevel AND
                         zvalue = wa_approval_def-zvalue.
      now enqueue the table for modification.
          CALL FUNCTION 'ENQUEUE_E_TABLE'
            EXPORTING
              tabname        = c_tab_name       " '/fir/rmm0bgst001'
            EXCEPTIONS
              foreign_lock   = 1
              system_failure = 2
              OTHERS         = 3.
          now modify the table, for updation of approver.
          IF sy-subrc = 0.
            MODIFY /fir/rmm0bgst001 FROM wa_approval_def.
            if sy-subrc goes 0 commit work is called.
            also the it_update_tab need to be updated.
            IF sy-subrc = 0.
              COMMIT WORK.
            ENDIF.
          ENDIF.
      now dequeue the table after the updation.
          CALL FUNCTION 'DEQUEUE_E_TABLE'
            EXPORTING
              tabname = c_tab_name.     " '/fir/rmm0bgst001'.
        ENDIF.
        once all done clear the work areas.
        CLEAR : wa_approval_def-zlevel , wa_approval_def-zapprover.
      ENDDO.                               " END OF DO STATEMENT.
      SORT it_approval_def BY zlevel ASCENDING.
    as per the logic for the different level of approval.
    for second level of approval only records above 2 should be
    present in the apprval table.
    so for approval index = 2 delete the first record ie for zlevel  = 1.
    and for approval index = 3 delete first two records ie zlevel = 1 and
    zlevel = 2. thus only one approval of zlevel 3 is left in the table
    which is used to update the approval table.
      IF approval_index = 2 .
        DELETE it_approval_def INDEX 1.
      ELSEIF approval_index = 3.
        DELETE it_approval_def INDEX 1.
        DELETE it_approval_def INDEX 1.
      ELSEIF approval_index GT 3.
        REFRESH : it_approval_def .
      ENDIF.
    for above 3 as approval index there shud be no enteries in the table.
    so the table is refreshed and thus the approval table will not
    contain anything.
    approval_index is assigned to a varaiable
      v_app_ind = approval_index.
    v_app_ind is incremented for every next record so that approver is
    assigned to next approval index.
    beign of change 28th may 2007----
    clear : v_app_ind .
    v_app_ind = v_app_ind + 1.
      LOOP AT it_approval_def INTO wa_approval_def.
        wa_approval_table-approval_index       = v_app_ind.
        CONCATENATE c_agent_is_user wa_approval_def-zapprover
        INTO wa_approval_table-approval_agent.
        wa_approval_table-approval_description = approval_description.
        wa_approval_table-approval_object_guid = v_app_obj_guid.
        wa_approval_table-hide_items_not_responsible =
                                hide_items_not_responsible.
        APPEND wa_approval_table TO approval_table.
        v_app_ind = v_app_ind + 1 .
        CLEAR: wa_approval_def.
      ENDLOOP.
      sort the approval table so that approvers come in sequence.
      SORT approval_table BY approval_index.
    ENDIF.
    fill item table (which items belongs to which approval object)
      wa_item_approval_table-approval_object_guid = v_app_obj_guid.
      wa_item_approval_table-approval_item_guid   = item_guid.
      APPEND wa_item_approval_table TO item_approval_table.
      CLEAR :wa_item_approval_table,wa_approval_table,it_update_tab.
    ENDFUNCTION.
    Thanks
    Arghadip
    [email protected]

    Hi,
    You have to debug the entire system behaviour , the approval process using the second approver.
    As first step , please check the security level of the second approver. Restart of workflow is based on the security level of the approver.
    you can find the parameter for security level in the personalization tab of the user .
    there is one function module  which determines wether the workflow should be restarted (or) not.
    i do not remember the exact name of the function module.
    1)start transaction se37
    2)enter bbpwflrestart*.
    3) system will return a number of function modules , of them one function module determines wether to restart the workflow (or) not.
    Please check what does the above function module return for the user and the shopping cart , there will be one parameter 'restart' which triggers the start

  • Issue with PO release (multi level approval)

    Hi,
    Need help regarding PO release. I am working with 4 level  approval process.
    Information:
    it is sequential release as I can see in workflow log, a new workflow gets generated for next level only after previous level executes the workitem.
    Facing following issue at 2nd Level :
    Level 2 releases item and it goes to Level 3, but workitem doesn’t disappear from inbox.Once Level 3 releases item, an acceptance mail goes to Level 2. But along with the mail, updated workitem (i.e. showing release by 3rd level) also appears in inbox of Level2. Now two work items appear in Level2 Inbox.
    In Workflow Log, this is how its behaving:
    WORKFLOW STARTED-->
    1st WF appears in WF log.
    Level 1 releases WI ->
    2nd workflow appears in WF log +
    1st workflow with (in process status)
    Level 2 releases WI ->
    3rd WF appears +
    2nd workflow with (in process status) +
    1st workflow with (in process status)
    Level 3 releases WI ->
    3rd WF appears +
    2nd workflow with (in process status) +
    1st workflow with (in process status)
    ISSUE: As soon as Level 3 sends back acceptance to Level 2, updated WI item appears( i.e. with latest release status which in this case is: released by level1, Level2 and Level3) along with the mail.
    Level 4 releases WI ->
    4th WF appears +
    3rd WF appears (in process status) +
    2nd workflow with (in process status) +
    1st workflow with (STATUS COMPLETED)
    ISSUE: As soon as Level 4 sends back acceptance to Level 2, updated WI item appears( i.e. with latest release status which in this case is: released by level1, Level2, Level3 and Level 4) along with the mail.
    Result:
    PO gets released.
    In workflow log 2nd, 3rd and 4th workflow appear with IN PROCESS STATUS. All of them show process stopped at LEVEL2.

    Hi Kjetil,
    Release strategy is being used. Configuration for release strategy is given as following.
    RGroup Rcode   Workflow     Agent
    Z6          R1         1                Blank
    Z6          R1             1                Blank
    Z6          R1             1                Blank
    Z6          R1             1                Blank
    Release is sequential.
    For column 'Agent' mentioning position or User is not really useful because we are getting agents through Z table. Reason is: current org structure supports 1 position with multiple users from same department. In our scenario we need to find initiators department then find relevant approval levels for that departemnt. So I cannot mention any position in 'Agent' Column as release code will be locked against one position and one departetment.
    Agents picked through Z table. Table has fields  Agent/ UserID , level, department.
    Logic to pick agents( Object and method created ): 
      When workflow starts, it finds department of the initiator.
      For that department-> find approval levels available(L1, L2,  L3).
      For these levels -> Find Agent mentioned for that level.
      Onece Agents are found for all levels -> Pass them to WF  container.
      In task activity, These agents are passed back to the rule and  the task comes to know which agent it should go to.
    Result : Four workflows start in sequence. When last level releases, only 1st workflow shows COMPLETED status. Rest three hang at level 2. If I see Me29N , release for that item is shown completed. To me it seems triggering of only first workflow is enough for release. Is there any way I can avoid trigerring of other three workflows?
    Edited by: User112 User112 on Jan 25, 2008 6:30 AM
    Edited by: User112 User112 on Jan 25, 2008 6:31 AM

  • How to forward the workitem to next level on Missed Deadline?

    I have enabled Latest End Deadline on a particular task. The requirement is to forward the workitem to the next level approver once the dead line is missed.
    I have tried to use Workflow Wizard Modeled deadline monitoring. It creates few additional steps but it just sets the workflow to obselete. I need to forward the workitem to next level. What needs to be done after the above step so that the work item is sent to the next level.

    Hi Workflow learner,
    I am also learning workflows and I have been asked to create a workflow deadline which will escalate the workitem to the next level approver once the deadline is missed.
    I too created a deadline using the workflow wizard. Next I created a step in the obsolete outcome identical to the main step.
    In this step do I user the rule 168? And how does the workflow look for the superior of the manger who has missed the deadline and not the workflow initiator.
    Thanks
    Forhad

Maybe you are looking for

  • Bridge CS4 has no Camera Raw

    Hi Again, Mac OS X 10.5.6 MBP PSCS4 Camera Raw Preferences are grayed out in Bridge CS4 and neither NEF nor DNG images can be viewed in the browser, just the icon for a NEG or DNG file. I have to open a file in Photoshop CS4 Camera Raw to see the ima

  • Debug an USER-EXIT which is present inside an INCLUDE

    Hi folks, i want to debug a include ' LVEDFF0E.' which is present in the program  'SAPLVEDF. my user exit 'ZXEDFU02' is present in the include LVEDFF0E . This exit is to change the IDOC segmants. i want to debug my user exit which is present inside a

  • Help! Error when trying to re-download and re-install CC Muse

    Hello - I have used Muse for some time via the monthly CC subscription.  I ran CCleaner and Muse got wiped.  I try and retry to install but each time the "Installation failed."  The blue "More Information" link doesn't work.  I installed InDesign rig

  • HT204088 How to view purchase history on iPad

    How do I view my purchase history so that I can get my receipt number for something I have purchased??

  • Aperture 3.1.3 and iPhoto sync problems

        Upgraded to Aperture 3.1.3. Then upgraded to Lion. Tried to sync my iPhone and it got as far as photo's and got a -50 Sync error. Went to iTunes and turned off photo sync and the phone syn'd perfectly. Went back to iTunes turned photo sync back o