ABAP CLASS in work flow

Hi all.
     Can you pls let me know what is the use of ABAP CLASS in workflow with one sample scenario.
How it differs from  BOR. Thanks in advance.
Kind Regards,
sami.

Hi Sami,
ABAP classes are pure representation of OOPS. They provide additional functionality that is not provided by business objects.
If you search SDN you would find ample information on the same, you can refer the following blogs to start with:
/people/jocelyn.dart/blog/2006/06/19/why-use-abap-oo-with-workflow
/people/jocelyn.dart/blog/2006/07/27/raising-abap-oo-events-for-workflow
Hope this helps!
Regards,
Saumya

Similar Messages

  • Reg - Work Flow Program ( ABAP )

    Hi,
    Pls advise Where i get the Program ( ABAP Code ) in the Work Flow.
    Example : I need to add one more plant in the WorkFlow ..
    Thanks
    Roy..

    Hi Roy,
    You can Program Your workflow in Two ways
    make use of an object(Bor-Business object repositry)
    or make use of  a class.
    write your coding in a method in Object and call that object in a workflow task.
    do necessary bindings to ensure that your data is communicated between task and workflow.
    Thanks & Regards
    Hari Sankar M

  • ABAP API for MDM work flow

    Hi SDN,
    I need some information related to ABAP API for MDM workflow. I did search in SDN and I found one solution in a thered posted on Jul-2008.
    ABAP API - MDM Workflow execute
    My dought is: Do we have any ABAP API for call MDM work flow. Please provide me the solution ASAP. Apprciate for your immediate response.
    Regards,
    Kumar.

    Hi LAKSHMAN ,
    To answer your question specifically
    Using ABAP api you cannot call MDM workflows as of mdm 5.5 there are no functions specific to calling MDM workflows in ABAP.If you want to implement workflows on ABAP side you need to go for SAP ECC workflows which is a different topic than MDM>
    To call MDM workflows over the Java stack ie WAS (SAP portal),You have 2 ways
    - UWL
    - Guided Procedures.
    - UWL is a way of calling MDM workflows on EP.Wherein the workflow design will be done in MDM and it will only be called in portal using appropiate connections and configurations.
    You can refer the below links to know more on them:
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/771f1a61-0e01-0010-daa9-93a52905da09 (uwl)
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/a3461636-0301-0010-3787-978f5ac8bd45 (UWL config)
    - GP is a way where by you need to design the entire workflow on SAP portal the logic can be pertaining to MDM but the design is completely on portal using webdynpros and api.
    You can refer the below links to know more on them:
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/92811997-0d01-0010-9584-f7d535177831  (Guided procedures)
    Enterprise Master Data Management   (EP Guided)
    To know more on ABAP api and its provider classes you can refer the below:
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/601ddb01-e5c8-2910-d981-b190b51fca44  (abap api webinar)
    Re: Abap api error (Abap api provider classes Forum)
    Hope It Helped
    Thanks & Regards
    Simona Pinto

  • Issue regarding [Work Flow] Business Object Event Raise in ABAP Program

    Hi All,
    I have one issue regarding [Work Flow] Business Object Event Raise in ABAP Program.
    Actual TDS is as below:
    If E message type written, raise Business object BUS2005 (Production order) Event PickShortage for production order passing warehouse, transfer request
    (BUS2065 Object key) in event container. Also include table of text version of error
    messages for this set of Transfer
    Request.
    Can anybody tell me how can i write it technically in ABAP Code.
    Can anybody solve this issue!
    Thanks in advance.
    Thanks,
    Deep.

    Hi,
    Can anybody solve above posted issue!
    Thanks,
    Deep.

  • How can we use TABLE CONTROL in BDC and WORK FLOW of ABAP.

    how can we use TABLE CONTROL in BDC and WORK FLOW of ABAP.?
    please explain the important questions.

    How to deal with table control / step loop in BDC
    Steploop and table contol is inevitable in certain transactions. When we run BDC for such transactions, we will face the situation: how many visible lines of steploop/tablecontrol are on the screen? Although we can always find certain method to deal with it, such as function code 'NP', 'POPO', considering some extreme situation: there is only one line visible one the screen, our BDC program should display an error message. (See transaction 'ME21', we you resize your screen to let only one row visible, you can not enter mutiple lines on this screen even you use 'NP')
    Now with the help of Poonam on sapfans.com developement forum, I find a method with which we can determine the number of visible lines on Transaction Screen from our Calling BDC program. Maybe it is useless to you, but I think it will give your some idea.
    Demo ABAP code has two purposes:
    1. how to determine number of visible lines and how to calculte page number;
    (the 'calpage' routine has been modify to meet general purpose usage)
    2. using field symbol in BDC program, please pay special attention to the difference in Static ASSIGN and Dynamic ASSIGN.
    Now I begin to describe the step to implement my method:
    (I use transaction 'ME21', screen 121 for sample,
    the method using is Call Transation Using..)
    Step1: go to screen painter to display the screen 121, then we can count the fixed line on this screen, there is 7 lines above the steploop and 2 lines below the steploop, so there are total 9 fixed lines on this screen. This means except these 9 lines, all the other line is for step loop. Then have a look at steploop itselp, one entry of it will occupy two lines.
    (Be careful, for table control, the head and the bottom scroll bar will possess another two fixed lines, and there is a maximum number for table line)
    Now we have : FixedLine = 9
                  LoopLine  = 2(for table control, LoopLine is always equal to 1)
    Step2: go to transaction itself(ME21) to see how it roll page, in ME21, the first line of new page is always occupied by the last line of last page, so it begin with index '02', but in some other case, fisrt line is empty and ready for input.
    Now we have: FirstLine = 0
              or FirstLine = 1 ( in our case, FirstLine is 1 because the first line of new page is fulfilled)
    Step3: write a subroutine calcalculating number of pages
    (here, the name of actual parameter is the same as formal parameter)
    global data:    FixedLine type i, " number of fixed line on a certain screen
                    LoopLine  type i, " the number of lines occupied by one steploop item
                    FirstLine type i, " possbile value 0 or 1, 0 stand for the first line of new                                                               " scrolling screen is empty, otherwise is 1
                    Dataline  type i, " number of items you will use in BDC, using DESCRIBE to get
                    pageno    type i, " you need to scroll screen how many times.
                    line      type i, " number of lines appears on the screen.
                    index(2)  type N, " the screen index for certain item
                    begin     type i, " from parameter of loop
                    end       type i. " to parameter of loop
    *in code sample, the DataTable-linindex stands for the table index number of this line
    form calpage using FixedLine type i (see step 1)
                       LoopLine  type i (see step 1)
                       FirstLine type i (see step 2)
                       DataLine  type i ( this is the item number you will enter in transaction)
              changing pageno    type i (return the number of page, depends on run-time visible                                                                             line in table control/ Step Loop)
              changing line      type i.(visible lines one the screen)
    data: midd type i,
          vline type i, "visible lines
    if DataLine eq 0.
       Message eXXX.
    endif.
    vline = ( sy-srows - FixedLine ) div LoopLine.
    *for table control, you should compare vline with maximum line of
    *table control, then take the small one that is min(vline, maximum)
    *here only illustrate step loop
    if FirstLine eq 0.
            pageno = DataLine div vline.
            if pageno eq 0.
               pageno = pageno + 1.
            endif.
    elseif FirstLine eq 1.
            pageno = ( DataLine - 1 ) div ( vline - 1 ) + 1.
            midd = ( DataLine - 1 ) mod ( vline - 1).
            if midd = 0 and DataLine gt 1.
                    pageno = pageno - 1.
            endif.
    endif.
    line = vline.
    endform.
    Step4 write a subroutine to calculate the line index for each item.
    form calindex using Line type i (visible lines on the screen)
                        FirstLine type i(see step 2)
                        LineIndex type i(item index)
              changing  Index type n.    (index on the screen)
      if  FirstLine = 0.
            index = LineIndex mod Line.
            if index = '00'.
                    index = Line.
            endif.
      elseif FirstLine = 1.
            index = LineIndex mod ( Line - 1 ).
            if ( index between 1 and 0 ) and LineIndex gt 1.
                    index = index + Line - 1.
            endif.
            if Line = 2.
                    index = index + Line - 1.
            endif.
    endif.
    endform.
    Step5 write a subroutine to calculate the loop range.
    form calrange using Line type i ( visible lines on the screen)
                        DataLine type i
                        FirstLine type i
                        loopindex like sy-index
            changing    begin type i
                        end type i.
    If FirstLine = 0.
       if loopindex = 1.
            begin = 1.
            if DataLine <= Line.
                    end = DataLine.
            else.
                    end = Line.
            endif.
       elseif loopindex gt 1.
            begin = Line * ( loopindex - 1 ) + 1.
            end   = Line * loopindex.
            if end gt DataLine.
               end = DataLine.
            endif.
       endif.
    elseif FirstLine = 1.
      if loopindex = 1.
            begin = 1.
            if DataLine <= Line.
                    end = DataLine.
            else.
                    end = Line.
            endif.
      elseif loop index gt 1.
            begin = ( Line - 1 ) * ( loopindex - 1 ) + 2.
            end =   ( Line - 1 ) * ( loopindex - 1 ) + Line.
            if end gt DataLine.
                    end = DataLine.
            endif.
      endif.
    endif.
    endform.
    Step6 using field sysbol in your BDC, for example: in ME21, but you should calculate each item will correponding to which index in steploop/Table Control
    form creat_bdc.
    field-symbols: <material>, <quan>, <indicator>.
    data: name1(14) value 'EKPO-EMATN(XX)',
          name2(14) value 'EKPO-MENGE(XX)',
          name3(15) value 'RM06E-SELKZ(XX)'.
    assign:         name1 to <material>,
                    name2 to <quan>,
                    name3 to <indicator>.
    do pageno times.
    if sy-index gt 1
    *insert scroll page ok_code"
    endif.
            perform calrange using Line DataLine FirstLine sy-index
                             changing begin end.
    loop at DataTable from begin to end.
            perform calindex using Line FirstLine DataTable-LineIndex changing Index.
            name1+11(2) = Index.
            name2+11(2) = Index.
            name3+12(2) = Index.
            perform bdcfield using <material> DataTable-matnr.
            perform bdcfield using <quan>     DataTable-menge.
            perform bdcfield using <indicator> DataTable-indicator.
    endloop.
    enddo.
    An example abap program of handling Table Control during bdc programming.
    REPORT zmm_bdcp_purchaseorderkb02
           NO STANDARD PAGE HEADING LINE-SIZE 255.
                    Declaring internal tables                            *
    *-----Declaring line structure
    DATA : BEGIN OF it_dummy OCCURS 0,
             dummy(255) TYPE c,
           END OF it_dummy.
    *-----Internal table for line items
    DATA :  BEGIN OF it_idata OCCURS 0,
              ematn(18),      "Material Number.
              menge(13),      "Qyantity.
              netpr(11),      "Net Price.
              werks(4),       "Plant.
              ebelp(5),       "Item Number.
            END OF it_idata.
    *-----Deep structure for header data and line items
    DATA  :  BEGIN OF it_me21 OCCURS 0,
               lifnr(10),      "Vendor A/c No.
               bsart(4),       "A/c Type.
               bedat(8),       "Date of creation of PO.
               ekorg(4),       "Purchasing Organisation.
               ekgrp(3),       "Purchasing Group.
               x_data LIKE TABLE OF it_idata,
             END OF it_me21.
    DATA  :  x_idata LIKE LINE OF it_idata.
    DATA  :  v_delimit VALUE ','.
    DATA  :  v_indx(3) TYPE n.
    DATA  :  v_fnam(30) TYPE c.
    DATA  :  v_count TYPE n.
    DATA  :  v_ne TYPE i.
    DATA  :  v_ns TYPE i.
    *include bdcrecx1.
    INCLUDE zmm_incl_purchaseorderkb01.
                    Search help for file                                 *
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
      CALL FUNCTION 'F4_FILENAME'
        EXPORTING
          program_name  = syst-cprog
          dynpro_number = syst-dynnr
        IMPORTING
          file_name     = p_file.
    START-OF-SELECTION.
           To upload the data into line structure                        *
      CALL FUNCTION 'WS_UPLOAD'
        EXPORTING
          filename = p_file
          filetype = 'DAT'
        TABLES
          data_tab = it_dummy.
        Processing the data from line structure to internal tables       *
      REFRESH:it_me21.
      CLEAR  :it_me21.
      LOOP AT it_dummy.
        IF it_dummy-dummy+0(01) = 'H'.
          v_indx = v_indx + 1.
          CLEAR   it_idata.
          REFRESH it_idata.
          CLEAR   it_me21-x_data.
          REFRESH it_me21-x_data.
          SHIFT it_dummy.
          SPLIT it_dummy AT v_delimit INTO it_me21-lifnr
                                           it_me21-bsart
                                           it_me21-bedat
                                           it_me21-ekorg
                                           it_me21-ekgrp.
          APPEND it_me21.
        ELSEIF it_dummy-dummy+0(01) = 'L'.
          SHIFT it_dummy.
          SPLIT it_dummy AT v_delimit INTO it_idata-ematn
                                           it_idata-menge
                                           it_idata-netpr
                                           it_idata-werks
                                           it_idata-ebelp.
          APPEND it_idata TO it_me21-x_data.
          MODIFY it_me21 INDEX v_indx.
        ENDIF.
      ENDLOOP.
                    To open the group                                    *
      PERFORM open_group.
            To populate the bdcdata table for header data                *
      LOOP AT it_me21.
        v_count = v_count + 1.
        REFRESH it_bdcdata.
        PERFORM subr_bdc_table USING:   'X' 'SAPMM06E'    '0100',
                                        ' ' 'BDC_CURSOR'  'EKKO-LIFNR',
                                        ' ' 'BDC_OKCODE'  '/00',
                                        ' ' 'EKKO-LIFNR'  it_me21-lifnr,
                                        ' ' 'RM06E-BSART' it_me21-bsart,
                                        ' ' 'RM06E-BEDAT' it_me21-bedat,
                                        ' ' 'EKKO-EKORG'  it_me21-ekorg,
                                        ' ' 'EKKO-EKGRP'  it_me21-ekgrp,
                                        ' ' 'RM06E-LPEIN' 'T'.
        PERFORM subr_bdc_table USING:   'X' 'SAPMM06E'    '0120',
                                        ' ' 'BDC_CURSOR'  'RM06E-EBELP',
                                        ' ' 'BDC_OKCODE'  '/00'.
        MOVE 1 TO v_indx.
    *-----To populate the bdcdata table for line item data
        LOOP AT it_me21-x_data INTO x_idata.
          CONCATENATE 'EKPO-EMATN(' v_indx ')'  INTO v_fnam.
          PERFORM  subr_bdc_table USING ' ' v_fnam x_idata-ematn.
          CONCATENATE 'EKPO-MENGE(' v_indx ')'  INTO v_fnam.
          PERFORM  subr_bdc_table USING ' ' v_fnam x_idata-menge.
          CONCATENATE 'EKPO-NETPR(' v_indx ')'  INTO v_fnam.
          PERFORM  subr_bdc_table USING ' ' v_fnam x_idata-netpr.
          CONCATENATE 'EKPO-WERKS(' v_indx ')'  INTO v_fnam.
          PERFORM  subr_bdc_table USING ' ' v_fnam x_idata-werks.
          v_indx = v_indx + 1.
          PERFORM subr_bdc_table USING:  'X' 'SAPMM06E'    '0120',
                                         ' ' 'BDC_CURSOR'  'RM06E-EBELP',
                                         ' ' 'BDC_OKCODE'  '/00'.
        ENDLOOP.
        PERFORM subr_bdc_table USING:    'X' 'SAPMM06E'    '0120',
                                         ' ' 'BDC_CURSOR'  'RM06E-EBELP',
                                         ' ' 'BDC_OKCODE'  '=BU'.
        PERFORM bdc_transaction USING 'ME21'.
      ENDLOOP.
      PERFORM close_group.
                      End of selection event                             *
    END-OF-SELECTION.
      IF session NE 'X'.
    *-----To display the successful records
        WRITE :/10  text-001.          "Sucess records
        WRITE :/10  SY-ULINE(20).
        SKIP.
        IF it_sucess IS INITIAL.
          WRITE :/  text-002.
        ELSE.
          WRITE :/   text-008,          "Total number of Succesful records
                  35 v_ns.
          SKIP.
          WRITE:/   text-003,          "Vendor Number
                 17 text-004,          "Record number
                 30 text-005.          "Message
        ENDIF.
        LOOP AT it_sucess.
          WRITE:/4  it_sucess-lifnr,
                 17 it_sucess-tabix CENTERED,
                 30 it_sucess-sucess_rec.
        ENDLOOP.
        SKIP.
    *-----To display the erroneous records
        WRITE:/10   text-006.          "Error Records
        WRITE:/10   SY-ULINE(17).
        SKIP.
        IF it_error IS INITIAL.
          WRITE:/   text-007.          "No error records
        ELSE.
          WRITE:/   text-009,          "Total number of erroneous records
                 35 v_ne.
          SKIP.
          WRITE:/   text-003,          "Vendor Number
                 17 text-004,          "Record number
                 30 text-005.          "Message
        ENDIF.
        LOOP AT it_error.
          WRITE:/4  it_error-lifnr,
                 17 it_error-tabix CENTERED,
                 30 it_error-error_rec.
        ENDLOOP.
        REFRESH it_sucess.
        REFRESH it_error.
      ENDIF.
    CODE IN INCLUDE.
    Include           ZMM_INCL_PURCHASEORDERKB01
    DATA:   it_BDCDATA LIKE BDCDATA    OCCURS 0 WITH HEADER LINE.
    DATA:   it_MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
    DATA:   E_GROUP_OPENED.
    *-----Internal table to store sucess records
    DATA:BEGIN OF it_sucess OCCURS 0,
           msgtyp(1)   TYPE c,
           lifnr  LIKE  ekko-lifnr,
           tabix  LIKE  sy-tabix,
           sucess_rec(125),
         END OF it_sucess.
    DATA: g_mess(125) type c.
    *-----Internal table to store error records
    DATA:BEGIN OF it_error OCCURS 0,
           msgtyp(1)   TYPE c,
           lifnr  LIKE  ekko-lifnr,
           tabix  LIKE  sy-tabix,
           error_rec(125),
         END OF it_error.
           Selection screen
    SELECTION-SCREEN BEGIN OF LINE.
    PARAMETERS session RADIOBUTTON GROUP ctu.  "create session
    SELECTION-SCREEN COMMENT 3(20) text-s07 FOR FIELD session.
    SELECTION-SCREEN POSITION 45.
    PARAMETERS ctu RADIOBUTTON GROUP ctu.     "call transaction
    SELECTION-SCREEN COMMENT 48(20) text-s08 FOR FIELD ctu.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 3(20) text-s01 FOR FIELD group.
    SELECTION-SCREEN POSITION 25.
    PARAMETERS group(12).                      "group name of session
    SELECTION-SCREEN COMMENT 48(20) text-s05 FOR FIELD ctumode.
    SELECTION-SCREEN POSITION 70.
    PARAMETERS ctumode LIKE ctu_params-dismode DEFAULT 'N'.
    "A: show all dynpros
    "E: show dynpro on error only
    "N: do not display dynpro
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 48(20) text-s06 FOR FIELD cupdate.
    SELECTION-SCREEN POSITION 70.
    PARAMETERS cupdate LIKE ctu_params-updmode DEFAULT 'L'.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 3(20) text-s03 FOR FIELD keep.
    SELECTION-SCREEN POSITION 25.
    PARAMETERS: keep AS CHECKBOX.       "' ' = delete session if finished
    "'X' = keep   session if finished
    SELECTION-SCREEN COMMENT 48(20) text-s09 FOR FIELD e_group.
    SELECTION-SCREEN POSITION 70.
    PARAMETERS e_group(12).             "group name of error-session
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 51(17) text-s03 FOR FIELD e_keep.
    SELECTION-SCREEN POSITION 70.
    PARAMETERS: e_keep AS CHECKBOX.     "' ' = delete session if finished
    "'X' = keep   session if finished
    SELECTION-SCREEN END OF LINE.
    PARAMETERS:p_file LIKE rlgrap-filename.
      at selection screen                                                *
    AT SELECTION-SCREEN.
    group and user must be filled for create session
      IF SESSION = 'X' AND
         GROUP = SPACE. "OR USER = SPACE.
        MESSAGE E613(MS).
      ENDIF.
      create batchinput session                                          *
    FORM OPEN_GROUP.
      IF SESSION = 'X'.
        SKIP.
        WRITE: /(20) 'Create group'(I01), GROUP.
        SKIP.
    *----open batchinput group
        CALL FUNCTION 'BDC_OPEN_GROUP'
          EXPORTING
            CLIENT = SY-MANDT
            GROUP  = GROUP
            USER   = sy-uname.
        WRITE:/(30) 'BDC_OPEN_GROUP'(I02),
                (12) 'returncode:'(I05),
                     SY-SUBRC.
      ENDIF.
    ENDFORM.                    "OPEN_GROUP
      end batchinput session                                             *
    FORM CLOSE_GROUP.
      IF SESSION = 'X'.
    *------close batchinput group
        CALL FUNCTION 'BDC_CLOSE_GROUP'.
        WRITE: /(30) 'BDC_CLOSE_GROUP'(I04),
                (12) 'returncode:'(I05),
                     SY-SUBRC.
      ELSE.
        IF E_GROUP_OPENED = 'X'.
          CALL FUNCTION 'BDC_CLOSE_GROUP'.
          WRITE: /.
          WRITE: /(30) 'Fehlermappe wurde erzeugt'(I06).
        ENDIF.
      ENDIF.
    ENDFORM.                    "CLOSE_GROUP
           Start new transaction according to parameters                 *
    FORM BDC_TRANSACTION USING TCODE TYPE ANY.
      DATA: L_SUBRC LIKE SY-SUBRC.
    *------batch input session
      IF SESSION = 'X'.
        CALL FUNCTION 'BDC_INSERT'
          EXPORTING
            TCODE     = TCODE
          TABLES
            DYNPROTAB = it_BDCDATA.
        WRITE: / 'BDC_INSERT'(I03),
                 TCODE,
                 'returncode:'(I05),
                 SY-SUBRC,
                 'RECORD:',
                 SY-INDEX.
      ELSE.
        REFRESH it_MESSTAB.
        CALL TRANSACTION TCODE USING it_BDCDATA
                         MODE   CTUMODE
                         UPDATE CUPDATE
                         MESSAGES INTO it_MESSTAB.
        L_SUBRC = SY-SUBRC.
        WRITE: / 'CALL_TRANSACTION',
                 TCODE,
                 'returncode:'(I05),
                 L_SUBRC,
                 'RECORD:',
                 SY-INDEX.
      ENDIF.
      Message handling for Call Transaction                              *
      perform subr_mess_hand using g_mess.
    *-----Erzeugen fehlermappe
      IF L_SUBRC <> 0 AND E_GROUP <> SPACE.
        IF E_GROUP_OPENED = ' '.
          CALL FUNCTION 'BDC_OPEN_GROUP'
            EXPORTING
              CLIENT = SY-MANDT
              GROUP  = E_GROUP
              USER   = sy-uname
              KEEP   = E_KEEP.
          E_GROUP_OPENED = 'X'.
        ENDIF.
        CALL FUNCTION 'BDC_INSERT'
          EXPORTING
            TCODE     = TCODE
          TABLES
            DYNPROTAB = it_BDCDATA.
      ENDIF.
      REFRESH it_BDCDATA.
    ENDFORM.                    "BDC_TRANSACTION
         Form  subr_bdc_table                                            *
          text
         -->P_0220   text                                                *
         -->P_0221   text                                                *
         -->P_0222   text                                                *
    FORM subr_bdc_table  USING      VALUE(P_0220) TYPE ANY
                                    VALUE(P_0221) TYPE ANY
                                    VALUE(P_0222) TYPE ANY.
      CLEAR it_bdcdata.
      IF P_0220 = ' '.
        CLEAR it_bdcdata.
        it_bdcdata-fnam     = P_0221.
        it_bdcdata-fval     = P_0222.
        APPEND it_bdcdata.
      ELSE.
        it_bdcdata-dynbegin = P_0220.
        it_bdcdata-program  = P_0221.
        it_bdcdata-dynpro   = P_0222.
        APPEND it_bdcdata.
      ENDIF.
    ENDFORM.                    " subr_bdc_table
         Form  subr_mess_hand                                            *
          text                                                           *
         -->P_G_MESS  text                                               *
    FORM subr_mess_hand USING  P_G_MESS TYPE ANY.
      LOOP AT IT_MESSTAB.
        CALL FUNCTION 'FORMAT_MESSAGE'
          EXPORTING
            ID     = it_messtab-msgid
            LANG   = it_messtab-msgspra
            NO     = it_messtab-msgnr
            v1     = it_messtab-msgv1
            v2     = it_messtab-msgv2
          IMPORTING
            MSG    = P_G_MESS
          EXCEPTIONS
            OTHERS = 0.
        CASE it_messtab-msgtyp.
          when 'E'.
            it_error-error_rec   =  P_G_MESS.
            it_error-lifnr       =  it_me21-lifnr.
            it_error-tabix       =  v_count.
            APPEND IT_ERROR.
          when 'S'.
            it_sucess-sucess_rec =  P_G_MESS.
            it_sucess-lifnr      =  it_me21-lifnr.
            it_sucess-tabix      =  v_count.
            APPEND IT_SUCESS.
        endcase.
      ENDLOOP.
      Describe table it_sucess lines v_ns.
      Describe table it_error  lines v_ne.
    ENDFORM.                    " subr_mess_hand
    Also refer
    http://sap.ittoolbox.com/groups/technical-functional/sap-dev/bdc-table-control-668404
    and
    http://www.sap-img.com/abap/bdc-example-using-table-control-in-bdc.htm
    Regards,
    srinivas
    <b>*reward for useful answers*</b>

  • Work-Flow in ABAP

    hi GURU's...
    I am new to SAP ABAP fresher. I am interested in work-flow in abap. Material in internet is so confusing.
    Can any one please help me out
    thanks in advance...

    Sorry.  This is not a training forum.  Please go on a course, buy a book, etc.  And before posting anymore questions, please read the Rules of Engagement.
    Topic locked.
    Edited by: Matt on Apr 13, 2009 12:56 PM

  • Regarding [Work Flow] Business Object Event  Raise in ABAP Program

    Hi All,
    I have one issue regarding [Work Flow] Business Object Event Raise in ABAP Program.
    Actual TDS is as below:
    If E message type written, raise Business object BUS2005 (Production order) Event PickShortage for production order passing warehouse, transfer request
    (BUS2065 Object key) in event container.  Also include table of text version of error
    messages for this set of Transfer
    Request.
    Can anybody tell me how can i write it technically in ABAP Code.
    Can anybody solve this issue!
    Thanks in advance.
    Thanks,
    Deep.

    Hi,
    Can anybody solve above posted issue!
    Thanks,
    Deep.

  • Urgent : Work flow  in ABAP

    Hi friends,
                  kinkly send me about Work flow. Also send me step by step procedure on how to do work flow. Thanks in advance.

    Hi,
    check the below links
    REfer this link:
    There is a good book from SAP Press that I would
    recommend as a starting point.It's called Practical Workflow for SAP and it is by Alan Rickayzen.
    http://www.sap-press.com/product.cfm?account=&product=H950
    Workflow
    http://www.sap-img.com/workflow/sap-workflow.htm
    http://help.sap.com/saphelp_47x200/helpdata/en/a5/172437130e0d09e10000009b38f839/frameset.htm
    For examples on WorkFlow...check the below link..
    http://help.sap.com/saphelp_47x200/helpdata/en/3d/6a9b3c874da309e10000000a114027/frameset.htm
    http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PSWFL/PSWFL.pdf
    http://help.sap.com/saphelp_47x200/helpdata/en/4a/dac507002f11d295340000e82dec10/frameset.htm
    http://www.workflowing.com/id18.htm
    http://www.e-workflow.org/
    http://web.mit.edu/sapr3/dev/newdevstand.html
    Go through the following links on FORK :
    http://help.sap.com/saphelp_nw04/helpdata/en/24/e2283f2bbad036e10000000a114084/frameset.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/8d/25f1e7454311d189430000e829fbbd/frameset.htm
    http://help.sap.com/saphelp_46c/helpdata/en/c5/e4a930453d11d189430000e829fbbd/content.htm
    http://www.insightcp.com/res_23.htm
    http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCBMTWFMSTART/BCBMTWFMSTART.pdf
    http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCBMTWFMDEMO/BCBMTWFMDEMO.pdf
    http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCBMTWFMPM/BCBMTWFMPM.pdf
    http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PSWFL/PSWFL.pdf
    Work Flow
    1) Goto Tcode PFTC : Standard Task > Create Button>Workflow Templete
    For Create Container
    Element : ZBUS1001006
    Name : ANy Name
    Description
    Data Type & Properties
    Data Type:
    select Object Type : BOR Object Type for BUS1001006
    Properties:
    Parameter Settingd : check all Import, Export & Mandatory Checkboxes
    Basic Data :
    Abbr : Create_View
    Name : Some Name
    Work Item Text : Create View Material & -
    Click on DELE Button & Select Material From The List
    Object Catagory : BOR Object Type
    Object Type : BUS1001006
    Method : View
    Triggering Events
    Obj Catagory Object Type Event
    BOR Object BUS1001006 View
    activate it
    Enter on BUS1001006 Object Type you will get Quadratel<> Button after that
    double click on Quadratel<> button you get green button
    after that the system will generate the task No.
    check in the Event linkage Tcode : SWETYPV
    if you find an entry with your Workflow and linkage active
    goto Tcode : SWEC click on New Entries
    Change Doc Obje Obj Cat Obj Type Event on create
    Material BOJ Obje BUS1001006 View Option Button(Checked)
    save this
    goto Tcode : SWEC
    Change Doc Object : Material
    Obj Catagoty : BOR Type
    Obj Type : BUS1001006
    Event : View
    Check with On Create Button
    Goto SWETYPV
    Obj Catagoty : BOR Type
    Obj Type : BUS1001006
    Event : View
    Receiver Type : Some Work Flow No: WS80000431 like this
    Click on Work flow Builder
    ~~Guduri

  • Reg: work flow in abap corssapplications

    Hi,
    I don't know about work flow, iam interested  to work on work flow.So can u  help  me  with detailed explanation.
    Thanks & Regards
    Ravicharan

    Hi,
    Check out these links and kindly reward points by clikcing the star on the left of reply,if it helps.
    http://help.sap.com/saphelp_46c/helpdata/en/c5/e4b7eb453d11d189430000e829fbbd/frameset.htm
    http://www.sap-img.com/workflow/sap-workflow.htm
    http://help.sap.com/saphelp_47x200/helpdata/en/a5/172437130e0d09e10000009b38f839/frameset.htm
    For examples on WorkFlow...check the below link..
    http://help.sap.com/saphelp_47x200/helpdata/en/3d/6a9b3c874da309e10000000a114027/frameset.htm
    http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PSWFL/PSWFL.pdf
    http://help.sap.com/saphelp_47x200/helpdata/en/4a/dac507002f11d295340000e82dec10/frameset.htm
    http://www.workflowing.com/id18.htm
    http://www.e-workflow.org/
    http://web.mit.edu/sapr3/dev/newdevstand.html

  • RE:WOrk flow in abap

    Hi,
    Can any one tell me with an example for workflow.Also the step by step process.
    Regards,
    Alex.

    Hi,
    Check the following
    Check the below PDF file on Workflow:
    http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PSWFL/PSWFL.pdf
    www.sapfaq.com
    sap.ittoolbox.com
    www.sapTOPsites.com
    http://www.sap-press.com/product.cfm?account=&product=H950
    I am giving you links for Workflow....
    /people/ginger.gatling/blog/2005/12/01/link-workflow-business-objects-to-your-collaboration-tasks
    http://help.sap.com/saphelp_erp2005/helpdata/en/fb/135962457311d189440000e829fbbd/frameset.htm
    http://help.sap.com/saphelp_erp2005/helpdata/en/c5/e4a930453d11d189430000e829fbbd/frameset.htm
    http://help.sap.com/saphelp_erp2004/helpdata/en/a5/172437130e0d09e10000009b38f839/frameset.htm
    http://help.sap.com/saphelp_bw33/helpdata/en/92/bc26a6ec2b11d2b4b5006094b9ea0d/content.htm
    http://help.sap.com/saphelp_bw31/helpdata/en/8d/25f94b454311d189430000e829fbbd/content.htm
    Workflow
    http://www.sap-img.com/workflow/sap-workflow.htm
    http://www.sapgenie.com/workflow/index.htm
    http://help.sap.com/saphelp_47x200/helpdata/en/a5/172437130e0d09e10000009b38f839/frameset.htm
    For examples on WorkFlow...check the below link..
    http://help.sap.com/saphelp_47x200/helpdata/en/3d/6a9b3c874da309e10000000a114027/frameset.htm
    http://help.sap.com/saphelp_47x200/helpdata/en/4a/dac507002f11d295340000e82dec10/frameset.htm
    http://www.workflowing.com/id18.htm
    http://www.e-workflow.org/
    http://web.mit.edu/sapr3/dev/newdevstand.html
    Go through the following:
    1) Goto Tcode PFTC : Standard Task > Create Button>Workflow Templete
    For Create Container
    Element : ZBUS1001006
    Name : ANy Name
    Description
    Data Type & Properties
    Data Type:
    select Object Type : BOR Object Type for BUS1001006
    Properties:
    Parameter Settingd : check all Import, Export & Mandatory Checkboxes
    Basic Data :
    Abbr : Create_View
    Name : Some Name
    Work Item Text : Create View Material & -
    Click on DELE Button & Select Material From The List
    Object Catagory : BOR Object Type
    Object Type : BUS1001006
    Method : View
    Triggering Events
    Obj Catagory Object Type Event
    BOR Object BUS1001006 View
    activate it
    Enter on BUS1001006 Object Type you will get Quadratel<> Button after that
    double click on Quadratel<> button you get green button
    after that the system will generate the task No.
    check in the Event linkage Tcode : SWETYPV
    if you find an entry with your Workflow and linkage active
    goto Tcode : SWEC click on New Entries
    Change Doc Obje Obj Cat Obj Type Event on create
    Material BOJ Obje BUS1001006 View Option Button(Checked)
    save this
    goto Tcode : SWEC
    Change Doc Object : Material
    Obj Catagoty : BOR Type
    Obj Type : BUS1001006
    Event : View
    Check with On Create Button
    Goto SWETYPV
    Obj Catagoty : BOR Type
    Obj Type : BUS1001006
    Event : View
    Receiver Type : Some Work Flow No: WS80000431 like this
    Click on Work flow Builder
    Regards,
    Padmam.

  • ABAP CLASSES - XI don't create the Target File..

    Hallo,
    I have a problema in XI when I use an ABAP Class.
    This is My FLOW:
    1) R/3 SEND an IDOC DEBMAS to XI un idoc DEBMAS(Customer data)
    2) XI have this Interface Mapping: Interface_Mapping_Anagrafica_Cliente.
    It si composed on:
    - Input: IDOC (DEBMAS)
    - 1° Mapping      ==> named: Message_Mapping_Anagrafica_Cliente
       This mapping, from IDOC DEBMAS, create the message type Message_Type_Anagrafica_Cliente.
    - 2° Mapping      ==> Classe ABAP
       This mapping, from Message_Type_Anagrafica_Cliente create the message type Message_Type_Click.
    - Output: Message_Type_Click
    3) I want that this Message_Type_Click will be in the file.
    But, if I execute the transaction SXMB_MONI in XI, I can see the IDOC OK .. but if I make double click on it, I don't see the Payload for the target file. Infact the target file is not be created by XI...
    I have made debug after my class and I found a Problem in the Trace with type E with message: CL_MAPPING_XMS_PLSRV3-ENTER_PLSRV.
    What is this?
    Can you help me?
    Thanks.
    Monia

    Hi Monia,
    first put your trace to 3: SXMB_ADM, Integration Engine Configuaration, Specific Configuration, Runtime/Trace Level
    Second delete your abap mapping from your interface mapping and look in the monitoring for the output. Is it what you expect? Is it the datatype the abap mapping can work with?
    Copy the result as source for the next test. Now you put the ABAP mapping inside and delete the message mapping from your interface mapping. Test with transaction SXI_MAPPING_TEST. Look to the weblog <a href="/people/sameer.shadab/blog/2005/09/29/testing-abap-mapping ABAP Mapping</a> how to test an ABAP mapping.
    The problem with more than one mapping program in one interface mapping is that you see only the result of both!
    Regards,
    Udo

  • Hi all ,i need a good documentation for a beginner in WORK FLOW ?

    hi all ,
    i need a good documentation for a beginner in WORK FLOW ?
    please,try to send the attached documents as much as u can apart from giving the weblinks ?
    hope you will send it soon ....
    thanks & regards
    vishnuvardhan k.v.

    Hi
    Developing a simple application using steps "User Decision" and "Mail"
    Basic terminology used in the workflow:
    The workflow definition is the set of rules that determine the path that the process takes. For example, how a purchase requisition is processed, from the initial request to the creation of the purchase order
    A Workflow Instance, which is often simply referred to as the workflow, is a single workflow run. For example, the processing of a single purchase requisition for computers.
    The Tasks are the steps in the process, which have to be performed either by people or automatically by the software. For example, to check for the availability of the spare computers in the company.
    A Work item is the task instance that is performed as a single workflow step. For example, check that there are no spare computers available in the company.
    Agents are the people who process the tasks (via the work items). For example, requisitioner and a member of the purchasing department.
    Container is the place where all the data used in the workflow is collected.
    Binding is the set of rules that define which data is passed to which part of the process.
    Building a simple workflow application
    The central tool for creating, displaying and processing a workflow is the workflow builder (Transaction SWDD). Within the workflow builder you can create all components of a workflow, including all the containers you need for getting the data from one step to another.
    Generally, most of the workflows are started by an event (for example, when a material is created or when a new purchase requisition arrives). You define which data from this event needs to be passed to the workflow via binding.
    However you can also start any workflow directly. Let us create a simple workflow and start the workflow directly, using the testing tools.
    Call transaction SWDD. When the workflow builder is called for the first time, a newly created initial workflow definition appears or else last created workflow appears. In such cases you can opt to create a new workflow by pressing “Create New Workflow”(ctrl + shft + F5). The following screen appears.
    The initial workflow screen has the following parts:
    a. The start of the workflow definition, indicated by .
    b. The end of the workflow definition, indicated by .
    c. The area in which you insert the new workflow definition is indicated by .
    Now select the undefined step and select Create step or double click the undefined step. Now among the different steps chose the User Decision by double clicking on it.
    Developing a simple application using steps "User Decision" and "Mail"
    Previous
    Now enter the title for the user decision “ Please make a decision”. Also enter the decision texts as Approve and Reject. On pressing enter, the outcome values default to the Decision texts but you can specify your own names, if desired. Now we need to select the agent. Agent is the person to whom the work item needs to be sent.. Since this is just a beginning, we would hardcode the user name. Select the User from the drop down list and enter the user name to whom the work item needs to be sent. In general, this type of agent assignment is not done. Agents are generally assigned using the expression, agent assignment rule or organization object (job, position etc.).
    Now select Transfer and to graphic button. Following screen appears:
    Now we need to include a mail step to be sent to the requestor. Now select the line “Approve” and do a right click. Different options on shown on the context menu. Select Create.
    Now select the step “Send Mail” from the list.
    Developing a simple application using steps "User Decision" and "Mail"
    ...Previous
    Now enter the subject and the body of the message for the mail to be sent.
    Do not change the recipients. Our mail is intended for the persons who triggered this workflow. &_WF_INITIATOR& contains the value who executed the workflow. Since this is a test object, we are using &_WF_INITIATOR&. But we wouldn’t be using this variable in real time scenarios. We would discuss about this in the coming documents.
    Now select Transfer and to graphic button.
    A popup appears requesting for the abbreviation and the name for this task. Enter the same and press enter.
    Now enter the package as local object and press enter.
    Follow the steps 5 through 9 for the step “Reject”. The following screen appears:
    Press SAVE to save the workflow application. You need to enter an abbreviation and name for your workflow as shown below. You can change any of these at any later point. After saving, a number is assigned to your workflow starting with WS, as shown below.
    Developing a simple application using steps "User Decision" and "Mail"
    ...Previous
    To execute the workflow, activate it by choosing the activate button.
    Test the workflow by choosing Test. The following screen appears.
    Now choose Execute to start the workflow.
    Now the recipient would receive a work item in his SAP® inbox (Transaction SBWP).
    Now execute the work item by pressing “Execute”. The following screen appears:
    Choose one among Approve or Reject as part of the user decision. He can select the third option to retain the work item in his inbox and make the decision later. Now suppose that the recipient has chosen one of the first options. Now a mail would be sent to the requestor with the status of his request.
    Creating a Container element
    This document details about creation of a container element in workflow and using it in the step "Mail".
    Pre-requisites:
    It is assumed that the reader of this Tutorial is aware of creating a workflow definition with the step “Mail”. If not, please go through the document on creating the same available, by clicking here.
    Steps:
    1. Create a workflow definition using the transaction SWDD.
    2. Let’s create a container element for Carrier id. Click on the “Workflow Container” on the left side of the screen (as shown in the screenshot below):
    3. Now double-click on “Double-Click to Create”
    4. Enter the details pertaining to CARRID here.
    5. Click on tab “Properties” and select “Import”.
    6. Click on “Confirm (Enter)”.
    7. Now the element created could be seen on the left side, below the “Workflow Container”.
    Creating a Container element
    Previous
    1. Create a “Mail” step by double-clicking on “Undefined” step in the workflow.
    2. Enter the recipient details in the “Recipients” box.
    3. In the subject line, enter “Carrid value entered is:” and click on “Insert Expression”.
    4. Select the element “Carrid” from the list.
    5. Similarly enter the content in the “Body” area.
    6. Save and activate the application.
    Testing the Workflow application:
    7. Test the workflow by clicking F8.
    8. Enter the value of the Carrid as shown above and press execute.
    9. A mail would be sent to the recipient mentioned earlier with the carrid value entered.
    Condition Step
    Agenda:
    This document details about the steps “Condition”.
    Pre-requisites: It is assumed that the reader of this document has a preliminary understanding of workflow and has worked with the container elements earlier. If not, please go through the first two Tutorials of workflow available in this site. (More details)
    Procedure:
    1. Create a new workflow definition.
    2. Create a container element, CARRID (as demonstrated in tutorial 2).
    3. Now click on undefined step and create the step “Condition”.
    4. Enter the step name of your choice.
    5. We would have the following condition here:
    If carrid = ‘AA’.
    Do this.
    Else.
    Do this.
    Click on “Click here to create a new condition”. Following screen appears.
    Double click on “Carrid”. Next click on “=” and enter the value “AA” in the constant field and press ENTER.
    Enter the outcome names of your choice as shown above.
    Click on “Transfer and go to graphic”.
    As shown above, there are two branches here. One navigates to true, if CARRID = ‘AA’ else the control takes the branch “False”.
    Test the above scenario by inserting mail steps in the above 2 branches and by passing different CARRID values.
    Condition Step
    Agenda:
    This document details about the steps “Multiple Condition”.
    Pre-requisites: It is assumed that the reader of this document has a preliminary understanding of workflow and has worked with the container elements earlier. If not, please go through the first two Tutorials of workflow available in this site. (More details)
    Procedure:
    1. Create a new workflow definition.
    2. Create a container element, CARRID (as demonstrated in tutorial 2).
    3. Now click on undefined step and create the step “Multiple Condition”.
    4. Enter the step name of your choice.
    5. We would have the following condition here:
    If carrid = ‘AA’.
    Do this.
    Elseif carrid = ‘AH’
    DO this.
    Elseif carrid = ‘SQ’
    Do this.
    Else.
    Do this.
    Select the “CARRID” using the F4 help for the comparison basis field.
    Enter the values of the carrid under the Comparison values with the corresponding outcome name (of your choice)
    Double click on “Carrid”. Next click on “=” and enter the value “AA” in the constant field and press ENTER.
    Click on “Transfer and go to graphic”.
    As observed above, there are different branches for each value of CARRID mentioned above.
    Test the above scenario by inserting mail steps in all the branches and by passing different CARRID values.
    Using "Container Operation" step
    Agenda: Usage of step “Container Operation”.
    Pre-requisites: It is assumed that the reader of this tutorial has worked in the concepts that are dealt in earlier tutorials. (click here for more details)
    Scenario: In this tutorial, we would deal about how to work with the step “Container Operation” with an example of calculating the available seats by subtracting occupied seats from the maximum seats at the workflow level.
    Procedure:
    1. Create a new workflow definition using the transaction SWDD.
    2. Create two container elements MaxSeats, Occ_Seats with the “import” property set. You can use the reference fields sflight-seatsmax, sflight-seatsocc for this.
    3. Create another container element AvailableSeats without setting either import or export property as this is calculated within the workflow and used within the workflow. You might use any of the above reference fields as data types.
    4. Define a new step “Container Operation” in the workflow definition by double-clicking on the “Undefined step”.
    5. In this step, we would calculate the available seats from the max seats and seats occupied.
    I would recommend entering all the container elements from the F4 help instead of typing them manually.
    6. Return to the main screen.
    7. Create a mail step after this to send the available seats information.
    8. Test the above functionality by passing some values to the maximum and the seats occupied.
    9. Result would be as follows:
    Triggering Events Programmatically
    Purpose: This document details the procedure in triggering the business object events programmatically.
    Pre-requisites: It is assumed that the reader of this document is aware of the business object concepts and good in ABAP.
    Procedure:
    In this document, we would take an example of the business object BUS1001006 (Material) and the event CREATED. In general, this event is triggered whenever a material is created using a standard procedure like MM01 or any others. Now we would trigger this event from our own programs.
    Following are the screenshots of the business object BUS1001006 and the event CREATED. Go to transaction SWO1 for more information of the business object.
    Double-clicking on the key field parameter gives you technical information of the field.
    In order to trigger an event programmatically, we would use the function module SWE_EVENT_CREATE.
    Following is the sample code to trigger the events programmatically:
    REPORT ZDEMO_TRIGGER_EVENT.
    DATA: KEY LIKE SWEINSTCOU-OBJKEY.
    KEY = '1163'. “ Material Number (hard-coded)
    CALL FUNCTION 'SWE_EVENT_CREATE'
    EXPORTING
    objtype = 'BUS1001006'
    objkey = KEY
    event = 'CREATED'
    CREATOR = ' '
    TAKE_WORKITEM_REQUESTER = ' '
    START_WITH_DELAY = ' '
    START_RECFB_SYNCHRON = ' '
    NO_COMMIT_FOR_QUEUE = ' '
    DEBUG_FLAG = ' '
    NO_LOGGING = ' '
    IDENT =
    IMPORTING
    EVENT_ID =
    TABLES
    EVENT_CONTAINER =
    EXCEPTIONS
    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.
    ELSE.
    WRITE 'Event Triggered'.
    ENDIF.
    COMMIT WORK.
    In order to test whether the event is getting triggered or not, we can make use of Event Trace. Switch on the event trace using the transaction SWELS.
    Press ‘Switch On”.
    Now execute the program developed earlier. Now switch-off the event trace using the same transaction SWELS.
    Now go to transaction SWEL. Here you can list out the events triggered in the particular period of time. Here is the event-trace list:
    Deadline Monitoring in SAP Workflow
    A major advantage of workflow is the ability to monitor the workflow steps according to a predefined schedule. Following are different deadlines that can be monitored against each workflow step:
    • Requested Start
    • Latest Start
    • Requested End
    • Latest End
    In this example, we will define a deadline to the User Decision example created earlier (click here). Following is the screenshot of the application developed using the User Decision example:
    We would extend this example to the deadline monitoring.
    In the User Decision step, click on the “latest end” tab.
    By default, No deadline monitoring is active (as seen in the above screenshot).
    Choose the “Work Item Creation” from the list box.
    After selecting “Work Item Creation”, chose an offset of 5 minutes. This means that the work item must be executed within 5 minutes of the creation, if not this would trigger.
    Deadline Monitoring in SAP Workflow
    Enter recipient details to whom the message to be escalated, if the work item is not executed with in 5 minutes after work item creation.
    Save and activate the workflow definition.
    Testing the workflow application:
    • Execute your workflow.
    • Check for the work item in the SAP Inbox. This time do NOT execute the work item.
    • Wait for the deadline to be triggered. After that, a deadline message is delivered to the recipient mentioned in the “Latest End” tab. See the screenshot below.
    Don’t worry if the deadline message doesn’t appear immediately after 5 minutes. This depends on various factors including how the deadline monitoring program is scheduled and also on the availability of the background processors.
    Use SWWA to check how the deadline monitoring program is scheduled in program.
    For example, assume that our work item has been created at 09:10 hrs and the deadline message is expected to trigger at 09:15 hrs. From the above screenshot, it is understood that the background program is scheduled to execute for every 3 minutes. Assume that the last run of the program is at 09:14hrs and the next run is expected at 09:17hrs. So even our deadline expires at 09:15, the deadline message would appear only at 09:17hrs after execution of the background program.
    Some more points
    In our above example, we have used the deadline on the “Work Item” creation time. i.e., 5 minutes after creation time, the deadline message would be sent. Now we would check the other option “Expression”. Here we can mention the date and time, when the deadline message should appear irrespective of the work item creation date/time.
    As seen in the above screenshot, we can provide the target date and time by which the task should be finished. Container elements could be used in this case. Please refer to our example on creation of container elements (click here).
    Personal Substitute in Workflow
    Requirement: Need to have at least one substitute who can act upon work items in your absence.
    Important: The appointed substitute would be able to see all your work items. A substitute cannot be assigned for only particular area of organization or any other item. So need to ensure that the substitute have the necessary authorizations to act upon the work items.
    Procedure:
    1. Go to SAP Business Work Place (TCode: SBWP)
    2. Now from the menu bar, select Settings à Workflow settings à Maintain Substitute
    3. Highlight/Select the name on the window, in this case SAPDEV02 and click on “Create Substitute”.
    4. List of users available in the system are displayed.
    5. Select the required substitute user name. Following screen appears.
    Validity field describes about the period in which the setting would be active. Note that the dates on the screen would range from the current date to 31st Dec 9999.
    Regarding the checkbox “Substitution active”, it is advised to leave this checkbox unchecked for system performance reasons. A check in this box indicates that the substitution is “permanent” and if left unchecked it is treated as “as-needed”. A permanent substitute will automatically receive the primary users work items in their own box. In the case of “as-needed”, substitute must manually adopt the work items from the primary user’s inbox.
    6. Save the entries
    7. Click Enter to leave the screen.
    Adopting a Substitute in Workflow
    If you have been designated as an “as-needed” substitute, you must manually adopt the substitution. If you are designated as a “permanent” substitute, the work items would automatically appear in the inbox.
    Before adopting a substitution, there are 19 work items in the inbox. See the screenshot below:
    To adopt a substitution, select Settings à Workflow settings à adopt substitution.
    Select the corresponding User-id (if you have been assigned as a substitute for multiple people, then this option would allow you to select the user name of whom you would to check the work items)
    The corresponding user’s work items would appear in our inbox now.
    You can end the substitution, by selecting settings à Workflow settings à End substitution.
    Note: Substitutes can only adopt work items that are directly routed to the person for whom they are a substitute. If you are a substitute for a user (SAPDEV02) who has been made a substitute for another user (SAPDEV01), you will only see work items for user SAPDEV02 and not of the user SAPDEV01.
    Notification of Work Items via e-Mail
    SAP provides us with a facility of notifying the user via the email address of your choice when there are any pending work items in the SAP Inbox..
    1. Go to Transaction SO13.
    2. Click on Automatic Forwarding tab.
    3. Click on Create icon .
    4. Enter the details in the above screen.
    5. Click ENTER to complete the entries.
    6. Now the notification would be received at the provided email address if there are any pending work items in the inbox.
    Filtering the Work Items in the SAP Inbox using BADI
    This document details about the procedure in filtering some of the work items from the SAP inbox using a BADi.
    Following is the screenshot of the SAP inbox, before implementing BADi:
    The BADi that is used in filtering the work items is WF_BWP_SELECT_FILTER. To implement the BADi, go to transaction SE18. From the menu, select Implementation à Create. (See the screenshot below)
    Enter the implementation name and press ENTER
    Enter any meaningful short text for the implementation and click on the tab “Interface”
    The implementing class, ZCL_IM_BWP_SELECT_FILTER, is automatically proposed. Double click on the implementing class name.
    You are now navigated to the class builder. Now double-click on the method name shown on the screen (see the snapshot below)
    Now let us filter out the work items belonging to the task TS2000066. See the code below:
    Activate the method and also the implementation. In the state of active, you wouldn’t be able to make any changes. To make any changes, we need to deactivate it and then make the changes.
    Now check the inbox and would notice that the work items related to that task are no more appearing.
    To notice the differences, try activating and deactivating the BADi implementation.
    Workflow tutorials with step-by-step and with screenshots are available at http://www.****************/Tutorials/Workflow/Workflow.htm
    http://help.sap.com/saphelp_erp2005vp/helpdata/en/42/c14a9b55103116e10000000a1553f7/frameset.htm
    http://help.sap.com/saphelp_erp2005vp/helpdata/en/c5/e4a930453d11d189430000e829fbbd/frameset.htm
    http://www.sapgenie.com/workflow/
    http://www.sap-img.com/workflow/sap-workflow.htm
    http://help.sap.com/saphelp_47x200/helpdata/en/3d/6a9b3c874da309e10000000a114027/frameset.htm
    http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PSWFL/PSWFL.pdf
    http://help.sap.com/saphelp_47x200/helpdata/en/4a/dac507002f11d295340000e82dec10/frameset.htm
    http://www.workflowing.com/id18.htm
    http://www.e-workflow.org/
    http://web.mit.edu/sapr3/dev/newdevstand.html
    http://www.sap-basis-abap.com/wf/sap-business-workflow.htm
    https://forums.sdn.sap.com/click.jspa?searchID=791580&messageID=2857887
    https://forums.sdn.sap.com/click.jspa?searchID=791580&messageID=2855919
    https://forums.sdn.sap.com/click.jspa?searchID=791580&messageID=2735228
    http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCBMTWFMSTART/BCBMTWFMSTART.pdf
    http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCBMTWFMDEMO/BCBMTWFMDEMO.pdf
    http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCBMTWFMPM/BCBMTWFMPM.pdf
    http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PSWFL/PSWFL.pdf
    debug a workflow.
    This has a step by step procedure :
    http://fuller.mit.edu/workflow/debugging.pdf
    www.erpgenie.com/sap/workflow/debugging.htm
    http://www.erpgenie.com/workflow/debugging.htm?2b5de440

  • ESS Work Flow

    Hi
    I'm new on ESS Work Flow. I got business request that if leave request end date is less today, then the work flow need bypass the manager approval and update IT2001 directly. I have two questions :
    (1) How do I pass leave request end-date to work flow container so that I use that date to determine if work flow should be completed without manager's approval.
    (2) How do I change work flow status so that leave request can update IT2001 without manager's approval. Currently, if I bypass the manager's approval (no condition due to do not know the answer of #1 ), the work flow status is set to complete, but it did not update IT2001 after I run report RPTARQPOST.
    Thanks for the help.
    Regards,
    Jim

    Hi Wu Jun,
    Actually my problem is that I need define the workflow basing on vacation request start date and end date.
    According to HR, if vacation request end date (for example  2 days vacation from Oct 18 to Oct 19) is less then today,  then workflow should not seek a approval from the manager and update IT2001 directly. We are using a copy of WS1230011 with some customizations. Yes, the possible agent has been defined in general task. 
    One key step of the business activities in the workflow is the task TS12300097. In stead of calling object type from Business Object Repository, this task calls a ABAP class (CL_PT_REQ_WF_ATTRIBS) as object method.  In this class, I could not find any attributes that is vacation start / end date related, therefore, I could not find associate container items from the workflow to make completion condition (if end date less than today then completing the step) of the step.
    Hope you understand my issue and have more specified input. Thanks.
    Regards,
    Jim

  • Work flow

    Dear all,
    we need a workflow for creation of material master.
    Say Basic data is created by MM dept.
    then MRP  & work Scheduling views are created by PP dept.,
    then Purchase views are by MM again,
    then inventory dept. creates storage locations,and f
    inally finance dept creates Costing & Accounting views.
    Our requirement is when over one dept. completes creation of their respective view, mail should get triggered to  subsequent dept. to continue the work.
    regards,
    K.Kumaran.

    Dear,
    Use Tcode SWDD for work flow activities....Take help from your ABAP team...Give them the user Authorizations based upon your requirement.
    Hope this will help you.
    Regards
    Utsav

  • CUP MSMP Work flow in GRC 10.0

    Hi GRC Experts,
    I am working on a MSMP Work flow requirement in GRC 10.0 and would appreciate any guidance/inputs on this.
    As per my requirement we would have to design a CUP Work flow in GRC 10.0 to decommission a user in 24-hours if the user has not activated his/her new user account. After a user account is provisioned, system should wait for 24 hours to have user login/activate the account, otherwise decommission/disable the account. I have never heard of this functionality in GRC 5.3, so was not sure if this is something that can be designed and configured in 10.0. Would really appreciate if you can please guide us with requirement and advise if this can be implemented in GRC 10.0.
    I know outside GRC , this requirement can be designed using a background job, which can monitor the provisioning and activation for a user account , however i am wondering if this can be designed and implemented with MSMP Work flow in GRC 10.0
    Thanks every one for your valuable and precious time.
    Cheers .. Vikas

    Hi Vikas,
    You doesn't require customized ABAP programs to achive this and neither GRC 10 and can be achived with the below login parameters:
    login/password_max_idle_initial
    login/password_max_new_valid
    login/password_max_reset_valid
    The login/password_max_idle_initial will make the initial password invalid if the user is not logged in, which means you are making the system secure if the user doesn't login to the system in specific number of days.
    However, this will not decomission the user IDs. You may need to look at custom options to identify the users from USR02 table and lock them using standard BAPIs.
    I am not sure on why Multi Stage/Multi Path is required for this??
    Regards,
    Raghu

Maybe you are looking for

  • Audigy 4 vs E-MU 0404 in Win 2

    Looking for opinions to decide between two cards. -I only need stereo, this is purely for music output to a 2 channel audio system. -My house server runs Windows Server 2003, as it performs a lot of server functions, one of which is playing MP3s and

  • WS_DELIVERY_UPDATE_2

    Hi friends, I am using for the first time the function - WS_DELIVERY_UPDATE_2, it works almost fine except the it keeps giving me a message that the serial item is in EDEL status. It was not before but ofcourse  now it is. Could some one help me out

  • New DW8 User - Trouble Editing Frontpage Site

    Hi Everyone, I manage a website that was originally designed in frontpage, with PHP code intermingled within the code. When editing this in Frontpage, I have no problems seeing the code/design view. Of course, areas with dynamic PHP content are not v

  • Memory error code 4MEM/62/

    I am using macbook pro 15" early 2011, 16GB RAM, 500 GB harddisk. The problem is the screen turns blue with gray line or distorted, and the system freezes. It happens frequently in both mac os x mountain lion platform or windows 7 bootcamp, using par

  • Byproducts  in subcontracting

    hi gurus       how are the byproducts are taken care of in subcontracting.