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
Similar Messages
-
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
SangharshHi
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 -
SRM SC 'N' step workflow - Approver list wrong approver determined
Hi Team,
I am facing a repetetive issue for a SRM shopping cart N-step approval workflow.
Issue description:
1. The approver list populated in 'Subworkflow for n-Level Approval SC' step is incorrect.
2. The BADI for N-step determines correct approver (After running the BADI seperately)
3. The cost assignment (WBS) determined is correct, so no chance of incorrect approver.
Example:
As per WBS (say) E.008.01.02, the correct approver is 'A'.
The BADI when run separately gives 'A' as the approver - which is correct.
But, when the workflow is triggered and the approver list populated in the Sub-workflow step it gives approver as 'B'.
There is no link so as how this approver 'B' is determined.
I am unable to find the step where this BADI is populating this value (Code) and what could be the reason.
Appreciate your help as I am having a production emergency!
Many thanks.
Harsh DaveHi Vinoth,
The Task 14007989 deals after the approval list is populated.
If you observe the workflow log of a SC/PO, the step N-step workflow (sub-workflow) itself determines the approval list and then comes the step 'Determine Next Approver' - TS14007989.
I tried to where-used list and it just yielded two FM's - BBP_WFL_DIN_APPR_CONTAINER_GET & BBP_WFL_DIN_APPR_BY_RULE_GET.
But the 1st one is to get only approvers which are already determined in container & 2nd one checks for further approval required (Flag = 'X', see the FM interface).
This one doesn't help!
Thanks for your help, Let me know if you have any more findings on this! -
Workflow applet in approval preview (shopping cart) changed in SRM 5.0
Hi,
we have upgrade from EBP 3.0 to SRM 5.0.
The approval preview in the shopping cart transactions (f.e. BBPSC03) now shows only the approval state (in grahpic mode), not the step description from the workflow definition.
In EBP 3.0 was showed the step description.
How can we change the applet output ?
B.RauerHi
Please specify the SRM version(Support packs) details in next reply.
<u>Meanwhile, please go through the following SAP OSS Notes, which will definitely help -></u>
Note 798295 BADI workflow: SRM 3.0 upgrade to 4.0 approver list -> main
Note 748655 SC APPROVAL GRAPHIC PREVIEW NOT CORRECT FOR BADI APPROVERS
Note 843636 PO BADI WORKFLOW does not assign correct approvers
Note 861147 BAdI workflow: Adjusting step name to runtime
Note 883207 BBP_WFL_DIN_APPR_BY_RULE_GET: if BAdI not implemented
Note 713567 SRM-EBP-WFL: Limit is ignored in WS14000109
Note 923463 BAdI n-step approval - Container inconsistent for 1st step
Note 901068 BAdI Workflows: Enhancement of Note 896556
Note 898768 BADI Workflow: Determining current approvers
Note 861147 BAdI workflow: Adjusting step name to runtime
Note 688724 BADI workflow: Problems with substitute
Note 788584 BADI Workflow: empty WI_ID in approver table
Note 780021 BADI Workflow: subsequent approvers after rejection
Do let me know.
Regards
- Atul -
Basic questions in SRM for Workflows+need material
Hi All,
I have developed Workflows in SAP R3.I am very new to SRM. I have following questions -
1. What is the use of BADI when we implement Workflow? My understanding till now is to provide all approvers to the
Shooping Cart.That means for workflows without approval we dont need to BADI to implement.
2. Is there any other concepts more i have to know? Like in R3 Event will be triggered with help of change doc, status mang., LIS exceptions and all through SWEC tx. is it same in R3?
Sorry to ask very basic questions.
Can anyone provide me step to step guide to configure SRM workflows and Cookbook for SRM?
My Email id is [email protected]
It will be very helpful for me.
Thanks in advance.
AshwaniHi,
1.All the n step workflows(where approvers are determined dynamically) in SRM can be implemented only using the BADI "BBP_WFL_APPROV_BADI".the main purpose of this BADI is to fetch the Approvers/agents for the workflow.In addition to the n step WF,you also have no approval, 1 step and 2 step approval workflow in which the agent assignment can be done directly(no BADI reqd) and this is applicable for all types of business objects i.e. Shopping cart,Bid etc.For more details refer the foll link;
http://help.sap.com/saphelp_srm40/helpdata/en/17/40a86c773d6c41801d78af1a34b90f/content.htm
2.Work flow concepts are same as in R/3.So techincally you can create your custom workflows in the same way.
Do let me know if you need any further help.
BR,
Disha.
Pls reward points for useful answers. -
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 RayuduHello 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,
LinaHi,
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. -
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.
SrinuNo...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 RaeHi 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. -
SRM 7 workflow process deletion
Hello all gurus,
please forgive the question, I'm quite new on the argument; I searched a bit on the SDN but found no pratical solution on the issue... hints, suggestions and ref. to documentation or previous thread are welcome.
We are migrating from SRM 3 to SRM 7; we implement an extended classic scenario, and our documents (contract/po) can trigger specific workflows with different approval steps.
In case of errors execution a workflow process in SRM 3, we used to adopt the following procedure: once the workflow in error has been identified, we delete the workflow process via transaction SWWL. Then we manually adjust the document status situation in table CRM_JEST and we're ready to repeat the process, as when processed again, the document re-triggers the correct workflow. So far, so good.
The same approach seems not to be valid in SRM 7, as we've seen that deleting a wf process in SWWL leads to an odd situation; the interested document does not snap any workflow. It seems that some dirty information doesn't allow the system to recognize the document should be assigned to a new workflow process.
As far as we've seen, there are some DB tables which contain data w.r.t. workflow process: /SAPSRM/D_WF_000 /001 /003 and so on. There tables are not affected by the wf process deletion we perform in SWWL... maybe there's still something we're not taking into account.
Could you please provide us some details or hints to perform the above described procedure? Thanks in advance.Hi,
Please try this step.
1. Trasaction SWI2_DIAG, Identify the root cause
2. Fix the root cause
3. Restart workflow in SWI2_DIAG
Regards,
Masa -
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
yesukannanHi,
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,
PanneeDear 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
LaraHi 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 -
Hi ,
Can you please tell where can i<b> get material document for SRM EBP WORKFLOW .</b>
thanks in advance,
Regards,
Kannan.Pls. Go to following links
http://help.sap.com/saphelp_erp2005/helpdata/en/index_srmaddon.htm
http://help.sap.com/saphelp_srm30/helpdata/en/8b/4fa9585db211d2b404006094b92d37/content.htm
https://websmp104.sap-ag.de/ibc
Path :- Integrated Business Content> .... for mySAP SRM> Self-Service Procurement> Page 70
Re: Work Flow error - Shopping cart
Workflow problem
regards
Sanjay
Maybe you are looking for
-
I upgraded for Firefox 4 and now my HP SimplePass Identity Protection (biometric scanner) on my laptop will not work. WHY? It still works with IE but I don't use IE. It worked with the previous Firefox version but now when I use the internet, it does
-
Checking for storage location when picking
Hi all, I'm trying to put some code in the picking requirement to check whether user enters a storage location when they pick via program LV07A111. the storage location is in table LIPS (item table), however, this table is not populated at all. Do y
-
Named return value optimization
Hello, can anybody tell me wheather sun's CC does named return value optimization for local variables of classes without copyconstructors? Objects of classes with copy-constructor don't get optimized as you can see in the attached example... (functio
-
I use uTorrent but it will not shut down when i quit
I use uTorrent but it will not shut down when I quit
-
Multiple accounts wrong id when i try to update apps
i have two accounts authorized in my itunes, for my mom and i, but i decided to make my own so i did and there was no problem until a few days earlier.. when i update an app which i'm sure was on my account, it asks for my mom's account.. HELP PLEASE