Quantcast
Channel: SCN : Blog List - SAP Business Workflow
Viewing all 33 articles
Browse latest View live

Customer Connection call - SAP Workflow 2015 Update!

$
0
0

In case you did not know it, SAP has opened up a Customer Connection for SAP NetWeaver Workflow.  The initial call for this Customer Connection will take place February 13, 2015 (10:00 AM Eastern).

 

So, what is a Customer Connection?  Well, SAP has basically three paths for 'influence'.

The highest level, 'Vision', is organized by industry or strategic topic.  Strategic customers and thought leaders are organized into advisory councils and work on strategy and roadmaps of solutions.

 

The middle level, the Customer Engagement Initiative (CEI), allows SAP customers to work closely with SAP development teams to help create products and solutions that best meet the customers' needs.  There is currently a CEI going on about the Unified Inbox, Mobile BPM, and Process Orchestration on SAP HANA.  You can find more info about this particular CEI at Influence.sap.com - and search for 'unified inbox' but please note, you may need to log in using your SCN credentials.

Unified Inbox CEI.jpg

 

The final level of Influence is the Customer Connection - allowing SAP user groups and other special interest groups to collect and submit improvement requests.  Then the improvement requests are evaluated by SAP development.  Those that are supported by the most customers and are most feasible to develop may be released to all customers (not just those who participate in the Customer Connection) usually via Support notes or Support Packages.

 

You may recall several years back that SAP re-introduced the SAP Workflow Certification, and that a list of additional enhancements was also released.  I started blogging about this initiative here:

 

SAPMentors + ASUG +VNSG +SAP = #winning!

 

Special thanks to Martijn Wever, Stephane Haelterman (and of course, Ginger Gatling, Tammy Powlas, Mike Pokraka, Thorsten Franz and Matt Harding)

 

With the help of various user groups and passionate people, SAP did release some notes to upgrade our development and admin environments.

Some of those notes are listed here -   SAP Shows some love for SAP Business Workflow.  You may have been using this functionality and not even known that it was something that SAP customers requested.

 

Well, here we are again, with a brand spanking new Customer Connection!  Thanks to Ronen Weisz for his diligence!  And it is currently in the 'collection' phase, where YOU can submit your requests for improving the workflow development, runtime, administration, and user experience tools.  Sure, I know, we should all be using Fiori or UI5, but for those of us who are not there yet, this Customer Connection is an opportunity to relieve some pain points.

 

Today there are 217 people registered (on influence.sap.com) for this Customer Connection.  There are 53 ideas, and 250 votes (so far).

 

 

I could list out all of those 53 ideas here.  But I think it's more important for you to go and register for this Customer Connection and check them out for yourself.  (See, teaching you to fish, right???) And maybe while you're there, you'll also create your very own request.  And someday, maybe your request will become a reality.

 

And of course after that, workflow developers all over the world will praise your name. 

 

 

Well, maybe not that, but you never know.  It could happen, right?

 

ASUG Members may register for the kick-off call by clicking on this link:

 

 

https://www.asug.com/events/detail/NetWeaver-Workflow-Kickoff-2015

 

And those who are not members of ASUG may still register (of course, by logging in to influence.sap.com and following this project).  Failing that, please do send a message to Volker Stiehl or Daniel-Alexander Heller.

 

Because if we, the customers and partners who use SAP Workflow day in and day out don't sign up to help make it better, then...

 

“What you're supposed to do when you don't like a thing is change it. If you can't change it, change the way you think about it. Don't complain.”

  ― Maya Angelou, Wouldn't Take Nothing for My Journey Now


Looking forward to hearing your suggestions,

Sue



Notes from the SAP NetWeaver Workflow 2015 Customer Connection Call

$
0
0

Hi all,

Below are my rough notes from today's Customer Connection Call for SAP NetWeaver Workflow 2015.  Apologies for any and all typos.  Misrepresentations are solely mine.  I'd like to give a shout out to a few folks who have been instrumental in this project so far... FIRST  Alan Rickayzen, who has always had the back of Workflow people, Ronen Weisz, who worked very hard to get this Customer Connection started, Mike Pokraka, who 'volunteered' to come up with tags which we will use to help categorize requests, Martijn Wever and his colleagues from @VNSG, who are always ready to do some heavy lifting, and Tammy Powlas who probably took much better notes than I did.

 

Workflow Customer Connection Call, Feb 13, 2015

 

The Invitation:

Agenda:

•       Influencing via Customer Connection

•       Focus Topic project timeline-scope

•       Process & Tools

If you are interested in getting to know more details about the program please visit our collaboration site:Customer Influence.

Here you will find presentations and videos explaining the goals and process in detail.

Please use the web conference link and phone numbers below to dial in.

In case of any questions please do not hesitate to contact me upfront.

 

Heller, Daniel-Alexander daniel-alexander.heller@sap.com

Heike Kalwak is running the call.

 

 

 

First, some background blogs on this initiative:

 

http://scn.sap.com/community/bpm/business-workflow/blog/2014/11/03/customer-connection-call--sap-workflow-fall-2015

http://scn.sap.com/community/bpm/business-workflow/blog/2015/01/22/customer-connection-for-workflow--2015

http://scn.sap.com/community/bpm/business-workflow/blog/2015/01/29/customer-connection-call--sap-workflow-2015-update

 

 

The Workflow community has a great history of working hand and hand with SAP to get improvements to this tried and true (evergreen) technology implemented.

custcon01.jpg

slide source: SAP

 

The recording will be posted on Influence.sap.com


Mandatory legalese:

ie: SAP is not making any promises, OK?


custcon03.jpg

 

slide source: SAP

custcon04.jpg

slide source: SAP


53 people on the call at this time.  Since we are talking about an existing product (heck, it’s been in existence for almost 19 years, right?) - so we are in the Customer Connection phase, not the Customer Engagement or Co-Innovation Councils.custcon05.jpg

slide source: SAP


The development team evaluates all submitted improvements so not all requests will be implemented.  Some may just not be feasible.

There will be milestone calls too.  And via Influence.sap.com, continuous feedback loop where updates are posted.

 

Even if you are not interested in SAP Workflow, you should visit the Customer Influence site so you can see if there are improvements for the SAP areas you ARE interested in!  (SAP Improvement Finder)

 

Alan Rickayzen takes over.

custcon06.jpg

slide source: SAP

 

Gracious and charming and brilliant as always.

There have already been internal discussions in the development group as to what *they* would like to deliver as well.

About 50 requests so far.  Based on development capacity (as well as the level of difficulty) requests will be prioritized

  • Takeaway – Clean up your requests – be specific about the problem and the impact on end users and administrators, but don’t necessarily be trying to write the solution

The call was pretty much all developers, administrators, and SAP partners.

Alan praises us for long hours in development, but at the end of the day, a workaround may be feasible.  Our users don’t care necessarily whether we had to type in extra code or extra bindings. So there will be a focus on the end user functionality and on the administrative tasks.  That does not rule OUT enhancements to the development environment, as we all know that if a developer has to go to great lengths to achieve a solution  - that will also make the usability and administration of the workflow more difficult.

For example:  Inbox Column formatted according to dates in various geographical formats.  We could all envision how this could be helpful, but it may be doable by workaround.

Workload analysis – who substitutes for whom – seems to make sense.   – my 2 cents, after long years of doing this – substitution and trying to backtrack to see who was a substitute for whom at a specific period of time is very difficult.

 


Comment:  Florin Wach   How particular requests are chosen…. Because it is important that the end user and the administrator have improvements – agreed. But asks also that the development for developers be improved because that makes it easier for the admin.


PROJECT TIMELINE:

custcon07.jpg

slide source: SAP

 

We are starting the Collection  Phase now. So far there are 57 improvements in the tool.  The end of collection phase is April 2, 2015.  The Selection Call will be in June 2015.

Takeaway:   Get other customers to subscribe (at least 5 customers) to subscribe to your request.


Delivery Call December 2015!!!

Takeaway:  Have your conversations about requests on the Influence.sap.com platform.  That way,  all customers and SAP developers can also see the conversions.

Request owners should be ready to be contacted to explain their requests in detail, and also to support the testing of these requests.

 

custcon08.jpg

slide source: SAP


And a little chatting...

 

(g) Samuli Kaski: In the Customer Influence collaboration tool, would it be possible to categorize the requests, e.g. WF runtime, Inbox, Gateway, etc?

(g) Jake Schmidt: Analytics report....we've got SWI2_DURA, we don't need anything beyond that

(g) Mike Pokraka: Good point, at 50+ it's already getting messy. Perhaps we could use tags?

custcon09.jpg

slide source: SAP

 

You submit it, you’re the owner.  There is some expectation that you will act as a central point of contact, support the development phase, and optionally, become an active reference.

Mike Pokraka will develop a system of tags for request owners to use to help us categorize their requests.

 

 

 

custcon10.jpg

slide source: SAP


 

g) Mike Pokraka: A few people already added tag, we should just try to standardise them and tag the existing requests

(g) Sue Keohan: @mike - Agreed. Are you taking an action item to come up with the tags?  :-)

(g) Mike Pokraka: Me and my big mouth, OK :-)

(g) Sue Keohan: @mike - good lad.

(g) Sue Keohan: @mike - I am sure you can handle it.  :-)

(g) Mike Pokraka: No prob ;-)

