BAPI inside WF event trigger problem

Hi Guys,
Here's my problem:
I'm triggering a WF from the Business objects BUS2032, event CHANGED (for sales orders). But the first step in the workflow is to block the order for delivery, so I'm using the BAPI BAPI_SALESORDER_CHANGE to modify the field delivery block of that sales order.
The problem is that when the BAPI is executed, the event CHANGED from the BO BUS2032 is triggered, so the WF is triggered again, and so on...it's like a loop.
So my question is, is there a way to modify the sales order inside the WF without triggering any event inside the WF?
Thanks!

Hi MatiasAZ,
  Change standard code to not trigger the event is not recommended.
  Alternatively,You can put a check in your workflow to complete itself if there is another workflow is running for the same sales order.
   Or you can also put filter function module on the event linkage via transaction SWETYPV not to trigger the event if there is a workflow running for that sales order.
  Transaction SWI6 can tell you that any workflow with specific object is running.
Chaiphon

Similar Messages

  • Overlapping component event trigger problem

    I create a layeredpane, two levels there...top level with a jlabel with image...bottom level is a jbutton...i need to put the jlabel just above the button. these all done..both the button and jlabel have actionlistener associate with them...now the problem is, once i click the jlabel, both actionlistener will receive the actionevent and trigger some function....how do i make the button's listener do not response to the click when i click the label above it....thanks....

    well, this is the code snippets
    JLayeredPane layeredPane=new JLayeredPane();
         JPanel buttonPanel=createButtonPanel();
         Insets insets=layeredPane.getInsets();
         buttonPanel.setBounds(insets.left, insets.top, 800, 50);
         layeredPane.add(buttonPanel,new Integer(10));
         JLabel triangle=new JLabel(createIcon("icons/triangle2.png",9,10));
         triangle.setBounds(insets.left+525, 0, 9, 10);
            triangle.addActionListener(new labelAction());
         layeredPane.add(triangle,new Integer(20));
         return layeredPane;

  • How to trigger events from inside an event to another event-stru​cture

    Hello,
    i have two event-structures (struct1 and struct2) which are running at the same time parallel in a loop.
    Currently there is an keydown-event in struct1, so when i press an ok-button then the corresponding event executes in struct1.
    struct2 is used to execute menu-entries from a custom runtime-menue.
    What i want to do is to select a menue-entry (which executes an event in struct2) and the from inside this event i want to trigger an event in struct1 (means simulate keypress ? ).
    Is this possible?
    Thanks for the help
    Solved!
    Go to Solution.

    If I read this problem correctly, you are essentially trying to do the same thing from different events in different event structures.  This type of problem is very common in UI based programs, since you often want to have the same action triggered by multiple events (e.g. button press, menu selection, keyboard shortcut).  You may wish to consider a change in your basic architecture.  Instead of splitting your code into two event structure loops, try splitting it into an event structure loop and a task handling loop.  The event structure only processes events.  At each event, it generates one or more tasks, which are passed to the task loop via queue.  Traditionally, the task data would be an enum for the task name and a variant for the task data.  You can find a discussion of this type of design here.
    For new designs, I would recommend a task object (use LabVIEW classes).  The task data type is the parent task object.  The actual tasks will be child objects.  This simplifies your top-level code quite a bit and makes it easily extensible without changing the top-level code.
    If you need more information, let us know.
    This account is no longer active. Contact ShadesOfGray for current posts and information.

  • 'Inserting' text into a Text Field on event trigger in a static form

    Sorry if this seems like a silly question, but I've been struggling with it for a bit and I'm new to Adobe/JavaScript.
    I am building a static form (it must be static), and I want to have text appear/disapear based on an event trigger (mouseclick). I tried creating a floating text object inside of a static text object, but I'm not sure how I can make the string value for this change based on the event trigger. The only advice in the Adobe help was purely regarding FormCalc, which I can't use as this must be a static form. I tried using this code in the <script>, but it obviously didn't work as it was written from FormCalc code versus JaveScript;
    TextField.rawvalue = variable.value;
    What do you suggest in terms of being able to script this, so my static form will work? Thanks a billion if you can help!
    PS: I'm using Adobe 9, LiveCycle ES 8.2
    PPS: Also tried inserting the following into my trigger script;
                        xfa.resolveNode("form1.subform.TestField").rawValue= "Please Work";
                        xfa.layout.relayout("form1.subform.TestField");
    It also did not work.

    Hi,
    If the button and the textfield are on in the same subform then this code should work in the click event of the button
    (This is JavaScript code so make sure the code is set to JavaScript and Client on the drop downs in the script window)
    (assuming the name of the textfield is TextField1)
    TextField1.rawValue = "some value";
    If they are in different subforms then you have 2 options
    Please note in both these options it is easier if the subforms have names ( I am assuming this to keep samples simple)
    option 1 -
    use the parent object to move up the tree till you are at the same level as that of the subform that contains the textfield
    e.g. 
    (Click Event of the button)
    this.parent.subformname.TextField1.rawValue = "some value";
    option 2 -
    Use the resolve node to make your way down from the top level of the form
    xfa.resolveNode ("form1.subformname.TextField1").rawValue = "some value";
    Hope this helps
    Malcolm
    p.s. I am making assumptions as the image/file you attached did not appear for me.

  • Event Trigger BI Publisher 11g

    I have an event trigger defined as type After Data. The function executes.. inserts into a table (table used to verify if function is actually executing via BI Publisher).
    The problem I'm seeing is that the parameter in the report that globally goes out is sent but the parameters that are globably coming back are not populated in the report.
    This package works fine in BI Publisher release 10.1.3.4.
    In the properties of the Data Model I have included package for Oracle DB Default Package
    The  parameter are defined as:
    1. Name: REQNUM, Data Type: String Default Value: Parameter Type: Text
    2. Name: PMAXUSER, Data Type: String Default Value: Parameter Type: Text
    3. Name: PMAXDATE, Data Type: String Default Value: Parameter Type: Text
    4. Name: MYTESt, Data Type: String Default Value: Parameter Type: Text
    In options I have Refresh other parameters on change checked.
    Thank you in advance for your help.

    First, make sure you've got enough machine resources as BIEE11g is resources hungry.
    Next, after installation you should have icons to start BIEE11g (try windows version as it is easier to start up).
    Run the startBIEE11g script and it will take some minutes, be patient. Once you get all processes running
    then you can try to login.
    Take a look at my post:
    http://oraclebiblog.blogspot.com/2010/11/starting-and-stopping-biee-from-command.html
    Good luck
    regards
    Jorge

  • Frm-40735 when-custom-item-event trigger raised unhandled exceptionora06508

    frm-40735 when-custom-item-event trigger raised unhandled exception ora-06508.
    While logging in, I am getting the above message,
    If I click on ok i am able to proceed and do the task.
    My problem here is to remove this error.
    Any one plz help out?

    Welcome to OTN
    Before posting on this forum please read
    931068 wrote:
    frm-40735 when-custom-item-event trigger raised unhandled exception ora-06508.So
    ORA-06508:     PL/SQL: could not find program unit being called
    Cause:     An attempt was made to call a stored program that could not be found. The program may have been dropped or incompatibly modified, or have compiled with errors.
    Action:     Check that all referenced programs, including their package bodies, exist and are compatible. Hope this helps
    If someone's response is helpful or correct, please mark it accordingly.

  • Event structure: have one event trigger another event

    I have an event structure with two events. I want the finalization of the first event to trigger the second event. Both events are triggered by a boolean value change, say "boolean 1" and "boolean 2". Can I have a local variable of boolean 2 inside event 1. By changing its value, it should trigger event 2. However, this doesn't seem to be working. (see attached example)
    any help?
    Solved!
    Go to Solution.
    Attachments:
    test.vi ‏9 KB

    Tim's reply is the answer you are looking for.
    I would like suggest that you create a sub-VI that doesw the work in the second event you want to fire so tht rather than resorting to having one event trigger another, you can simply use the sub-VI that does the work in event_2 after the sub-VI that does the work for event_1.
    If you decide to stick one event triggering another, please clearly document the sceme in BOTH events. What you want to avoid is latter deciding event_1 should be triggered by Event_2 and the next thing you know, your app hangs.
    Ben
    Ben Rayner
    I am currently active on.. MainStream Preppers
    Rayner's Ridge is under construction

  • Event structure problem in updating array

    Hi, i have a problem with my .vi...
    i have an array of 10 boolean i want to modify by pressing SET TRUE or SET FALSE buttons, after selecting (with the ring selector) which is the elemente that should be changed...
    there seems to be something strange in the behaviour... the array is not correctly updated... maybe there a big mistake i cannot find...
    i  hope you could help me
    tks
    Attachments:
    array_modify.vi ‏18 KB

    The problem is the the Ring control is read before the event structure, so it return "old" data when you click of either SET TRUE or SET FALSE.
    You need to move it so that it is read inside the event structure after you click on one of the "SET" buttons.
    Create a local of the Ring for one of the SET events and move the Ring terminal into the other.
    Or create a blank event for the Ring control so that it will update the input tunnel going into the event structure.
    Or create a single event to handle both SET TRUE and SET FALSE.
    Omar
    Attachments:
    array_modify.vi ‏9 KB

  • Use event trigger process chain

    Hi friends,
    I am working on a process chain tuning task.
    One request is to change a schedule method  of an interrupt from date/time to event.
    I know how to generate and utilize event.
    My worrying is:
    Is an event has duration?
    E.g Today's process chain scheduled at 01am,,processing, the interrupt was triggered  by event at 04am, but at 10am, the event was trigger again for some unknown reason.
    Then,the process chain with the interrupt will be scheduled  at 04am tomorrow, but actually, there may be no event for tomorrow as requirement(due to some reasons,we do not like PC run everyday).
    Anyone know how to solve this problem?

    Martin
    You partially answered my questions.
    My chain contains both date/time schedule and event trigger.
    As is:
    Start-date/time schedule daily at 1:00am
    step1,step2,,etc
    interrupt-now, it is date/time schedule,at 4:00am
    other steps.
    To be:
    Start-date/time schedule daily at 1:00am
    step1,step2,,etc
    interrupt-  event trigger schedule
    other steps.
    I know how to trigger event by ABAP program.
    My concern is:
    Today afternoon, someone run this ABAP 10 times to generate 10 events,what will happen tomorrow?
    Actually,according to business requirement,tomorrow's process chain(interrupt below part) shall not be ran.

  • Trying to create an event trigger but no packages are showing

    Oracle BI Publisher 11.1.1.5.0  (build:53(13879917))
    OS: Linux 2.6.32-300.32.2.el5uek #1  x86_64 x86_64 x86_64
    Hi Folks,
    When attempting to create an event trigger for a data model I am unable to obtain a listing of available functions. The trigger is based on a function defined in a package as follows:
    CREATE OR REPLACE
    PACKAGE BANINST1.WSRMERG AS
    function f_main(lv_reg_term varchar2 , lv_cur_term1 varchar2) return boolean;
    END WSRMERG;
    Since the package is defined in a schema that is different from the user running the default data source, I created a synonym on the data source user schema to the package:
    CREATE OR REPLACE SYNONYM "XMLP_CONNECT"."WSRMERG" FOR "BANINST1"."WSRMERG";
    The value provided for the Oracle DB Default Package is WSRMERG . When creating the trigger all that can be seen is a tree similar to:
    -Packages
    -----Prod Ban
    -Parameters
    I've have verified that the package can be executed by XMLP_CONNECT via SQL/Developer and SQL/Plus:
    declare result boolean;
    begin
    result := wsrmerg.f_main('201305','201302');
    end;
    Any ideas?
    Thanks for your assistance!

    You have done well but may be in your code has some problems. You should re read the code again and find the error. You can take a look over your sql code and oracle function. I think you will find the solution. Besides this you may take help from http://www.techyv.com/questions/what-do-oracle-sql-query-web-service but it is not mandatory.
    Edited by: 1006779 on May 19, 2013 12:40 PM
    Edited by: 1006779 on May 19, 2013 12:41 PM
    Edited by: 1006779 on May 19, 2013 12:42 PM

  • Event controll: How to stop a running while loop inside a event structure

    Hello,
    I have some problems with controlling a while loop inside a event structure (see attached VI).
    I habe 3 buttons ("Start Measurement, Stop Measurement, Quit Program"). When a measurement is running, it should be possible to stop the measurement by clicking on "Stop Measurement", but this does not work.
    Has anyone an idea?
    Thanks a lot and best regards,
    Michael
    Message Edited by MichaGue_01 on 04-23-2010 04:37 AM
    Solved!
    Go to Solution.
    Attachments:
    Event_Controll.vi ‏27 KB

    Hello,
    Try not to use while loops inside a Event structure.
    My approach is using two While loops (one will have only the Event structure).
    I had to use to Flag buttons that make it a bit more complicated but i am sure somebody will come up with a better idea, or you might want to have a think about it yourself.
    Have a look on the modified version on the attachment.
    Once you are happy how it works then you can Hide the 2 flag buttons from the Front Pannel by going to Block diagram right-click the indicators and choose option "Hide Indicators/Controls"
    I did it in LV 8.6 so i hope you can open it on your PC if not i can downgrade it.
    If you have any problem let us know.
    Regards
    Dimitrios
    Test Systems Computing Engineer
    Cummins Turbo-Technologies
    Attachments:
    Event_Controll[1]_modified.vi ‏18 KB

  • Delicate ProgressMonitor/ event handling problem

    Hi,
    I have a delicate ProgressMonitor / event handling problem.
    There exists some solution on similiar problems here in the forums, but no solution to my special problem, hope anybody can help me out.
    I have a rather big project, an applet, that I've written a separate JarLoader class that will load specific jar's if the ClassLoader encounter a unloaded class, all ok so far.
    But, during loading, I would like to display a ProgressBar. And here is the problem. If my custom ClassLoader intercepts a findClass -request that needs to load the class from a jar from a normal thread, this is no problem, but if the ClassLoader intercepts a findClass that needs loading a jar when inside the EventQueue -thread, this is becomming tricky!
    The catch is that an event posted on the EventQueue finally needs a class that needs to be loaded, but I cannot dispatch a thread to do this and end that particular event before the class itself is loaded.
    So how do I hold the current EventQueue -event needing a jar -load, Pop up a ProgressBar, then process events in the EventQueue to display the ProgressBar and update repaints in it? then return from the event that now have loaded needed class-files.
    I've tried a tip described earlier in the forums by trying to handle events with this code when loading the Jar:
        /** process any waiting events - use during long operations
         * to update UI */
        static public void doEvents() {
            // need to derive from EventQueue otherwise
            // don't have access to protected method dispatchEvent()
            class EvtQueue extends java.awt.EventQueue {
                public void doEvents() {
                    Toolkit toolKit = Toolkit.getDefaultToolkit();
                    EventQueue evtQueue = toolKit.getSystemEventQueue();
                    // loop whilst there are events to process
                    while (evtQueue.peekEvent() != null) {
                        try {
                            // if there are then get the event
                            AWTEvent evt = evtQueue.getNextEvent();
                            // and dispatch it
                            super.dispatchEvent(evt);
                        catch (java.lang.InterruptedException e) {
                            // if we get an exception in getNextEvent()
                            // do nothing
            // create an instance of our new class
            EvtQueue evtQueue = new EvtQueue();
            // and call the doEvents method to process the events.
            evtQueue.doEvents();       
        }Then, the loader checks
    java.awt.EventQueue.isDispatchThread()to see if its' inside the eventqueue, and runs doEvents after updating the ProgressMonitor with new setProgress and setNote values.
    More precise;
    The loader is loading the jar like this:
    (this is pseudo code, not really usable, but outlines the vital parts)
    public void load() {
      monitor = new ProgressMonitor(null, "Loading " + jarName, ""+jarSize + " bytes", 0, jarSize);
      monitor.setMillisToDecideToPopup(0);
      monitor.setMillisToPopup(0);
      // reading jar info code here ...
      JarEntry zip = input.getNextJarEntry();
      for (;zip != null;) {
         // misc file handling here... total = current bytes read
         monitor.setProgress(total);
         monitor.setNote(note);
         if (java.awt.EventQueue.isDispatchThread()) {
            doEvents();
         zip = input.getNextJarEntry();
      monitor.close();
    }When debugging doEvents(), there is never any events pending in peekEvents(), even if I tries to put a invokeLater() to run the setProgress on the monitor, why? If it had worked, the doEvents() code would have saved my day...
    So, this is where I'm totally stuck...

    Just want to describe how I did this using spin from http://spin.sourceforge.net
    This example is not pretty, but it can probably help others understanding spin. Cancelling the ProgressMonitor is not implemented, but can easily be done by checking on ProgressMonitor.isCanceled() in
    the implementation code.
    First, I create a bean for displaying and run a ProgressMonitor:
    Spin requires an Interface and an Implementation, but that's just nice programming practice :-)
    import java.util.*;
    public interface ProgressMonitorBean {
        public void start(); // start spinning
        public void cancel(); // cancel
        public int getProgress(); // get the current progress value 
        public void setProgress(int progress); // set progress value
        public void addObserver(Observer observer); // observer on the progressValue
    }Then, I created the implementation:
    import java.util.*;
    import javax.swing.ProgressMonitor;
    import java.awt.*;
    public class ProgressMonitorBeanImpl extends Observable implements ProgressMonitorBean {
        private ProgressMonitor monitor;
        private boolean cancelled;
        private int  progress = 0;
        private int  currentprogress = 0;
        public ProgressMonitorBeanImpl(Component parent, Object message, String note, int min, int max) {
            monitor = new ProgressMonitor(parent, message, note, min, max);
            monitor.setMillisToDecideToPopup(0);
            monitor.setMillisToPopup(0);       
        public void cancel() {
            monitor.close();
        public void start() {
            cancelled = false;
            progress = 0;
            currentprogress = 0;
            while (progress < m_cMonitor.getMaximum()) {
                try {
                    synchronized (this) {
                        wait(50); // Spinning with 50 ms delay
                    if (progress != currentprogress) { // change only when different from previous value
                        setChanged();
                        notifyObservers(new Integer(progress));
                        monitor.setProgress(progress);
                        currentprogress = progress;
                } catch (InterruptedException ex) {
                    // ignore
                if (cancelled) {
                    break;
        public int getProgress() {
            return progress;
        public void setProgress(int progress) {
            this.progress = progress;
    }in my class/jarloader code, something like this is done:
    public void load() {
      ProgressMonitorBean monitor = (ProgressMonitorBean)Spin.off(new ProgressMonitorBeanImpl(null, "Loading " + url,"", 0, jarSize));
      Thread t = new Thread() {
        public void run() {
          JarEntry zip = input.getNextJarEntry();
          for (;zip != null;) {
            // misc file handling here... progress = current bytes read
         monitor.setProgress(progress);
      t.start(); // fire off loadin into own thread to do time consuming work
      monitor.start(); // this will spin events on monitor and block until progress = max
      monitor.cancel(); // Just make sure ProgressMonitor is closed
    }The beautiful thing here is that Spin is taking care of weither the load() is inside the dispatch thread or not, making the code much simpler and cleaner to understand.
    The ProgressMonitorBeanImplementation could been made much nicer and more complete, but I was in a hurry to check if it worked out. And it did! This will be applied on a lot of gui -components that blocks the event-queue in our project, making it much more responsive.
    Hope this will help others in similiar situations! Thanks again svenmeier for pointing me to the spin -project.

  • Sales order creation, standard event trigger is taking long time .

    We have a requirement where we are sending data to CRM system using RFC function module. This data is sent while sales order creation or change. We have used standard event BUS2032.CREATED to trigger CRM FM in sales order creation mode. In sales order change mode, we are using custom event. In production system, our custom change event is getting triggered fine and data is sent to CRM system with small time lag of around 1 minute. But, while sales order creation, standard event trigger is taking long time ( sometimes about 20 minutes) in production system.
    We tried triggering same custom event at the time of sales order creation using FM u2018SWE_EVENT_CREATE_IN_UPD_TASKu2019 as well but, still we are not able to improve performance of the event trigger at sales order creation.
    Regards,
    Sushee Joshi

    HI,
    we have written SWE_EVENT_CREATE in update task
    I think instead of calling in update task simply call to function module CALL FUNCTION "SWE_EVENT_CREATE" might trigger the event immediately.. Did you try to check in this way..
    OR
    And I also suggest you to check the entry in SWE2 txn with respect to your workflow tempalte, may be you have enable the option ENABLE EVENT QUEUE, this could be one of the reasons.. If it is enabled please disable it (uncheck)
    Please check..
    Regards
    Pavan

  • BI Publisher event trigger and email notification

    How can I event-trigger a BI publisher report, i.e., start the BI publisher report after completion of a ETL job?
    In addition, after generation of the BI publisher report, how can I send to destinated email addresses?
    Thanks

    Write custom java code , which uses the BIP web-services and put a trigger on the ETLJOB.
    Re: Run BI Publisher from the command line through a shell script
    Re: Run BI Publisher from the command line through a shell script
    BIP has provided a webservice,
    One of the function is to run or schedule a report.
    Write a simple Java program, which will look at the server and point to run the report you wanted.
    http://download.oracle.com/docs/cd/E10415_01/doc/bi.1013/e10416/bip_webservice_101331.htm
    some more doc's
    http://www.oracle.com/global/de/community/forms/documents/Forms_BIP_WS.pdf
    http://download.oracle.com/docs/cd/E12844_01/doc/bip.1013/e12188/T421739T524310.htm

  • How to create schedule job and event trigger in XI to start a ABAP program?

    Dear All:
    Here are what i need to do:
    1.To run a ABAP program to start an XI scenario per hour.
    2.To run a ABAP program to start an XI scenario per day at 6 PM.
    3.To run a ABAP program used event trigger to make sure that XI scenario has finished the process and after that wait for 10 min later and run again.
    only i know is used sm36 & sm37 to set up a schedule job.
    but what i don't know is how to do it step by step.
    especially point 3.
    are there any step by step example can show me how?
    it better be simple and details...
    thanks you all
    Regards
    Jack Lee

    Hi,
    If you want to trigger the event manually from within SAP, use transaction
    SM64
    in SAP this is done by scheduling a job
    once a new customer is entered
    your scheduled report sends customer master data
    you can schedule your report (TCODE - BD12 I think) to one day or every 5 minutes... it depend on your needs and the system performence
    Regards,
    Surya

Maybe you are looking for