Skip to Content

How do I know I’m ready for this?


Easy … did you read the first 3 blogs and create the examples mentioned in blogs 2 and 3? If not, here are the links…


Why use ABAP OO with Workflow?


Getting started with ABAP OO for Workflow … using the IF_WORKFLOW interface


Using ABAP OO methods in Workflow Tasks

If you want to try the exercise in this blog in your own system, you will need an ABAP Class with the IF_WORKFLOW interface, and a system/client (SAPNetWeaver 6.20 minimum) with the workflow environment activated. You also need to have created the “Display Plant” workflow task mentioned in blog number 3.

+Note: As mentioned in the last blog, this blog won’t teach you ABAP OO. It won’t teach you workflow either, but it should give you enough to get going even if you’ve never touched workflow before. +


Defining an ABAP OO Event for Workflow


Defining an ABAP OO Event for Workflow is the same as defining any other event for ABAP OO.  To start just go to transaction SE24, enter your class in edit mode, and go to the Events tab.  Give your event a technical name and make sure it is a Public event.

Continuing with the ZCL_PLANT class example, here’s an example event SITE_VISIT_PROPOSED.


image

You can also define event parameters if you wish by selecting the Parameters button. By definition all event parameters are Exporting parameters, i.e. they are exported with the event when the event is raised.

Usually however you don’t need to create any event parameters, as the standard Workflow event container (remember that’s workflow’s name for a data area) adds sufficient standard parameters, such as the user who raised the event, and a local persistent object reference to the ABAP OO class (of course you know all about that because you’ve read the previous blogs). Of course, you won’t see the standard Workflow event container in your class – you’ll only see it in the Workflow screens.

Here’s an event parameter PROPOSED_VISIT_DATE for the event SITE_VISIT_PROPOSED. I’ve made the parameter Optional so that later we can look at how to raise an event with or without parameters.


image


Tip! Don’t forget to activate your class afterwards.

Using an ABAP OO Event in Workflow


For anyone who’s using Business Object Events with Workflow, you use ABAP OO Events in exactly the same way. The only real difference is you specify category ABAP Class instead of Business Object. For those who haven’t done much with events before, in Workflow an event can be used to:

    1. Trigger a multi-step workflow
    2. Terminate a multi-step workflow
    3. Perform special functions on a multi-step workflow, e.g. re-evaluate agents of active work items, cancel and restart with same data
    4. Trigger a single workflow task
    5. Terminate a single workflow task

+Note: The last option – terminate a single workflow task – is particularly useful for asynchronous scenarios. For example if you had a task (it could be background or dialog – i.e. involving a user) that kicked off a database update in background, and then let the raising of an event confirm that the change had been committed to the database. If you did this of course you would leave the Synchronous object method flag off in your background task (this flag was mentioned in blog number 3). +

Triggering a single workflow task with an event isn’t a very common practice, simply because most workflows involve more than one step. So usually we want to trigger a multi-step workflow that represents a whole business process. So let’s expand our example to a multi-step workflow triggered by an event.

Start by calling transaction SWDD, the Workflow Builder.
Press the Create New Workflow button – the top-left hand button immediately under the text “Workflow Builder”.


image

Then before you go any further, save your new empty workflow. You’ll be asked to give it an abbreviation and a name – these are free text and are mainly used when searching for your workflow. Just like our task or an ABAP Class, you’ll need to add it to a change request or save it as a Local Object.


image

This going to be a very simple workflow for now, as we are just going to include our “Display Plant” task in it. So to do that, either single-click on the Undefined step in either the Navigation area or double-click on the Undefined step icon in the center Graphical Model editing area. Select the step type Activity and continue on to the next screen.

The very first field in the Control tab asks for a task id. Search for your “Display Plant” task by using the search help on the Task field. You can search for all tasks that are based on your ABAP Class.


image


image

All we need to do now is nominate who should perform this step of our business process. To keep it simple for our example, just make the workflow initiator, i.e. the person who started the process, the Agent of the step. In the Agents section, drop down the Expression field to choose the Workflow initiator.


image

+Note: Usually we want to calculate who’s going to do the work using an agent determination rule but this is just an example after all. +

Press the green check icon Transfer and to graphic to return to the graphical flowchart view. You can save your workflow again at this point if you wish.

