Update main workflow container from In-Progress Subworkflow

Hi,
I have a requirement where I need to update a main workflow container element from a sub-workflow, while the sub-workflow is still running. (In-Progress)
I have tried using the FM SAP_WAPI_WRITE_CONTAINER in sub-workflow, but it returns an error saying "Cannot call WAPI interface 'SAP_WAPI_WRITE_CONTAINER' in this context".
I have also tried FM SWW_WI_CONTAINER_MODIFY, but it does not update at all.
I have also tried triggering an even in sub-workflow, which in turn triggers a class method, but it gives an errors saying "WF locked"
Please let me know if you have any other strategies.
Thanks
Krishna

Hi,
what I can suggest you is try to create a program exit in the subworkflow  and in the program exit you can access the main workflow F wotkitem ID, by using thie main workflow workitem ID try to create the instance of the container. and from there in the program exit class you can set and get the values of the workflow container elements.
but here you have to make sure that you have to create the instance of the parent workitem ID  container, but  not the subworkflow workitem ID container.
[Program Exits In Workflow |http://wiki.sdn.sap.com/wiki/display/ABAP/ProgramExitsIn+Workflow]
Regards
Pavan

Similar Messages

  • Workflow issue - Main workflow container elements are not updated.

    Hi All
    We have implemented N-step badi for approval process and for this we have activated one workflow which contains subworkflow .
    During approval process , only the subworkflow container elements( approver list and last approver) getting updated with status and time.But main workflow container elements is not updating with these details.
    Binding between main workflow and subworkflow is perfect. But reverse binding ( from subworkflow -> main workflow ) will take place once subworkflow is completely finished. But here we will require / need to pass some information from sub workkflow to main workflow when still subworlflow in process( before completed itself).
    Please let me know is there any process / steps is required to pass values between subworkflow to main workflow ( binding is perfect).
    Please let me the way how I can update the main workflow container from  subworkflow container or from any step in sub workflow .
    In subworkflow . we have loop of  approvers and it will send workitems to approvers one by one.
    Here i need to update Main workflow with the information like last approver and approver list with status and approved time.
    So please suggest how Can I update main workflow container from subworkflow while subworkflow is still in process( subworkflow not yet completed).
    Kindly reply me ASAP.
    Thanks and Regards
    Madhukar .

    Yes I am setting SWC_SET_ELEMENT for my container values,the ones for which i have defined as EXPORT.
    And I have checked the task also...
    Everything has been checked properly..The binding is fine.
    Thanks & regards,
    Ravikiran Kallimath

  • Raising exception as well as populating workflow container from an activity

    hi
    I am using an activity step within a worflow which is calling method of a class.
    Within the method I am calling a bapi, if sy-subrc of BAPI <> 0 then populating the export parameter(BAPIRET2)  of method and raising an exception.
    My requirement is in workflow if there is an exception, it will follow exception path and populate WF container BAPIRET2.
    For this, I am writing following code in the method.
    call function F.M name
    if sy-subrc <> 0.
    popurate bapiret2.
    raise exception1.
    endif.
    In the worflow, I have activated the outcome exception1 in the activity step.
    But the problem is it is following exception1 path but the workflow container is not populating.
    If I am commenting the raise exception1 statement in the method, it is not following the exception path but populating workflow container.
    Please suggest how both(it will follow exception path and populate WF container BAPIRET2.) can be achieved. I have checked the binding. It is ok.
    Please suggest.
    Regards,
    Sucheta.

    Hi,
    Maybe it is just easier to forget the exception path, and put a condition after your step. In the condition you can for example check if the bapiret is initial or not. This is of course just an example - you can also return something else from the method that divides the workflow into two (or more branches). A workaround solution, if you don't get the exception working.
    Regards,
    Karri

  • Sending mail from workflow or Updating container from FM

    Dear friends,
    I'm new to work flow.
    My requirement: send mail from workflow to a user after dead line is missed I do not want to use messages in 'Latest end' tab. I want to send mail.
    The mail id of the user is determined in the previous step using a FM. How do I use this mail id to send the mail. I thought of using 'Rule' option in 'Send Mail' (and use same FM)but thats not possible. In that case how do I pass the mail id value to the WF container from the FM?
    I also tried this idea:
    created a task with BOR object SELFITEM, method 'SENDTASKDESCRIPTION' .
    *in an activity step used this task and filled the 'Rule' option in notification tab appropriately
    *in this case the WF goes into an error '.....error executing 'sendtaskdescription' .....'
    *i would prefer using the activity step because, the mail has to be sent after a delay
    Is there any other simple method to do this?
    My problem would be solved even if someone can show me how to transfer values from a FM into a WF container.
    Can someone please explain?

    Hi,
    => To get the deadline worked via programming, you can write your own logic. In current case,
    1. Create a custom function, having proper input and output parameters like End Time to wait if in case you have maximum of 2 days of wait.
    The total wait time is calculated from the Endtime, which is input to function module.  From the Endtime, the start date and end date are calculated and then the difference between the two dates is counted as total wait time.
    Here at the most 2 days of wait time is calculated.
    * Local parameters
      DATA: LV_UTCSTART TYPE /SDF/CMO_TSTMP,
            LV_UTCEND   TYPE /SDF/CMO_TSTMP,
            LV_SECOND   TYPE /SDF/CMO_SEC,
            LV_ENDDATE  TYPE SY-DATUM,
            LV_STR TYPE STRING.
      IF ENDTIME >= SY-UZEIT AND ENDTIME <= '235959'.
    *   Today's date
        LV_ENDDATE = SY-DATUM.
      ELSE.
    *   Tomorrow's date
        LV_ENDDATE = SY-DATUM + 1.
      ENDIF.
    * Get the Start Time for function module
      CONCATENATE SY-DATUM SY-UZEIT INTO LV_STR.
      MOVE LV_STR TO LV_UTCSTART.
      CLEAR LV_STR.
    * Get the End Time for function module
      CONCATENATE LV_ENDDATE ENDTIME INTO LV_STR.
      MOVE LV_STR TO LV_UTCEND.
      CLEAR LV_STR.
    * Get the total wait time in seconds
      CALL FUNCTION '/SDF/CMO_TIME_DIFF_GET'
        EXPORTING
          UTC_START = LV_UTCSTART
          UTC_END   = LV_UTCEND
        IMPORTING
          SECOND    = LV_SECOND
        EXCEPTIONS
          PARAMERR  = 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.
      ENDIF.
    * Wait for total time
    WAIT UP TO LV_SECOND SECONDS.
    2. Now, create one method in the BOR object whose event triggers your workflow.
    3. Use this method in an activity step in you workflow where you want to wait on some given conditions.
    => You can use the email ID which was given by earlier step in Send Mail step. Just make your email id field as Export/Import <i><b>AD_SMTPADR</b></i> type of parameter. In the send mail, use this Id in Email Address input.
    Hope this helps your.
    PS If the answer solves  your query, plz close the thread by marking it Solved and rewarding each reply.
    Regards

  • How to use data of multiline element from workflow container

    Hi,
    Can you please tell me how to access rows of multiline element of workflow container.
    Scenario is like below.
    I have values in a multiline container(table) of workflow container.
    Now inside Fork branches  i need to check for specific data in the above table and with that condition i have to send workitem.
    I hope u can understand,otherwise please revert.
    Thanks in advance,
    Madhu

    You cannot didrectly check the condition...
    what you have to do is.. write a inside the method as below and set the flag...and use the flag in condition editor...
    SWC_GET_TABLE CONTAINER 'AGENTS'  lt_agents.
    loop at lt_agents ino wa_agents.
    if wa_agents = 'A'.
    lv_flag = X.
    endif.
    endloop.
    SWC_SET_ELEMENT CONTAINER 'FLAG' lv_flag.
    Create an export parameter FLAG as char1 with export marked.
    Do the neccesary bindings from task to workflow.
    Then in workflow check this flag in condition editor.

  • Passing value from event to workflow container

    Hi experts,
    I have triggered a workflow using SAP_WAPI_CREATE_EVENT fm. I have declared 3 parameters in the BO for the event. Similarly i have created the 3 parameters in workflow container to receive the values.When the user clicks a button i trigger the workflow using the fm. I have to pass values of these 3 parameters to 3 parameters of the workflow container. Can you please tell me how should i pass the value from event to workflow container. Is there any way i can set workflow container parameter values while calling the fm itself.

    INPUT_CONTAINER     LIKE     SWR_CONT     Input container (name-value pairs)
    The above tables parameter is used to transfer the values from FM to workflow.
    declare a internal table of type SWR_CONT
    DATA:
    lt_cont TYPE STANDARD TABLE OF swr_cont,
    ls_cont TYPE swr_cont.
    ls_cont-element = 'ELEMENT NAME 1'.
    ls_cont-value = <Variable which holds the value>
    APPEND ls_cont TO lt_cont.
    ls_cont-element = 'ELEMENT NAME 2'.
    ls_cont-value = <Variable  which holds the value>
    APPEND ls_cont TO lt_cont.
    ls_cont-element = 'ELEMENT NAME 3'.
    ls_cont-value = <Variable  which holds the value>
    APPEND ls_cont TO lt_cont.
    pass lt_cont to the parameter INPUT_CONTAINER

  • How to trigger workflow from WDA and read workflow container into WDAscreen

    Dear Expert,
      Please suggest the solution for the following requirement:
       1. Create 1 leave request from WDA and submit for approval
       2. When User press "submit" button in WDA screen, workflow will be triggered for processing approval  .
       3. When 1 request is sent to approver, he logon into portal and access to UWL to process task himself.
       4. After he press approval link, the system will call WDA screen to process approval ( this screen will contain full information of requester.)
       5. After finishing process, the result will return workflow and end of process.
    Please send simple example for step 1 and one for get data from workflow into WDA screen at step4
    Any help would be appreciated
    Thanks and best regards,
    DucTV.

    Hi,
      I am not sure for what reasons you are developing a application but SAP has its own standard workflow process for applying leave from ESS portal..
    1. AS soon as you click on the submit button of the applicaiton then you need to trigger a workflow right in that case you make sure that you need to pass some data to the workflow container I hope you might be using either SAP_WAPI_CREATE_EVENT or SAP_WAPI_START_WORKFLOW to start the workflow  in both the function module you have to fill this table in Order to pass the values from ABAP    program to workflow container.
      The answer to your question is it depends on the type of the work item ID you are passing to the SAP_WAPI_READ_CONTAINER if you are passing a top work item ID  then you will have workflow container in LT_CONTAINER if you are passing any of the child or dependent work item ids of the top work item id then you have that respective task container value.
    2. You can make use of the any foreground activity or a decision step, it depends on how you want to get back the result, if you use a foreground activity step then in that case you have to populate the result back to the task container and if let say you are using a decision step then in that case you do not have to populate the result there will be standard  container element _RESULT in the decision step it will be filled.
    Make sure if you are expecting some work item in UWL and as soon as you click on the work item your application should open then configure in SWFVISU transaction and maintain DTD in UWL any portal consultant can perform this steps in few seconds.
    3. When the workflow is started then the work item which you are able to get back is the one which helps to identify dependent work item ids it is the TOP or PARENT work item ID.
    Regards
    Pavan

  • PASS DATA FROM ABAP PROGRAM TO WORKFLOW CONTAINER

    Hello Everybody,
    I am a workflow beginner and I want to pass a data from my ABAP code to a workflow container. This workflow container is used in the Send Mail step.
    The ABAP  Program is:
    REPORT  zdb_work_flow.
    tables : vbak.
    DATA : k TYPE sweinstcou-objkey,
                e TYPE swetypecou-event.
    DATA : st TYPE swcont,
                itab TYPE STANDARD TABLE OF swcont.
    PARAMETERS : vbeln TYPE vbak-vbeln.
    start-of-selection.
      st-element = 'VBELN'.   "This is my WORKFLOW CONTAINER
      st-tab_index = 1.
      st-elemlength = 10.
      st-type = 'C'.
      st-value = vbeln.
      append st to itab.
      k = vbeln.
      e = 'TRIGGER'               "This is an event in my BUS OBJ ZDB_WFLOW
      CALL FUNCTION 'SWE_EVENT_CREATE'
        EXPORTING
          objtype                               = 'ZDB_WFLOW'   "My BUS OBJ
          objkey                                 = k
          event                                  = e    "Event TRIGGER in ZDB_WFLOW
        tables
          event_container               = itab
        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.
      ENDIF.         .
      COMMIT WORK.
    Now I have created a workflow in SWDD as ZDB_WF_SW.
    In this WF I have created a container as VBELN.
    In the SEND MAIL I have given a header as "Worflow Triggered for &VBELN&"
    PROBLEM.
    The Workflow is getting triggered. I am also getting a mail "Workflow Triggered for" in my mailbox but the &VBELN& is missing from the header.
    I have set the IMPORT EXPORT flag of the WF CONTAINER "VBELN"
    Please Help.
    Edited by: Deepankar.B on Feb 22, 2011 4:08 PM
    Edited by: Deepankar.B on Feb 22, 2011 4:10 PM

    You wouldn't use a SMA as an assistance class - but refer to one within it.
    I would use Shared Memory Area classes - but I'd also build a SMA that could talk across multiple application servers.
    Thomas Jung proposed this in a forum reply some time ago.
    It shouldn't be too difficult to use RFC's to access the content of SMA's in multiple app servers - ensuring synchronisation across multi app servers. I've not yet had the need, so haven't attempted.
    The long polling in 7.02 apparently uses this approach, so in a 7.02 system there may even be standard components/ SMAs that you could use.
    I do not think global areas in FM's are available across sessions - I don't think you could use that as a data transport.

  • How to create workflow container element from workflow builder?

    How to create workflow container element from workflow builder?

    in workflow
    three are five container, for each container we have define according to requirement of that particular container.
    1. event container
    2. workflow container
    3. task container
    4. method container
    5. rule container
    1. event container
    in evernt contianer we have to create elements in BOR where we create event in parameters
    2. workflow container
    in workflow container we have to create elements in workflow builder itself. in left side of the screen we see <double click to create element>
    3. task container
    in task container we have to create in task itself it has a tab called container elements
    4. method container
    in method container we have to create in BOR. it is created in parameter of that BOR.
    5. rule container
    in rule container we have to create in PFAC transaction

  • Passing file from report to workflow container

    My requirement is a report will will upload a file from the desk top.
    After uploading the file a workflow should trigger from the program
    for which i am using the FM "SWE_EVENT_CREATE".
    Apart from uploading the file, the report will fetch some data from
    tables and i am passing the data to workflow using the above FM. Now
    how can i pass the file to this FM, so that the file is available in
    the workflow container.

    You have to follow the below sequence of steps.
    1)You are uploading the data from your desktop and the data will be in an internal table. Collect the entire data which you want to pass to the Workflow in a single internal table.
    2)Export this internal table to memory using Export statement. See syntax to use this statement for exporting internal table data.
    for example :
    EXPORT : T_PO_STATUS FROM T_PO_STATUS TO MEMORY ID  'PR_PO_STATUS'.
    3)Now when You trigger your workflow using the said FM, in the code of a Method associated to a particular Task, you have to import the internal table data using IMPORT statement.
    for example :
    IMPORT : T_PO_STATUS TO T_PO_STATUS FROM MEMORY ID 'PR_PO_STATUS'.
    4) after importing you have to pass this data to the internal table which is declared in the workflow container. for this use the below statement.
    SWC_SET_TABLE CONTAINER 'POStatus' T_PO_STATUS.
    5) The internal table structures must be same both in the report program and in the workflow container. This way you can get the required data from report program to the workflow container.

  • How to retrieve data from workflow container ?

    Hi ,
    I  have to retrieve workflow container ID (not sure , may be it is workitem ID). Using that ID I have to fetch data from workflow container . If anyone is aware of it , help me out . It would be better if u can provide some code snippets.
    Thanks in Advance.
    Regards,
    Vishesh

    Thanks Vishal!!!
    I  am  not  aware about workflow. I don't know anything about it so I had posted it in this forum.
    Regards,
    Vishesh

  • Passing values from and to workflow container

    Hi Guys,
                 I am reading and writing back into the workflow container element from task container using FM.
    But its not writing back the values into workflow container.
    here is my code.
    swc_get_element container 'TripNumber' trip_no.   
    Fetch Personal No. from Trip No.                
      SELECT SINGLE pernr FROM ptrv_head INTO l_pernr  
        WHERE reinr = trip_no.                                                                               
    IF sy-subrc NE 0.                                 
      EXIT.                                            
    ENDIF.                                                                               
    Fetch Employee Name                             
    SELECT SINGLE ename FROM  pa0001 INTO l_ename      
           WHERE  pernr = l_pernr                      
           AND    endda  >= sy-datum                   
           AND    begda  <= sy-datum.                  
    Fetch Employee Email id                         
    select single usrid_long from pa0105 into l_email 
       where pernr = l_pernr                           
         and usrty = '0010'                            
         and endda  >= sy-datum                        
         AND begda  <= sy-datum.                       
    Set Personal No.                          
    swc_set_element container 'Pernr1' l_pernr. 
    Employee Name                             
    swc_set_element container 'Ename' l_ename.  
    Email ID                                  
    swc_set_element container 'Email' l_email   
    Am I missing anything here.
    Thanks

    Hi,
    I faced the same issue and i found that it is not sufficient to just have proper bindings and using macros with exact container names.
    You need to create IMPORT and EXPORT parameters for that METHOD with names matching with container element names. Once you do this, you see a GREEN binding icon right below the BO and Method name in the TASK. Click that icon and create binding between TASK and METHOD.
    This should resolve your problem.
    All - Please correct me if am wrong as i am new to the workflow.
    Thanks,
    SKJ

  • Over Time Workflow Container elements not updated

    Hi,
    I am using Standard Task TS20000459 for approval of Overtime entered for an employee in CAT2 transaction.
    Work item is getting generated to his manager's inbox.
    Issue is, subject of the work item should have employee number and Employe name. Standard Task contains Container elements &TS_PERNR& and &TS_ENAME& which is not getting filled with any values.
    Can any one suggest me how to get the same?
    Regards,
    Saravana Perumal

    Hi Shanti
    I faced the same problem...And i resolved that problem by binding...
    Create the container element for PERNR and ENAME in the standard task ts20000459 as well as in workflow container.Then bind those container values.
    Before bind the workflow and task container, you have to bind the workflow container with the event container.
    Regards,
    Hemalatha.

  • What's the exact trigger for when updating/inserting/deleting data from one DB to another DB which contains same info?

    Hi guys,
    I have created a copy of the AdventureWorks2012 DB called AdventureWorks2012_new on the same instance.
    I have created the following trigger below but my friend who is a DBA told me that this is not correct and I should be using the inserted table when creating this trigger. I would like AdventureWorks2012_new DB to be updating/inserting/deleting data from
    the same tables that have been updated/inserted/deleted in the AdventureWorks2012 DB. How exactly should I do this for all the tables in the whole database ? What I have written below is just for one of the tables, is there a quicker way to do it for all tables
    in this DB so that it performs the actions mentioned above, automatically ? Help would be greatly appreciated so I can understand how this works, thanks
    CREATE TRIGGER [HumanResources].[tr_HumanResources_AfterUpdate]
    ON [AdventureWorks2012].[HumanResources].[Department]
    AFTER UPDATE
    AS
    BEGIN
    SET NOCOUNT ON;
    UPDATE AdventureWorks2012_new.HumanResources.Department
    SET Name = t2.Name,
    GroupName = t2.GroupName,
    ModifiedDate = t2.ModifiedDate
    FROM AdventureWorks2012.HumanResources.Department AS t2
    INNER JOIN AdventureWorks2012_new.HumanResources.Department AS t1
    ON t2.DepartmentID = t1.DepartmentID
    END

    For insert it's easy:
    CREATE TRIGGER [HumanResources].[tr_HumanResources_AfterInsert]
    ON [AdventureWorks2012].[HumanResources].[Department]
    AFTER INSERT
    AS
    BEGIN
    SET NOCOUNT ON;
    Insert INTO AdventureWorks2012_new.HumanResources.Department
    (DepartmentID, Name, GroupName, ModifiedDate)
    SELECT DepartmentID, Name, GroupName, ModifiedDate
    FROM Inserted;
    END
    I didn't verify column names, so you may need to make sure to use correct column names for that table.
    Setting replication is a bit advanced topic although BOL is clear and you may start here
    http://technet.microsoft.com/en-us/library/ms151198.aspx
    If it will be complicated for you, you can ask extra questions in the MSDN Replication forum.
    For every expert, there is an equal and opposite expert. - Becker's Law
    My blog
    My TechNet articles

  • Table Updation through Workflow

    Hi All,
              I have a scenario in my project in which a workflow is to be triggered when an entry is made in a table.
    Now this workflow has to read some data from some tables and then update some other tables.
    My doubt is it possible through workflows to update the tables? If yes is it advisable.Also how will the
    updation happen? Should methods for updation will be written in BO methods? Or should a task be called
    which does the same.
    Please suggest,
    Saket.

    Hi Saket,
    Yes it is possible!
    To trigger workflow from table updates you can use table level events. Refer to
    Re: WorkFlow when Data is changed in Table or program
    Also you can update a table from a workflow. To do this, create an Activity step in workflow. In this, you can call a BO method. This BO method would store the code to update the database table required.
    Just take care of the bindings between the method -> task -> workflow container.
    Hope this helps!
    Regards,
    Saumya

