_WF_INITIATOR and WF_BATCH

Hi
I am new to workflow.
Please tell me what is workflow initiator and workflow batch.
How workflow initiator initiate the work?
Thanks and Regards
Rajesh N

Hi Raj,
I understand your confusion! Here's the solution:
WF_BATCH is background user that is maintained in SU01. This user is the default user for any workflow. This user has authorization for background processing of workflow tasks.
On the contrary, WFINITIATOR is the user who triggers the workflow. It could be any user, also you, me who ever executes some transaction that triggers the associated workflow.
Hope this helps!
Regards,
Saumya

Similar Messages

  • SAP*, DDIC, SAPCPIC and WF_BATCH

    Dear Guys,
    I'm new in SAP...need you advice..I have been queried by my audit people about these 4 ids which are
    a. DDIC
    b. SAP*
    c. WF_BATCH
    d. SAPCPIC
    My question is..can I change the password or delete the IDs above.
    2. How can I configure if the users that are not using the SAP for 2
    weeks and the system will disable it from using the SAP.

    First, there are more standard users in the system than those 4 your auditors have asked about. I recommend running report RSUSR003 to check your settings and the status (existence) of the important ones.
    > a. DDIC
    Change the standard password in the client's where it exists, and only use it for upgrades. If you use it, also in jobs in the system, then you will have a tough time restricting it's access during non-upgrade times.
    > b. SAP*
    Check this thread: https://forums.sdn.sap.com/click.jspa?searchID=12621618&messageID=5468340
    > c. WF_BATCH
    I assume that you have created your own user called "WF_BATCH" for the workflow engine, and not the standard "WF-BATCH". You should for a start ensure that the user type is SYSTEM and that the password is not known (set) by human admins, preferably. You should not need to change it's password, as it is also required for the RFC calls within the system. You can further compensate for this by restricting it's access.
    > d. SAPCPIC
    Already answered.
    > My question is..can I change the password or delete the IDs above.
    It depends. For Dialog and Communication type users, yes, change the password but do not delete them. For System and Service type users, typically no (the password should be known only to the system or the owner of the connection).
    I addition to restricting these user's access, restricting access to them is also good idea: Move them into a secure user group (S_USER_GRP) and lock the standard users when not used, particularly SAP*.
    Cheers,
    Julius
    Edited by: Julius Bussche on Jun 6, 2008 4:39 PM

  • Details about WF-BATCH and DDIC users

    hi
    please provide me the details about the users  WF-BATCH and DDIC .

    hi kamaraj
    check these links
    Re: _WF_INITIATOR and WF_BATCH
    http://help.sap.com/saphelp_nw70/helpdata/en/52/671785439b11d1896f0000e8322d00/content.htm
    hope it helps you.
    thanks
    Sachin

  • Show WF-batch as &_wf_initiator& in the Workflow Log (SWi6)

    Hi,
    In Upgrade to ECC5.0 to ECC6.0, in the log workflow (SWI6) in the head workflow don´t  put as User Initiator = USNAME, only put Initiator = WF-Batch.
    I check the binding &_ev_creator& = &_wf_initiator& and is OK.
    Anybody have sameone tip?

    Hi, execuse me but my english is not good. jejeje :P
    In the Worklfow Log by (SWI6), the head information is follow:
    Workflow              Autorización de Propuesta de Pago
    Instancia workflow    Propuesta de Pago 29.09.2010
    Número de instancia   000089367146
    Fecha de inicio       29.09.2009     Iniciado por          WF-BATCH
    Hora inicio           19:27:06       Status actual         finalizado
    I want that field "Iniciador por" to be the user that send the workflow when interacción with the standard transaction por example "Javier Rodriguez" and not  to be WF-BATCH.
    The binding head workflow event is &_EVT_CREATOR& -> &_WF_INITIATOR& is OK

  • Work Item does not appear in Inbox

    Hello Everybody!
    I started a workflow normally, but the workitem does not appear in inbox! (It's a DECISION task) The notification appears normally...
    I already looked the SU01 user parameters and WF_BATCH parameters, apparently is all right, but I can't see the workitem.
    Anybody already had a problem like that???
    Tks,
    Marcos Munhós
    Edited by: Marcos Antonio Munhós on Nov 11, 2008 5:40 PM

    Tabela:         SWWORGTASK
                                                                                    CLIENT WI_ID          ORG_OBJ        TASK_OBJ       NO_SEL FORWARD                                                                               
    100    000000122053   USABAP2        TS00008267                            
       100    000000122053   USABAP3        TS00008267                            
       100    000000122053   USABAP5        TS00008267
    Tabela:         SWWUSERWI
                                                                                    MANDT USER_ID        WI_ID          TASK_OBJ   NO_SEL NO_EXECUTE FORWARD                                                                               
    100   ABAP2          000000122053   TS00008267                             
       100   ABAP3          000000122053   TS00008267                             
       100   ABAP5          000000122053   TS00008267                             
    I'm have all the Logins and from ABAP2, ABAP3 and ABAP5.
    Can be this a problems caused by a Support Pachage???
    This is a TEST client and was working until 3 months ago.

  • Workflow not starting in QA

    Hi,
    I have created and tested WF in DEV but after transporting to QA, WF in not starting in QA. I ran SWU_OBUF and WF_BATCH is also available in QA.
    I checked SWETYPV and link is active there.
    I have used SAP_WAPI_CREATE_EVENT for the WF. This FM is also giving success message but WF is not starting.
    I have used 2 versions of workflow in DEV (version 0000 and 0001, with version 0001 as active) and after transport, in QA as version 0000. The WF is same in QA and DEV.
    Please help me with the issue.
    Thanks
    Aamir

    Hi,
    The screenshot shows there is some issue with WF-BATCH user. Please check if it is locked because of incorrect login attempts.
    Check if there are any stucked entries for WF-BATCH user in SM58. Also check if all the mandatory settings of SWU3 are in place.
    Regards,
    Ibrahim

  • SAP FIORI PO Approval

    Hi Experts,
    I need to raise a PO to my manger to get approval while the amount exceeds Rs.1000. I have done the functional configuration in MM side with release code '1' in workflow category.
    I am using PO approval wf WS20000075.
    Here in the rule determination i have created a rule assigning my custom FM (In my custom FM while i give my user id as input will be giving my manger user id as output with object type 'US', these data are configured in HR) which is working fine when i simulate to get the output.
    In workflow the agent rule binding option i have given the workflow as &_WF_INITIATOR& and rule as &USER_ID&. After doing all these things i have created the PO and submitted but the mail has not been triggerred to my manager's id.
    Please help on this to get it done.
    Thanks,
    Gowtham
    Tags edited by: Michael Appleby

    Hi Gowtham,
    This are the prerequisites for Fiori Approve PO to be working. You need to post this query to SAP Workflow/MM discussion . Please check what all plants and material group you have added in the Workflow tab of release strategy. You need to add all the plants with which you are creating a PO and use the same materials. Still I can help with below steps :
    MM configuration :
    Go to spro -> Materials Management - > Purchasing -> Purchase order -> Release procedure for Purchase orders -> Define release procedure
    Click on Release Codes
    You will find Grp Code Workflow Description. Make sure workflow field is set to '1'
    Go back.
    Double Click on Workflow
    Now OT tab should be filled with "US" and your agent id should be added. (Manager ids who will receive the PO for approval)
    Say :
    Grp : A
    Code : XY
    Description : approver 1
    OT : US
    Agent ID : Manager 1
    Workflow config :
    Prerequisite is release strategy should be working fine.
    Once its working fine. Go to the workflow template WS20000075 in the SWDD tcode.
    Click on Steps 000093 : Release of Purchase order
    Now in the control tab, you can see Task properties.
    You need to assign agents
    Double Click on the yellow balloon like icon
    Agent assignment window opens
    click on agent assignment in menu bar -> Create.
    Select User -> Now add all the users employee,managers etc.
    10. Save it.
    Now test it. whether the workflow is triggered or not.
    If still the workflow is not triggered, Check the event linkages, if those are active or not.
    Regards,
    Tejas

  • User WF_BATCH dumps with TIME_OUT for a background task

    Hello,
    Situation :
    While executing a workflow with a task defined as background task, the workflow creates a dump in ST22 after around 40 minutes. dump is because of TIME_OUT exception. And the workflow stays in status InProcess forever.
    Question:
    In my opinion background tasks do not have a time limit because they are executed as backgound batch jobs with batch user WF_BATCH. Then why do I get a TIME_OUT error ?
    Is my assumption that workflow background task are just handled like other background jobs (sm36) is wrong ?
    More Details :
    I have a workflow with a task defined as background task (Task -> Basic Data -> Execution -> Check box 'Background processing' selected).
    This task calls a method defined as 'Synchronous' method.
    This method calls a ABAP FM having a select statement which selects large volume of Data.
    If I execute this FM in Dialog mode definately I get a TIME_OUT. I understand this.
    But what I do not understand is , while executing in background I do not expect TIME_OUT error since background jobs do not have a time limit. They can even run for several days.
    Please let me know in what cases does a background job throws a time_out exception.esp wrt workflow.
    Thanks in Advance
    Shivanand

    Check this link.
    http://mailman.mit.edu/pipermail/sap-wug/2003-April/008883.html
    Thanks
    Arghadip

  • HCM Process and forms error

    Hi Workflow Experts!
    I am trying to make a simple process and form u2013 based on the tutorial from help.sap.com
    http://help.sap.com/erp2005_ehp_04/helpdata/EN/a8/a72bc873d741e5b1803590824fda10/frameset.htm
    I have made simple form to change the users infotype 6 subt 1 (Permanent Address)
    But the workflow wont start, instead it comes with an error, and the workflow log shows the following errors(from transaction: SWI2_DIAG) :
    Error when processing node '0000000009' (ParForEach index 000000)
    Work item 000000001198: Object FLOWITEM method EXECUTE cannot be executed
    Error updating the process object
    Exit CL_HRASR00_POBJ_WF_EXIT triggered exeception for event STATE_CHG and (target) status READY->
    Transaction brackets of the workflow has been damaged
    Error updating the process object
    Exit CL_HRASR00_POBJ_WF_EXIT triggered exeception for event CREATED and (target) status : Excepti
    Error when creating a work item
    My Workflow is pretty simple, since I only have on task: TS17900100 which is &_WF_INITIATOR&
    So basically the user should enter his new address and then be able to approve it.
    I hope that somebody can help me with an answer.
    Best regards,
    Ronni

    Hello,
    Did you search the forum? Often the quickest way to get an answer.
    Looks like someone else had the same problem:
    Transaction brackets of the workflow has been damaged
    Solution was:
    "The problem have been rectified by applying SAP notes
    1248416 and 1384961 in order."
    But first try SWU_OBUF and regenerating the workflow.
    regards
    Rick Bakker
    Hanabi Technology

  • User WF-BATCH and BAPI_PO_RELEASE does not work without printer assigned

    Hello Gurus,
    The function BAPI_PO_RELEASE is used in our PO approval workflow, but this one does not work till the user WF_BATCH has no printer defined in USR01-SPLD. This is a strange behavior because the output message assigned to the PO has a message transmission medium equals to 5 (External send) => not print.
    Does someone have already met the same issue?
    How this could be solved without assigning a default printer to user WF_BATCH?
    Kind regards
    Chris

    Hello Tison,
    we're using also the WF-BATCH user having no default printer assigned and it works fine with the final release.
    However, there's usually the output message NEU with a prerequesite maintained that the PO has to be finally released. So this way there can be an additional output message found upon releasing. But we have a printer assigned using the condition records and we're not using the type that you've specified.
    So I'd guess that, indeed, the problem lies within the message. You could copy the WF-BATCH user to a dialog user and release the purchase order in dialog and see what happends.
    With the very best wishes,
       Florin

  • Doubt in possible agent and responsible agent.

    Hi All.
    Can any one please help me in solving difference between possbile agents as responsible agents.
    As per my understanding we will maintain the possible agents in the task definition and responsible agents in the work flow definition.
    For example if a invoice posting needs to be handled,if i define three agents in the task definition as possible agents who will become the responsible agents out of three..
    can any one please help me in understanding the difference between possible agent and responsible agent?
    Thanks in advance.

    Hi ,
    It's very small but interesting doubt :P
    If in activity level  any agent is maintain like we maintain &_wf_initiator& generally. that agent is the responsible agent .. or if any rule is maintained then the agents selected by the rule will be responsible agents but the ..
    There is something which you have missed is recipients .. who actually receives the workitems in their inboxs..  these are the user who are the intersection of possible and responsible agents..
    In short
    Possible agents as you have said..
    Responsible are the agents you maintain at activity level or get selected by the rule.
    and Recipents who actually gets the workitem..
    hope this will help you
    Regards
    Dev

  • A problem with Threads and loops.

    Hi, I have some code that needs to be constantly running, like while(true)
          //code here
    }However, the code just checks to see if the user has input anything (and then if the user has, it goes to do some other stuff) so I don't need it constantly running and hogging up 98% of the CPU. So I made my class (which has the method that needs to be looped, call it ClassA) implement Runnable. Then I just added the method which needed to be looped into the public void run()
    I have another class which creates an instance of the above class (call it ClassB), and the main(String[] args) is in there.
    public static void main(String[] args)
              ClassA test = new ClassA();
              Thread thread = new Thread(test.getInstanceOfClassA());
              thread.start();
              while(true)
                           //I do not know what to put here
                   try
                        thread.sleep(100);
                   catch(InterruptedException iex)
         }However, the thread only calls run() once,(duh...) but I can't think of away to get it to run - sleep - run -sleep forever. Can someone help me?

    Hi, I have some code that needs to be constantly
    running, like while(true)
    //code here
    }However, the code just checks to see if the user has
    input anything (and then if the user has, it goes to
    do some other stuff) so I don't need it constantly
    running and hogging up 98% of the CPU. Where does the user input come from. Are you reading from an InputStream? If so, then your loop will be blocked anyway when reading from the InputStream until data is available. During that time, the loop will not consume processor cycles.
    public static void main(String[] args)
              ClassA test = new ClassA();
    Thread thread = new Thread(test.getInstanceOfClassA());I have never seen this idiom. If ClassA instanceof Runnable, you simply write new Thread(test).
              thread.start();
              while(true)
    //I do not know what to put
    do not know what to put here
                   try
                        thread.sleep(100);
                   catch(InterruptedException iex)
         }However, the thread only calls run() once,(duh...)Yeah, why would you want to call it more than once given that you have an infinite loop in ClassA.run()?
    Harald.
    Java Text Crunching: http://www.ebi.ac.uk/Rebholz-srv/whatizit/software

  • A problem with Threads and MMapi

    I am tring to execute a class based on Game canvas.
    The problem begin when I try to Play both a MIDI tone and to run an infinit Thread loop.
    The MIDI tone "Stammers".
    How to over come the problem?
    Thanks in advance
    Kobi
    See Code example below:
    import java.io.IOException;
    import java.io.InputStream;
    import javax.microedition.lcdui.Graphics;
    import javax.microedition.lcdui.Image;
    import javax.microedition.lcdui.game.GameCanvas;
    import javax.microedition.media.Manager;
    import javax.microedition.media.MediaException;
    import javax.microedition.media.Player;
    public class MainScreenCanvas extends GameCanvas implements Runnable {
         private MainMIDlet parent;
         private boolean mTrucking = false;
         Image imgBackgound = null;
         int imgBackgoundX = 0, imgBackgoundY = 0;
         Player player;
         public MainScreenCanvas(MainMIDlet parent)
              super(true);
              this.parent = parent;
              try
                   imgBackgound = Image.createImage("/images/area03_bkg0.png");
                   imgBackgoundX = this.getWidth() - imgBackgound.getWidth();
                   imgBackgoundY = this.getHeight() - imgBackgound.getHeight();
              catch(Exception e)
                   System.out.println(e.getMessage());
          * starts thread
         public void start()
              mTrucking = true;
              Thread t = new Thread(this);
              t.start();
          * stops thread
         public void stop()
              mTrucking = false;
         public void play()
              try
                   InputStream is = getClass().getResourceAsStream("/sounds/scale.mid");
                   player = Manager.createPlayer(is, "audio/midi");
                   player.setLoopCount(-1);
                   player.prefetch();
                   player.start();
              catch(Exception e)
                   System.out.println(e.getMessage());
         public void run()
              Graphics g = getGraphics();
              play();
              while (true)
                   tick();
                   input();
                   render(g);
          * responsible for object movements
         private void tick()
          * response to key input
         private void input()
              int keyStates = getKeyStates();
              if ((keyStates & LEFT_PRESSED) != 0)
                   imgBackgoundX++;
                   if (imgBackgoundX > 0)
                        imgBackgoundX = 0;
              if ((keyStates & RIGHT_PRESSED) != 0)
                   imgBackgoundX--;
                   if (imgBackgoundX < this.getWidth() - imgBackgound.getWidth())
                        imgBackgoundX = this.getWidth() - imgBackgound.getWidth();
          * Responsible for the drawing
          * @param g
         private void render(Graphics g)
              g.drawImage(imgBackgound, imgBackgoundX, imgBackgoundY, Graphics.TOP | Graphics.LEFT);
              this.flushGraphics();
    }

    You can also try to provide a greater Priority to your player thread so that it gains the CPU time when ever it needs it and don't harm the playback.
    However a loop in a Thread and that to an infinite loop is one kind of very bad programming, 'cuz the loop eats up most of your CPU time which in turn adds up more delays of the execution of other tasks (just as in your case it is the playback). By witting codes bit efficiently and planning out the architectural execution flow of the app before start writing the code helps solve these kind of issues.
    You can go through [this simple tutorial|http://oreilly.com/catalog/expjava/excerpt/index.html] about Basics of Java and Threads to know more about threads.
    Regds,
    SD
    N.B. And yes there are more articles and tutorials available but much of them targets the Java SE / EE, but if you want to read them here is [another great one straight from SUN|http://java.sun.com/docs/books/tutorial/essential/concurrency/index.html] .
    Edited by: find_suvro@SDN on 7 Nov, 2008 12:00 PM

  • Problem with Threads and a static variable

    I have a problem with the code below. I am yet to make sure that I understand the problem. Correct me if I am wrong please.
    Code functionality:
    A timer calls SetState every second. It sets the state and sets boolean variable "changed" to true. Then notifies a main process thread to check if the state changed to send a message.
    The problem as far I understand is:
    Assume the timer Thread calls SetState twice before the main process Thread runs. As a result, "changed" is set to true twice. However, since the main process is blocked twice during the two calls to SetState, when it runs it would have the two SetState timer threads blocked on its synchronized body. It will pass the first one, send the message and set "changed" to false since it was true. Now, it will pass the second thread, but here is the problem, "changed" is already set to false. As a result, it won't send the message even though it is supposed to.
    Would you please let me know if my understanding is correct? If so, what would you propose to resolve the problem? Should I call wait some other or should I notify in a different way?
    Thanks,
    B.D.
    Code:
    private static volatile boolean bChanged = false;
    private static Thread objMainProcess;
       protected static void Init(){
            objMainProcess = new Thread() {
                public void run() {
                    while( objMainProcess == Thread.currentThread() ) {
                       GetState();
            objMainProcess.setDaemon( true );
            objMainProcess.start();
        public static void initStatusTimer(){
            if(objTimer == null)
                 objTimer = new javax.swing.Timer( 1000, new java.awt.event.ActionListener(){
                    public void actionPerformed( java.awt.event.ActionEvent evt){
                              SetState();
        private static void SetState(){
            if( objMainProcess == null ) return;
            synchronized( objMainProcess ) {
                bChanged = true;
                try{
                    objMainProcess.notify();
                }catch( IllegalMonitorStateException e ) {}
        private static boolean GetState() {
            if( objMainProcess == null ) return false;
            synchronized( objMainProcess ) {
                if( bChanged) {
                    SendMessage();
                    bChanged = false;
                    return true;
                try {
                    objMainProcess.wait();
                }catch( InterruptedException e ) {}
                return false;
        }

    Thanks DrClap for your reply. Everything you said is right. It is not easy to make them alternate since SetState() could be called from different places where the state could be anything else but a status message. Like a GREETING message for example. It is a handshaking message but not a status message.
    Again as you said, There is a reason I can't call sendMessage() inside setState().
    The only way I was able to do it is by having a counter of the number of notifies that have been called. Every time notify() is called a counter is incremented. Now instead of just checking if "changed" flag is true, I also check if notify counter is greater than zero. If both true, I send the message. If "changed" flag is false, I check again if the notify counter is greater than zero, I send the message. This way it works, but it is kind of a patch than a good design fix. I am yet to find a good solution.
    Thanks,
    B.D.

  • Problem with Threads and "plase wait..."-Window

    Hi everyone,
    I have a problem that I'm not able to solve in any way... I have a time-consuming task (a file decryption) which I execute in a separate thread; I've used the SwingWorker class, like suggested by sun-tutorial, and it works right. The problem is that I have to wait that the decryption have finished before continuing with program-execution. Therefore I would like to display a "please wait"-window while the task runs. I've tryed all the possible ways I know but the problem is always the same: the waitWindow is displayed empty, the bounds are painted but the contents no; it's only painted when the decrypt-task has finished. Please help me, I have no more resources....
    decrypt-file code:
    public class DecryptFile {
      private String cryptedFileNameAndPath;
      private ByteArrayInputStream resultStream = null;
      // need for progress
      private int lengthOfTask;
      private int current = -1;
      private String statMessage;
      public DecryptFile(String encZipFileNameAndPath) {
        cryptedFileNameAndPath = encZipFileNameAndPath;
        //Compute length of task...
        // 0 for indeterminate
        lengthOfTask = 0;
      public ByteArrayInputStream getDecryptedInputStream() {
        return this.resultStream;
       * Called from ProgressBarDemo to start the task.
      public void go() {
        current = -1;
        final SwingWorker worker = new SwingWorker() {
          public Object construct() {
            return new ActualTask();
        worker.start();
       * Called from ProgressBarDemo to find out how much work needs
       * to be done.
      public int getLengthOfTask() {
        return lengthOfTask;
       * Called from ProgressBarDemo to find out how much has been done.
      public int getCurrent() {
        return current;
      public void stop() {
        current = lengthOfTask;
       * Called from ProgressBarDemo to find out if the task has completed.
      public boolean done() {
        if (current >= lengthOfTask)
          return true;
        else
          return false;
      public String getMessage() {
        return statMessage;
       * The actual long running task.  This runs in a SwingWorker thread.
      class ActualTask {
        ActualTask () {
          current = -1;
          statMessage = "";
          resultStream = AIUtil.getInputStreamFromEncZip(cryptedFileNameAndPath); //here the decryption happens
          current = 0;
          statMessage = "";
      }The code that calls decryption and displays waitWindow
          final WaitSplash wS = new WaitSplash("Please wait...");
          final DecryptFile cryptedTemplate = new DecryptFile (this.templateFile);
          cryptedTemplate.go();
          while (! cryptedTemplate.done()) {
            try {
              wait();
            } catch (Exception e) { }
          this.templateInputStream = cryptedTemplate.getDecryptedInputStream();
          wS.close();Thanks, thanks, thanks in advance!
    Edoardo

    Maybe you can try setting the priority of the long-running thread to be lower? so that the UI will be more responsive...

Maybe you are looking for

  • Ical sharing issue

    I have an icloud account that i share calenders with my work collegues just fine, i wanted to share just my home calender with my wife, but there is where the issue starts. My home calender on my Imac is shared via a me.com icloud account. When i typ

  • HT4799 Netflix application to apple tv

    I want to download Netflix application to my apple tv but the only options listed under Internet is YouTube and Radio. Netflix was unable to help me and my apple support has expired. Any suggestions?

  • Project server 2013 sp1

    Hi, What is sequence for installing-SP1 on Project Server 2013 ? 1.SP1 for sharepoint 2013 2.Windows updates (is it required ?) 3.PSConfig Wizard (is it required ?)     Recent CU needed ? 4. SP1 for project Server 2013 5.Windows updates (is it requir

  • Disappearing I Pod Files

    If anyone could help this would be great... i have a 4th gen, 20Gb i pod. my i pod has suffered a while, in the past its done all the freezing, and error -36, but i managed to sort them out, in stumped here. so i've filled up my i pod, but it wasn't

  • How To Upgrade to Windows 8 - Useful Informations

    Hi community I would like to share very interesting Toshiba page providing the info and details about the new Win 8 upgrade. *How To Upgrade to Windows 8* http://eu.computers.toshiba-europe.com/innovation/generic/windows8-upgrade-stepbystep/ Dear Cus