(g) Sue Keohan: Again, advice to all: Be very detailed (and use Mike's tags) when submitting your requests - or editing them.  This will eliminate a lot of back-and-forth, and help everyone understand what the problem is and if we share that problem.



custcon11.jpg

slide source: SAP


Using the Navigate To panel, click on Products, below Database and Technology you will find Business Process Management and Integration.  And here you see nothing because you’re not logged on. You need to REGISTER!!!

 

Once you’ve logged in, you’ll see SAP NetWeaver Workflow 2015. 

custcon12.jpg

slide source: SAP


 

Example of a submitted request:

 

custcon13.jpgcustcon14.jpg

slide source: SAP


 

custcon15.jpg

slide source: SAP

 

This is where the recordings will be – under documents and events.

Mark your calendars, March 26 for final call of collection phase.

 

 

 

custcon16.jpg

slide source: SAP


 

More chat excerpts:

 

(g) Sue Keohan: Oh, and new request just came in!   BSVW Support for OO ABAP (not just BOR)" (D8320) was added to the Focus Topic "SAP NetWeaver Workflow 2015

Alan Rickayzen: Yep... no traffice jam, and the tool is not Jam either (but I love both tools)

(g) Sue Keohan: How many people on the call right now???

(g) Jake Schmidt: I'm putting in more requests

(g) Samuli Kaski: Thank you all, have a nice weekend!

(g) Florin Wach (germany): thx & goodbye

Alan Rickayzen: about 50 Sue

(g) Sue Keohan: Thank you Heike - sorry to keep you so busy with the chat!!!

(g) Sue Keohan: Thanks alL!  Lets get to work!!!!!!!

(g) Mike Pokraka: Thanks all


I think Mike said it best.  Thanks all. I look forward to seeing how well all the WFers out there can collaborate and help make things even better.


Changing CCMS attributes - cutting down on Alarm Fatigue

$
0
0

Changing the attributes of CCMS Monitors – cutting back on Alarm Fatigue


Alarm Fatigue  is a real thing.  Think about it, in a medical environment (I hope you've never experienced this) there are all kinds of monitors hooked up to the patient, to alert staff if something goes wrong.  The problem is, with all these things beeping and binging, the people in charge of your health care can become desensitized to these very alarms, at times with very serious repercussions.

 

While I am not comparing medical care to running your SAP(SRM) system, I fear that sometimes, we produce more alerts than are necessary.


Background:  In SRM7, the application monitors can throw exceptions which, in your own particular implementation are not necessary.  In my example, we are using Application-Controlled Workflow (AC) and have our own linkage to events (inherited from SRM5).

When a user changes a Shopping Cart for example, the system is configured to deliver an error message if ‘no workflow is found’ – but we have this situation under control with our custom workflows.  There is (I suppose) no real harm in these extra notifications, except that they create a lot of noise, which can lead to 'SRM Monitor Fatigue'.http://en.wikipedia.org/wiki/Alarm_fatigue


NB: Check with your Basis team before doing this!  They may have more insight into these alerts than you do.


NB2: I am not a CCMS expert. I am a simple Workflow Developer. Don’t take anything I say here as gospel, and please don’t ask me for any details on CCMS!


Having said that, I went into transaction RZ20.

Drill into ‘Approval’ under SAP EnterpriseBuyer Monitors

 

Select the SAP EnterpriseBuyer Monitors and drill into Approvals.

 


Then choose ‘Open Alerts’.  The next screen shows you the details of each alert.  Click on the '+' to open the alerts and see which ones are in a red status.

On this screen, choose one of the alerts (for BUS2121, for example) and choose Properties.

 


 

On the following screen, we change the ‘When should a message cause an alert’ to ‘NEVER’.

 


These changes are not transportable – at least they were not for me.  They needed to be manually done in each system.


Result?   My SRM colleague has fewer application errors which require his/her attention.  Those application errors that do occur are ‘real’ – not just false alarms.


Have you done anything to eliminate Alarm Fatigue today?


Cheers.

Workflow BPM Community Newsflash

$
0
0

1. The SAP NetWeaver Customer Connection call will be March 26, 2015. 

Details can be found here: 

https://www.asug.com/events/detail/NetWeaver-2015-Final-CC


2. ANNUAL CONFERENCE Update!

For the tenth year, we will be co-located with SAPPHIRE increasing the value to you and your organization to attend this always successful event. Once again this year, the one registration fee gives you access to both events.

Register today!

 

Workflow sessions being presented at Annual Conference are as follows:

  • My Inbox in Fiori – simplifying the workflow experience for end users
  • Case Study: How Woodgrain Millwork Embraced BRFplus to Manage Custom Business Rules within Its SAP Landscape
  • Using Workflow to Manage Employee Vendor Data
  • Audit driven SAP Inbox Subsitution

 

We are excited to announce that the Agenda Builder is now live on sapandasug.com. We encourage everyone to visit this page and review sessions.:

 

Did you know that Michael Strahan is the keynote for the ASUG keynote?  Or perhaps that a little known vocal artist named Jennifer Lopez (we call her J Lo) will the musical guest? 

 

Also join ASUG on May 4th for ASUG Pre-conference sessions: Register here: http://www.sapandasug.com/pre-conference.html - featuring Hands-on SAP BusinessObjects BI 4.1 w/ SAP NetWeaver BW Powered by SAP HANA – Deep Dive.  See details here: http://bit.ly/ASUGPreConBI

 

3. Reminder to Register: Upcoming ASUG Workflow and BPM SIG Webcasts!

Take advantage of the networking and educational opportunities included in your ASUG membership - please join the ASUG Workflow and Business Process Management (BPM) Special Interest Group (SIG) for these upcoming webcasts:

March 12: Generic Mobile Workflow

March 26: SAP Customer Connection for SAP NetWeaver Workflow 2015 Final Call webinar

March 31: SAP Fiori Inbox

June 1: Top 10 Tools for Workflow Administrators

We look forward to seeing you at the next webcast and in person in Orlando at ASUG Annual Conference.

 

March 2015 - SAP NetWeaver Workflow 2015 Customer Connection Call

$
0
0

The final call in the Collection Phase of the Customer Connection for Workflow took place today.  If you want to read some background on what the Customer Connection Program is, I've written about it here.

 

You can of course feel free to scroll down for screen shots and comments that took place during this call.  But I'll give a brief overview now.

There were 56 requests when this Customer Connection officially kicked off in February (this is because the Customer Connection was originally slated to begin earlier, so people did have some lead time to enter their requests).  Now there are 86 requests.  These requests range from everything like 'Add the logging of Subsitutes' to 'Increase length of INSTID within structure SIBFLPOR' - so you can see we have a wide variety.

 

These requests have been entered by SAP Customers and Partners around the world, and in the next few months, SAP will be evaluating them according to the scope of this program, which is mostly related to requests that will improve the end-user experience and/or make the life of the workflow administrator/developer easier.

 

If you or your users are working with SAP Workflow, there is still time for you to go to Influence.SAP.com and sign up for this Customer Connection.  If you have already signed up, the most important thing you can do is to go and subscribe to the requests that are already out there.

 

The general rule is that if a request has 5 or more subscribers and is not out-of-scope, it will be considered for evaluation.  But if a request has no subscribers, how important is that for SAP to work on?  Probably not very.

 

So please do go to Influence.sap.com and if you are already subscribed to this Customer Connection, check out the other requests and determine which ones are the most important to you and your business.  If you are not already subscribed to the Customer Connection, there is still time to do this!  And while you're there, why not browse around to see what other Influence activities can benefit your business? 


In case you think that all these Customer Connections and Customer Engagement Initiatives are really just non-events, please see the slide below.  These were related to an earlier Customer Connection, and the individual requests have been implemented via OSS note. 

custconmarch09.jpg



Official slide deck follows....

CustCon pics.jpg

Source: SAP

custconmarch04.jpg

Source: SAP


custconmarch05.jpg

Source: SAP


55 of the requests already entered have qualified to evaluation - that is, they have 5 or more subscribers.  The remaining requests do not yet have the requisite number of subscribers, so while they MIGHT be evaluated, they also might NOT.


custconmarch07.jpg

Source: SAP

Some of the requests are related to Generic Object Services, and the responsibility for GOS is with another team, but if it's determined these requests are specifically related to the workflow framework, they will be in scope.

custconmarch08.jpg

Source: SAP

 

 

My key take-away was that we all need to focus more on the existing requests and prioritize rather than just plunking new requests in.

SAP will be sending FBA (Feedback Agreements) to the owners of Individual Requests. 

Creating a workflow for z-objects

$
0
0

Lately, for some reason, I have been doing a lot of workflows for z-objects, I don't know, maybe all the purchase requisitions already have workflows or that it's me. For example: an employee's request for external employment, a request for creating a new material etc. 

 

The first thing you need to remember is that (as usual) you are not the first person to see the customer requirements, this leads a lot of times to the implementation being based on the module of the person assigned to the task, (excuse me dear PM consultants – you have a great module – it has a tendency to be misused because of that).

 

Here are a few reasons for the use of standard objects:

A misconception that workflow must be based on a standard object

Change documents

Links to documents (DMS or archive link for example)

A z-table, number range for the storing the data and a screen for displaying it are needed.

 

And here are reasons not to:

Usually there is no actual link to the standard object created and a lot of user exits/BADIs are required.

Updated to the module during upgrades have unexpected results on your workflow.

Simplify the workflow

 

The solution depends on the situation (how far are you from the standard object, what development capabilities are available) but lets say a z object solution has being selected.

 

Creating a new object based on the z-table's key is very simple, if there is a link to a standard object, create it as an attribute, for example an employee's loan request can have the employee object as an attribute – in this case (HCM) there probably will be a 9000 infotype created.

 

Use the events on the z-object: an employee can request a loan, vacation, new equipment etc. There is no real need to have all these workflows events on the employee or bus1065 objects.

 

If possible, and a screen is developed to display the data, request that it will be created as a function module and not a program. It's easier to read a return parameter from a function than trying to get data back from an event raised by a program.

 

If the screen is to be used in the workflow, remember that you need to have control of the buttons of the screen and a 'step' importing parameter will be needed. Common screen options are:

  • Start the workflow
  • Approve/reject
  • Rejection handling (return to approval/delete)
  • Display

 

A return parameter will also be needed or, in case of a program, events will be to be raised based on the decisions.

 

At the end of the process, usually a standard object will be created, create this as an object returning from the last method of the workflow, this will give the users the option to see the creation workflow from G.O.S of the relevant transition, for example an approved request for a new material should be visible from transaction MM03 if you created the BUS1001006 object in the end.  

 

P.S

Yes, of course, a class can be used as well. Some might argue that since it's a new workflow it's even better to create a class. Well, use the best option for the situation.     

Workflow and WebDynpro with asynchronous tasks

$
0
0

Normallyfor the SAP Business Workflow with the transaction SBWP classic Dynpros areused foruser interaction. Now I hadtherequirement to combine SAP Business Workflow with WebDynpro (WDA) to substitute the classical Dynpro.

The reasonwas theWebDynproadvantageover classical Dynpro.


For that i had first to create two classes:


1. WF-Class (Z_WD_WF_CLASS)


Create a class which is used in the wf task (In this case Z_WD_WF_CLASS).Thisclassrequiresthe interface IF_WORKFLOW, butan implementationis not required.

This classstarts the WebDynpro application using theWF-task (Step 4.).

 

 

 

On the method OPEN_WD of class Z_WD_WF_CLASS the WebDynpro application is started. TheWI_IDis passed as aURL parameter.




class Z_WD_WF_CLASS definition  public  final  create public .
public section.  interfaces BI_OBJECT .  interfaces BI_PERSISTENT .  interfaces IF_WORKFLOW .  class-methods OPEN_WD    importing      !_WORKITEM type SIBFLPOR    returning      value(_WI_OBJECT_ID) type ref to Z_WD_WF_CLASS .
protected section.
private section.
ENDCLASS.
CLASS Z_WD_WF_CLASS IMPLEMENTATION.
METHOD open_wd.  DATA lt_parameters TYPE tihttpnvp.  DATA ls_parameters LIKE LINE OF lt_parameters.  ls_parameters-name = 'WI_ID'.  ls_parameters-value = _workitem-instid+20.    "Name muss so sein  APPEND ls_parameters TO lt_parameters.  CALL FUNCTION 'WDY_EXECUTE_IN_BROWSER'    EXPORTING
*     PROTOCOL                =      application             = 'Z_WD_WF_FORM'      parameters              = lt_parameters
*     TRY_TO_USE_SAPGUI_THEME = ''    EXCEPTIONS      invalid_application     = 1      browser_not_started     = 2      action_cancelled        = 3      OTHERS                  = 4.  IF sy-subrc <> 0.
* Implement suitable error handling here  ENDIF.
ENDMETHOD.
ENDCLASS.


2. WF-Event-Class (Z_WD_WF_EVENT_CLASS)


This classalsorequiresthe interfaceIF_WORKFLOWand has twoevents(APPROVE and REJECT), which can befiredon the WebDynpro application. Thelink to theWF-task is a GUID.

 

The staticmethod GET_EVENT_OBJECT createsan object of class Z_WD_WF_EVENT_CLASS with a GUID, which will be passedto the WF-task data binding (Step 4). The other methodsarenecessary to the useof the WFtaskwith the class.

 


class Z_WD_WF_EVENT_CLASS definition  public  final  create public .
public section.  interfaces BI_OBJECT .  interfaces BI_PERSISTENT .  interfaces IF_WORKFLOW .  events APPROVE .  events REJECT .  methods CONSTRUCTOR    importing      !I_GUID_16 type GUID_16 .  class-methods GET_EVENT_OBJECT    returning      value(RO_EVENT_OBJECT) type ref to Z_WD_WF_EVENT_CLASS .
protected section.
private section.  data M_GUID_16 type GUID_16 .  data M_SIBFLPOR type SIBFLPOR .
ENDCLASS.
CLASS Z_WD_WF_EVENT_CLASS IMPLEMENTATION.
method BI_OBJECT~DEFAULT_ATTRIBUTE_VALUE.
endmethod.
method BI_OBJECT~EXECUTE_DEFAULT_METHOD.
endmethod.
method BI_OBJECT~RELEASE.
endmethod.
METHOD bi_persistent~find_by_lpor.  DATA lo_wd_wf_event TYPE REF TO z_wd_wf_event_class.  DATA l_guid_16 TYPE guid_16.  l_guid_16 = lpor-instid.  IF l_guid_16 IS INITIAL.    RETURN.  ENDIF.  CREATE OBJECT lo_wd_wf_event    EXPORTING      i_guid_16 = l_guid_16.  .  result = lo_wd_wf_event.
ENDMETHOD.
METHOD bi_persistent~lpor.  result = m_sibflpor.
ENDMETHOD.
method BI_PERSISTENT~REFRESH.
endmethod.
METHOD constructor.  m_sibflpor-catid = 'CL'.  m_sibflpor-typeid = 'Z_WD_WF_EVENT_CLASS'.  m_sibflpor-instid = i_guid_16.  m_guid_16 = i_guid_16.
ENDMETHOD.
METHOD get_event_object.  DATA lo_system_uuid TYPE REF TO if_system_uuid.  DATA l_guid_16 LIKE m_guid_16.  lo_system_uuid = cl_uuid_factory=>create_system_uuid( ).  l_guid_16 = lo_system_uuid->create_uuid_x16( ).  CREATE OBJECT ro_event_object    EXPORTING      i_guid_16 = l_guid_16.
ENDMETHOD.
ENDCLASS.


Now I can use the classes in the workflow:

 

3. Workflow

 

Createanyworkflow.For this example,I createdthe following workflow.

2015-04-03 15_34_57-Workflow Builder - Display 'z_wd_wf'.png

4. asynchronous task

 

 

 

 

The class Z_WD_WF_CLASS withthe OPEN_WD methodis used forobject methodof the WFtask. TheseWF-task must be asynchronousbecausethe WFtaskis terminatedby an event.

 

 

2015-04-03 15_36_06-Standard Task_ Display.png

A containermust be created fortheEvent class Z_WD_WF_EVENT_CLASS.

2015-04-03 15_42_05-Standard Task_ Display.png
This allows the twoeventsAPPROVE andREJECTare enteredin the tab "Terminating events".

2015-04-03 15_41_24-Standard Task_ Display.png

 

Data bindingpasses theObjectClassXXpassed with theGUID.


 

 

Furthermore, theWeb Dynpro applicationis required:

5. WebDynpro




 

WDDOINIT in the Componentencontroller:

 

InWDDOINITisthe IDof the workitemthat has beenpassed through theURL parametersqueried.


The workitemIDis passed totheFubaSAP_WAPI_READ_CONTAINER. Thus, thecontainercontents of Z_WD_WF_EVENT_CLASS of theworkitemcanbe determined.

The objectofthe containeris passed tothe WebDynpro.

 

METHOD wddoinit .   DATA lo_nd_wf_info TYPE REF TO if_wd_context_node.   DATA lo_el_wf_info TYPE REF TO if_wd_context_element.   DATA ls_wf_info TYPE wd_this->element_wf_info.   ls_wf_info-wi_id = cl_wd_runtime_services=>get_url_parameter( name = 'WI_ID' ).
 *   lo_nd_wf_info = wd_context->get_child_node( name = wd_this->wdctx_wf_info ).   lo_el_wf_info = lo_nd_wf_info->get_element( ).   lo_el_wf_info->set_static_attributes(      static_attributes = ls_wf_info ).
 *********************************************************
 *  GET EVENT
 *************************************************************   DATA l_workitem_id TYPE swr_struct-workitemid.   DATA l_return_code TYPE  sy-subrc.   DATA l_ifs_xml_container TYPE  xstring.   DATA l_ifs_xml_container_schema  TYPE  xstring.   DATA l_task_id TYPE swr_struct-task.   DATA lo_container          TYPE REF TO if_swf_cnt_container.   DATA lt_simple_container TYPE STANDARD TABLE OF swr_cont.   DATA lt_message_lines TYPE STANDARD TABLE OF swr_messag.   DATA lt_message_struct TYPE STANDARD TABLE OF swr_mstruc.   DATA lt_subcontainer_bor_objects TYPE STANDARD TABLE OF swr_cont.   DATA lt_subcontainer_all_objects TYPE STANDARD TABLE OF swr_cont.
 *  DATA lo_wf_event TYPE REF TO /kibf/nacl_wf_event.   DATA ls_sibflpor TYPE sibflpor.   DATA l_guid_16 TYPE guid_16.   l_workitem_id = ls_wf_info-wi_id.   CALL FUNCTION 'SAP_WAPI_READ_CONTAINER'     EXPORTING       workitem_id              = l_workitem_id       language                 = sy-langu       user                     = sy-uname       buffered_access          = 'X'     IMPORTING       return_code              = l_return_code       ifs_xml_container        = l_ifs_xml_container       ifs_xml_container_schema = l_ifs_xml_container_schema     TABLES       simple_container         = lt_simple_container       message_lines            = lt_message_lines       message_struct           = lt_message_struct       subcontainer_bor_objects = lt_subcontainer_bor_objects       subcontainer_all_objects = lt_subcontainer_all_objects.   cl_swf_cnt_factory=>create_task_container(  EXPORTING    im_task_id        = 'TSXXXXXXXXX' "ID of the WF task  IMPORTING    ex_task_container = lo_container    ).   TRY.     CALL METHOD cl_swf_ifs_conversion_base=>if_swf_ifs_conversion~import_from_ifs_xml     EXPORTING       ifs_xml_stream        = l_ifs_xml_container       target_container      = lo_container
 *    import_param          = 'X'
 *    export_param          = 'X'
 *    local_elements        = 'X'
 *    no_system_elements    = SPACE
 *  IMPORTING
 *    num_elements_imported =
 *    error_handle          =       .   ENDTRY.   TRY.       CALL METHOD lo_container->if_swf_ifs_parameter_container~get         EXPORTING           name       = 'Z_WD_WF_EVENT_CLASS'         IMPORTING           value      = ls_sibflpor
 *         unit       = <fs_unit>           returncode = l_return_code.       l_guid_16 = ls_sibflpor-instid.       CREATE OBJECT wd_this->mo_wd_wf_event_class         EXPORTING           i_guid_16 = l_guid_16.     CATCH cx_swf_cnt_elem_not_found .     CATCH cx_swf_cnt_elem_type_conflict .     CATCH cx_swf_cnt_unit_type_conflict .     CATCH cx_swf_cnt_container .   ENDTRY.
 ENDMETHOD.

V_MAIN->ONACTIONAPPROVE

 

When the user selectsan action, the event objectis usedand firesthe appropriate event(inthis exampleAPPROVE).

 

METHOD onactionapprove .   DATA ls_sibflpor TYPE sibflpor.   ls_sibflpor = wd_comp_controller->mo_wd_wf_event_class->bi_persistent~lpor( ).   TRY.       cl_swf_evt_event=>raise(          EXPORTING            im_objcateg = ls_sibflpor-catid            im_objtype  = ls_sibflpor-typeid            im_event    = 'APPROVE'            im_objkey   = ls_sibflpor-instid
 *    im_event_container =       ).     CATCH cx_swf_evt_invalid_objtype .     CATCH cx_swf_evt_invalid_event .   ENDTRY.   COMMIT WORK.
 ENDMETHOD.



In the instance linkages (transaction SWEINST) you can see the link between GUID (Object Key) and workitem ID (Receiver Key)


Result


By clickingon the button "APPROVE" the event "APPROVE" is fired, thereby terminating the WFtask.


 

 

Thereafter, theentry in theinstance linkagesisno longer included.

 

 

Other suggestions?

Fiori Inbox - How?

$
0
0

As part of the continuous improvement SAP has come up with various workflow approval options for SAP business workflows which gives the user various options to execute applications using workflows.

 

SAP has tried to separate the applications from business workflows specifically in few areas of HCM like travel management and leave however this approach has confused a lot of customer in case of usage.

 

SAP today provides following workflow execution options.

 

1. POWL

2. Unified Inbox

3. Fiori Inbox

4. SAP ERP inbox

5. Universal Inbox in case of JAVA stack

 

Unknowingly SAP has created complexity for self however the reality differs.

 

With the release of SAP Fiori Inbox SAP provides the most unified way of executing workflows from one application across all platforms and devices.

 

A user as in any role can logon to Fiori inbox using his/her tablet, mobile or desktop. The application adopts according to the device used.

 

1.gif

A Fiori inbox typically looks as shown above on a desktop. The inbox is capable to execute SAP and NONSAP workflows and we will talk about how can it be achieved.

 

In today's world we have HCM, SRM, CRM having different technology used. We use java, BSP, SAP GUI, SAPUI5 and other various applications and objective of any implementation must be to integrate all these under one roof.

 

Lets get to business instead of talking at high level.

 

We have above scenario where a leave application is being sent to manager by employee, one as manager can take the action using the green and red buttons from your mobile or desktop. However you want the manager to see more details of applied leave apart from over view then you can click on open task and you can launch any application in the open task.

 

For example we cab launch a webdynpro application on click of open task as shown below from desktop.

 

1.gif

 

 

The quick question that occurs in everyone's mind is that how can this be done hence lets talk about that.

 

There is a class CL_SWN_URL_GENERATOR  which picks up values of task parameter that we store in SWFVISU transaction.

 

Which means that in above case the Sapnamespace, application, webdynpro component and dynpro parameter is picked by class CL_SWN_URL_GENERATOR.


Let's look at the methods of this class.


1.gif


 

The class carries each method that creates application url for different applications like webgui, ITS, java and abap webdynpro and BSP.


Let's look at a bit of configuration required here. The configuration would depend on the gateway strategy. This configuration can be part of gateway system.


1.gif  

When you maintain the task name and decision options you can follow below example. Please note that the parameters totally depend on the applications. The parameters are very much maintained in SWFVISU and in case of above step below is what you will configure.

 

1.gif

1.gif

The decision text configured above will be visible as button text. You can enable or disable a comment field. Please note this comment field value is not stored in the workflow hence if you have a specific comment field in application or workflow then please do not expect this comment to match with the same.

 

I recommend you to keep above comment field unchecked as in most cases either workflow step or application has comments option.

 

Please note that to get the Step ID you will have to check your workflow.

 

Another example of how request can be configured for another process is shown below.

 

1.gif

 

1.gif

After above configuration if you check the training request then below is how it would look in the Fiori Inbox.

 

1.gif

If you choose to open the task and view the details then below is the reference screenshot which your desktop browser will open.

 

1.gif

you can check course details by clicking links under Objects and attachments.

 

1.gif

 

 

Please make sure you also complete scenario definition configuration.

 

1.gif

Define scenario

 

1.gif

 

Consumer definition

 

1.gif

You can define a role which can be assigned to consumer as shown below.

 

1.gif

 

You need to define a system that the task gateway has to use. As generally if you have external gateway then this application would read the workflow from ERP system.

 

1.gif

 

ERP_TASK would be defined in SM59 which will point to the ERP system.

 

This completes your scenario based task definition and this definition will refer to the parameters that are defined with the SAP Business Worklfow in SWFVISU and pull the respective parameter to form different URL.

 

With the effective usage of Fiori inbox you have single point of source in the system that can help you execute your process from Desktop Tablet and Mobile phones.

 

We have implemented the Fiori Inbox for a customer and the results are effective.


Using the HR organizational structure in workflows

$
0
0

This is a little follow up for this Whether or not to use HR organizational module in workflow rules?. In it I mentioned in it that there are problems you will have to overcome if you decide to use the HR organizational module, for example for approving an employee absence, course etc. Here are a few attempts to solve those problems:

 

Organizational structure

The first solution is to go up the organizational tree. There is a flag in the T77S0 table (WFLOW VAPOS) which will cause the standard rules (168) to go up the org structure if the position is empty. This will help in some cases, but is not a perfect solution since the higher level might not want to handle workflows of lower level employees/processes see for example the 3-rd story in A few workflow stories Or just have too many employees to handle in this case (let say 2 lower level managers are missing in the same time).

 

I recommend using a responsibility type rule based on organizational unit, so you can direct the workflow of employees assigned to this unit to a specific user. The rule is based on the org unit key and a function module based rule which calls it.

 

Org unit key 50001234 for example will be assigned to user A as the responsibly holder bypassing the regular org structure and sending all workitem that should go to the manager of 50001234 to user A if no user is assigned to the rule in the responsibility rule get the org unit manager using RH_GET_LEADER function module.

 

This is not designed to bypass an HR admin but to solve situations where:

 

  • The manager is not there, for example he/she retired and a formal replacement has not being selected yet, in this case this is a temporary solution and new manager will be selected so the time of the assignment should be limited since a new employee will be selected as manger in the future.     
  • High ranking Organizational units, let's say directly under the CEO, for example the company's legal advisor usually there is a specific employee which handles HR requests related to them.

 

Finding a specific level in the org structure 

 

Another common issue when creating HR workflows is that you require a specific level in the organizational structure, for example department manager.

There are usually definitions for this in the HR org structure made by the HR team, for example a relationship between the position/org unit and a customized object defined for this, is this case there should be an evaluation path with leads to it that you can use using function module RH_GET_STRUCTURE.

It is a good idea is you are working with HR workflows that you understand the concept see https://help.sap.com/saphelp_erp60_sp/helpdata/en/c5/e4b2c8453d11d189430000e829fbbd/frameset.htm  for more details – did you know that the workflow responsibility rules use an evaluation path following the relationships from org. unit to position, person and user to find the workitem agents?  

It is also important to pay attention that you need to handle end cases, for example no department manager since employee's direct org. unit is a division.

 

Using the HR evaluation paths is also an option for maintaining replacement approvers by creating a z relationship linked to the org unit and the replacing manager and changing the workflow rules to follow a relevant evaluation path.

 

Mails

An important point to remember is that a lot of times the manger will have a personal assistant and mails will have to go to them in addition or instead of the manager. Again the HCM evaluation paths are the most likely solution to help you find them.

It is also good to know that the employee's mail is maintained in infotype 105, subtype 10. For example to inform them about a promotion approval, since the employee might not be a user and the workflow was started by the HR team and approved by the manager. You need the employee's mail to send the congratulation mail.

SELFITEM delegation

$
0
0

Introduction

 

It is a typical requirement of having to change the standard implementation of BOR object SELFITEM method SENDTASKDESCRIPTION. Reasons typically have something to do with sending notifications as e-mails rather than SAP Office documents. I was surprised that no one had written a document/blog on the subject so I thought of doing it.

 

Technical Information

 

Basically when defining a step type of mail, BOR object SELFITEM method SENDTASKDESCRIPTION is used. You can do a where-used on the BOR object in transaction SWO1 to get an idea of how widely it is used in the system. What makes BOR object SELFITEM special is that it's internal key field gets automatically populated with the workflow ID, there is no need to bind anything from the workflow container to the task container nor BOR method.

 

Solution

 

It is time for the first take away of this blog. When creating a sub type of SELFITEM, e.g. ZSELFITEM and delegating SELFITEM to the sub type, DO NOT refer the sub type, e.g. ZSELFITEM, in your workflow definition. If you do, the internal key field will not get automatically populated. Instead, always refer the standard BOR object SELFITEM. See the screenshots below.

 

swo1.png

swo1delegate.png

swo1delegate2.png

pfts.png

Now you may ask yourself, will this not change all workflow steps that are using SELFITEM? The answer is yes, it will. It is up to you to implement the logic to include or exclude specific workflows/tasks/recipients from the delegated logic.

 

Now it's time for the second take away of this blog. One of the most common workflow tasks is to forward notifications from SAP Office Workplace as e-mail notifications to your e-mail inbox. The easy way is to use transaction SO16 and forward all notifications from SAP Office Workplace to e-mail inbox but sometimes that simply can't be done, for example a certain group of users still want to use transaction SBWP to process their tasks. Unless you are designing a workflow from scratch and you can retrieve the required e-mail addresses before the SELFITEM step, you are looking at changing a lot of workflows. That is, unless you use the trick defined here. Now redefine the SENDTASKDESCRIPTION method of the BOR ZSELFITEM and make it convert all SAP Office Workplace notifications to e-mail notifications, see below for an example implementation. Place the code before the call to function module SWW_SRV_MAIL_SEND.

data lv_user                    type          bapibname-bapibname.

data lt_smtp                    typetableof bapiadsmtp.

data lt_return                  type          bapirettab.

 

field-symbols: <smtp>           type bapiadsmtp,

               <address_string>type string.

 

if workitem_task eq'TS90000001'.

  if send_type eq'G'.

    loopat t_address_strings assigning<address_string>.

      if<address_string>(2)eq'US'.

        lv_user = <address_string>+2.

 

        callfunction'BAPI_USER_GET_DETAIL'

          exporting

            username = lv_user

          tables

            addsmtp = lt_smtp

            return  = lt_return.

 

        check lt_return[] isinitial.

 

        readtable lt_smtp assigning<smtp>withkey std_no = 'X'.

 

        if sy-subrc eq0.

          <address_string> = <smtp>-e_mail.

        endif.

      endif.

    endloop.

 

    send_type = 'U'.

  endif.

endif.

In the code I'm converting notifications of one specific workflow task, your business requirement might be different or you might even choose to forward everything (which kind of isn't the point since you can achieve that with SO16).

 

Conclusion

 

SAP has given us the powerful technique of delegation for BOR objects, you should use it to avoid enhancements/modifications/etc. While I know that everyone should be using ABAP objects in workflow and I do whenever possible, it will still take a while before we see workflows based on BOR objects disappear completely.

SAP Workflow 2015 Customer connection Selection Call

$
0
0

A few days ago the selection call Customer Connection for Workflow took place. Over 30 improvement requests have been scoped for development! And 15 more hopefully will be added if there will be development resources available.

 

Some have already been delivered and the workflow development team has released them as notes so they can be implemented without a SP upgrade (see SAP Workflow improvements - at last! ) my personal favorite of those is the addition of lines to the condition editor, look at it; there are more then 2 lines!


WFconditioneditor.jpg

 

And I can't wait to see the rest of them: An option to edit the display of the decision task, logging and multiple substitutions, BADIs for forwarding and substitutions etc.

 

Dear Susan Keohan , Avi Rubin and Peter Houterman (?), the development team has requested for incidents to be created for some requests and in it's description mention that they are part of the costumer connection (see page 16 in the presentation). 


You can see the presentation and meeting here

https://influence.sap.com/ct/ct_a_view_blog.bix?c=3F98DBFB-0955-435C-832C-815E16953753&bID=9229B64D-322A-4243-9DF9-C0F66F3F205F

 

 

 

The little things that mean a lot

$
0
0

The SAP Customer Connection for Workflow 2015 held a call on Thursday August 27.  Regrettably, I was not able to attend (because I was moderating an ASUG webcast on MyInbox!!! Recordings can be found on the ASUG site, you must be a member to access the ASUG recordings).

 

But I've been following the activity for this Customer Connection.  For starters, read Rick Bakker's blog announcing some of the improvements - http://scn.sap.com/docs/DOC-65685 or Ronen Weisz  blog SAP Workflow 2015 Customer connection Selection Call.

 

I am fortunate to be able to develop and test workflow applications in both ECC and SRM.  And having cut my teeth in ECC, I became accustomed to executing workitems as the workflow administrator. That's easy in the SAPGui, you get to see what the end user would see, and then you can debug away.

But in SRM, if you grab a workitem and want to process it from the UWL front-end (or if you really want to feel my pain, from the ITS inbox in the olden days), you couldn’t. 

You’d get a message "You cannot choose yourself as an agent" (with a green check mark, no less). This is not helpful to debugging workitems from the front end.  You could, of course, begin to execute the item, allow it to create a short dump because UWL and old ITS transactions cannot be executed in the SAPGUI… but the end result is that the workitem does end up in your inbox.


But I hate creating short dumps.


In the course of upgrading to SRM7, I may have created dozens, well OK, hundreds perhaps, or short dumps, but I shouldn’t have to jump through hoops to get a workitem delivered to my UWL inbox, so that I can debug it.

 

Enter the SAP Customer Connection, and request number D8542…

WF Admin Forwarding.jpg

 

So if you’ve felt that particular pain, go look at OSS Note 2188631.  There you will see the solution to this issue.  Yep, there are some coding changes that are released by SAP to allow you, the poor workflow developer/admin to forward workitems to yourself.


All hail the SAP Customer Connection program for listening to real life problems (albeit a sort of small one) and delivering a solution for us.

There are many more requests that are either already delivered (say WHAT Sue?  YES, already delivered via OSS note) and there are more requests that WILL be delivered.

I strongly encourage you to visit the SAP Customer Connection on Influence.SAP.com to listen to the recording of the 8/27 call, download the presentation, and explore which of the requested items will (or already are!!!) resolved.


And in closing…

https://www.youtube.com/watch?v=2C7SzKv2uLU

 

and thanks to Daniel Alexander, Alan Rickayzen, and Ralf Goetzinger on the SAP side, for listening to the customers.  You guys rock.

New enhancements for SAP Business Workflow

$
0
0

Several new enhancements are planned to be development for the classical SAP Business Workflow within the currently running Customer Connection project. Some of them are already available today - ready for you to download via SAP note and use them right away.

 

EnhancementSAP Note
Admin: Debugging-mode for background tasks2197117
Shortcut to the admin options from the workflow log/swia/task display2186821
Workflow Builder: Enhanced container operations2188696
Display the event who canceled the workflow in the logs2200908
Chronological View in Technical Log as a User Setting2188655
Automatic alignment of the workflow model2201454
No default generation of elements in the workflow container2200416
Enable WF-Admin to be specified (via SWU3) to a rule or responsibility2191614, 2197981
Allow WF Administrators/Developer to forward workitems to themselves 2188631
Add workflow version to the Where-Used list 2201971
GOS workflow overview auto refresh2184630, 2203812
Extend event linkage for forward navigation on function modules2185723
Increase the number of lines in the condition editor2185487
SWEL Default Layout2203647
WAPI support for decision with automatic note1964571

 

More are planned to come until end of 2015.


Thanks to all participating in this project providing the valuable requests; especially Susan Keohan, Ronen Weisz and Jan-Gert Gerbscheid for driving this forward (sorry if I did not name all).


Did I raise your interest? Then visit the Customer Influence site and learn more about how to influence SAP's products and solutions yourself. Here is the link to the current project for SAP Workflow 2015.


Best regards,

Daniel-Alexander Heller

SAP Influence Programs - Customer Connection

SAP Workflow Agent Determination

$
0
0

There are 3 types of Agents used in workflows, all are used in conjunction to find the selected agents for a work item.

Agents.png

Possible Agents are assigned to the task; this is the pool of agents that will be considered later to become an agent of the work item.

Responsible Agents are the agents that are returned from workflow agent definition or the default role of the task. A Responsible agent can only process a work item if they are a possible agent and if they are not an excluded agent.

Excluded agents cannot be an agent of the task even if they are listed as a responsible and/or selected agent. Excluded agents are defined at the workflow level.


A user may find themselves in multiple groups:

woman.jpg

This woman is in the pool of Possible Agents but she is not one of the Responsible Agents so she will not be able to process the work item.

Man.jpg

This man is in the pool of Possible Agents and he is in the pool of Responsible Agents; however, he is also on the list of excluded agents so he will not be able to process the work item.

 

 

The Selected Agentsof the work item will be the ones that are at the intersection of the Possible Agents and Responsible Agents and are NOT included in the intersection of Excluded Agents

 

Venn.png

 

Selected Agents.png

 

Workflow Log Display of Agents

showing agents.png

 

The workflow environment is not very consistent with how it names the Selected Agents; ‘Selected Agents’ or just ‘Agents’ or ‘Recipients’    These are all the same.   Note, you are not offered the opportunity to view the Responsible Agents.

 

 

 

Definition of Possible Agents

The possible agent is defined under 'Additional data' from the task definition.   You may define the possible agents as one of the following or of a combination of multiple agent types.

define possible agents.png

The task agent assignment may be any one of the following:

1) Role

2) Workflow Task

