Posted: Sun Dec 16, 2007 12:37 am Post subject: Workflow Event Create
Write a Report/Function Module That Generates an Event
You may be asked to develop a program that generates an event in order to trigger a workflow, e.g the event CREATE for Accounting document line item BSEG. Before programming any event, you must familiarize yourself with the structure of the object type to which it belongs. Transaction SWO1 may be used to display the components of all standard and custom object types existing in the SAP system. (See figure 1.)
Figure 1. Viewing the Components of an Object Type via transaction SWO1.
The events are only defined in the Business Object Repository (BOR). In order to utilize them for workflows, they should be fired from programs. The function module SWE_EVENT_CREATE or any of its variant forms may be used to generate events.
An excerpt from a program that employs this function module is shown below.
DATA : OBJKEY LIKE.
DATA : BEGIN OF KEY,
BUKRS LIKE BSEG-BELNR,
BELNR LIKE BSEG-BELNR,
GJAHR LIKE BSEG-GJAHR,
BUZEI LIKE BSEG-BUZEI,
END OF KEY.
KEY-BUKRS = ZABC.
KEY-BELNR = 1900001220.
KEY-GJAHR = 2003.
KEY-BUZEI = 001.
OBJKEY = KEY.
CALL FUNCTION 'SWE_EVENT_CREATE'
OBJTYPE = BSEG
OBJKEY = OBJKEY
EVENT = CREATED
EVENT_CONTAINER = CONTAINER
OBJTYPE_NOT_FOUND = 1
OTHERS = 2
IF SY-SUBRC <> 0.
" MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
" WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4
" RAISING OBJTYPE_NOT_FOUND.
The above code fragment calls the function module SWE_EVENT_CREATE and passes values to its parameters. Let us go through each of them.
OBJTYPE: The name of the object type whose event is to be generated. This object type must exist in the Business Object Repository (BOR) and must be viewable via the transaction SWO1.
OBJKEY: A set of values that uniquely identifies the instance of the object type in question. For example, in the case of a document line item, the fields Company code document number, Fiscal Year and line item together form the key data for an object of type BSEG.
EVENT: The name of the event, in our case CREATED.
EVENT_CONTAINER: The internal table that represents the event container. Any additional information that is essential to the correct working of the workflow may be passed from the event generation program to the workflow via containers. You may utilize the macros of container programming within the calling program. SWC_SET_ELEMENT and SWC_SET_OBJECT_KEY are a few such macros. However, the INCLUDE <CNTAIN> is necessary in the main program before using the macros since the macro definitions reside in this include.
As with all function modules, be careful when selecting the type of the passing parameters. Selecting incorrect types may lead to short dumps. If the function module executes without any error, SY-SUBRC returns zero, or any other value, otherwise. Upon successful execution of the function, the fired event may be interpreted as
Accounting Document '1900001220'
line item '001'
of Company code 'ZABC'
in fiscal year '2003'
has been created. This event is made available to the entire SAP system so that any of the linked receiver programs may be invoked.
A subsequent COMMIT WORK statement, however, is very important in order to trigger the event's receiver program(s). Suppose your event triggers the sending of a work item to a user, the work item will not be sent to the respective agent until a COMMIT WORK is executed. The COMMIT WORK triggers a separate tRFC for each receiver found for the respective generated event.
DATA: OBJKEY LIKE SWEINSTCOU-OBJKEY,
EVENTID LIKE SWEDUMEVID-EVTID.
DATA: BEGIN OF EVENT_CONTAINER OCCURS 0.
INCLUDE STRUCTURE SWCONT.
DATA: END OF EVENT_CONTAINER.
OBJTYPE LIKE SWETYPECOU-OBJTYPE DEFAULT 'ZRGMARA',
MATERIAL LIKE MARA-MATNR,
EVENT LIKE SWETYPECOU-EVENT DEFAULT 'CREATED',
VOLEH LIKE MARA-VOLEH,
LED LIKE SY-DATUM DEFAULT '19971231'.
* set input parameters for CREATED event.
* remark: to be more general, we had to use fm SWO_QUERY_PARAMETERS
IF EVENT EQ 'CREATED'.
SWC_SET_ELEMENT EVENT_CONTAINER 'LatestChangeDate' LED.
SWC_SET_ELEMENT EVENT_CONTAINER 'VolumeUnit' VOLEH.
IF SY-SUBRC NE 0.
WRITE : / 'Object type', OBJTYPE, 'not found in object repository'.
IF EVENTID NE 0.
WRITE : / 'At least one receiver was found'.
WRITE : / 'No receivers found'.
In the BADI implementation of the action call FM SWE_EVENT_CREATE to trigger the workflow.
This is the piece of code that you can write in the BADI implementation.
* Data for workflow trigger
DATA: objtype LIKE swetypecou-objtype,
objkey LIKE sweinstcou-objkey,
event LIKE swetypecou-event,
event_container LIKE swcont OCCURS 0 WITH HEADER LINE.
objtype = 'ZBUS1001'. "Material [sub object of BUS1001]
MOVE v_wfmatnr TO objkey. "V_WFMATNR is material number
event = 'CreatePLMMaterial'."Custom Event defined in
* ZBUS1001 [Tcode SWO1]
*Following are the Event parameters required in the *Workflow
swc_set_element event_container 'Attachment' v_wfattachment.
swc_set_element event_container 'Material' v_wfmatnr.
swc_set_element event_container 'TisGroup' v_wftisgroup.
swc_set_element event_container 'SchDate' v_schdate.
CALL FUNCTION 'SWE_EVENT_CREATE'
objtype = objtype
objkey = objkey
event = event
event_container = event_container
objtype_not_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum
All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG. SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG. Every effort is made to ensure content integrity. Use information on this site at your own risk.