SC Workflow: Runtime Actual Approval determination

Hi all,
I want to know who approved the Shopping Cart (SC) in runtime within the BADI so that comparing his Approval Limit with the cost of SC I can decide whether to skip or go for next approval levels.
Please help how to find it out. I have checked the history table but it contains a field "Type" whose possible values can only be either "changed" or "insert" and does not indicate "Approve" status for any agent....
Please help,
Thanks
Sangharsh

Hi
Try this BADI - BBP_WFL_APPROV_BADI.
<u>BBP_WFL_APPROV_BADI</u> 
Determin. Approv. for n-Level. Dynamic Approval WFL 
You need to make a logic in your case.
<u>Refer to the sample BADI logic.</u>
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 is the 2nd example of the BADI implementation that includes
* dynamic spending limit approval for PO
  INCLUDE <swfcntn01>.                  "Workflow
  DATA:
   ls_header                   TYPE bbp_pds_sc_header_d,
   ls_approver                 TYPE bbp_wfl_approval_table_badi,
   lv_approval_index           TYPE swh_numc10,
   lv_guid                     TYPE crmt_object_guid,
   lo_new_instance             TYPE swf_bor_object,
   lt_approval_agent_obj       TYPE TABLE OF swf_bor_object,
   ls_wa_agent_obj             TYPE swf_bor_object,
   lo_user                     TYPE swf_bor_object,
   ls_approval_agent           TYPE bbp_wfl_approval_table,
   lv_index                    TYPE syindex,
   lv_usr01_name               TYPE ad_namtext,
   lt_approval_init_agents     TYPE TABLE OF bbp_wfl_approval_table,
   ls_wa_approval_init_agents  TYPE bbp_wfl_approval_table,
   ls_wa_approval_history      TYPE bbps_wfl_history_line_badi.
* Business objects type (local constants)
  CONSTANTS:
   c_po            TYPE crmt_subobject_category_db VALUE 'BUS2201',
   c_biddingdoc    TYPE crmt_subobject_category_db VALUE 'BUS2200',
   c_quotation     TYPE crmt_subobject_category_db VALUE 'BUS2202',
   c_grse          TYPE crmt_subobject_category_db VALUE 'BUS2203',
   c_invoice       TYPE crmt_subobject_category_db VALUE 'BUS2205',
   c_shop          TYPE crmt_subobject_category_db VALUE 'BUS2121',
   c_contract      TYPE crmt_subobject_category_db VALUE 'BUS2000113',
   c_salescontract TYPE crmt_subobject_category_db VALUE 'BUS2000114',
   c_avl           TYPE crmt_subobject_category_db VALUE 'BUS2206',
   c_invoicegrp    TYPE crmt_subobject_category_db VALUE 'BUS2207',
   c_vendor_obj    TYPE crmt_subobject_category_db VALUE 'BUS1006200'.
*** workflow approval states
  CONSTANTS:
   c_wf_approved           TYPE  bbp_wfl_approvalstate VALUE '0',
   c_wf_rejected           TYPE  bbp_wfl_approvalstate VALUE '1',
   c_wf_not_instanced      TYPE  bbp_wfl_approvalstate VALUE '2',
   c_wf_changed            TYPE  bbp_wfl_approvalstate VALUE '3',
   c_wf_partialapproved    TYPE  bbp_wfl_approvalstate VALUE '4',
   c_wf_step_in_process    TYPE  bbp_wfl_approvalstate VALUE '5'.
  CLEAR: lt_approval_init_agents[], lt_approval_agent_obj[],
         ls_wa_agent_obj, ls_approval_agent, ls_wa_approval_init_agents,
         ls_wa_approval_history.
* map input data to local data
* map char32 to raw16
  MOVE guid TO lv_guid.
  CASE object_type.
* ======================   shopping cart  =========================== *
    WHEN c_shop.
*** get the details of the shopping cart
      CALL FUNCTION 'BBP_PD_SC_GETDETAIL'
        EXPORTING
          i_guid      = lv_guid
          i_object_id = object_id
        IMPORTING
          e_header    = ls_header.
      IF ls_header-total_value < 490000000.