3) User

4) Organizational Unit

    • Organizational Object
    • Job
    • Work Center
    • Position


Alternatively, the entire SAP population can be a possible agent if the “General Task” option is selected.

  • This can be DANGEROUS if no selected agent is found; EVERYONE will receive a work item if the rule is not set to error out if no one is found, or responsible agent is not a rule and found empty.
  • This is Wasteful of resources in SAP Business Workplace.

          general task.png

         


Definition of Responsible Agents

The Responsible Agents  can be defined in the workflow definition on the step that points to the workflow task. There are more definition options than what was found for the Possible Agents on the Task.   In addition to these, when defining the selected agents you can use all of the options available for a Rule, an Expression (workflow container element), the Workflow Initiator, or the Superior of the Workflow Initiator.

define responsible agent.png

  • Another place you can define the Responsible Agents  is by defining a default rule in the task definition on the ‘Default Rule’ tab. This default rule will be used if a Role is defined for finding the Responsible Agents is in the workflow definition AND no agents are found AND the rule is not set to error if no agents are found. 
  • The default rule is necessary for single step tasks (because there is no workflow definition).
  • The default rule is seldom utilized.
  • Only have the ability to add a rule, no organizational objects or user assignment.

          default rule.png

 

 

Definition of Excluded Agents

Excluded Agents are not allowed to process a work item even if they are listed as a possible agent and a responsible agent.


