Shared Top Border

Enterprise Resource
Planning Portal

 

Advertise | Founder BLOG

ERPGenie.COM ABAP Tips and Tricks Database

THE ultimate
ERP website

 

Forums | Vote for us |

Google    Other Search Options

Login

Login to view more content!!!





Lost Password?
No account yet? Register

Registered Access

Poll

What area of ABAP are you interested in?
 
Home arrow Sample Code arrow IDocs / BDocs arrow Launching an error workflow during IDoc processing
Launching an error workflow during IDoc processing PDF Print E-mail
User Rating: / 0
PoorBest 
Written by Anon.   
Saturday, 17 February 2007

Example code of 1 way of launching an error workflow for an IDoc.

 

* include for workflow programming

INCLUDE <CNTN01>.

 

       PERFORM analyzing_event_create

                TABLES

                   t_couple_to_process

                USING

                   l_commit_counter

                   inbsync.

        if sy-subrc is initial.

 

          MESS-MSGID = 'ZS7'.

          MESS-MSGTY = 'E'.

          MESS-MSGNO = i_msgno.

          MESS-MSGV1 = i_msgv1.

          MESS-MSGV2 = i_msgv2.

          CALL FUNCTION 'IDOC_ERROR_WORKFLOW_START'

            EXPORTING

              DOCNUM                        = 0

              EVENTCODE                     = 'EDIM'

              MESS                          = mess

              STATUSMESS                    = mess

            EXCEPTIONS

              NO_ENTRY_IN_TEDE5             = 1

              ERROR_IN_START_WORKFLOW       = 2

              OTHERS                        = 3.

 

          COMMIT WORK.

        endif.  "link created

 

FORM analyzing_event_create

                TABLES

                   t_couple_to_process_in  STRUCTURE ediinbound

                USING

                   commit_counter_in       LIKE      ediglodata-comcount

                   start_recfb_synchron_in LIKE      ediglodata-inbsync.

* local variables

  DATA:

* instance that is created

    l_object               TYPE swc_object,

* object key, e.g IDoc number

    l_object_key           LIKE swotobjid-objkey,

* id of wf event

    l_event_id             LIKE swedumevid-evtid,

* status record for case of error

    l_status_record        TYPE tidoc_status_record_ext,

* flag indicating whether subscribed task is started synchronously

    l_start_recfb_synchron LIKE sweflags-syncflag VALUE ' ',

* idoc number (needed because of type checking)

    l_idoc_number          LIKE edidc-docnum.

* local constants

  CONSTANTS:

* object type 'IDOC'

    c_object_type          LIKE swetypecou-objtype VALUE 'IDOCINVOIC',

* name of event to be created

    c_idc_evt     LIKE swetypecou-event VALUE 'INPUTERROROCCURREDMM'

.

 

 if t_couple_to_process_in[] is initial.

    COMMIT WORK.

    CALL FUNCTION 'DEQUEUE_ALL'.

    CLEAR commit_counter_in.

    exit.

  endif.

 

* cast

  l_start_recfb_synchron = start_recfb_synchron_in.

* declaration of container

  swc_container       l_t_ev_container.

* initialize container

  swc_clear_container l_t_ev_container.

 

* dequeue all idocs at the same time

  LOOP AT t_couple_to_process_in.

* cast

    l_idoc_number = t_couple_to_process_in(16).

    CALL FUNCTION 'EDI_DOCUMENT_DEQUEUE_LATER'

         EXPORTING

              docnum = l_idoc_number

         EXCEPTIONS

              OTHERS = 0.

  ENDLOOP.

 

* get first idoc number in table in order to create an object

  READ TABLE t_couple_to_process_in INDEX 1.

* set object key in variable of correct type (casting)

  l_object_key = t_couple_to_process_in(16).

 

* create an object, i.e. an IDoc

  swc_create_object l_object c_object_type l_object_key.

 

* fill container: work item object id (idoc)

  swc_set_element l_t_ev_container     "EC *

                  c_element_wi_obj_id  "EC *

                  l_object.            "EC *

* fill container:  NumberPlusEventcode (table of couples)

  swc_set_table l_t_ev_container

                c_element_no_plus_info

                t_couple_to_process_in.

 

* fire event that will trigger the idoc inbound processing

  CALL FUNCTION 'SWE_EVENT_CREATE'

       EXPORTING

            objtype              = c_object_type

            objkey               = l_object_key

            event                = c_idc_evt

*           CREATOR              = ' '

*           START_WITH_DELAY     = ' '

            start_recfb_synchron = l_start_recfb_synchron

       IMPORTING

            event_id             = l_event_id

       TABLES

            event_container      = l_t_ev_container

       EXCEPTIONS

            objtype_not_found    = 1

            OTHERS               = 2.

 

  IF   ( sy-subrc <> 0 )

* event was not created => error handling for this idoc (EDIM)

    OR ( l_event_id = 0 ).

* stop processing, no commit

    MESSAGE ID      'E0'

            TYPE    'A'

            NUMBER  '374'

            WITH    l_status_record-docnum

                    c_idc_evt

            RAISING event_create_failed.

  ELSE.

* do commit and reset counter

* the commit will get the idocs to the database and at the same time

* activate the event that was created

    COMMIT WORK.

* dequeue all unprocessed IDocs to avoid log-overflow

    CALL FUNCTION 'DEQUEUE_ALL'.

    CLEAR commit_counter_in.

* reset table of idocs that need to be processed

    CLEAR   t_couple_to_process_in.

    REFRESH t_couple_to_process_in.

  ENDIF.

 

ENDFORM.                               " ANALYZING_EVENT_CREATE


Related Items:

 
< Prev   Next >

Google Search

Statistics

Contribution Activity
Utilities: 38
Tips and Tricks: 330
Sample Code: 164
Total Contributions: 545

Member Activity
Members: 6061 since 2/1/2007!
New: 0 since yesterday!
Visitors: 959204
We have 1 guest online

Newest Members

Welcome our newest members:

Google Ads

Shared Bottom Border

Contact Us | Polls | Add URL | Contribute | Privacy | Terms | Feedback

Discussion Forum | BLOG | Consultants: Post your resume | Companies: Advertise on ERPGenie.COM | Post Job
Financials Consultant | Consultant Review | Gallia Consulting | Supply Chain Project | SAP Financials Forum
GenieHoldings.COM, Inc. | Genie Press | WorkflowGenie | ESAGenie | ERPTopSites | ABAP Tips and Tricks | SAP Solutions Database

EDIGenie | Searching Survivor