Maybe you are looking for

  • How to gather table stats for tables in a different schema

    Hi All, I have a table present in one schema and I want to gather stats for the table in a different schema. I gave GRANT ALL ON SCHEMA1.T1 TO SCHEMA2; And when I tried to execute the command to gather stats using DBMS_STATS.GATHER_TABLE_STATS (OWNNA

  • URLs  cache and applet context showDocument question

    Hello: I wrote an applet and realized that when I try to read from a URL using this code: URL Url=new URL(ReadAddress); BufferedReader Input = new BufferedReader(new InputStreamReader(Url.openStream()));I was getting cached information from the web b

  • Tab canvas active style in web

    I have a form with a tab canvas . The problem is the Active Style property is not working in web.Is there any workaround to highlight the active tab? Thanks in advance Khalid

  • Problems starting WLS 5.1 on Linux

    I am new to WLS, so this may be obvious, but these are the errors I get when trying to start WebLogic Server 5.1 after my first attempt to install and configure WLS 5.1: 1st error java.lang.UnsatisfiedLinkError: no jsafe in java.library.path 2nd erro

  • LLDB: A new debugger for developers ... part of the LLVM project

    I recently submitted https://aur.archlinux.org/packages/lldb-svn/ to the AUR. The main website for the LLDB project is here: http://lldb.llvm.org/. LLDB aims to be modular and easy to use and maintains much of the familiarity of GDB. This allows GDB