*** 2 step approval
        CASE actual_approval_index.
          WHEN 0.
            ls_approver-approval_index = 1.
            ls_approver-approval_agent = 'USMANAGER1'.
            ls_approver-name = 'Arthur Manager1'.
            ls_approver-approval_description = 'First approval step'.
            APPEND ls_approver TO approval_table.
            ls_approver-approval_index = 2.
            ls_approver-approval_agent = 'USMANAGER2'.
            ls_approver-name = 'Arnold Manager2'.
            ls_approver-approval_description = 'Second approval step'.
            APPEND ls_approver TO approval_table.
            ls_approver-approval_index = 2.
            ls_approver-approval_agent = 'USMANAGER4'.
            ls_approver-name = 'Thomas Manager4'.
            ls_approver-approval_description = 'Second approval step'.
            APPEND ls_approver TO approval_table.
          WHEN 1.
            ls_approver-approval_index = 1.
            ls_approver-approval_agent = 'USMANAGER1'.
            ls_approver-name = 'Arthur Manager1'.
            ls_approver-approval_description = 'First approval step'.
            APPEND ls_approver TO approval_table.
            ls_approver-approval_index = 2.
            ls_approver-approval_agent = 'USMANAGER2'.
            ls_approver-name = 'Arnold Manager2'.
            ls_approver-approval_description = 'Second approval step'.
            APPEND ls_approver TO approval_table.
            ls_approver-approval_index = 2.
            ls_approver-approval_agent = 'USMANAGER4'.
            ls_approver-name = 'Thomas Manager4'.
            ls_approver-approval_description = 'Second approval step'.
            APPEND ls_approver TO approval_table.
          WHEN 2.
            ls_approver-approval_index = 2.
            ls_approver-approval_agent = 'USMANAGER2'.
            ls_approver-name = 'Arnold Manager2'.
            ls_approver-approval_description = 'Second approval step'.
            APPEND ls_approver TO approval_table.
            ls_approver-approval_index = 2.
            ls_approver-approval_agent = 'USMANAGER4'.
            ls_approver-name = 'Thomas Manager4'.
            ls_approver-approval_description = 'Second approval step'.
            APPEND ls_approver TO approval_table.
          WHEN OTHERS.
            no_further_approval_needed = 'X'.
        ENDCASE.
      ELSE.
        CASE actual_approval_index.
*** 3 step approval
          WHEN 0.
            ls_approver-approval_index = 1.
            ls_approver-approval_agent = 'USMANAGER1'.
            ls_approver-name = 'Arthur Manager1'.
            ls_approver-approval_description = 'First approval step'.
            APPEND ls_approver TO approval_table.
            ls_approver-approval_index = 2.
            ls_approver-approval_agent = 'USMANAGER2'.
            ls_approver-name = 'Arnold Manager2'.
            ls_approver-approval_description = 'Second approval step'.
            APPEND ls_approver TO approval_table.
            ls_approver-approval_index = 2.
            ls_approver-approval_agent = 'USMANAGER4'.
            ls_approver-name = 'Thomas Manager4'.
            ls_approver-approval_description = 'Second approval step'.
            APPEND ls_approver TO approval_table.
            ls_approver-approval_index = 3.
            ls_approver-approval_agent = 'USMANAGER3'.
            ls_approver-name = 'Peter Manager3'.
            ls_approver-approval_description = 'Third approval step'.
            APPEND ls_approver TO approval_table.
          WHEN 1.
            ls_approver-approval_index = 1.
            ls_approver-approval_agent = 'USMANAGER1'.
            ls_approver-name = 'Arthur Manager1'.
            ls_approver-approval_description = 'First approval step'.
            APPEND ls_approver TO approval_table.
            ls_approver-approval_index = 2.
            ls_approver-approval_agent = 'USMANAGER2'.
            ls_approver-name = 'Arnold Manager2'.
            ls_approver-approval_description = 'Second approval step'.
            APPEND ls_approver TO approval_table.
            ls_approver-approval_index = 2.
            ls_approver-approval_agent = 'USMANAGER4'.
            ls_approver-name = 'Thomas Manager4'.
            ls_approver-approval_description = 'Second approval step'.
            APPEND ls_approver TO approval_table.
            ls_approver-approval_index = 3.
            ls_approver-approval_agent = 'USMANAGER3'.
            ls_approver-name = 'Peter Manager3'.
            ls_approver-approval_description = 'Third approval step'.
            APPEND ls_approver TO approval_table.
          WHEN 2.
            ls_approver-approval_index = 2.
            ls_approver-approval_agent = 'USMANAGER2'.
            ls_approver-name = 'Arnold Manager2'.
            ls_approver-approval_description = 'Second approval step'.
            APPEND ls_approver TO approval_table.
            ls_approver-approval_index = 2.
            ls_approver-approval_agent = 'USMANAGER4'.
            ls_approver-name = 'Thomas Manager4'.
            ls_approver-approval_description = 'Second approval step'.
            APPEND ls_approver TO approval_table.
            ls_approver-approval_index = 3.
            ls_approver-approval_agent = 'USMANAGER3'.
            ls_approver-name = 'Peter Manager3'.
            ls_approver-approval_description = 'Third approval step'.
            APPEND ls_approver TO approval_table.
          WHEN 3.
            ls_approver-approval_index = 3.
            ls_approver-approval_agent = 'USMANAGER3'.
            ls_approver-name = 'Peter Manager3'.
            ls_approver-approval_description = 'Third approval step'.
            APPEND ls_approver TO approval_table.
          WHEN OTHERS.
            no_further_approval_needed = 'X'.
        ENDCASE.
      ENDIF.