We are going to start our workflow with an event and pass in our ZCL_PLANT reference from the event, so we need to allow the new ZCL_PLANT container element to be imported. On the left hand side, under the Navigation area, use the dropdown to swap the bottom left hand area to the Workflow Container display. Double-click on the new ZCL_PLANT container element, and on the Properties tab check the Import flag.


image


So having completed our mini how-to-create-a-workflow exercise we now want to add the SITE_VISIT_PROPOSED event as the triggering event of the workflow. At the top of the screen press the Basic Data hat icon. On the Version-Independent tab, choose the sub-tab Start Events. Add a row and enter category CL, then Object Type = your ABAP Class, and then Event of the object = SITE_VISIT_PROPOSED.


image

+Tip! It’s a good idea to use the dropdown help for all of these fields to avoid typing errors. +

You can see the event row starts with an A, B, and C columns. B stands for Binding.
We need to create the binding (mapping) between the event container and the workflow container to pass across the instance of our ABAP Class and the person who raised the event. Just click on the Binding icon and the binding will be generated for you.


image

Remember the A, B, and C columns? A stands for Activate. Click on the activate icon until the event activation icon turns green. Now use the back arrow icon to return to the graphical flowchart display and use the Activate (lit match) icon at the top of the screen to activate the workflow. Check the status of your workflow is Active, Saved in the Information Area in the top left hand window pane.


So now you have a workflow that’s linked to a triggering event of your ABAP Class!  If you want to test it, use transaction SWUE to generate the event, or just wait until you have completed the next section on raising events.  You should see a new “Display Plant” work item added to the Workflow section of your SAP inbox (transaction SBWP).

Raising an ABAP OO Event for Workflow


Now of course we would not usually raise the event manually, normally an application – a transaction, a BAPI, a function module, a report, a WebDynpro, etc. – would actually trigger the event using code. 

Raising Business Object events usually involved a traditional function module call – such as SAP_WAPI_CREATE_EVENT. Raising ABAP OO events, not unsurprisingly, uses an object-oriented approach – instead of a function module call, a method call is used to raise the event.

The provided SAP ABAP Class that handles the raising of workflow events is CL_SWF_EVT_EVENT. This class contains two Static, Public methods for raising ABAP OO events for Workflow:

    1. RAISE – for raising an event immediately
    2. RAISE_IN_UPDATE_TASK – for raising an event in the update task of a Logical Unit of Work

Here’s some example code to raise our SITE_VISIT_PROPOSED event using the RAISE method – without any parameters.



DATA:
  ls_zcl_plant_key TYPE werks,


  lv_objtype       TYPE sibftypeid,
  lv_event         TYPE sibfevent,
  lv_objkey        TYPE sibfinstid.


lv_objtype = ‘ZCL_PLANT’.
lv_event   = ‘SITE_VISIT_PROPOSED’.


  • Set up the LPOR instance id

ls_zcl_plant_key-werks = ‘1000’.
MOVE ls_zcl_plant_key TO lv_objkey.


  • Raise the event

TRY.
    CALL METHOD cl_swf_evt_event=>raise
      EXPORTING
        im_objcateg        = cl_swf_evt_event=>mc_objcateg_cl
        im_objtype         = lv_objtype
        im_event           = lv_event
        im_objkey          = lv_objkey

  •       IM_EVENT_CONTAINER =

        .
  CATCH cx_swf_evt_invalid_objtype .
  CATCH cx_swf_evt_invalid_event .
ENDTRY.


COMMIT WORK.


Tip! Just as for Business Object events, the <b>COMMIT WORK</b> statement is crucial when raising a Workflow event – without this the event will not be raised.

Check the event was raised correctly by turning on the event log (using transaction SWELS), and executing the event log. If your event was raised correctly you should have a new line in the event log that looks something like this:


image

The green light icon shows that a workflow was started as a result of this event.

The above code is fine for most events that just use the standard Workflow event container and have no specific parameters. Of course if you want to pass specific parameters you need a little extra code to:

  • Instantiate an empty event container
  • Add your event parameter name/value pairs to the event container
  • Raise the event passing the prepared event container

+Note: You don’t need to worry about filling any of the standard event container parameters such as the event creator – Workflow will do that as part of raising the event. +



DATA:
  ls_zcl_plant_key    TYPE werks,


  lv_objtype          TYPE sibftypeid,
  lv_event            TYPE sibfevent,
  lv_objkey           TYPE sibfinstid,


  lr_event_parameters TYPE REF TO if_swf_ifs_parameter_container,
  lv_param_name       TYPE swfdname,


  lv_visit_date       TYPE datum.