Examples of Excluded Agents:

  • 2 approvals are required from a pool of managers; once a manager supplies their approval, they will be listed as an excluded agent so they cannot also supply the second approval.
  • A user in a shared services center has the ability to create and approve requests for payment; but can never create and approve the same request for payment.   Once the user creates the request for payment, they are now listed as an Excluded Agent so they will not be able to approve their own request.

define excluded agent.png

Excluded Agents are defined in the workflow definition on the task activity step.  Excluded Agents can only be an expression; meaning they have to be defined as a workflow container element.

Direct work item to business administrator when rule fails to find agent

$
0
0

What I want in my rule resolution:

1) One-stop shopping for defining all the business users that are in charge of monitoring agents for their workflows.

2) I don't want my workflow instances to fail when an agent cannot be found.   I would rather the work item be directed to a business user administrator.  This business user can find and forward to the correct agent and then modify the agent rules.

3) I want a message on the work item that states why the business admin has received the work item. "You have received this work item because no agent could be found.  Please forward this work item to the appropriate user and correct the agent rules."

 

I've created a rule with responsibilities to hold all my business user administrators.   Notice I'm using priorities so that if a particular workflow is not set up in the rule it will default to the main workflow administrator.    For every workflow task that uses this method of directing work items to a particular admin, I simply add a new responsibility to the rule and assign an administrator.

