BLAORD03 and BLAORD02

We are trying to receive the above idocs in a file and use SAP IDOC processing to create Contracts.
Is there a sequence in which these IDOCs should be sent or does it not matter in which sequence the IDOcs are sent. If it does not matter then how does does SAP determine which Condition Record belongs to which Contract? Please not that EDI or ALE is not used to send and receive these IDOCS.
Has anyone tried this method of IDOC processing, using a flat file to receive the data and use IDOC processing to create the Contract?
Thanks in advance for any information regarding this.

Use trasnaction WE60 to get information of all fields in IDOC type. Is that what you are looking for?

Similar Messages

  • IDOC BLAORD03 and COND_A01

    Hi Guys,
    I have to create a inbound/outbound scenario for contract creation through BLAORD03.
    i have to update multiple conditions as well to this contract , for this IDOC COND_A01 might help, but i am not getting how to use this IDOC , as Purchasing document field is mandatory field in this IDOC, and how can i get the purchasing document no in this case.
    any help will be appritiated.
    regards
    siddharth

    Hi,
    use the message type COND_A and the process code COND in the partner profile. You have a std FM "IDOC_INPUT_COND_A" linked to this process code which posts the documents and the purchasing document number will be sent by the other system.
    Thanks & regards

  • Passing custom field in contract in SRM to contract in ECC

    Hi,
    We are using SRM 7.0 with ECC 6 (no EHP). We're planning to use central contract distributed with IDOCs. Our contract in ECC has custom field added in the header. We have tried and successfully pass the contract from SRM to ECC (using IDOC BLAORD03 and COND_A).
    I know we can create custom field in contract in SRM, but how to pass the value in the custom field in SRM contract to custom field in ECC contract? Do we need to edit IDOC BLAORD03? Is it possible?
    Best regards,
    Yosea

    Hi,
    Does anyone know the answer?
    John

  • Condition  Idoc COND_A02

    Hi,
    I am using BLAORD03 and COND_A02 IDOC to upload (INBOUND) the contract data as well condition data through custom program. But after posting both IDOC, the price given in condition record is not reflecting to the net price of line item screen of contract, while when I am changing the Condition price manually in transaction ME32K it is getting reflect to net price (NETPR) of line item of contract.
    The condition is in validity period.
    Could you please suggest the answer .........Urgent?

    OK, sorry - I thought the process is the other way around.
    I have the feeling, the condition creation isn't correct. To check the correct filling of the IDOC, do the following steps:
    - define an outbound cond_a02 message
    - search a correct contract condition, display this in MEK3 (or VK13?). Take the condition info button right on the entry screen, select your example in the following screen, execute
    - mark and send one (or more) line(s) with the text-button  'send conditions' (SHIFT+F'2)
    - now you (should) have an IDOC with the correct field filling - compare this (in WE19) with your inbound IDOCs.
    - you can also take the outbound IDOC and use this in WE19 for a new condition creation (exchange the contract or the material) - this should work for sure (otherwise SAP would not be able to receive it's own IDOCs in a remote system)
    Some fields of the outbound IDOC are not necessary for condition creation - they would be filled automatically (e.g. based on customizing). Still adjust your condition IDOC as long as the condition is not created correct in the system.

  • Condtion IDOC COND_A02

    Hi ,
    I am using BLAORD03 and COND_A02 IDOC to upload (INBOUND) the contract data as well condtion data through custom program. But after posting both IDOC , The price given in conditon record is not reflecting to the net price of line item screen of contarct.The condition is in validity period. could you please suggest the answer?

    OK, sorry - I thought the process is the other way around.
    I have the feeling, the condition creation isn't correct. To check the correct filling of the IDOC, do the following steps:
    - define an outbound cond_a02 message
    - search a correct contract condition, display this in MEK3 (or VK13?). Take the condition info button right on the entry screen, select your example in the following screen, execute
    - mark and send one (or more) line(s) with the text-button  'send conditions' (SHIFT+F'2)
    - now you (should) have an IDOC with the correct field filling - compare this (in WE19) with your inbound IDOCs.
    - you can also take the outbound IDOC and use this in WE19 for a new condition creation (exchange the contract or the material) - this should work for sure (otherwise SAP would not be able to receive it's own IDOCs in a remote system)
    Some fields of the outbound IDOC are not necessary for condition creation - they would be filled automatically (e.g. based on customizing). Still adjust your condition IDOC as long as the condition is not created correct in the system.

  • Send R/3 contracts to MDM Catalog

    Hi experts
    I am in SRM 5.0 and I would likw to know if iis there a standard process to transfer R/3 contracts to MDM catalog or it's necessary to make a development?
    Thanks
    Nilson

    Hi,
    You can use standard IDOC BLAORD03 and use transaction ME308 that send the specified contract to an IDOC structure. Then create in PI\XI the XML you want to transfer to MDM and use the mdm import server.Good Luck
    Limor

  • Idoc for materials and service for same contract.

    Dear All
       I have an scope where i have to migrate the data for material and services for the same contract.Is there an Idoc which does it so or otherwise ?Earlier in scope materials contracts have been loaded with the help of idoc type :- PURCONTRACT_CREATE01  and that of Service Contract using Idoc type :- BLAORD03.No customization is however permitted .Tcode for the same is ME32K.
    Regards
    Somnath

    Hi,
    It is not clear to me if you are working with sapscript or smartforms.
    You have only to find a variable which identifies the kind of invoice
    I do not know that variable so i use an example variable
    for sapscript:
    /: IF &VBDKR-FKTYP& = '1'
    /  INVOICE
    /: ELSE
    /  SERVICE ORDER
    /: ENDIF.
    In a smartform you can also do something like that.
    but There you work with conditions (eq, BOOLEAN)
    You have only to find the right variable
    success,
    Gr., Frank

  • IDOC (BLAORD03) could not be saved..

    Hello all,
    When we create GOA in SRM and after approval.. it is not getting distributed to ECC..
    When we debug, RFC Call, in ECC there is no IDOC Generated against to this Contract Number.. And the call in failing with the following discription
    IDOC (BLAORD03) could not be saved 
    Application error in backend system D01CLNT200 (SRM outline agreement 6100000043)  
    We Implimented BADI's for Condition (Mapping) in SRM and Company code updation (in ECC)..
    - IDOC it self is not getting generated in ECC, Partner profile is maintained for message - BLAORD
    Pls suggest..!!
    Thanks in Advance.!!
    Regards,
    Mohan Vamsi

    Hello Sanjeev,
    Yes, we maintained partner profiles for both the message types, and, Profile in ECC is SAP_ALL.
    Any other places which I need to check.. Pls suggest. Very much thankful for your help.
    Also..
    Now I hard coded our ECC Sytem LS name in BADI Implimentation of BBP_DETERMINE_LOGSYS as per the documentation.!!
    Follow-on contract from Bid Invitation
    Regards,
    Mohan Vamsi..

  • Issues during Contract creation using Inbound IDOC BLAORD03

    Dear Experts,
    We need to create Contract using Inbound IDOC BLAORD03.
    I am facing following issues and need some one's help ASAP.
    (1) Contract is generated without  Header Texts and Item Texts through IDOC BLAORD03 .
    (2) Not able to create CONTRACT for service masters using Inbound IDOC BLAORD03.
    Is there any body who has implemented this scenario and able to guide ?
    Looking forward to help ASAP.
    Thanks in Advance,
    Best Regards,
    Mitesh Desai
    [email protected]

    Hi All,
    I am also facing the same issue. I am trying to upload service outline agreements thru LSMW using  idoc basiv type BLAORD03 ( FM->IDOC_INPUT_BLAORD).
    Immediate help highly appreciated.
    Thanks & Regards,
    Vijender

  • LSMW IDOC method BLAORD03

    Hello,
    I'm trying to use idoc BLAORD03 to create lsmw for purchasing contracts (services).
    I'd appreciate if someone could guide me on the structures to select and how the mapping should be done.
    BAPI BUS2014 (PURCONTRACT_CREATE01) would've been my preferred option, but it doesn't have the ESLL structure.
    Thank you.

    Since you have the same problem the earlier answer should work for you too.
    Search for OSS notes with the keywords: BLAORD service
    I can see 16, none of them says that it is not possible, contrary some have bug fixes.
    Only the KBA 1603760 - MEMASSCONTRACT for services - External Services Management
    explains that "MEMASSCONTRACT does not support the mass change to service lines"
    but this is a little different story

  • Message control for outline contract BLAORD.BLAORD03

    Hi There,
    I am configuring outline contract idoc BLAORD.BLAORD03, I want to know what are the message control parameters for that?
    Application: -
    Message Type: -
    Process Code: -
    Thanks,
    Nishant

    Hi Nishant,
      Check the Tcode WE82 for Mesage type and Basic type of ur idoc,
      Check  the Tcode WE40 for Inbound process code
      check the Tcode WE41 for outbound process code.
    Messagetype is                 BLAORD
    InboundProcess code is      BLAO
    Function module name is     IDOC_INPUT_BLAORD
    for application try with          WT
    Thanks,
    Ram.

  • 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