lv_objtype = ‘ZCL_PLANT’.
lv_event   = ‘SITE_VISIT_PROPOSED’.


  1. Set up the LPOR instance id

ls_zcl_plant_key-werks = ‘1000’.
MOVE ls_zcl_plant_key TO lv_objkey.


  1. Instantiate an empty event container

CALL METHOD cl_swf_evt_event=>get_event_container
  EXPORTING
    im_objcateg  = cl_swf_evt_event=>mc_objcateg_cl
    im_objtype   = lv_objtype
    im_event     = lv_event
  RECEIVING
    re_reference = lr_event_parameters.


  1. Set up the name/value pair to be added to the container

lv_param_name = ‘PROPOSED_VISIT_DATE’.
lv_visit_date = sy-datum + 7.


  1. Add the name/value pair to the event conainer

TRY.
    CALL METHOD lr_event_parameters->set
      EXPORTING
        name       = lv_param_name
        value      = lv_visit_date

  1.       UNIT       =
  2.     IMPORTING
  3.       RETURNCODE =

    .
  CATCH cx_swf_cnt_cont_access_denied .
  CATCH cx_swf_cnt_elem_access_denied .
  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_elem_def_invalid .
  CATCH cx_swf_cnt_container .
ENDTRY.


  1. Raise the event passing the prepared event container

TRY.
    CALL METHOD cl_swf_evt_event=>raise
      EXPORTING
        im_objcateg        = cl_swf_evt_event=>mc_objcateg_cl
        im_objtype         = lv_objtype
        im_event           = lv_event
        im_objkey          = lv_objkey
        im_event_container = lr_event_parameters.
  CATCH cx_swf_evt_invalid_objtype .
  CATCH cx_swf_evt_invalid_event .
ENDTRY.


COMMIT WORK.

If you want to check that your proposed visit date was passed to the workflow, you’ll need to create a new workflow container element to hold the proposed visit date, adjust the event to workflow binding, and re-activate your workflow before testing it.


What about Configuration options for Workflow Events?


Those of you who are familiar with Business Object events in R/3 and ECC are also aware that often no code at all is needed in these systems to raise an event for Workflow – you just need to complete the configuration in one of the many event configuration tables. These tables are provided by many different modules within the application, such as HR, SD message control, status management, and change documents. As of ECC6, most of these configuration tables unfortunately do not yet support ABAP OO events via configuration, with one notable exception – change documents.

In transaction SWEC, change document event configuration, you can specify the object category ABAP Class when specifying an event. The only difficulty you may have is matching the key of the change document to the key of your ABAP Class. You can overcome this conversion issue by coding your own conversion routine as a function module.

This function module can be called any valid name (within the customer namespace) but must have the same interface as the template function module SWE_CD_TEMPLATE_OBJKEY_FB_2. All you have to do in this function module is use the data in the change document header/items to build the local persistent object reference for your workflow-ready ABAP Class.

You then add the function module to the Function module field in the relevant row of transaction SWED – which defines the change document object relationship to an object type.

Hopefully some of the other configuration options will catch up soon and allow for ABAP OO event configuration also.


Where to now?


The next blog will look at fleshing out our workflow by using ABAP OO attributes to add meaningful text, descriptions, and additional parameters to each part of our workflow.

To report this post you need to login first.

29 Comments