WF Admin Rule.png

The rule has only one item in the container, this will be the workflow definition that will be passed to the rule so the appropriate administrator can be found.   You can use the task number or the workflow definition number.   I generally use the workflow definition number so if there are multiple tasks that require agents in the same workflow I can just set this up once.  Obviously if you have different administrators for different tasks you will need to work at the task level.

Rule Container.png


I add this rule to my workflow task as the default rule.   The default rule will only be used if the responsible users defined in the workflow come up empty AND if a rule is used to find the responsible users the rule must not have "Terminate If Rule Resolution Without Result" checked.   Notice the binding where I insert the workflow definition number.

Default Rule.png

I have noticed that the default rule is underutilized and most workflow tasks can be updated to use this method of directing work items to an administrator.


But I still want a message to be sent to the administrator if this default role is used.   I did this by adding a program exit to the workflow definition for this task. The exit will determine which rule was used to find agents, either the rule defined in the workflow or the default rule defined in the task and it will load a new container element into the task, "Agent Status".   In the long task description of the task, the container element "Agent Status" will be read and an appropriate message will be displayed based on the contents.

program exit.png

CLASS zcl_wf_determine_rule_used DEFINITION

   PUBLIC

   FINAL

   CREATE PUBLIC .

 

   PUBLIC SECTION.

     INTERFACES if_swf_ifs_workitem_exit .

 

   PROTECTED SECTION.

 

   PRIVATE SECTION.

 