* ======================  purchase order ============================= *
    WHEN c_po.
*** 1) Evaluate the list of spending limit approvers from BOR attributes
      swf_create_object  lo_new_instance  object_type   guid.
      swf_get_property   lo_new_instance 'SLManagerUserList'
                                          lt_approval_agent_obj[].
      lv_index = 1.
      LOOP AT lt_approval_agent_obj INTO ls_wa_agent_obj.
        swf_get_property ls_wa_agent_obj 'User' lo_user.
        swf_get_property lo_user 'NameWithLeadingUS'
                                ls_approval_agent-approval_agent.
        swf_get_property lo_user 'Name' lv_usr01_name.
        MOVE lv_usr01_name TO ls_approval_agent-name.
        ls_approval_agent-approval_index = lv_index.
        ls_approval_agent-approval_branch = 1.
        ls_approval_agent-initial_index = lv_index.
        ls_approval_agent-initial_agent =
                             ls_approval_agent-approval_agent.
        ls_approval_agent-approval_state = c_wf_not_instanced.
        APPEND ls_approval_agent TO lt_approval_init_agents.
        lv_index = lv_index + 1.
      ENDLOOP.
*** 2) Evaluate the list of remaining approvers. The actual approver
***    belongs to the list as well.
      LOOP AT approval_history_table INTO
                   ls_wa_approval_history WHERE type <> 'I'.
        LOOP AT lt_approval_init_agents INTO
                                  ls_wa_approval_init_agents.
          IF ls_wa_approval_init_agents-approval_index LT
                    ls_wa_approval_history-approval_index.
            DELETE lt_approval_init_agents.
          ENDIF.
        ENDLOOP.
      ENDLOOP.
* fill the import table
      CLEAR ls_wa_approval_init_agents.
      LOOP AT lt_approval_init_agents INTO
                                ls_wa_approval_init_agents.
        CLEAR ls_wa_approval_history.
        MOVE-CORRESPONDING ls_wa_approval_init_agents TO
                                          ls_wa_approval_history.
        APPEND ls_wa_approval_history TO approval_table.
      ENDLOOP.
      IF approval_table[] IS INITIAL.
        no_further_approval_needed = 'X'.
      ENDIF.
* ========================  contract ================================ *
    WHEN c_quotation.
      IF lv_index LT 2.
        ls_approval_agent-approval_description = '1st Approval'.
        ls_approval_agent-approval_index = 1.
        ls_approval_agent-approval_branch = 1.
        ls_approval_agent-initial_index = 1.
        ls_approval_agent-name = 'Hennes Kaempfer'.
        ls_approval_agent-approval_agent = 'USMANAGER4'.
        ls_approval_agent-approval_state = c_wf_not_instanced.
        APPEND ls_approval_agent TO approval_table.
        ls_approval_agent-approval_index = 1.
        ls_approval_agent-approval_branch = 1.
        ls_approval_agent-initial_index = 1.
        ls_approval_agent-name = 'Paul Reiter'.
        ls_approval_agent-approval_agent = 'USMANAGER5'.
        ls_approval_agent-approval_state = c_wf_not_instanced.
        APPEND ls_approval_agent TO approval_table.
        ls_approval_agent-approval_description = '2nd Approval'.
        ls_approval_agent-approval_index = 2.
        ls_approval_agent-approval_branch = 1.
        ls_approval_agent-initial_index = 2.
        ls_approval_agent-name = 'Dieter Mueller'.
        ls_approval_agent-approval_agent = 'USMANAGER33'.
        ls_approval_agent-approval_state = c_wf_not_instanced.
        APPEND ls_approval_agent TO approval_table.
      ELSE.
        no_further_approval_needed = 'X'.
      ENDIF.
  ENDCASE.