You must be Logged on to comment or reply to a post.

  1. Kuncham Raja Sekhar
    Hi Jocelyn,

    This blog is simply superb.

    I tried out the first part(Simple OO Event Trigger) and it works fine till the triggering part.

    Well,now my doubt is…How can we send the data from Application to Workflow. I mean, in case of our Traditional BOR’s, we used to create instance for the BO(using Macros) and send this instance as a parameter for the Function module -SWE_EVENT_CREATE.

    How do we do the same in OO based stuff?

    I mean, does our current Static Method( cl_swf_evt_event=>raise) create the instance for the Class(Object) Type which was mentioned as parameter(IM_OBJTYPE)?

    Or Should we have to create the instance(as a Static method, which takes the Key fields as IMPORT Parameter and returns the INSTANCE-Export Parameter) explicitly sending the required data (Key fields and other data)as Event Parameters?

    Regards,
    Raja Sekhar

    (0) 
    1. Jocelyn Dart Post author
      Hi Raja, No kidding – the triggering part works fine as well – everything in the blog was tested by me in a 6.40 environment and the code is exactly what I was using – suggest you double-check your code.   Problem may possibly stem from the way you used to use SWE_EVENT_CREATE?

      Firstly, that’s an internal function module, really you should be using SAP_WAPI_EVENT_CREATE for BOR, but SWE_EVENT_CREATE is used by a lot of people I know as it was available before the WAPI. 

      Secondly whether you use SWE_EVENT_CREATE or SAP_WAPI_EVENT_CREATE or CL_SWF_EVT_EVENT=>RAISE you ***NEVER*** have to instantiate the main object – you provide the object key in the appropriate format, and the routine/method generates a matching object reference for the event container _EVT_OBJECT element.  The object instance is then automatically instantiated by the event manager and workflow manager at runtime when the event is raised and passed to the workflow instance.

      So you may have been doing some unnecessary coding all this time… sorry about that!

      If you look at the code example, you can see for CL_SWF_EVT_EVENT=>RAISE I just need to provide the object key in the LPOR format – of course each object has its own format for the LPOR-INSTID field, for the plant example it was simply the plant id.  If it was a multi-field value I’d just set that up in a structure and then move the structure contents to the INSTID field.

      If you want to pass in an additional object as an event parameter, then yes you do need to for BOR use macros to create a BOR object reference, or for OO use the SIBFLPOR structure to create an OO object reference, and then place that reference into the event container.

      There are some pre-requisities for using BOR with OO so I’ll be talking more about using BOR together with OO later in the series.

      Hope that helps.
      Regards,
      Jocelyn

      (0) 
  2. Kuncham Raja Sekhar
    Hi Jocelyn,

    You are right, we used to pass only the object key thro SWE_EVENT_CREATE or SW* Function modules,but not the Object Instance. 

    Sorry, it’s actually my mistake of missing some coding(in class), so due to that I am not able to get the value into M_POR,which made me to think that Instance is not getting created. But when I actually refered the coding  of cl_swf_evt_event=>raise, I found that Object reference should get created automatically and I found the instance created in the workflow log.

    I modified my coding now, and I can see the values getting passed properly. Extremely Sorry for my problem.

    Thanks for making me things clear.

    Now, I am more excited in exploring this OO Workflow Design. I am sure, I will come up with more meaningful doubts.So be ready Jocelyn…

    Regards,
    Raja Sekhar

    (0) 
    1. Jocelyn Dart Post author
      Hi Kenneth,
      This is one of the times when ABAP OO is much easier than BOR. 

      The IF_SWF_IFS_PARAMETER_CONTAINER->SET method accepts any format for the VALUE parameter.  So for a multiline element you literally pass in an internal table. 

      You just need to make sure the data definition of the table matches the data definition of the event parameter you are passing it to.
      Regards,
      Jocelyn

      (0) 
  3. Himanshu Gupta
    Hi,
    After raising the event through the code using cl_swf_evt_event=>raise method i dont see any output, i mean the output of the DISPLAY method.. When i check SWEL i notice that the event is getting raised correctly(green light) and there is a receiver and the workflow got started, but no output..?(May be the event is getting raised but the method is not getting executed)
    If i run the workflow independently it works fine and i see the result of the DISPLAY method..
    (0) 
    1. Jocelyn Dart Post author
      So Himanshu,
      Sounds like you have successfully raised an event. 

      But perhaps the event object or event parameters were not correctly formatted when you passed it across?  Or you are missing something in your event to workflow binding?

      You should be able to tell if anything was passed across and if the data is correct by checking the containers in your workflow log.
      Regards,
      Jocelyn

      (0) 
  4. Anonymous
    I think event capabilities incorporated to the workflow can give a lot of power to solve complex processes, I would like to know the events that are handled and the connection to the structure of the workflow.
    About the blog I think it is a very good example.
    Regards,
            Raúl.
    (0) 
  5. Alexei Isaev
    Hello, Jocelyn.

    I tried using new OO technique in workflow in our ECC 6.0 and was able to create a workflow this way. But then I encountered a snag – I created asynchronous task with terminating event CANCELLED, and used it in a workflow. Workflow creation is triggered by event CREATED of the sames class, and that works fine. But when I create event CANCELLED using the same object key in cl_swf_evt_event=>raise, SWEL shows me that even though event with this key is triggered, there is no receiver registered for it. My understanding (from debuging this) is that it is looking for corresponding record in table SWFDEVINST, but such record does not exist. Did you try to do anything similar, to see if terminating events work?

    (0) 
    1. Jocelyn Dart Post author
      Commiserations.  Yes terminating events do work exactly as per BOR events.
      I usually just do SWU_OBUF and that’s enough.
      Better luck next time.
      Jocelyn
      (0) 
  6. Bartlomiej Kolodziej
    Hi,

    I created ABAP OO class that implements IF_WORKFLOW interface according to one of the previous blogs on the topic (except it represents a sales order not a plant). Its key field is LPOR where CATID = ‘CL’, TYPEID = my class name and INSTID = sales order number.
    Then I created function module with the same interface as SWE_CD_TEMPLATE_OBJKEY_FB_2 which returns LPOR based on change document (including CATID = ‘CL’, TYPEID = my class name and INSTID = sales order number) as described in the last paragraph of above blog.
    I entered my function module to SWED (in row regarding VERKBELEG change documents).
    Then I try to add new row to SWEC (also for VERKBELEG but with changed fields conditions) with my ABAP OO class and its event. But I cannot choose my class in the list. I debugged SWEC and I can see that my class is selected but later on the function module SWE_CHECK_KEY_COMPATIBILITY returns incompatibility exception. I looked deeper and found that it expects the key field name to be “VBAK-VBELN”. I cannot create such attribute in my class.
    What is wrong with my approach and how to make it works?

    I’m working on SAP R/3 4.7 and I’m able to choose ABAP OO category in SWEC.

    Regards, Bartek

    (0) 
  7. Patrick Dean
    Hello – I’m an ABAP developer working in the UK, trying to develop BSPs linking into Workflow. I’ve got to say this blog is great and a real help, so many thanks!
    (0) 
    1. Jocelyn Dart Post author
      My pleasure Patrick!
      And by the way if you need to go in the other direction at all and call your BSP from Workflow, take a look at transaction SWFVISU – Task Visualization. 
      Regards,
      Jocelyn
      (0) 
  8. Paul Mazeika
    Jocelyn-

    How do you go about getting deep structures sent to the Event, and picked up by the Task? I have tried same as you have for flat structures with no avail. Works fine with flat structures and tables, but no deep structures and Object references.

    thanks!
    Paul

    (0) 
  9. Akin Ozak
    Hi Jocelyn,

    This is a very helpful topic, thank you very much.
    Up to this blog, it’s all clear. (There was no problem when testing the class with creating a single task)
    But while adding our method as task, wf does not offer any bindings, i’m stuck. Any suggestions?

    Akin

    (0) 
    1. Jocelyn Dart Post author
      Hi Akin,
      Bindings will only show if you have defined PUBLIC parameters to your method. Failing to mark the parameters as public is the most common problem.
      You should find that container elements are created automatically in your task to match each of your parameters.
      Hope that helps.
      Regards,
      Jocelyn
      (0) 
  10. Shan P
    Hello,

    I’m new to ABAP oo with workflow and i have knowledge in BOR with workflow.

    I have seen the code for triggerring the event using raise method. This code where to be put to trigger event.

    I have senario whenever the purchase order submitted then the workflow should trigger using the class. Here for raising event where to be place the code to trigger an event.

    (0) 
  11. Jonathan DeFlorio

    This blog discussion is very informative. However, I have one question: how should one raise a static ABAP OO event for use in Workflow?

    SAP ABAP Class CL_SWF_EVT_EVENT can be used to raise instance-dependent events with methods RAISE and RAISE_IN_UPDATE_TASK. However, neither of these methods appear to facilitate static events because they both have non-optional import parameters called IM_OBJKEY, which suggests that an instance is required.

    I would like to create a workflow wait step that waits for a static event defined in the Local Persistent Object Reference [LPOR] class that is used in the workflow template. The objective is to raise the event outside the workflow in an executable program and then all “In process” workflows with the wait step will receive the event and respond.

    The Technology White Paper “ABAP OO for SAP Business Workflow (including 6.40” (http://www.scribd.com/doc/126734779/ABAP-OO-for-SAP-Business-Workflow-Including-6-40) states that events for Workflow can be static as well as instance-dependent on page 14:

    “Events can be static instead of instance-dependent. This is the only major difference from Business Object events. Of course a static event does not pass the instance. This may be useful for terminating events.”

    However, it similarly refers to Class CL_SWF_EVT_EVENT as a technique for programmatically raising events, which appears to be restricted to instance-dependent events.

    Is there an alternative class with methods that can raise static ABAP OO events for Workflow?

    (0) 
    1. Jocelyn Dart Post author

      Hi Jonathan, You just need to provide a defacto key – e.g. a dummy instance of that class with a blank key.

      Regards,

      Jocelyn

      (0) 
      1. Jonathan DeFlorio

        Hi Jocelyn,

        Thanks for your message. I changed the code so that the import parameter im_objkey of method cl_swf_evt_event=>raise was blank. The event was raised but the event trace [trans. SWEL] indicated that there was “No receiver entered” for the event whereas with an object key in im_objkey the event trace showed “EVENTITEM” as the receiver type and function module SWW_EI_EVENT_RECEIVE_IBF as the handler/action, which is defined as the receiver for the event in trans. SWEINST (Instance linkages).

        On both occasions the event remained defined as a (public) static event in the class definition in SE24. If I try and define a similar entry in trans. SWETYPV (Type linkages) it errors with message no. WA453 “Receiver FM SWW_EI_EVENT_RECEIVE_IBF can only be used for instance linkages”.

        Do you know which function module (or method) should be specified as the receiver for type-linkage to work?

        Regards,

        Jonathan

        (0) 
  12. Edison Lim

    Thanks for sharing these helpful explanations and instructions. I am able to create workflows based on ABAP OO now. One thing that is not very clear to me is how does cl_swf_evt_event=>raise differ from the raise event statement that are used to raise events in non-workflow ABAP OO. Do you have some time to explain the similarities and differences of these two approaches? One benefit for using ABAP OO for workflow is that any ABAPer without workflow knowledge can maintain workflow-relevant ABAP objects, and that any generic ABAP object should be usable in workflow. I am not very clear why do we have two different ways of triggering workflow, one seems to be specific to workflow and the other is not.

    (0) 
    1. Jonathan DeFlorio

      Hi Edison,

      Method CL_SWF_EVT_EVENT=>RAISE is a static method which finds the specific object instance (for ABAP Class and/or BOR objects) for which the event is to be raised and then raises the event for that specific instance. It uses the import fields IM_OBJCATEG, IM_OBJTYPE, IM_EVENT, IM_OBJKEY to determine the object instance.

      A workflow runtime instance using ABAP class or BOR events (e.g. in a wait step) will then respond only if it has a matching object instance. In addition to this the method manages related meta-data such a date, time, user ID, event container fields and transaction ID by using the event manager. The event manager also processes the event handlers for the event in question, which can include workflow wait steps. In contrast, the RAISE event you refer to will only raise events for ABAP classes and will not link the event to a workflow runtime instance.

      As far as generic ABAP classes as concerned, their methods can only be used to implement object methods of standard tasks (to be used in workflow steps) if the class includes interface IF_WORKFLOW.

      Regards,

      Jonathan

      (0) 
  13. Seema Naharia

    Hi Jocelyn,

    thanks for your very informative blog.

    I have created a class based workflow but I can’t see the workflow log  in services for object.

    Is this a limitation to use BO based workflow to have the log in services for object?

     

     

    Thanks

    Seema

    (0) 
    1. Jocelyn Dart Post author

      Hi Seema

      The workflow log will show in Services for Object depending on the object that is being interrogated. That depends on which transaction you are using – as the object is passed as a parameter of the transaction.

      One way to enforce this would be to add the equivalent Business Object reference in your workflow container. Try this blog for more info

      https://blogs.sap.com/2007/07/16/referencing-bor-objects-in-abap-oo-classes

      Rgds,

      Jocelyn

      (0) 
      1. Seema Naharia

        Hello Jocelyn,

        Thanks for your prompt reply.

        Actually My workflow is for transaction PA30. The object here is Employee.  So you are saying pass employee relevant business object in the workflow container.

        Although a class is created for this workflow but we are not using its event to trigger the workflow. we are simply triggering workflow from webdynpro.

        My doubt is:

        1. I am triggering workflow from webdynpro. So if we pass relevant business object in the workflow container  then workflow log will appear?
        2. OR do we have to raise class event also to trigger workflow instead of calling it from webdynpro, and pass employee object in workflow container? then only workflow log will appear in services for object?

        Thanks much

        Seema

        (0) 

Leave a Reply