ENDCLASS.

 

 

 

CLASS ZCL_WF_DETERMINE_RULE_USED IMPLEMENTATION.

 

 

* <SIGNATURE>---------------------------------------------------------------------------------------+

* | Instance Public Method ZCL_WF_DETERMINE_RULE_USED->IF_SWF_IFS_WORKITEM_EXIT~EVENT_RAISED

* +-------------------------------------------------------------------------------------------------+

* | [--->] IM_EVENT_NAME                  TYPE        SWW_EVTTYP

* | [--->] IM_WORKITEM_CONTEXT            TYPE REF TO IF_WAPI_WORKITEM_CONTEXT

* | [!CX!] CX_SWF_IFS_WORKITEM_EXIT_ERROR

* +--------------------------------------------------------------------------------------</SIGNATURE>

   METHOD if_swf_ifs_workitem_exit~event_raised .

 

     DATA: ls_wi_header    TYPE swr_wihdr,

           lo_wi_container TYPE REF TO if_swf_ifs_parameter_container,

           lv_return       TYPE sysubrc,

           lo_rule         TYPE REF TO if_wapi_routing_context,

           lv_wf_task_id   TYPE v_sflow_ro-wfd_id, "string,

           lv_wf_version   TYPE swd_versio,

           lv_wf_rule      TYPE v_sflow_ro-expression,

           lv_rule_used    TYPE hrobjec_14.

 

     CONSTANTS:

       c_agent_found TYPE char15 VALUE 'AGENT FOUND',

       c_sent_admin  TYPE char15 VALUE 'SENT TO ADMIN'.

 

***********************************************************************

*   Process 'After_rule_exec' event

***********************************************************************

     IF im_event_name = swfco_event_after_rule_exec.

 

       TRY.

 

*         Get the Rule Context; what is returned is either the result from

*         the rule defined in the workflow, if no one is found,

*         the dafault rule defined in the task is returned.

           lo_rule = im_workitem_context->get_rule_context( ).

           lv_rule_used = lo_rule->get_rule_id( ).

 

*         Get the Workitem Information

           ls_wi_header = im_workitem_context->get_header( ).

           lv_wf_task_id = im_workitem_context->get_workflow_task_id( ).

           lv_wf_version = im_workitem_context->get_workflow_version( ).

 

*         Read the workflow definition to see if the workflow role compares

*         to the one that the workflow instance used.

           SELECT SINGLE expression FROM v_sflow_ro

                   INTO lv_wf_rule

                  WHERE  wfd_id   = lv_wf_task_id

                    AND  version  = lv_wf_version

                    AND  nodeid   = ls_wi_header-def_guid+29(10).

 

*         Get Workitem Container

           lo_wi_container = im_workitem_context->get_wi_container( ).

 

*         Determine which rule was read, the default or the workflow rule.

*         If the default rule is used then update the workitem container so that

*         the long text description will include a note to the administrator.

           IF lv_rule_used = lv_wf_rule.

             CALL METHOD lo_wi_container->set

               EXPORTING

                 name       = 'AgentStatus'

                 value      = c_agent_found

               IMPORTING

                 returncode = lv_return.

           ELSE.

             CALL METHOD lo_wi_container->set

               EXPORTING

                 name       = 'AgentStatus'

                 value      = c_sent_admin

               IMPORTING

                 returncode = lv_return.

           ENDIF.

 

         CATCH cx_root.

           "Add error logic

       ENDTRY.

 

     ENDIF.

 

   ENDMETHOD.

ENDCLASS.

 

Now to show an example, below is how the workflow is defined for the task.   I using Rule 99900002 which as you can see does not have any one defined in the responsibility.   This rule will fail and the default rule will be used because when I defined the rule I told it to not terminate if no agent is found.

Rule set to fail.png

 

When I execute the workflow here is how the log looks.  Notice the container element AgentStatus indicates that the work item was sent to an administrator.

WF Log Before.png

This is what the administrator sees when they execute the work item:

workitem before.png

The workflow administrator that received the work item will now go update rule 99900001 to include Laura as the agent.

Rule Corrected.png

Now the administrator will re-run the agent rules.

 

execute agent rules.png

 

Now we can see that the agent was correctly set to Laura and the container element was updated to show the correct message.   This means that Laura will not have to see the ugly agent determination failure message when she works her work item.

workitem after.png

 

Depending on the comfort-level of your business users in the workflow log, they may want to execute the agent rules or they may just want to forward the work item to the appropriate user and then go clean up the agent rules.    The only problem with forwarding the work item is that the "Notice of Agent failure" message will not be removed as it will be if the rules are re-executed.

 

and yes...this may be a lot of trouble to go to when you can just set the work items to fail if no agent is found.   I just prefer this no-error method.


Chronology of a major incident and a sweet revenge

$
0
0

Saturday 6 pm:

Thirty hours of blood, sweat and tears are just over.

Taking a deep breath now.

One last email.

 

Subject: Finally end of work

Dear H.

all mails are cleaned up from SOSG

N. has probably received 363000 emails, unfortunately I can't support him with deleting them from his inbox in Lotus Notes.

This was just 1/10th of what was expected to be send to him based on the number of workitems, which we deleted as well.

It is not yet clear why it created so much emails for 62832 Idocs with Syntax errors, hoping to find the root cause on Monday

Best Regards

Jürgen

 

 

Are you curious now? Want to know what happened?

Murphy's Law hit me with full force.

 

 

December 23rd 2014 around 8 pm:

Waiting for my Chimichanga and sipping a Mojito when suddenly the Blackberry became a disco light because of incoming mails. When I was ready to pay I had already 3600 mails for failed Idocs from purchase order migration.

 

 

Thursday November 19th, 11 pm:

A very busy year is going to its end, and as well one of hour biggest SAP system mergers where I am team lead of Master Data.

Vendors, materials and classification are already loaded, customers will be next week, and I tried to put some finishing touches on material classification, while I was preparing the last slides for the Fit/Gap workshop with Japan which is scheduled for Friday morning 7:30 am CET, have to get out of bed early, 8 hours time difference to Tokio.

My test load to add an additional material class with just one characteristic to 175000 materials had just ended, all had posted well, but I found 860 Idocs with syntax errors. An Idoc segment was skipped in the conversion process of LSMW but the Idoc itself was created. Actually the entire Idoc creation should have been skipped. I did not want those Idocs with syntax errors in the production system and made a tiny little change in my LSMW.

 

Friday 6 am: Get up, start the PC, connect via VPN to the company (had to do this before tooth brushing, last week I needed 40 minutes to log in, wanted to make sure that I am connected before my  meeting starts).  Start brewing coffee, going into the bathroom, came back for breakfast, wondered that I had only coffee for 1 and half cup instead of 3.

 

Friday 7:30 am:

Fit/Gap analysis for the next system merger, 4 companies in Japan. Kon'nichiwa.Sayōnara.

 

Friday 9:45 - 10:45 am: Driving to work

 

Friday 11:00 am:

Some office gossip: "believe or not, again no authority to display a vendor master in the Japanese system, I guess we will make the same experience even in the 100th project." Still no Coke in the machine . 7 km Stop 'n'  Go again this morning

Finally exporting the LSMW project from the test system and importing it to the production system. Reading the source file, executing the conversion.

 

Friday 12 pm noon:

Lunch break. Quick.  Starting the Idoc creation, uuh is this system slow today, one can see each number in the counter, okay lets go into the canteen. Ctrl+L


Friday 12:32 pm:

