Dbms_xmldom: how to merge 2 xml's?

Hi!
xml1:
=====
<?xml ...>
<r1><t1>text1</t1></r1>
xm2:
====
[substitute 1 with 2]
merged xml:
=========
<? xml...>
<r new_attribute='M'>
<r1>...</r1>
<r2>...</r2>
</r>
How to get the merged xml using standard-functions of dbms_xmldom?
Greetings
Bjørn

The above code only add's the first node.
I changed the code little differently to
              SAXBuilder builder = new SAXBuilder();
              Document books = builder.build("D:/in.xml");
              Document onebook = builder.build("D:/out.xml");
             //trying to add second xml into the first
              books.getRootElement().addContent(onebook.getRootElement().getContent()); 
              new XMLOutputter(Format.getPrettyFormat()).output(books, System.out);
here is the exception from the above code:
org.jdom.IllegalAddException: The Content already has an existing parent "address"
     at org.jdom.ContentList.add(ContentList.java:218)
     at org.jdom.ContentList.add(ContentList.java:140)

Similar Messages

  • How to merge XML-Data of two variables?

    Hi all,
    I have to combine information coming from 2 different sources (1st delivered by client input, 2nd delivered by ftp-adapter) for passing it to another service.
    So there are different namespaces for the three describing xsd's (2 in, 1 out). As every structure is composed of several elements, I don't want to copy them one by one . But when copying a whole node with child elements, the target structure yields empty nodes, because the target child elements obtain the source namespace!
    Using 2 XSLT's works well for each input, but in combination, the last translate deletes the information of the first one.
    So, the only way to merge the data I figured out by now, is to use a XSLT for each input transforming into 2 separate Variables belonging to the same namespace and then copying the complete nodes of the two variables into the target (which of course belongs to this namespace as well).
    Although there is an inconsistent indexing of the namespaces (see example), happily all data can be accessed.
      <CommonData>
        <CommonData xmlns="http://TargetNamespace.com/CommonData">
          <FileInfo xmlns="http://TargetNamespace.com/CommonData">
            <Name>testfile2.txt</Name>
            <Size/>
            <DateReceived>2009-02-10T17:15:46+01:00</DateReceived>
          </FileInfo>
          <FileData xmlns:ns0="http://TargetNamespace.com/CommonData">
            <ns0:KOPF>
              <ns0:Id>1</ns0:Id>
              <ns0:Value>1</ns0:Value>
              <ns0:Text>Hier könnten Ihre Daten stehen -</ns0:Text>
            </ns0:KOPF>
            <ns0:POSI>
              <ns0:Id>1</ns0:Id>
              <ns0:Position>1</ns0:Position>
              <ns0:Value>1</ns0:Value>
              <ns0:Text>eins ----</ns0:Text>
            </ns0:POSI>
            <ns0:POSI>
              <ns0:Id>2</ns0:Id>
              <ns0:Position>2</ns0:Position>
              <ns0:Value>2</ns0:Value>
              <ns0:Text>zwei ----</ns0:Text>
            </ns0:POSI>
          </FileData>
        </CommonData>
      </CommonData>Now for the question:
    Is this really the only way to merge variables? As it took 4 operations to achieve this, it seems to be too complicated, and therefore too inperformant to me.
    BTW: In real life there would be up to 9999 positions whith much more payload to be processed ;-)
    Any comments appreciated,
    cheers, Marco
    Edited by: MarcoSfromGER on 11.02.2009 08:43

    Well, if you only want to change namespace (no other changes) I would use a single generic XSL that changes the namespace for any XML document into a given target namespace, keeping the rest. That will require two transformation calls, but only one XSL. I'm afraid I don't have an example available, but if you google perhaps you can find it, I have seen it somewhere.
    Normally when you have different namespaces the contents differ as well, though, and what you really want is a merge function. There is a way to pass two documents into a single XSL and that is to use parameters. You pass one source document the normal way and assign the other converted to a string to a paramter. You must use an assign with processXSLT in BPEL, not a transform activity. The processXSLT really takes three arguments and the third contains the parameters. Now to the difficulty - in the transformation you need to change the string into a nodeset (an XML document). In the current XPath version used by the platform there is no nodeSet function, but it is possible to write one in Java. If you have it you can select from both documents while building the third. I don't have an example handy and yes it is a bit messy as well, but much of the work only has to be done once and can be reused in other processes.

  • How to merge XML-Data of two variables of different namespace?

    Hi all,
    I am facing a problem manipulating XML data in a BPEL process. As I didn't get any response on my question in the BPEL forum, I decided to post it again in this forum. I am not very familiar with using XML up to this moment, so please don't blame me if this turns out to be a stupid question.
    I have to combine information coming from 2 different sources (1st delivered by BPEL-client input "FileInfo", 2nd delivered by a ftp-adapter "FileData") for passing it to another service.
    So there are 3 XSDs (2 in, 1 out), each with a different namespace. As every structure is composed of several elements, I don't want to copy them one by one. But when copying a whole node including child elements, the target structure yields empty nodes, because the target child elements maintain the source namespace!
    Using 2 XSLT's works well for each input, but in combination, the last transformation deletes the information of the first one.
    So, the only way to merge the data I figured out by now, is to use a XSLT for each input, transforming it into 2 separate Variables belonging to the same namespace and then copying the complete nodes of the two variables into the target (which of course belongs to the common namespace as well).
    Although there is an inconsistent indexing of the namespaces (see example), happily all data can be accessed.
      <CommonData>
        <CommonData xmlns="http://TargetNamespace.com/CommonData">
          <FileInfo xmlns="http://TargetNamespace.com/CommonData">
            <Name>testfile2.txt</Name>
            <Size/>
            <DateReceived>2009-02-10T17:15:46+01:00</DateReceived>
          </FileInfo>
          <FileData xmlns:ns0="http://TargetNamespace.com/CommonData">
            <ns0:KOPF>
              <ns0:Id>1</ns0:Id>
              <ns0:Value>1</ns0:Value>
              <ns0:Text>Hier könnten Ihre Daten stehen -</ns0:Text>
            </ns0:KOPF>
            <ns0:POSI>
              <ns0:Id>1</ns0:Id>
              <ns0:Position>1</ns0:Position>
              <ns0:Value>1</ns0:Value>
              <ns0:Text>eins ----</ns0:Text>
            </ns0:POSI>
            <ns0:POSI>
              <ns0:Id>2</ns0:Id>
              <ns0:Position>2</ns0:Position>
              <ns0:Value>2</ns0:Value>
              <ns0:Text>zwei ----</ns0:Text>
            </ns0:POSI>
          </FileData>
        </CommonData>
      </CommonData>Now for the question:
    Is this really the only way to merge variables? As it took 4 operations to achieve this, it seems to be too complicated, and therefore too inperformant to me.
    BTW: In real life there would be up to 9999 positions with much more payload (in total up to several MBs) to be processed!
    Having full control of the namespaces in this case, I could think of using one namespace for all XSDs too. But would this be a better solution? Is there a golden rule on using namespaces relating to design issues?
    Any comments appreciated,
    cheers, Marco

    Well, if you only want to change namespace (no other changes) I would use a single generic XSL that changes the namespace for any XML document into a given target namespace, keeping the rest. That will require two transformation calls, but only one XSL. I'm afraid I don't have an example available, but if you google perhaps you can find it, I have seen it somewhere.
    Normally when you have different namespaces the contents differ as well, though, and what you really want is a merge function. There is a way to pass two documents into a single XSL and that is to use parameters. You pass one source document the normal way and assign the other converted to a string to a paramter. You must use an assign with processXSLT in BPEL, not a transform activity. The processXSLT really takes three arguments and the third contains the parameters. Now to the difficulty - in the transformation you need to change the string into a nodeset (an XML document). In the current XPath version used by the platform there is no nodeSet function, but it is possible to write one in Java. If you have it you can select from both documents while building the third. I don't have an example handy and yes it is a bit messy as well, but much of the work only has to be done once and can be reused in other processes.

  • How to merge two XML's with JDOM?

    How to merge two xmls's using jdom? like:
    is there a way to add the complete content one xml into the parent node of another xml?
    //in.xml
    <?xml version="1.0"?>
    <people>
    <person>
      <name>ABC</name>
      <email>[email protected]</email>
    </person>
    </people>
    //out.xml
    <?xml version="1.0"?>
    <address>
    <city> abccounty</city>
    <state> abcstate</state>
    </address>
    Merged XML:
    <?xml version="1.0"?>
    <people>
    <person>
      <name>xyz</name>
      <email>[email protected]</email>
    </person>
    <address>
    <city> abccounty</city>
    <state> abcstate</state>
    </address>
    </people>
    import java.util.List;
    import org.jdom.Document;
    import org.jdom.Element;
    import org.jdom.input.SAXBuilder;
    import org.jdom.output.Format;
    import org.jdom.output.XMLOutputter;
    public class MergeXMLS {
         public static void main(String[] args) {
              try{
                  SAXBuilder builder = new SAXBuilder();
                  Document books = builder.build("D:/in.xml");
                  Document onebook = builder.build("D:/out.xml");
                  Element root = books.getRootElement();
                  List rows = root.getChildren();
                  for (int i = 0; i < rows.size(); i++) {
                      Element row = (Element) rows.get(i);
                      onebook.getRootElement().addContent(row.detach());
                      System.out.println(row.getName());
                  new XMLOutputter(Format.getPrettyFormat()).output(onebook, System.out);
              }catch(Exception e){
                   e.printStackTrace();
    }

    The above code only add's the first node.
    I changed the code little differently to
                  SAXBuilder builder = new SAXBuilder();
                  Document books = builder.build("D:/in.xml");
                  Document onebook = builder.build("D:/out.xml");
                 //trying to add second xml into the first
                  books.getRootElement().addContent(onebook.getRootElement().getContent()); 
                  new XMLOutputter(Format.getPrettyFormat()).output(books, System.out);
    here is the exception from the above code:
    org.jdom.IllegalAddException: The Content already has an existing parent "address"
         at org.jdom.ContentList.add(ContentList.java:218)
         at org.jdom.ContentList.add(ContentList.java:140)

  • Merging XML and XDP files

    Hello!
    I must build this POC for a client and the idea is merge XML and XPD files to feed a LiveCycle Output process and create PDF files.
    I've built the XDP files and the XML to start things, now I need to figure out how to create the process to merge them in Workbench.
    Is there any tutorial to help me with this task?
    Thank you for any ideas!
    Marcos

    Thank you guys for helping a beginner in trouble.
    I hope I will soon be able to help others here and help the comnunity.
    Right now, I've so much to learn!
    Thank you!
    Marcos, Brazil

  • Need to merge xml o/p from different sources to generate BIP Report from OA page

    Hi,
    Currently in our product Quoting , we are using many VO queries to generate the Report
    Now we have created one data template file to combine all VO queries to generate xml o/p
    The problem we are facing is that we didn't added Contracts VO query in our DT file so we need to merge
    xml o/p coming from DT file and Contracts VO and pass to Process Template XDO api to generate the report
    Please tell how to merge the xml o/p in OAF ?

    Thanks Shridhar for reply ,  you provided code for xml coming from two VO
    but I am having scenario where getting one xml o/p from data template file and seconf xml o/p getting from contracts api as -
    ByteArrayOutputStream l_docXML = new ByteArrayOutputStream(1024);
    // Here getting xml o/p from DT file
    l_docXML = (ByteArrayOutputStream)this.getDataTemplateXML(transaction,"ASO","ASOPD",parameters1,null);
    // Here getting xml o/p from contacts api
    ContractTermsXMLGenerator.writeXML(PrintQuote,
                        (OutputStream) l_conXML,
       true,
       documentType,
       new Number(params[8]),
       new Number("0"));
    // code to merge two xml into one xml m_docXML
    try{
                 if (l_conXML.size() > 0)
                      DOMParser dp = new DOMParser();
                      l_docIP = new ByteArrayInputStream(l_docXML.toByteArray()); 
                      dp.parse(l_docIP);
                      XMLDocument xDoc = dp.getDocument();
                      l_conIP = new ByteArrayInputStream(l_conXML.toByteArray());
                      dp.parse(l_conIP);
       XMLDocument cDoc = dp.getDocument();
       Node cNode = cDoc.getDocumentElement();
                      if (cNode != null)
                           Node xDocConNode = xDoc.adoptNode(cNode);
                           Node conData = xDoc.createElement("CONTRACT_DATA");
                           conData.appendChild(xDocConNode);
                           xDoc.getDocumentElement().appendChild(conData);
                         xDoc.print(m_docXML);
                         writeLog("GenerateCLMDoc::XMLMerge Complete");
               catch(Exception e)
           writeLog("GenerateCLMDoc:: Doc contract XML Merge - " + e.getMessage());
                      throw e;
        finally{
                        l_docIP.close();
                        l_conIP.close();
    Please check if it is correct code , do I need to change it with code provided by you
    can we chat over any messenger ?
    once again thanks for your reply

  • Merging XML documents using DOM

    I have 300 XML documents to merge. They contain structures such as:
    1.xml=
    <MIM>
    <MIM-ENTRY>
    <MIM-NUMBER>123456
    </MIM-NUMBER>
    </MIM-ENTRY>
    </MIM>
    2.xml =
    <Mim>
    -<Mim-entry>
    <Mim-title>*604176 SUPPRESSOR OF CYTOKINE SIGNALING 3</Mim-title>
    </Mim-entry>
    </Mim>
    3.xml=
    <Mim>
    <Mim-entry>
    <Mim-alternative_titles_and_symbols>
    <Mim-alternative_titles_and_symbols-alt>SOCS3</Mim-alternative_titles_and_symbols-alt>
    </Mim-alternative_titles_and_symbols>
    </Mim-entry>
    </Mim>
    all the XML files have this sort of structure.
    Essentailly, I need to merge them (using the above as an example) to get:
    <MIM>
    <MIM-ENTRY>
    <MIM-NUMBER>123456</MIM-NUMBER>
    <Mim-title>*604176 SUPPRESSOR OF CYTOKINE SIGNALING 3</Mim-title>
    <Mim-alternative_titles_and_symbols>
    <Mim-alternative_titles_and_symbols-alt>SOCS3</Mim-alternative_titles_and_symbols-alt>
    </Mim-alternative_titles_and_symbols>
    </Mim-entry>
    </MIM>
    I have all the trees stored in a Vector as DOM objects.
    Anyone have any ideas how to merge these documents as stated?
    Any help would be most appriciated

    Ah, think im begining to get you. And if I am undertstanding you correctly it might not solve my problem.
    Ok, so the files exist as follows:
    file1.xml
    <MIN>
    <MIM-1>
    <MIM-2>something
    </MIM-2>
    </MIM-1>
    </MIM>
    file2.xml
    <MIN>
    <MIM-1>
    <MIM-3>somethingelse
    </MIM-3>
    </MIM-1>
    </MIM>
    merged to give:
    <MIN>
    <MIM-1>
    <MIM-2>something
    </MIM-2>
    <MIM-3>somethingelse
    </MIM-3>
    </MIM-1>
    </MIM>
    SO....
    I have to bring out the nodes <MIM-2> from file1.xml and import them. in file2 appendChild will be applied to <MIM1> using those nodes.
    This is really not what i was looking for.
    I wanted to throw everything together. Reason? I will be merging over 300 xml documents all of which will be inserting elements at different depths. This method you describe (i think) will need the specific nodes to be extracted from each and every DOM structure. This might not be possible as the XML stuctures will change depend on the program circumstances.
    I would like to just to put all the DOMS together and Tags of the same name will simply merge. to give the output above.
    Or does method you descibed this actually do this?
    I apologise for my stupidity in advance.
    litkid

  • Using dbms_xmldom to load large xml

    Hi,
    I am using dbms_xmldom to load the xml of size 600 MB. Its taking around 7 hours to load the xml.
    Please provide the tips or tricks to tune the dbms_xmldom code. Quick help will be appreciated. Thanks !!

    55e6744f-71c3-4d9d-a1a9-772c14ab90f9 wrote:
    Please help. Its urgent.
    No it's not. And it's very rude of you to assume so.
    Read: Re: 2. How do I ask a question on the forums?
    In answer to your question, I agree with Odie, you don't want to be using XML DOM for this.  See Mark Drake's (mdrake) answers on this thread over in the XMLDB forum...
    Re: XML file processing into oracle

  • Merge XML

    I have 2 Strings representing xml:
    (The first String)
    <bookshelf>
    <book><title>1st Book</title>
    <book><title>2nd Book</title>
    <book><title>3rd Book</title>
    <bookshelf>
    (The second String)
    <bookshelf>
    <book><title>4th Book</title>
    <book><title>5th Book</title>
    <book><title>6th Book</title>
    <bookshelf>
    I would like to have the following String:
    <bookshelf>
    <book><title>1st Book</title>
    <book><title>2nd Book</title>
    <book><title>3rd Book</title>
    <book><title>4th Book</title>
    <book><title>5th Book</title>
    <book><title>6th Book</title>
    <bookshelf>
    I read some example of merging file using xslt. But that involves using document() function. Since xml here is in memory I am not sure how to merge 2 xml documents.

    But, how do I do that in xslt. xslt is just a template. I think I am missing a point here. I was referring to below example, only problem is that I don't have a file "file2.xml". My xml is in memory. I want to be able to use String that's in memory.
    <?xml version="1.0"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="xml" indent="yes" />
    <xsl:variable name="file2" select="document('file2.xml')" />
    <xsl:template match="/bookshelf">
    <bookshelf>
    <xsl:copy-of select="*" />
    <xsl:copy-of select="$file2/bookshelf/*" />
    </bookshelf>
    </xsl:template>
    </xsl:stylesheet>
    Edited by: mohitanchlia on Jul 22, 2008 2:57 PM

  • How to iterate xml elements using PL/SQL

    Hello,
    Let's say I have the following xml:
    <A>
    <B name="b1">
    </B>
    <B name="b2">
    </B>
    </A>
    I would like to iterate over the B and sub-B elements using PL/SQL?
    Any help will be appreciated.

    Hi,
    You can use 'PL/SQL DOM API for XMLType (DBMS_XMLDOM)'
    to work with XML. You can check the example present at
    http://otn.oracle.com/docs/products/oracle9i/doc_library/release2/appdev.920/a96620/xdb08pls.htm#1041419
    to check how it does.
    The API for the package DBMS_XMLDOM is given on the same page(http://otn.oracle.com/docs/products/oracle9i/doc_library/release2/appdev.920/a96620/xdb08pls.htm#1040676)
    You can use them for your requirement.
    Regards,
    Anupama

  • I am trying to figure out how to merge my AD network account.

    I am trying to figure out how to merge my AD network account with my Mac account. The main reason for this is wanting to log into my admin account on the Mac, and have it also log into my network account so I do not have to log into differing accounts depending on wether I am on the network or not. And I am going to be running VMware fusion with windows on top, so having one account would be essential to this.
    Thanks.
    P.S. I am brand new to Apple, not by choice. ;-)

    Basically I want to link a network account to a local account, so that I always log into the same account, even if I do not have network access....

  • How to refresh XML file  from my client machine

    Hai All
    I have temp.XML and temp.XSL template in our server machine.
    when i give a print from client machine first time it gives the record,and next time it did not get refresh.Always it shows the previous records in the browser.But when i go into the server machine and click on temp.xml,it shows the current record(correct records)
    How to refresh XML file  from my client machine?
    Regards
    Dhina

    You never delete a Time Machine backup by dragging it to the Trash. You are supposed to use the TM application to manage the backups. What you will need to do now is to simply erase the drive using Disk Utility.

  • How to send XML using UTL_HTTP

    I am trying to workout how to send XML data to a webserver using UTL_HTTP but am not getting any reply
    I need to submit the following XML document to a server "http://api.fastsms.co.uk/api/xmlapi.php"  Their instructions are "The XML Document should be posted unencoded, with a UTF-8 character set as parameter 'xml'"
    If I submit the following XML on their test form
    <?xml version="1.0"?>
    <apirequest version="1">
    <user>
      <username>**USER**</username>
      <password>**PASSWORD**</password>
    </user>
    <application>
      <name>Example Application</name>
      <version>1.0</version>
    </application>
    <inboundcheck lastid="10711399"/>
    </apirequest>
    I get an XML response back with the messages in my inbox. 
    This is the code I am trying to use to accomplish the same from PL/SQL : I know a response is coming back as there is header information - just no content.  What am I doing wrong ?
      l_xml VARCHAR2(5000);
      req utl_http.req;
      resp utl_http.resp;
      header_name VARCHAR2(256); -- Response header name
      header_value VARCHAR2(1024); -- Response header value
      response_text VARCHAR2(4000); -- Response body
      l_url VARCHAR2(100);
    BEGIN
      l_xml := 'xml=<?xml version="1.0"?>';
      l_xml := '<apirequest version="1">';
      l_xml := '<user>';
      l_xml := '<username>**USER**</username>';
      l_xml := '<password>**PASSWORD**</password>';
      l_xml := '</user>';
      l_xml := '<application>';
      l_xml := '<name>Example Application</name>';
      l_xml := '<version>1.0</version>';
      l_xml := '</application>';
      l_xml := '<inboundcheck lastid="10711399"/>';
      l_xml := '</apirequest>';
      -- Open HTTP connection
      l_url := 'http://api.fastsms.co.uk/api/xmlapi.php';
      req := utl_http.begin_request(l_url,'POST',utl_http.HTTP_VERSION_1_1);
      -- Set headers for type and length
      utl_http.set_header(req,'Content-Type','application/x-www-form-urlencoded');
      utl_http.set_header(req,'Content-Length',to_char(length(l_xml)));
      -- Write parameter
      utl_http.write_text(req,l_xml);
      -- Read response file
      resp := utl_http.get_response(req);
      -- Print out the response headers
      FOR i IN 1 .. utl_http.get_header_count(resp) LOOP
        utl_http.get_header(resp,i,header_name,header_value);
        logging_pkg.info(header_name || ': ' || header_value);
      END LOOP;
      -- Print out the response body
      BEGIN
        LOOP
          utl_http.read_text(resp,response_text);
          logging_pkg.info(response_text);
        END LOOP;
      EXCEPTION
        WHEN utl_http.end_of_body THEN
          logging_pkg.info('End of body');
      END;
      -- close http connection
      utl_http.end_response(resp);
      EXCEPTION
        WHEN utl_http.end_of_body THEN
          utl_http.end_response(resp);
    END;
    Cheers,
    Brent

    Hi Billy
    Yikes - how embarassing !  Thanks for pointing out my beginners mistake there.  I've fixed my code - and also implemented the substitutions of parameters like you suggested - I like that approach.
    Unfortunately the end result is no better - the line
    utl_http.read_text(resp,response_text);
    Still returns nothing back
    The headers that are coming back are
    Date: Thu, 04 Jul 2013 08:31:56 GMT
    Server: Apache/2.2.16 (Ubuntu)
    X-Powered-By: PHP/5.3.3-1ubuntu9.3
    Expires: Thu, 19 Nov 1981 08:52:00 GMT
    Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
    Pragma: no-cache
    Vary: Accept-Encoding
    Content-Length: 0
    Content-Type: text/html; charset=UTF-8
    Connection: close
    I guess I will need to try chasing it with the fastsms vendor so see if they can check my incoming request and see if there are any glaring problems. I know the xml is correct as I am now logging the xml string just before I send it and when I take that string and put it in their test form it works perfectly - something else in the puzzle is missing. I've had no experience using utl_http before - perhaps it's no possible to read the xml repsonse using this ?
    Anyway, thanks for your help Billy.
    ps - How do you paste your code into your message to get that formatting ?
    Cheers,
    Brent

  • How to merge the cells on a  tittle's report

    Hi there!
    Considering a simple obiee report composed of a title and a pivot table. At the same time, the title is composed of a logo and a sentence. If I export it to excel, the logo in the title and the sentence are allocated to separated cells. Do you know how to merge the cells on the tittle?
    Any help will be GREATLY appreciated.
    Thank you very much indeeed!!!
    PS. Oracle Business Intelligence 11.1.1.6.4

    Hi There,
    I am also facing same issue. Please let me know if any one has solved it.
    Thanks in advance.

  • How to merge the 2 field in alv gride display

    Tables for ALV display
    DATA: it_fieldcat   TYPE  slis_t_fieldcat_alv,
          wa_fieldcat   TYPE  slis_fieldcat_alv,
          wa_layout     TYPE  slis_layout_alv,
          it_exclude    TYPE  slis_t_extab,
          wa_exclude    TYPE  slis_extab,
          it_header TYPE STANDARD TABLE OF zqm_imir_hdr,
          wa_header LIKE LINE OF it_header,
          it_final TYPE STANDARD TABLE OF zqm_imir_itm,
          wa_final LIKE LINE OF it_final,
          it_vcode      TYPE RANGE OF zqm_wtr_itm-vcode,
           wa_vcode      LIKE LINE OF  it_vcode.
    DEFINE m_fieldcat.
      wa_fieldcat-fieldname = &1.
      wa_fieldcat-tabname   = &2.
      wa_fieldcat-seltext_m = &3.
      wa_fieldcat-outputlen = &4.
      wa_fieldcat-col_pos   = &5.
      append wa_fieldcat to it_fieldcat.
      clear wa_fieldcat.
    END-OF-DEFINITION.
    DEFINE m_vcode.
      wa_vcode-option   = &1.
      wa_vcode-sign     = &2.
      wa_vcode-low      = &3.
      wa_vcode-high     = ''.
      append wa_vcode to it_vcode.
      clear wa_vcode.
    END-OF-DEFINITION.
    START-OF-SELECTION.
      PERFORM data_retrival.
      PERFORM lead_time_calculation.
      IF it_final[] IS NOT INITIAL.
        PERFORM alv_display.
      ENDIF.
    Display ALV
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_callback_program = sy-repid
          is_layout          = wa_layout
          it_fieldcat        = it_fieldcat
          i_save             = c_x
          it_excluding       = it_exclude
        TABLES
          t_outtab           = IT_OUTPUT[]
        EXCEPTIONS
          program_error      = 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.
      m_fieldcat: 'ZIMIRNO'  'IT_OUTPUT' text-003 21  0,
                  'PRUEFLOS'  'IT_OUTPUT' text-004 21  1,
                  'ZCRDAT'    'IT_OUTPUT' text-030 9 2,
                  'INITS'     'IT_OUTPUT' text-031 6 3,
                  'SPLIT'     'IT_OUTPUT' text-005 12  4,
                  'WERK'     'IT_OUTPUT' text-006  5 5,
                  'LOSMENGE'  'IT_OUTPUT' text-007 24  6,
                  'MENGENEINH' 'IT_OUTPUT' text-008  15  7,
                  'NAMEVEND'   'IT_OUTPUT' text-009  11  8,
    *& Hypercare - 721600 - IMIR Changes - Start
                 'KONT_PSPNR' 'IT_OUTPUT' text-023  15  7,
                  'POSID' 'IT_OUTPUT' text-023  15  9,
    *& Hypercare - 721600 - IMIR Changes - End
                  'LTEX1' 'IT_OUTPUT'  text-024  24  10,
                  'EBELN'    'IT_OUTPUT' text-010  26  11,
                  'MBLNR'    'IT_OUTPUT' text-011  24  12,
                  'ANZGEB'   'IT_OUTPUT' text-012  17  13,
                  'GEBEH'    'IT_OUTPUT' text-013  4 14,
                  'MATNR'    'IT_OUTPUT' text-014  18 15,
                  'TXZ01'   'IT_OUTPUT' text-015  128 16,
                  'SPECE'    'IT_OUTPUT' text-016  23  17,
                  'VCODE'   'IT_OUTPUT' text-017 24  18,
                  'TAGNO'   'IT_OUTPUT' text-018 10  19,
                  'HEATNO'   'IT_OUTPUT' text-019  11  20,
                  'IDCODE'   'IT_OUTPUT' text-020  7 21,
                  'TCNO'   'IT_OUTPUT' text-021  9 22,
                  'REMARKS'   'IT_OUTPUT' text-022 30 23,
                  'BUDAT'   'IT_OUTPUT' text-025 30 24,
                  'CPUTM'   'IT_OUTPUT' text-026 30 25,
                  'VDATUM'   'IT_OUTPUT' text-027 30 26,
                  'VEZEITERF'   'IT_OUTPUT' text-028 30 27,
                 'ZLTIME'    'IT_OUTPUT' text-029 30 26,
                  'LEADTIME'   'IT_OUTPUT' text-029 30 28.
    DATA : v_unit like T006-MSEHI VALUE 'HR',
           v_FCALID like SCAL-FCALID,
           v_zltim TYPE f,
           v_zltime TYPE p LENGTH 8 DECIMALS 2.
    SELECT SINGLE FABKL INTO v_FCALID FROM T001W WHERE WERKS = s_werks.
    SELECT zcrdat INTO TABLE it_zqm_imir_hdr
           from zqm_imir_hdr
            FOR ALL ENTRIES IN it_final
            where zcrdat EQ it_final-zcrdat.
    SELECT mblnr mjahr budat cputm
          INTO TABLE it_mkpf
          from mkpf
            FOR ALL ENTRIES IN it_final
          where mblnr EQ it_final-mblnr
            AND mjahr EQ it_final-mjahr.
    SELECT prueflos vdatum vezeiterf
          INTO TABLE it_qave
          from qave
            FOR ALL ENTRIES IN it_final
          where prueflos EQ it_final-prueflos.
    SORT it_mkpf    BY mblnr mjahr.
    SORT it_qave    by prueflos.
    SORT it_zqm_imir_hdr  BY zcrdat.
        LOOP AT it_final into wa_final.
          CLEAR: wa_output,wa_mkpf,wa_qave,wa_zqm_imir_hdr.
          MOVE-CORRESPONDING wa_final to wa_output.
    READ TABLE it_zqm_imir_hdr INTO wa_zqm_imir_hdr WITH KEY zcrdat = wa_final-zcrdat
                                                   BINARY SEARCH.
          READ TABLE it_mkpf INTO wa_mkpf WITH KEY mblnr = wa_final-mblnr
                                                   mjahr = wa_final-mjahr
                                                   BINARY SEARCH.
          MOVE wa_zqm_imir_hdr-zcrdat TO wa_output-zcrdat.
          MOVE wa_mkpf-budat TO wa_output-budat.
          MOVE wa_mkpf-cputm TO wa_output-cputm.
          READ TABLE it_qave INTO wa_qave WITH KEY prueflos = wa_final-PRUEFLOS
                                                   BINARY SEARCH.
          MOVE wa_qave-vdatum     TO wa_output-vdatum.
          MOVE wa_qave-vezeiterf  TO wa_output-vezeiterf.
    LV_START_DATE = wa_zqm_imir_hdr-zcrdat.
    LV_START_DATE = wa_mkpf-budat.
    LV_START_TIME =  wa_mkpf-cputm.
    LV_END_TIME   = wa_qave-vezeiterf.
    LV_END_DATE   =  wa_qave-vdatum.
    IF LV_START_DATE IS NOT INITIAL.
       IF LV_END_DATE IS NOT INITIAL.
          CALL FUNCTION 'SD_CALC_DURATION_FROM_DATETIME'
            EXPORTING
              i_date1                =  LV_START_DATE
              i_time1                =  LV_START_TIME
              i_date2                =  LV_END_DATE
              i_time2                =  LV_END_TIME
           IMPORTING
             E_TDIFF                =  LV_DIFF
            E_DATE2_EARLY          =  E_DATE2_EARLY
          EXCEPTIONS
            INVALID_DATETIME       = 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.
    eNDFORM.}
    This is my code unable to merge the to tabs position is on 3rd and 4th.
    need help ......
    thanks,

    Hi,
    From Your code I saw that you called Macro of fieldcat after Calling the ALV Function Did You Check That One.
    Following links may be useful for you ,
    ALV report: How to merge 2 columns into 1 column?
    Hope this information helps You
    Regards,
    Raghava Channooru

Maybe you are looking for

  • Regarding Vendor Address

    HI All If there is a change in the vendor's address and i change the same in SAP. The changed address details also reflects in the existing documents which were created. But my requirement is documents which are created after the change of address sh

  • How to get Simulator tab in VC ?

    VC only shows Design Layout & Source tab How to get Simulator tab also ...?

  • How to skip span elements while tabbing thru a JSF view's form

    I have a form in a xhtml file that while I tab thru the fields, the focus goes to a <span> element which is rendered from a custom JSF tag. This is an expand/collapse section header. I don't want the focus to stop there at all. I have tried the follo

  • COnVERSION ROUTINE in data element level

    how can we write the CONVERSION ROUTINE in data element level for a field in data dictionary ?.........plz if possible give the EXAMPLE code also?

  • Reg Apllication server

    Hi all, I want to write text file or data file in application server. Can i know the maximum length of a line that would be printed. Thanks in advance, Sashti