ENDMETHOD.
Regards
- Atul

Similar Messages

  • SRM SC Workflow: Runtime Actual Approval determination

    Hi all,
    I want to know who approved the SC in runtime within the BADI so that comparing his Approval Limit with the cost of SC I can decide whether to skip or go for next approval levels.
    Please help how to find it out. I have checked the history table but it contains a field "Type" whose possible values can only be either "changed" or "insert" and does not indicate "Approve" status for any agent....
    Please help,
    Thanks
    Sangharsh

    Hi Sangharsh,
    I believe that you are using workflow approval BAdI - BBP_WFL_APPROV_BADI.
    This BAdI is having a table called APPROVAL_TABLE, all the agents in this BADI will appear in your approval pre-view.
    You have to write a code in your BADI as follows -
    - Check Approval limit of the manager
    - If it is more than SC value, append APPROVAL_TABLE otherwise you can skip him.
    If you need more help, do let me know.
    Thanks and Regards
    Pras

  • Error in Workflow For Role Approval

    Hello ,
    While i am approving the request i am getting the following error:
    Error processing your request, Request no: 2 in stage : ERM_STAGE
    What could be the cause for this error?
    Logs are pasted for your reference:
    2009-08-19 14:31:40,244 [SAPEngine_Application_Thread[impl:3]_6] ERROR com.virsa.ae.service.ServiceException: Exit URI is not defined for wfType : RE
    com.virsa.ae.service.ServiceException: Exit URI is not defined for wfType : RE
         at com.virsa.ae.accessrequests.bo.RequestExitServiceHelper.getDocument(RequestExitServiceHelper.java:188)
         at com.virsa.ae.accessrequests.bo.RequestExitServiceHelper.callExitService(RequestExitServiceHelper.java:157)
         at com.virsa.ae.accessrequests.bo.RequestExitServiceHelper.callExitServiceForApprovedRequest(RequestExitServiceHelper.java:56)
         at com.virsa.ae.accessrequests.bo.RequestBO.callExitService(RequestBO.java:5335)
         at com.virsa.ae.accessrequests.bo.RequestBO.approveRequest(RequestBO.java:5174)
         at com.virsa.ae.accessrequests.bo.RequestBO.approveRequest(RequestBO.java:4967)
         at com.virsa.ae.accessrequests.actions.RequestViewAction.confirmRequestApproval(RequestViewAction.java:928)
         at com.virsa.ae.accessrequests.actions.RequestViewAction.execute(RequestViewAction.java:103)
         at com.virsa.ae.commons.utils.framework.NavigationEngine.execute(NavigationEngine.java:271)
         at com.virsa.ae.commons.utils.framework.servlet.AEFrameworkServlet.service(AEFrameworkServlet.java:425)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.sap.engine.services.servlets_jsp.server.runtime.RequestDispatcherImpl.doWork(RequestDispatcherImpl.java:321)
         at com.sap.engine.services.servlets_jsp.server.runtime.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:377)
         at com.virsa.ae.commons.utils.framework.servlet.AEFrameworkServlet.service(AEFrameworkServlet.java:455)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.sap.engine.services.servlets_jsp.server.runtime.RequestDispatcherImpl.doWork(RequestDispatcherImpl.java:321)
         at com.sap.engine.services.servlets_jsp.server.runtime.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:377)
         at com.virsa.ae.commons.utils.framework.servlet.AEFrameworkServlet.service(AEFrameworkServlet.java:455)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:401)
         at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:266)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:386)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:364)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:1039)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:265)
         at com.sap.engine.services.httpserver.server.Client.handle(Client.java:95)
         at com.sap.engine.services.httpserver.server.Processor.request(Processor.java:175)
         at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:33)
         at com.sap.engine.core.cluster.impl6.session.MessageRunner.run(MessageRunner.java:41)
         at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
         at java.security.AccessController.doPrivileged(Native Method)
         at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:104)
         at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:176)
    2009-08-19 14:31:40,260 [SAPEngine_Application_Thread[impl:3]_6] ERROR com.virsa.ae.service.ServiceException: Exit URI is not defined for wfType : RE
    com.virsa.ae.service.ServiceException: com.virsa.ae.service.ServiceException: Exit URI is not defined for wfType : RE
         at com.virsa.ae.accessrequests.bo.RequestExitServiceHelper.getDocument(RequestExitServiceHelper.java:209)
         at com.virsa.ae.accessrequests.bo.RequestExitServiceHelper.callExitService(RequestExitServiceHelper.java:157)
         at com.virsa.ae.accessrequests.bo.RequestExitServiceHelper.callExitServiceForApprovedRequest(RequestExitServiceHelper.java:56)
         at com.virsa.ae.accessrequests.bo.RequestBO.callExitService(RequestBO.java:5335)
         at com.virsa.ae.accessrequests.bo.RequestBO.approveRequest(RequestBO.java:5174)
         at com.virsa.ae.accessrequests.bo.RequestBO.approveRequest(RequestBO.java:4967)
         at com.virsa.ae.accessrequests.actions.RequestViewAction.confirmRequestApproval(RequestViewAction.java:928)
         at com.virsa.ae.accessrequests.actions.RequestViewAction.execute(RequestViewAction.java:103)
         at com.virsa.ae.commons.utils.framework.NavigationEngine.execute(NavigationEngine.java:271)
         at com.virsa.ae.commons.utils.framework.servlet.AEFrameworkServlet.service(AEFrameworkServlet.java:425)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.sap.engine.services.servlets_jsp.server.runtime.RequestDispatcherImpl.doWork(RequestDispatcherImpl.java:321)
         at com.sap.engine.services.servlets_jsp.server.runtime.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:377)
         at com.virsa.ae.commons.utils.framework.servlet.AEFrameworkServlet.service(AEFrameworkServlet.java:455)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.sap.engine.services.servlets_jsp.server.runtime.RequestDispatcherImpl.doWork(RequestDispatcherImpl.java:321)
         at com.sap.engine.services.servlets_jsp.server.runtime.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:377)
         at com.virsa.ae.commons.utils.framework.servlet.AEFrameworkServlet.service(AEFrameworkServlet.java:455)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:401)
         at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:266)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:386)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:364)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:1039)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:265)
         at com.sap.engine.services.httpserver.server.Client.handle(Client.java:95)
         at com.sap.engine.services.httpserver.server.Processor.request(Processor.java:175)
         at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:33)
         at com.sap.engine.core.cluster.impl6.session.MessageRunner.run(MessageRunner.java:41)
         at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
         at java.security.AccessController.doPrivileged(Native Method)
         at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:104)
         at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:176)
    Caused by: com.virsa.ae.service.ServiceException: Exit URI is not defined for wfType : RE
         at com.virsa.ae.accessrequests.bo.RequestExitServiceHelper.getDocument(RequestExitServiceHelper.java:188)
         ... 32 more
    Regards,
    Kumar Rayudu

    Hello Gangadhar,
    What you want to say is i have not specified the correct URL in Custom Approver Determinator but i have not used the Webservice option in CAD Type but specified the Attribute as Request Type.
    In ERM i have specified the correct URL by copying the correct URL using the WSDL.
    Can you please brief it?
    Regards,
    Kumar Rayudu
    Edited by: Kumar Rayudu on Aug 19, 2009 3:10 PM

  • Custom workflow for Fiori Approve Timesheets

    Hello All,
    I am investigating complexity of adding custom workflow to Approve Timesheets.
    There is BADI SRA010_BADI_TIMESHEET_APV.
    Any experiences/advices  ?

    Hi Lukasz,
    How do you change approver using data from Ztable in the current system?
    If you are talking about workflow approver determination logic, it is a job for Workflow Engine and not for Fiori.
    Regards, Masa
    SAP Customer Experience Group - CEG

  • Purchaser Assignment / PrGrp:Workflow problem:No approver found.WS14000044

    Hello,
    I am facing a problem concerning the Workflow WS14000044.
    In the organizational structure using transaction 'PPOMA_BBP', I went
    to the bottom left hand panel. I have assigned a purchasing group to a
    purchaser as follow :
    Right click on a "Purchasing Group" and I select "Purchaser Assignment"
    menu.
    Then the right hand panel changes from "Staff assignments"
    to "Purchaser Assignment". I select a purchasing group and I assign
    this purchasing group to a purchaser.
    But when i create the SC, the system does not retrieve the 'approver'
    for workflow WS14000044. Error  mesage in approval preview : 'no approvers'.
    Regards,
    Lina

    Hi,
    Please refer to the following ---
    This workflow is started for a shopping cart if the
    shopping cart requires completion by the purchaser before
    actual approval. You define the criteria used to decide that
    further editing is required in the start conditions. Provided that
    these criteria are fulfilled, this workflow is started after the
    purchaser has edited a shopping cart (and occasionally in the case
    of a change during approval). After the purchaser has edited
    the shopping cart, the creator receives a work item and
    the normal approval process can start.

  • Approver Determinator in CUP

    Freinds,
    Any idea about 'BPO' approver determinator for workflow type Complaint user provisioning in CUP and from where this would get names from.
    Thanks in advance.
    Srinu

    No...when you go to create stage..these is a standard approver determinator ' BPO' when you select workflow type 'compliant user provisioning'.
    for examlpe if you select security lead as a approver in a stage then the workflow would pick the name from the approvers-> security lead...so if you select BPO in the stage where do we have to maintain the names of the BPO's.
    Thanks,
    Srinu

  • CUP Forks & Security Approver Determinator

    Hi All,
    We are currently working on our CUP workflows and are planning on using forms to distinguish between manual provisioning (systems such as MDM console) and autoprovisioning (ABAP and java stacks). My question is, when we use the fork condition NON-SAP and SAP, where does CUP look to determine this? We are planning on using applications to setup our manual provisioning systems but I also know we could create them as dummy "other" connectors (although messy).
    Also, what is the difference between Security Lead and Security approver determinators when configuring a stage? What IDs does CUP look at for these two? I only see Security Lead under Approvers.
    Thanks!
    Grace Rae

    Hi Grace,
    Forks only work for non-SAP connectors, so you's have to go for a dummy system if you really need fork. Alternatively you can chose an initiator based on roles, which will also allow you to fork the request on the first stage.
    The security approver determinator is a group approver which looks for everyone with the UME role "AESecurity" and routes the request to them in parallel.
    Frank.

  • Email Notifications through workflow for all Approved and Rejected Orders

    hi,
    i have to send Email Notifications through workflow for all Approved and Rejected Orders to the user who have submitted the order for approval.how could it be done.please send ur solutions.
    regards
    yesukannan

    Hi,
    An option would be use Oracle Alert. Create an event based alert on the table where you have order approvals or rejections. This alert will be raised after inserting or updating this table. Create an action linked to this alert, and choose message as action type.
    This setup can be done under Alert Manager Responsibility.
    Regards,
    Ketter Ohnes

  • Can not send mail from PR Workflow to the approver

    Dear all,
    I have issues about send mail from PR Workflow to the approver.
    Now when user create PR and the corresponding user can receive the workflow items in SBWP.
    But no email from the user to approver.
    If I assign authorization SAP_ALL to the user that create PR. The approver can recieve the workflow item PR in SBWP and email to their mail
    Can you tell me about the authorization that can allow the user to send the workflow item PR in SBWP and email to the approver?
    Now user can send mail to external and internal mail and I also configured the mail server in SCOT and can successfully send a mail to users in SO01 by manually creating a message.
    Now the approver not receive any email but can receive a workflow item in SBWP
    Regards,
    Pannee

    Dear all,
    Thank you for all suppport, Now I can solve issues.
    Regards,
    Pannee

  • Workflow for Document Approval

    Hi all,
    I'm a newbie to SolMan and is trying to figure out how to implement a workflow for document approval. A similar question has probably been posted in the past, but I can't find a definite solution, only some hints.
    Basically, what we're trying to achieve is the following:
    When a document is uploaded using SOLAR02, and the creator of the document changes the status to ready for sign-off, we would like to trigger a workflow which will send an email to a couple of persons who are responsible to approve the document. We already implement the digital signature, we just want to add an automatic email notification to be sent to the approvers.
    Based on my research, it seems that this is not supported by SolMan and hence we have to do a custom development.
    There's an object key called SOLMANDOC and we should raise an event (something like SIGNATURE_PROCESS_START) to send an email notification to the approvers. Can somebody confirm whether my understanding is right ? Does anybody know the name of the BADI that we can modify to achieve our goal ? 
    FYI, we're using SolMan Rel 7.01 SP 19.
    Thanks in advance
    Lara

    Hi Phil,
    I'm facing with problems with creating a simple 2 steps release strategy.
    the problem is I cant approve the last step of the release.
    This is what I did:
    In spro Digital Signature->Signature strategy:
    in "Define Authorization groups" I create this entries:
    1. EING
    2. VERIF
    in "Define Individual Signatures" I create this entries:
    1.  S1   EING
    2.  S2   VERIF
    in "Define Individual Strategies: I create this entries:
    SigStrat: ZSIGSTR
    Signature Method: R
    Display comment: X Required
    Display Remark: X
    Display document: X
    Verification: not checked
    in "Assign individual signatures"
    CtrIn  Indiv.SIG.      AGrpDIG
    1          S1               EING
    2          S2               VERIF
    Display Predecessor for Ctrln is 2 is 1
    for "Display release statuses"  an entry with one line with the value 1
    and in "Display individual signatures there 2 entries 1 and 2.
    in spro "Define Document status schemes"
    stat scheme "ZSIGSTR"
    4 status:
    Status                 init status      Sequence    Low     High       lock         Signature schma  End status         Cancel status
    COPY_EDITING       X                  10           10       20          -                    
    REVIEW                                     20           10        40        X                    ZSIGSTR         RELEASED    DECLINED
    RELEASED                                30           10        40        X                   
    DECLINED                                  40           10        20             
    I created two roles with object c_sign_bpr one with the value "EING"   and the other with the value "VERIF"
    I assign this status scheme to a document type in my project.
    I tried to release a document the first step was the author of the document move the status to "REVIEW" and I got a window that i need to enter my password and it worked ok.
    The problem is in the second step that I need to release the document (now is in a REVIEW status) When I press on the icon in order to release I didn't get the option to release only to cancel there is no "V" option in the small window.
    Can you please tell me if I did a correct customization? also can you tell me if my problem is maybe missing authorization? Can you direct me to reading material or to an example?
    Best regards
    Lior Grinberg
    Edited by: Lior Grinberg on Nov 28, 2011 6:22 PM

  • SAP GRC 5.3 CUP: Approver Determinator "Super Access Owner"

    Hi,
    when configuring a stage, a standard approver determinator called "Super Access Owner" could be selected.My question is where to specify the Super Access Owner in SAP GRC CUP? In the Config Guide of SAP GRC AC 5.3 a hint explains on page 145
    "If you select Superuser Access Owner as the approver determinator, the system
    fetches the configured owner from the SAP system where the Superuser Privilege
    Management is installed and assigns the request to that particular approver." 
    I do not really unterstand where to specifiy. Is it the former FireFighter in the backend.
    Did anybody user this Approver Determinator already?
    Thank you in advance.
    Marco

    Hi Marco,
    Yes this approver is defined in the backend Firefighter which is now Super User Privelege Management. The Firefighter ID owner will be taken as the approver if we select Super User Access Owner in the CUP request. This option is basically being provided for  Integration of Compliant User Provisioning and Super User Privelege Management for SAP GRC AC 5.3. You may now create a request to assign a Firefighter ID to a Firefighter in CUP and do not need to go to SPM for the same.
    In case you do not want to use this approver, please create a Custom Approver Determinator for the same.
    Hope this helps.
    Harleen

  • Create one workflow ( 2 level approval - manager and financial manager). An

    Hi
    I have requirement to Create one workflow ( *2 level approval - manager and financial manager).* And escalate it after 1 day to Financial manager's supervisor
    I have no idea about escalation through BPEL Compoiste in OIM
    Can please any help me out

    The status can be alerted and the task assigned to weblogic due to a fault in your process. Without looking at your process or the exception, it can be difficult to say what went wrong, but check if you have the user in the system to whom you are trying to assign the task to.
    As for escalation, you need to go through that link to configure escalations and in escalations you can select management chain as the route. This would escalate it to manager's manager if the manager does not work on the request for specified time. For other requirements around escalation, you will have to first get a basics right and working for you. Once you are done with that, you can post here any questions which you might have about making the complex ones and we can try to help.
    -Bikash

  • Approver determination using HR functions

    Hello,
    this is my first question on this forum, so be tolerant !!
    Has anybody ever used HR functions (assigned at position level (S) in org structure) and corresponding HR search paths to determine approvers, instead of using PFCG roles ?
    If yes, what are the constraints ? the gains against PFCG roles ? the performance issues ?
    Rgds
    Christophe

    Gordan,
    Approver determination in standard is independant from the role. It just get the first manager (hat in org. structure) of the requester, if no direct approver at requester level it goes to the next level, etc.
    Usually this is not sufficient for customer and they develop their own determination (badi for dynamic wkf or adhoc object for classic wkf). It is just abap coding so any solution is possible.
    About performance using HR path, I have no input. If you need to read all the organization and all beholders of the function, it certainly will be poor performance. If starting from requester and follow up the organization is enough, it should be the same as for the standard processing (manager or requester) .
    Rgds,
    Pierre

  • Workflow SharePoint 2010 -Approval workflow for multiple users

    Want to create a 2010 SharePoint server workflow which will allow me to send email once item is added > Start approval process > if approved then mark workflow status as approved and then send email to reviewer 2 and again start the process of approving
    > and approved then again mark status to approved and send email to reviewer 3 and mark status to approved if approved by reviewer 2 and end the workflow.Also, if the item is not approved by any user, then it should directly log a comment and go to end
    of the workflow.
    I had started as something like :
    Send Email to rev1
    Start approval process for current item with rev1
    if approval status is approved
    set workflow status to approved
    send email to rev2 and so on...everything works but when rev1 rejects the item, then workflow does not go to end of the workflow. One difficult thing is we don't have go to a step option like in 2013 workflows.
    I don't know how to move on as when I try to execute the logic, all three approval process(for 3 reviewers) run even if item is rejected .....Please help

    Check these links
    https://slingeronline.wordpress.com/2013/02/27/setting-cancel-on-first-rejection-on-an-spd-workflow/
    http://sharepointduffbert.com/2014/06/17/getting-an-spd-approval-workflow-to-cancel-on-rejection-or-change/
    https://social.msdn.microsoft.com/Forums/office/en-US/c212e5d7-f7bf-4f17-be16-374e02652dbb/reject-stop-workflow-not-working?forum=sharepointcustomizationprevious
    https://social.msdn.microsoft.com/Forums/sharepoint/en-US/a2d0a259-f8ca-48cf-b9ab-0c9387329502/sharepoint-designer-workflow-how-to-jump-back-to-previous-workflow-step?forum=sharepointcustomizationprevious
    Please 'propose as answer' if it helped you, also 'vote helpful' if you like this reply.

  • How to capture the Actual approver from BADI :BBP_WFL_APPROV_BADI

    If the approval branch(index) has 5 approvers and  If any one of them is approving,
    the APPROVAL_HISTORY_TABLE has all the 5 approvers of that branch.
    User1 is one of the 5 users.When he is approving,the approval table has all the 5 approvers and no where the actual approver of that branch is  captured.
    Can  we capture the actual approver based on Sy-Uname?
    Or is there any other specific solution?please suggest.

    Hello Kittu,
    Here is below process for BBP_WFL_APPROV_BADI BAdI call by function modul:
    BBP_WFL_DIN_APPR_CONTAINER_SET > BBP_WFL_DIN_APPR_FINALLIST_GET > BBP_WFL_DIN_APPR_CONTAINER_GET > BAdI BBP_WFL_APPROV_BADI.
    Now, check what's happened for first function module local variable lv_actual_index and local table lt_cont_approver
    coming from BAdI parameters ACTUAL_APPROVAL_INDEX and APPROVAL_TABLE.
    Maybe your BAdI method is not correctly implemented.
    Regards.
    Laurent.