Back from the canteen. Log in again. What's that, a pop-up with an error message, the IDoc creation was cancelled.

EDI error message.png

 

E0070 EDI: Table passed to EDI_SEGMENTS_ADD_BLOCK is empty. (self explanatory)

 

Checking BD87, no CLFMAS Idoc in status 64 there. Maybe the Idoc creation was cancelled because of transports that got imported during lunch time, our usual time for emergency imports during day time.

 

Friday 12:40 pm:

Start LSMW Idoc creation again. Pop-up. Same error message. Process cancelled.

 

Friday 12:50 pm:

Chat with a Basis guy.

Me: "Can it be that the lock table in the production system is smaller than in our test system?"

Basis guy: "No - it allows actually 6 times more records than in the test system"

Me: "I am confused. Did the same yesterday in the test system and it worked without an issue. Thanks anyway"

 

Friday 1 pm:

Chat with a team mate.

I am sending a screenshot.  "Do you know this message?"

He: "Yes, quite familiar to me, what are you doing?"

Me: "Classification load"

He: "I am doing classification right now, can you wait for 2 hours. Maybe our activities crashed"

Me: "Okay I can wait, but let us check if we could have a conflict"

So we checked his object and his setup of Idoc processing for LSMW, found out that it did not follow the desired approach. But we did not  further talk about my error message. I tried then the conversion for just 1 material classification....and got a different error message. System was trying to read behind the end of records. This message was known, but not well known as I had it only 2 or 3 times before in the last couple years, but I remembered that an entry from a file had to be deleted After having done this I converted again a single record and displayed the converted data. Then I saw that this Idoc had to less segments.

I remembered my change from last night. Checked the coding and found that I mixed <> and =  in a if condition which actually turned my desire and removed an segment from those Idocs which were good in the test. Shame on me.

 

Friday 2:15 pm:

Chat opens.

H: "You already know what happens in the production system?" Screenshot of BD87 showing 62832 Idocs in status 60 Syntax error.  "N. got already 60000 emails."

Me: "Not really, I am still analyzing, worst case he gets about 340000." (this was an estimate, about 170 thousand expected classification updates, and 2 times executed)

 

Friday 2:22 pm:

Email arrived with copy to system coordinator. "N. has already 67000 emails. SBWP and Lotus Notes get a load and performace test"

 

Friday 2:25 - 4:00 pm:

Chat and then telephone call with Basis guy. I explained the situation. He checked the system and saw that there are several processes active with my user. I said that I have nothing scheduled, what I did online failed, that I see a floating number up to 50 locks in the lock table for my user, and had even logged off from the system in the mean time. So he used his Basis power to kill all active processes with my user. Then we went into SOSG transaction and deleted all waiting unprocessed emails to N.

RSWUWFML2 job.png

 

Friday 5:15 - 8:50 pm:

Driving home, even more traffic jam than in the morning,  driving my daughter to Karate training, having dinner, start my DVD player "The company you keep"

 

Friday 9:50 pm:

I here the sound of Keith Emerson's Inferno. Actually the sound for colleagues on my smart phone. (I will not tell you the sound reserved for the boss)

A: Hi Jürgen, Sorry to call you late Friday night but we have trouble, can't get Idocs to the TM system nor any emails with certificates to our customers.

Me: Wait a second or 40 minutes till I am logged in. I will check, we had an incident today but we cleared everything.


Saturday 0:22 am:

Mail to A.

Subject: Fighting against windmills

It looks like deleting the mails from the queue is not helping. I feel that this job is re-creating the emails until they get the status that they have been sent.

I deleted certainly more than 100000 till now, in buckets of 1000, when those 1000 are gone and I refresh SOSG then I have again 1000 with a more recent time. I can't even find an active job with our function user xxxxx while the emails are still increasing

And I have no authority for WE11 to delete the faulty Idocs, just in case that their existence is causing this trouble

 

Saturday 1:03 am:

Forwarding the mail to the Basis guy. "The mess is back I have no more idea. I have 62832 Idocs with Syntax errors but N got already 127440 mails. I have already deleted more than 100000, can't find an active job, don't know why the mails are being sent several times."

 

Saturday 2:00 am:

Giving up with deleting, going to bed.

 

Saturday 6:45 am:

Getting up again. PC, bath room, PC. Starting the coffee machine. Just one new mail per second in SOSG. Almost happy .

Start deleting 5000 mails that are waiting to be processed. Refresh SOSG, uuh 8 mails per second now. Deleting, deleting, deleting

 

Saturday 9:39 am:

Calling Help Desk. Voice mail. Leaving my cell phone number.

Bake some rolls while waiting to be called back.

Reach to the coffe-pot, feels light today, no coffee, machine broken.  Instant coffee, water was just hot when the telephone rang. An American from the international help desk, pretty tired, took 5 minutes until he had written my name. Informed me that it is Saturday and nobody is working. Okay, I knew this already, even in Germany we know what Saturday means. He promised to call the voice mail in Frankfurt.  The coffee water was cold again.

 

Saturday 10:08 am:

I called our system coordinator  and explained the situation. He tried to find the people on duty, found a few, but none from SAP Basis and he promised to call me back when he finds one.

I had just put the Strawberry jam on my first roll when the telephone rang again. Frankfurt was calling. No idea where this Frankfurt was, it sounded like Iran or Afghanistan. I listened to his broken German and think he wanted explain me that nobody is there on Saturday, and finally interrupted him and asked if he personally could help me. After he said "No" I told him not to my steel time I am already in contact with somebody and waiting to be called back

 

Saturday 10:19 am

The system coordinator called back, and gave me the number of a Basis girl who was on duty yesterday.

 

Saturday 10:21 am

You see from time that calls between real men are short and to the fact. Now calling the girl. We had checked the system together, searched for the invisible job, deleted mails, brainstormed about how to stop the ongoing creation of these mails and what could actually causing this. Even we did not believe that it is the root cause but we decided to delete the Idocs with the syntax error. Easier said than done, our production system is well secured. Further searching SCN for options to switch the Idoc status from 60 to 68. Of course we found a discussion telling how to do it (RC1_IDOC_SET_STATUS). A quick test in our test system, then into production and changing the status of the 62832 Idocs. The mails were still coming. We guessed that deleting the workitems could eventually help. She wanted to call another colleague so we hang up.


Saturday 11:30 am

The water was hot again and I could just get my first instant coffee and my first bite into the roll when the telephone rang again.

It was H. who had informed me yesterday about the email flooding. I told him to call N who shall delete his workitems from the business workplace.

 

Saturday 11:50 am

H called me again: "The workplace does not open. It dumps  because of too much content. Must be a lot more than 62832 workitems. He has to leave for soccer game of his son but will take the company smartphone with him, even it is Saturday.


Saturday 11:56 am

Call from the basis girl. Her colleague found the job which is creating emails from workflow items. The external scheduler starts it every 30 minutes. They are going to kill the job. Then they removed the task ID TS00008074 from the variant to be save that the next start does not care about the workitems again.

But now we have to get rid of the workitems, somehow, quick. Searching SCN. Found How to delete the 7 lakhs workitem from user's inbox in workflow

and the answer of Jocelyn Dart. From here jumping to her blog Don’t try this at home: Why you should never physically delete workflows

Saying to our Basis girl "Jocelyn Dart, I trust her advise,  let us try the logical deletion" . Of course first in the test system. But then  quickly in production.

I executed SWIA for the workitems with a range of 1 hour. Friday noon to 1pm: 780000 workitems. The Basis girl tried  for all Friday and the system dumped.

We finally found that the workitem creation had stopped already  Friday afternoon when the other Basis guy had killed all the processes with my user.

4 hours ran this invisible job and had created about 3.2 million workitems.

 

Saturday 12:32 pm

Finally breakfast. We ran SWIA with 3 person in parallel for workitem buckets of 15 minutes, which were between 150000 and 200000 workitems.

 

Saturday 13:45 pm

15 minutes till the flower shops close. Have to to get some flowers for my mom who celebrates birthday on Sunday.


Saturday 18:00 pm

issue resolved



 

To make the story round. N was the person migrating purchase order last year, and my name was as Agent in the WE20 partner profile.

To avoid getting again mails for dinner I had made him the agent for post processing.

 

WE20_.PNG

 

Details on this setup in general can be found in OSS note 116610 - IDoc: Notifications from IDoc processing

 

Finally not a bad decision, so I was still capable of acting during this time.

 

The job (program RSWUWFML2 ) which is creating emails from workitems is already a very old job in our system, it is no more known who had originally scheduled it. Some years ago when the external job scheduler was implemented, this job got migrated to this new scheduler. Overall and after some days of talking with colleagues this job is still wanted and needed for our MDM ALE process. We may need to exclude the migration guys from the emails, we know it anyway if something failed and do not need extra reminders by email.

 

The SWIA transaction is not well designed, you only realize that  the execution had finished when the hourglass disappears, no message, no change in screen, no option to schedule in background. It was a bit boring to star a screen for about 30 minutes to be aware of the moment when the cursor changes its appearance.

 

The Idocs are created from the converted data in LSMW which is actually executing the program/SAPDMC/SAP_LSMW_IDOCS_CREATE

And if something unusal happens then it is probably IDOC_ERROR_WORKFLOW_START which creates the workitems.

While this incident gave us the knowledge that our system is able to create 3.2 million workitems in about 4 hours and can send about 172000 emails in 30 hours we still do not know why our SAP system created 3.2 million workitems  for 62000 Idocs with syntax errors.

So if somebody has a hint, we would really appreciate to let us know

Updating/Refreshing Agents for already triggered dialog workflows

$
0
0

Hi All,

 

There are many scenarios where the workitem is triggered but ended up either with wrong group/person.

Instead of deleting the workitem, what if we could just refresh the position so that the workitem will be reflecting with correct agents?

 

In Order to achieve this, agent determination should be done by using Responsibility Rule ( T-code : OOCU_RESP ).

Example: we have agents A, B, C assigned for a responsibility in a particular rule.

 

Now suppose workflow is triggered and workitem is sent to agents intended in the responsibility of the rule.

Example: So workitem is sent to agents A,B,C.

 

In case the agents assigned in the rule was wrong/more agents were required to be added.

Example, we were not supposed to assign agents A,B,C in the responsibility instead we wanted X,Y,Z.

 

In these scenarios we can update/refresh the agent determination.

Steps:

  1. Determine the dialog workitem sent to user inbox.
  2. Use Transaction Code SWI1_RULE (Used to execute agent rules for Workitem) with the dialog workitem.
  3. Select the rows of the input workitem which requires update/refresh in agent determination and click on 4th Icon in the toolbar as shown below,Once you execute agent rules, agents will be re-determined.

Agent Determination.PNG

Hope it might be useful for some

 

Best Regards,

Bhuvanesh

SAP Workflow Improvements (courtesy of SAP Customer Connection)

$
0
0

The SAP Customer Connection for Workflow 2015 update call was held on January 11, 2016.  Some previous blogs about the Workflow 2015 initiative are:

(I've only gone back to the four most recent ones... You'll have to search for yourself if you want to see more... hint: 'Customer Connection Workflow' might work)

 

New enhancements for SAP Business Workflow

The little things that mean a lot

SAP Workflow 2015 Customer connection Selection Call

SAP Workflow improvements - at last!

 

See the offical blog announcement here.

As usual, there are the normal legal disclaimers up front.  And at the time I attempted to dial in, there were over 60 attendees on the call.  (Sadly, a malfunctioning office phone kept me off).  The call was led by Daniel-Alexander Heller and Ralf Goetzinger, with occasional sage advice from our good friend, Alan Rickayzen.


ALL IMAGES ARE COURTESY OF SAP and property of SAP.

 

The following two slides show the improvements that SAP has delivered and most of them are discussed in better detail in the recording of the call, which I can highly recommend  - Listen HERE.

 

These requests are in addition to the ones that have already been delivered (hey, Rick Bakker, maybe you can add these to your document?).

 

Here are some detailed descriptions - but seriously, you'll learn a lot more by listening to the recording.  Ralf has been involved with SAP Workflow for a long time - so his explanations of the problems behind each request and how to use the improvement will make it time well spent.

 

Note 2197117 - Debugging Background workitems - if you've spent any time at all developing/debugging your own workflows, you already know the drill on this... set a background task to dialog, put yourself as an agent, and so on.  I can't tell you how many times I've had to do this just to see how a certain method actually works ion context - and of course, you can only take those particular steps in non-productive environments.  I'm not sure I'd recommend using this method in Production, but you will be able to set an external breakpoint in your BOR background method (yes, I said BOR).

See the pic, below:

 

 

Note 2186821 - Shortcut to WF Admin functions - there have been times I just wanted to put my head down and cry for the number of steps it would take to, say, get from the technical workflow log to the various administrative functions that are necessary.  This note promises you fewer clicks, easier Admin.

 

Note 2188696 - This note has some real promise, I can tell you.  By enhancing the WF System Class (WFSyst) the workflow developer will have the ability to use CONCAT, SUBSTRING, and other functions in the workflow container itself.  No more programming goofy little methods to add First Name to Last Name!  No more goofy little methods to convert to upper case!  Youza!


 

 

Note 2200908 - If you defined a terminating event at the header level, it wasn't easy to see that the event was indeed the reason the workflow ended.  So here you go...

 

I have about another half dozen notes to discuss, but I want to save this blog and allow you all time to digest what these improvements in the SAP Workflow Environment could mean to you while I work on the next blog.   Granted, this is not earth-shattering, but for many of us who spend the days in the trenches of WF Development and Admin, our lives will be made a little bit SIMPLER.

 

If you do implement any of these notes, or any of the previously released notes, please let us know how they worked out for you.  Personally, I can't wait for Note 2188631 to be implemented in our SRM system.  We've already got it in sandbox and everytime I get to use it, I think 'Thank you SAP Customer Connection'.  What's that note for?  I encourage you to go search for yourself.

SAP Workflow Improvements (courtesy of SAP Customer Connection) - Part 2

$
0
0


As I noted yesterday, an SAP Customer Connection Call took place on January 11, 2016.  This blog will summarize the next set of features that have been delivered as part of the SAP Influence activity.   The formal announcement, with links to the recording, can be found here.

 

And, just as in yesterday's blog, all images are courtesy of SAP and property of SAP.

 

Note 2241028 - Being able to forward workitems is a very powerful feature within SAP Workflow.  If you are the intended recipient, and will not be able to complete the workitem, or if you need someone else to provide information on it, you can forward the workitem.  Except this also has unintended consequences... sometimes you forward to the wrong person (for example, John Smith in Purchasing should not get the Invoice Approval, but John Smith in some other organization should) or your organization is required to keep stricter rules over what can be forwarded, when, and to whom.  This note delivers the BADI WF_WI_FORWARD, which will allow you to control forwarding according to your company's rules.

 

 

Note 2188655 - This note will provide you with the ability to set your personal workflow settings to 'Technical (Chronological) view.  Although I am a die-hard Classic Technical View person... I could be persuaded to look at a Chronological view.

 

 

Note 2201454 - Automatic alignment of the workflow model

When you are working with a really large workflow (say, one with 10 or more tasks ) you may get frustrated with always having to 'align' the model.  You know, sometimes all the tasks are bunched together, or the branches look like something out of a nightmare. This is due, in part, to the way that the workflow build system saves your model.  SAP has delivered a setting to eliminate this frustration via your personal workflow settings.

 

 

 

Note 2200416  - You may not always want the automatic generated binding in your data flows.  I believe the system looks for the first element of the same length and type of the task you are inserting, so pushing 'OK' on the generated binding popup may cause the system to create elements which are not used.  I've seen this myself.  And while you can always go back and correct the binding itself, you might not notice (or take the time to get rid of) the generated element.  I'm sure over time there would be system deprecation if you allowed this practice to continue.

 

 

Note 2250126 - Send mail step error when no recipients - well, this is HUGE!  We diligently try to ensure that there are always recipients to messages, but after maybe 10 years of being assured that everybody in the HR Org structure will ALWAYS have an email address, one day you find out that it's    just    not    true.

Enabling the Sendmail task to have an outcome (perhaps just allow the workflow to continue on?) will be a real relief.

 

 

I can see by the clock on the clubhouse wall that I am almost out of time on this blog... So please consider how much time you could save by not having to go investigate and correct SendMail tasks that have gone astray.  (Actually, I noticed that this blog was accidentally published while I was editing it, so I apologize if you're an early reader and wondering 'where the heck did this thing go....')


Cheers to all.

SAP Workflow Improvements (courtesy of SAP Customer Connection) - Part 3

$
0
0

Continuing on about the SAP Customer Connection for Workflow...In case you are just tuning in, I am running through the list of SAP Workflow improvements that have been delivered as a result of this Customer Connection.


Okay, so I really didn't intend for this to become a multi-blog series, so I hope you don't mind that I broke this up into manageable chunks... Honestly, there have been so many improvements delivered, and I wanted to be able to do each justice (without losing the blogs to the fickle gods of bloggers)...

Part 1 of the series is here, part 2 is here


ALL IMAGES ARE COURTESY OF SAP and property of SAP unless otherwise noted.


Note 2191614 - The specification of Workflow Administrator allows you to specify User, Role, Org Unit, Center, Position and Work Center.  In some cases, this is not really sufficient for the variety of customers out there (OK, I am one of them).  Now, if you implement this note, you will be allowed to specify an Agent Rule.  Sadly, no binding to the rule can be defined *but* the workflow container is passed at run time via the table parameter AC_Container.  So you will now have the flexibility to determine programmatically who the appropriate workflow administrator is.

For large SAP installations, I can see a huge benefit to implementing this.


Note 2188631 This is one I really wanted... it doesn't have such an impact on workflows running in core ECC, but I do a significant portion of my development in SRM, and it always frustrated me when I could not forward an item to myself (in order to execute through the UWL, for example).  That restriction is now addressed.  

 

 

Note 2202595 - This note will allow you to use a new option when sending workflow notificati9ons through SWNADMIN or SWNCONFIG (Extended Notifications).  Previously, you were restricted to Internet Mail, SMS or Pager (I bet Pager gets a lot of use these days ) or an Internal SAP User - which is fine, as long as you only wants to send to a single user.  With the implementation of this note, your notifications can go out to all SAP users identified by a specific 'User Group' (as seen on the SU01 record, not ASUG or VNSG or DSAG).

 

Note 2201971 - I know for a fact that doing a where-used list for workflow development objects can be frustrating.  Say you are looking for the workflows that use a particular task... well, you get ALL the workflows - every single version of a workflow - if it calls that task, you get it.  SAP really listened when they took on this Customer Connection Request - this is an item that causes the back office workflow developer some pain - but of course we hide it very well.  Anyway, with this note implemented, you'll now be able to see the Version Number and whether an ACTIVE version of a workflow uses that task. 

 

 

 

Note 2254783 - While we are on the subject of versions... Workflow developers always could see the versions of BOR objects - but only if they used SE38, and even then it would only show source code changes.  When you implement this note, you'll be able to see the difference of things like attributes!  W00t!  

 

I think I have covered all the requests that have already been delivered by this Customer Connection activity.  But I urge you to go to the Influence to see what other influence projects are out there, as well as to keep tabs on this activity.  Hopefully you will also check out some of these notes and get your friendly Basis team to implement them - and then provide feedback! 


Meanwhile, thanks to Ronen Weisz  who worked hard to get this influence activity going, to Daniel-Alexander Heller who led the activity, and of course, the people at SAP who tirelessly support the developers and administrators of SAP Workflow by making our day-to-day lives a little easier.  (This means you Alan Rickayzen and you Ralf Goetzinger)

Viewing all 33 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>