Maybe you are looking for

  • Mail wont let me click 'send' button

    I have a problem and then some questions about my mail app. Below is a screenshot of my problems, the main problem is it wont let me click the 'send' button. The other problem is there is that triangly line symbol new to my windows live account and i

  • Using a foreign language with the Java I/O, and saving to flat file.

    I want to use a foreign language in my program, in particular, russian. I want to be able to input the russian text into a GUI and then save the data in a flat file as well as retrieve it again. I am able to save some type of data to the flat file bu

  • Safari not loading some pages

    I'm having trouble loading some web pages, e.g. can't log into these discussions except via Windows XP in VMware Fusion, and its the same on different macs on the home network and when using Firefox and Camino browsers. The problem is causing me some

  • Jdeveloper 11.1.1.4 Could not create MAR entry for file

    Hi i am using jdev 11.1.1.4.i checkout code from svn to jdeveloper . i tried to create EAR file for the application,but while creating EAR jdeveloper throwing some error message as shown below find similar thread JDeveloper Debugger Hangs Could not c

  • Cisco VPN client -install error

    Hi, I have a problem when i'm trying to install Cisco VPN client on my Windows 8.1 x64. After downloading 3 or 4 different versions of Cisco it keeps rising the same error concerning a DLL that is required. I'd really appreciate some advice or the re