Multiple lines in a Output XML message

Hi all,
     I am currently implimenting a simple scenario of creating a file in a particular format using XI.The working scenario is that we get an XML message from BO which will be mapped to the required format of the file.But for testing we are using an hardcoded XML file as the incoming message to XI.
     But there is a problem I am facing. The incoming XML message will contain multiple information and this has to be mapped to a header information followed by items.Like for example I have a payment document which has paid some 5 invoices.The incoming XML message will have this information and what I need in the output is to have the invoice information in 5 different lines.
For eg - Assume I have the following structure for incoming message
REGUH
REGUP
....and so on
Here for every REGUH entry we can have mulitple REGUP and also we can have multiple REGUH.
Say my target structure is -
Header Info
Record Info
so for every REGUH and corresponding REGUP combination I will have a Header Info and Record Info.For the next REGUH and corresponding REGUP I will have another Header and Record Info.
     I tried testing this in message mapping by duplicating the node REGUH and REGUP but it does not work.I also tried by having the occurances as 1 to n on both sides.It did not seem to work.
Can you guys give some feedback on this.
Thanks..
Sandeep

Manish,
    Thanks for the information.But this was a simple case which works.But in my case I have something like -
one field in REGUH will appear once in the file while some other fields will appear multiple times.Also I have a lot other structures which are something like this.
I assume that occurence for both sides should be 1 to n.
But it does not seem to work for me.Its a bit complicated target structure.

Similar Messages

  • Selecting multiple lines from ALV output for further validation

    Hi guru's,
             i have created a ALV report with a check box in the output,i need to select multiple lines by checking 'X' in the check box
    after that i need to do further validation..like updating etc..how to read the selected lines( check box = 'X' )from the output of the ALV report.Is there any function for that.plz help me with this regard.
    Thanks & Regards,
    Balaji.S

    Hi Balaji,
    Try this way.
    <font color=blue><pre>
    REPORT ztest_alv_row_selection.
    DATA: BEGIN OF it_output OCCURS 0,
            select TYPE c,          "This variable stores the value when row selected.
            bukrs  TYPE t001-bukrs,
            butxt  TYPE t001-butxt,
          END OF it_output.
    TYPE-POOLS:slis.
    DATA:it_events            TYPE STANDARD TABLE OF slis_alv_event,
         it_fieldcat          TYPE STANDARD TABLE OF slis_fieldcat_alv,
         wa_fieldcat          TYPE slis_fieldcat_alv,
         wa_events            TYPE slis_alv_event,
         wa_layout            TYPE slis_layout_alv.
    DATA:g_program            TYPE sy-repid VALUE sy-repid.
    START-OF-SELECTION.
      SELECT * FROM t001 INTO CORRESPONDING FIELDS OF TABLE it_output UP TO 100 ROWS.
      DEFINE fieldcatalog.
        wa_fieldcat-fieldname = &1.
        wa_fieldcat-tabname   = &2.
        wa_fieldcat-seltext_l = &3.
        append wa_fieldcat to it_fieldcat.
        clear  wa_fieldcat.
      END-OF-DEFINITION.
      fieldcatalog: "Column table       col text
                    'BUKRS' 'IT_OUTPUT' 'BUKRS',
                    'BUTXT' 'IT_OUTPUT' 'BUTXT'.
      wa_layout-box_fieldname     = 'SELECT'. "This has to be set to get selection
      wa_layout-colwidth_optimize = 'X'.
      wa_events-name              = 'PF_STATUS_SET'.
      wa_events-form              = 'PF_STATUS_SET'.
      APPEND wa_events TO it_events.
      CLEAR wa_events.
      wa_events-name              = 'USER_COMMAND'.
      wa_events-form              = 'USER_COMMAND'.
      APPEND wa_events TO it_events.
      CLEAR wa_events.
      CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
        EXPORTING
          i_callback_program = g_program
          is_layout          = wa_layout
          it_fieldcat        = it_fieldcat
          it_events          = it_events
        TABLES
          t_outtab           = it_output.
    *&      Form  PF_STATUS_SET
    FORM pf_status_set USING rt_extab TYPE slis_t_extab.
      SET PF-STATUS 'ZTEST'.
    1. When you set Pf status ZTEST, standard application tools will be removed.
    2. Goto SE41 give program 'SAPLKKBL' and status 'STANDARD_FULLSCREEN'.
    3. Copy the status from those to ZTEST of our program. Now you will see all standard functions.
    ENDFORM.                    "PF_STATUS_SET
          FORM USER_COMMAND                                          *
    FORM user_command USING r_ucomm LIKE sy-ucomm rs_selfield TYPE slis_selfield.
    Check function code
      CASE r_ucomm.
        WHEN 'DISPLAY'.  "user presses SAVE
          LOOP AT it_output.
            IF it_output-select EQ 'X'.
          Process records that have been selected
              WRITE:/ it_output.
            ENDIF.
          ENDLOOP.
      ENDCASE.
    ENDFORM.                    "user_command</pre></font>
    Thanks
    Venkat.O

  • Add an extra line in the output xml file

    Dear All
    My scenarios is idoc to xml file.For the resultant xml file i have to append a line  <?Test Line?> after
    <?xml version="1.0" encoding="UTF-8" ?>  while passing it to  legacy system ?
    How generate such a xml file in xi?
    Any help would be appreciated
    Thanks and regards
    uday

    Dear All
    my requirement is to generate an xml file which looks similar to
    <?xml version="1.0" encoding="UTF-8"?>
    <?TestLine?>
    <test_mt>
    <field1>123</field1>
    <field2>234</field2>
    </test_mt>
    how to add <?TestLine?>  tag?
    Hi shabrasish and rajashekar
    i am new to java and xslt mapping can you guide me  or give me links which are similar to my requirement how to proceed with this kind of mapping
    thanks
    uday

  • Multiple Lines In Report Output

    Post Author: deanrhurst
    CA Forum: General
    Hi
    I am setting up a report off the back of taking customer orders. Each customer will place one order that can contain several products.
    My client needs an output file that gives full details of the customer, cost, delivery address etc plus all products ordered. The output all needs to be in one row.
    The problem is my SQL database stores each different product ordered in the same field (i.e PRODUCT) but on different lines in the database. These are linked back to the unique customer by reference number.
    So my output file reads (eg)
    name, add1, add2, add3,add4, cost, product, quantity,
    this line would then repeat for each product ordered.
    what I need is:
    name, add1, add2, add3,add4, cost, product, quantity, product 2, quantity, product 3, quantity etc etc etc
    I cannot restructure the sql as it is linked into my order software.
    Does anyone know how I can get this all on one line.
    Thanks
    DEAN

    Post Author: Jagan
    CA Forum: General
    Group by customer and print in the group footer. I'd probably use arrays to store each detail's values (see help on arrays and semi-auto extending them with preserve etc.) and another formula in the group footer to simply loop through these arrays building up a string which is the formula result. See help on totext etc., particularly when converting numbers to a string.

  • Multiple Line Items in Output File

    Hi everyone,
    I am using a IDOC to Flat File scenario
    IDOC is PO Idoc.
    Flat file should contain n no of records For example if IDOC of a PO contains 3 Line Item Flat file should have 3 records...
    Suppose , my flat file has 3 fields
    PO #
    Item #
    Material #
    Now How to achieve this ?
    Thanks.

    Use UseOneASMany standard function and map as given below
    E1EDK01-BELNR (context E1EDK01) ------------------------\
    E1EDP01 -------------------- ----------------------------- >useoneasmany ---> target PO field
    E1EDP01-POSEX (context E1EDP01) ---------------------/
    because you use function useOneAsMany() if a field that only occurs once needs to be replicated as often as another field occurs in the outbound message so that the fields can be written to the target structure in pairs as a record.
    it takes three inputs
    first input values to be replicated
    second input for  how often values to be repeated(Occurence)
    third input How to structure the values(in your case you have to repeat values as often as E1EDP01 occurs and structure should be as Item or material field)
    Edited by: Kubra fatima on Oct 7, 2009 8:44 AM

  • Script issue with multiple lines printing

    Dear All,
    I'm trying to print multiple lines of my internal table in a script.
    But only the last line is being printed all the time in all the lines.
    Attached is my code.
        CLEAR GS_REGUP.
        LOOP AT GT_REGUP INTO GS_REGUP.
    * Start the Form
          CALL FUNCTION 'START_FORM'
            EXPORTING
              ARCHIVE_INDEX = TOA_DARA
              FORM          =  'ZFORM'                                    "T042E-ZFORN
              LANGUAGE      = SY-LANGU                          "T001-SPRAS
              STARTPAGE     = 'FIRST'
              PROGRAM       = 'ZPROG'.
    * Net Amount
          CLEAR GV_NETWR.
          GV_NETWR = ( GS_REGUP-WRBTR - GS_REGUP-PSSKT ).
    * Print the Content
          CALL FUNCTION 'WRITE_FORM'
            EXPORTING
              ELEMENT  = '525'      "Header
              FUNCTION = 'APPEND'
              TYPE     = 'BODY'
              WINDOW   = 'MAIN'.
    * End the Form
          CALL FUNCTION 'END_FORM'
            IMPORTING
              RESULT = ITCPP.
          IF ITCPP-TDPAGES EQ 0.       "Print via RDI
            ITCPP-TDPAGES = 1.
          ENDIF.
        ENDLOOP.
    Please let me know the flaw in it.
    Regards,
    Deepu.K

    Dear All,
    As i Mentioned in my earlier post, the same coding working fine in Quality server --> Printing multiple lines in script output.
    But now, I have the same reqt. in another window.
    So, I did the same coding.
    But, this time it's printing the last line of the internal table in all the lines.
    This is happening in Quality Server only.
    The only difference between the previous internal table and this int. table is:
    1. The first int. table content is printing in MAIN Window. ---> working fine
    2. The second int. table content is printing in VARIABLE window. ---> NOT WORKING.
    Can any one tell me what's the issue with this ?
    Regards,
    Deepu.K

  • Insert (xsl) tag to output xml

    Hi,
    I want to add a stylesheet tag to the output xml but I am not able to find where abouts to do this:
    I would need configure the form to add the following line to its output xml so it can be instantly user friendly:
    <?xml-stylesheet type="text/xsl" href="MyStyleSheet.xsl"?>
    Can someone tell me where I can do this?
    Kind regards,
    Rick

    Hi,
    I want to add a stylesheet tag to the output xml but I am not able to find where abouts to do this:
    I would need configure the form to add the following line to its output xml so it can be instantly user friendly:
    <?xml-stylesheet type="text/xsl" href="MyStyleSheet.xsl"?>
    Can someone tell me where I can do this?
    Kind regards,
    Rick

  • How to map a complex XML message onto a flattened XSD for multi line insert

    Hi Experts.
    I have a webservice in my composite that takes an xml message that contains repeating complex type elements. The XSD is as follows:
    <?xml version= '1.0' encoding= 'UTF-8' ?>
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:XxInt003Stg="http://www.somewhere.co.uk/xxx/integration/int003Stage"
    targetNamespace="http://www.somewhere.co.uk/xxx/integration/int003Stage" elementFormDefault="qualified">
    <xsd:complexType name="InterfaceFileType">
    <xsd:sequence>
    <xsd:element name="FileName" type="xsd:string"/>
    <xsd:element name="FileSource" type="xsd:string"/>
    <xsd:element name="FileIdentifier" type="xsd:integer"/>
    <xsd:element name="InterfaceInvoices" type="XxInt003Stg:InterfaceInvoicesType"/>
    </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="InterfaceInvoicesType">
    <xsd:sequence>
    <xsd:element name="InterfaceInvoice" type="XxInt003Stg:InterfaceInvoiceType"
    maxOccurs="unbounded"/>
    </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="InterfaceInvoiceType">
    <xsd:sequence>
    <xsd:element name="SupplierNumber" type="xsd:string"/>
    <xsd:element name="SupplierSite" type="xsd:string"/>
    <xsd:element name="InvoiceNumber" type="xsd:string"/>
    <xsd:element name="InterfaceInvoiceLines">
    <xsd:complexType>
    <xsd:complexContent>
    <xsd:extension base="XxInt003Stg:InterfaceInvoiceLinesType">
    <xsd:sequence>
    <xsd:element name="InterfaceInvoiceLine"
    type="XxInt003Stg:InterfaceInvoiceLineType"
    maxOccurs="unbounded"/>
    </xsd:sequence>
    </xsd:extension>
    </xsd:complexContent>
    </xsd:complexType>
    </xsd:element>
    </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="InterfaceInvoiceLinesType"/>
    <xsd:complexType name="InterfaceInvoiceLineType">
    <xsd:sequence>
    <xsd:element name="LineAmount" type="xsd:decimal" nillable="false"/>
    <xsd:element name="TaxAmount" type="xsd:decimal"/>
    <xsd:element name="BusinessEntityReference" type="xsd:string"/>
    <xsd:element name="AccountNumber" type="xsd:string"/>
    </xsd:sequence>
    </xsd:complexType>
    <xsd:element name="InterfacePayload">
    <xsd:complexType>
    <xsd:sequence>
    <xsd:element name="InterfaceFiles" type="XxInt003Stg:InterfaceFileType"
    maxOccurs="unbounded"/>
    </xsd:sequence>
    </xsd:complexType>
    </xsd:element>
    </xsd:schema>
    When I try to push this through the database adapter after mapping the fields it inserts multiple rows but they are all the same values. I have put a for-each XSLT construct based on the lowest element in the XSD (Invoice Line) and allocated that at various places on the target tree structure but with no success.
    The XSLT is as follows:
    <xsl:template match="/">
    <top:XxInt003InterfaceInvoiceStgCollection>
    <top:XxInt003InterfaceInvoiceStg>
    <top:fileName>
    <xsl:value-of select="/inp1:InterfacePayload/inp1:InterfaceFiles/inp1:FileName"/>
    </top:fileName>
    <top:fileSource>
    <xsl:value-of select="/inp1:InterfacePayload/inp1:InterfaceFiles/inp1:FileSource"/>
    </top:fileSource>
    <top:fileIdentifier>
    <xsl:value-of select="/inp1:InterfacePayload/inp1:InterfaceFiles/inp1:FileIdentifier"/>
    </top:fileIdentifier>
    <top:supplierNumber>
    <xsl:value-of select="/inp1:InterfacePayload/inp1:InterfaceFiles/inp1:InterfaceInvoices/inp1:InterfaceInvoice/inp1:SupplierNumber"/>
    </top:supplierNumber>
    <top:supplierSite>
    <xsl:value-of select="/inp1:InterfacePayload/inp1:InterfaceFiles/inp1:InterfaceInvoices/inp1:InterfaceInvoice/inp1:SupplierSite"/>
    </top:supplierSite>
    <top:invoiceNumber>
    <xsl:value-of select="/inp1:InterfacePayload/inp1:InterfaceFiles/inp1:InterfaceInvoices/inp1:InterfaceInvoice/inp1:InvoiceNumber"/>
    </top:invoiceNumber>
    <xsl:for-each select="/inp1:InterfacePayload/inp1:InterfaceFiles/inp1:InterfaceInvoices/inp1:InterfaceInvoice/inp1:InterfaceInvoiceLines/inp1:InterfaceInvoiceLine">
    <top:lineAmount>
    <xsl:value-of select="/inp1:InterfacePayload/inp1:InterfaceFiles/inp1:InterfaceInvoices/inp1:InterfaceInvoice/inp1:InterfaceInvoiceLines/inp1:InterfaceInvoiceLine/inp1:LineAmount"/>
    </top:lineAmount>
    </xsl:for-each>
    <top:taxAmount>
    <xsl:value-of select="/inp1:InterfacePayload/inp1:InterfaceFiles/inp1:InterfaceInvoices/inp1:InterfaceInvoice/inp1:InterfaceInvoiceLines/inp1:InterfaceInvoiceLine/inp1:TaxAmount"/>
    </top:taxAmount>
    <top:businessEntityReference>
    <xsl:value-of select="/inp1:InterfacePayload/inp1:InterfaceFiles/inp1:InterfaceInvoices/inp1:InterfaceInvoice/inp1:InterfaceInvoiceLines/inp1:InterfaceInvoiceLine/inp1:BusinessEntityReference"/>
    </top:businessEntityReference>
    <top:accountNumber>
    <xsl:value-of select="/inp1:InterfacePayload/inp1:InterfaceFiles/inp1:InterfaceInvoices/inp1:InterfaceInvoice/inp1:InterfaceInvoiceLines/inp1:InterfaceInvoiceLine/inp1:AccountNumber"/>
    </top:accountNumber>
    </top:XxInt003InterfaceInvoiceStg>
    </top:XxInt003InterfaceInvoiceStgCollection>
    </xsl:template>
    I am sure this is just something fundemantal I am doing, is it something to do with the inp1 bit of the XSLT? I get the feeling this should be looping somehow?
    Thanks
    Keith

    Hi,
    as I understand you try to transform 'InterfacePayload' (your XSD - just easier to read here)
    InterfacePayload (1:1)
    -- InterfaceFiles (1:N)
    ---- FileName (1:1)
    ---- FileSource (1:1)
    ---- FileIdentifier (1:1)
    ---- InterfaceInvoices (1:1)
    ------ InterfaceInvoice (1:N)
    -------- SupplierNumber (1:1)
    -------- SupplierSite (1:1)
    -------- InvoiceNumber (1:1)
    -------- InterfaceInvoiceLines (1:1)
    ---------- InterfaceInvoiceLine (1:N)
    ------------ LineAmount (1:1)
    ------------ TaxAmount (1:1)
    ------------ BusinessEntityReference (1:1)
    ------------ AccountNumber (1:1)
    to 'XxInt003InterfaceInvoiceStgCollection' (extracted from your XSLT)
    XxInt003InterfaceInvoiceStgCollection (1:1)
    -- XxInt003InterfaceInvoiceStg (1:1)
    ---- fileName (1:1)
    ---- fileSource (1:1)
    ---- fileIdentifier (1:1)
    ---- supplierNumber (1:1)
    ---- supplierSite (1:1)
    ---- invoiceNumber (1:1)
    ---- lineAmount (1:N)
    ---- taxAmount (1:1)
    ---- businessEntityReference (1:1)
    ---- accountNumber (1:1)
    In the 'xsl:for-each' construct
    +<xsl:for-each select="/inp1:InterfacePayload/inp1:InterfaceFiles/inp1:InterfaceInvoices/inp1:InterfaceInvoice/inp1:InterfaceInvoiceLines/inp1:InterfaceInvoiceLine">+
    +<top:lineAmount>+
    +<xsl:value-of select="/inp1:InterfacePayload/inp1:InterfaceFiles/inp1:InterfaceInvoices/inp1:InterfaceInvoice/inp1:InterfaceInvoiceLines/inp1:InterfaceInvoiceLine/inp1:LineAmount" />+
    +</top:lineAmount>+
    +</xsl:for-each>+
    - you are asking to iterate through all available 'inp1:InterfaceInvoiceLine' elements in the input XML document
    - the value of the element 'top:lineAmount' (for each iteration) is being calculated as all values of available 'inp1:LineAmount' elements in the input XML document together
    So, if you have ... lets say
    - 4x 'inp1:InterfaceInvoiceLine' element in the input XML document, each containing one 'inp1:LineAmount' element ... with values {1, 2, 3, 4} respectively
    - the output will be something like this
    <top:lineAmount>1234</top:lineAmount>
    <top:lineAmount>1234</top:lineAmount>
    <top:lineAmount>1234</top:lineAmount>
    <top:lineAmount>1234</top:lineAmount>
    Why are you always querying from +/inp1:InterfacePayload/inp1:InterfaceFiles/...+ ?
    I think ... all Xpath queries in your XSLT are wrong (they query something else than you think).
    e.g.
    - putting all file names together into one element (+/inp1:InterfacePayload/inp1:InterfaceFiles/inp1:FileName+)
    - putting all file sources together into one element (+/inp1:InterfacePayload/inp1:InterfaceFiles/inp1:FileSource+)
    - putting all invoice numbers together into one element (+/inp1:InterfacePayload/inp1:InterfaceFiles/inp1:InterfaceInvoices/inp1:InterfaceInvoice/inp1:InvoiceNumber+)
    Best regards,
    Martin.

  • TCP XML messages parsing time with realtime output.

    I am currently coding a project and I have hit a bit of a roadblock. The basic overview is I need to be able to receive around 3,000 lines of XML per second from a JavaScript sending TCP messages. I have to extract the data to two seperate files, output the data to a text pane and also further seperate that data into a table as well. All this data needs to be updated as soon as it is received. I am currently comfortable with receiving around 700 lines per second without data loss but anything over that I start losing data somewhere. As for the basic over view of my code, I have my main program which creates the GUI and starts a listening thread that listens for "clients"(JavaScripts) to connect.
    Main:
    public static void main(String[] args)
         SplashScreen screen = new SplashScreen();
         screen.showSplashWindow();
         SwingUtilities.invokeLater(new Runnable()
             public void run()
              MainMenu mainmenu = new MainMenu();
              mainmenu.setVisible(true);
              mainmenu.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        }Listener Thread:
    final Runnable listener_runner = new Runnable()
              public void run()
                  try
                   startClientListener();
                  catch (Exception e)
             final Thread listener_thread = new Thread(listener_runner,
                  "ListenerThread");
             listener_thread.start();Called from listening thread to setup client:
    public void startClientListener() throws IOException
         ServerSocket serverSocket = null;
         try
             serverSocket = new ServerSocket(XXXX);
         catch (IOException e)
             System.err.println("Could not listen on port: " + portNumber);
         while (true)
             MultiServerThread new_thread = new MultiServerThread(serverSocket
                  .accept(), outputWindow, resultsWindow, prefAttr, runningCount);
             new_thread.start();
        }In my MultiServerThreads runnable I have a BufferedReader to read the input. This reader loops through the input and adds it to a StringBuilder which then passes that data to the output files and the XML parser as seen here:
    in = new BufferedReader(new InputStreamReader(socket
                  .getInputStream()));
             while ((input_line = in.readLine()) != null)
              build.append(input_line + "\n");
              file_out.append(build);  //Text file
              xml_copy_out.append(build);  //XML file
              loadData(build);  //XML parser
              build = new StringBuilder();
             }My XML parser is configured as follows:
    public void loadData(final StringBuilder bufs)
         bufs.insert(0, "<VTR>");
         bufs.append("</VTR>");
         try
             StructuredDocumentHandler par = new StructuredDocumentHandler(
                  runningCount);
             SAXParserFactory spf = SAXParserFactory.newInstance();
             spf.setValidating(false);
             javax.xml.parsers.SAXParser sp = spf.newSAXParser();
             final String s = bufs.toString();
             final ByteArrayInputStream file_buf = new ByteArrayInputStream(s
                  .getBytes());
             final DataInputStream in_data = new DataInputStream(file_buf);
             org.xml.sax.InputSource input = new InputSource(in_data);
             sp.parse(input, par);
         catch (Exception ex)
             ex.printStackTrace();
        }As the parser goes through each XML message it sends the String to an output window that is straight text in a TextArea. It also stores the data in some arrays which then get built into a row that is added to a JTable. Does anyone have any ideas on how I can get up to 3000 lines per second? I'm not sure if my threading scheme is wrong or what. Is Java not powerful enough to handle 3000 TCP messages per second or can the XML parser not handle that much processing that fast? Any help would be much appreciated because I've kind of run out of ideas. Thanks!

    Thanks for the replies. I've trimmed my code down a little bit which has helped. I'm still around 2000 messages a second. Here's where I'm at for an update. Thanks again for all your help. I'm much happier at 2k vs 700 messages per second.
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.ByteArrayInputStream;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileWriter;
    import java.io.InputStreamReader;
    import java.net.Socket;
    import java.util.ArrayList;
    import java.util.Calendar;
    import javax.swing.JOptionPane;
    import javax.xml.parsers.SAXParser;
    import javax.xml.parsers.SAXParserFactory;
    import org.xml.sax.Attributes;
    import org.xml.sax.InputSource;
    import org.xml.sax.helpers.DefaultHandler;
    public class MultiServerThread extends Thread
        private final StructuredDocumentHandler par = new StructuredDocumentHandler();
        private final SAXParserFactory spf = SAXParserFactory.newInstance();
        private SAXParser sp;
        public MultiServerThread(final Socket socket,
             final OutputWindow output_window,
             final ResultsWindow results_window,
             final PreferencesDialog.Info attr, final int count)
         try
             spf.setValidating(false);
             sp = spf.newSAXParser();
         catch (Exception ex)
        @Override
        public void run()
         try
             xml_copy_out.append("<VTR>\n");
             in = new BufferedReader(new InputStreamReader(socket
                  .getInputStream()));
             while ((input_line = in.readLine()) != null)
              file_out.append(input_line + StaticVariable.NEW_LINE);
              xml_copy_out.append(input_line + StaticVariable.NEW_LINE);
              loadData(input_line);
             xml_copy_out.append("</VTR>");
             xml_copy_out.close();
             file_out.close();
             in.close();
             attributes.parent.setCheckFailed(runningCount, procPassed);
             socket.close();
         catch (FileNotFoundException ex)
         catch (Exception e)
             e.printStackTrace();
       public void killOuts()
        public void loadData(final String xml_str)
         try
             ByteArrayInputStream file_buf = new ByteArrayInputStream(xml_str.getBytes());
             InputSource input = new InputSource(file_buf);
             sp.parse(input, par);
         catch (Exception ex)
             ex.printStackTrace();
        public void addRowData(boolean procedurePassed)
        public void clearArrays()
        public class StructuredDocumentHandler extends DefaultHandler
         boolean procedurePassed = true;
         boolean isTestCase = false;
         boolean isTestCaseInput = false;
         boolean isTestCaseOutput = false;
         boolean isTestStep = false;
         boolean isComment = false;
         boolean isRequirement = false;
         boolean isEnsure = false;
         boolean isVerify = false;
         boolean isResult = false;
         boolean eval = false;
         public StructuredDocumentHandler()
         public void startElement(String uri, String lname, String qname,
              Attributes attributes)
             if (!qname.equals(StaticVariable.XML_COMMAND))
              eval = true;
              if (qname.equals(StaticVariable.XML_TESTCASE))
                  isTestCase = true;
              else if (qname.equals(StaticVariable.XML_TESTCASEINPUT))
                  isTestCaseInput = true;
              else if (qname.equals(StaticVariable.XML_TESTCASEOUTPUT))
                  isTestCaseOutput = true;
              else if (qname.equals(StaticVariable.XML_TESTSTEP))
                  isTestStep = true;
              else if (qname.equals(StaticVariable.XML_COMMENT))
                  isComment = true;
              else if (qname.equals(StaticVariable.XML_REQUIREMENT))
                  isRequirement = true;
              else if (qname.equals(StaticVariable.XML_MEASUREMENT))
                  String xml_val = attributes
                       .getValue(StaticVariable.XML_VALUE);
                  outputWindow.addData(xml_val + StaticVariable.NEW_LINE);
                  measurementArray.add(xml_val);
              else if (qname.equals(StaticVariable.XML_EXPECTED))
                  String xml_val = attributes
                       .getValue(StaticVariable.XML_VALUE);
                  outputWindow.addData(xml_val + StaticVariable.NEW_LINE);
                  expectedArray.add(xml_val);
              else if (qname.equals(StaticVariable.XML_RESULT))
                  isResult = true;
              else if (qname.equals(StaticVariable.XML_VERIFY))
                  isVerify = true;
                  verifyArray.add(new String(attributes
                       .getValue(StaticVariable.XML_RESULT)));
              else if (qname.equals(StaticVariable.XML_ENSURE))
                  isEnsure = true;
         public void characters(char[] chars, int start, int length)
             if (eval)
              if (isTestCase)
                  outputWindow.addData(new String(chars, start, length)
                       + StaticVariable.NEW_LINE);
                  testCaseArray.add(new String(chars, start, length));
              else if (isTestCaseInput)
                  outputWindow.addData(new String(chars, start, length)
                       + StaticVariable.NEW_LINE);
                  testCaseInputArray.add(new String(chars, start, length));
              else if (isTestCaseOutput)
                  outputWindow.addData(new String(chars, start, length)
                       + StaticVariable.NEW_LINE);
                  testCaseOutputArray.add(new String(chars, start, length));
              else if (isTestStep)
                  outputWindow.addData(new String(chars, start, length)
                       + StaticVariable.NEW_LINE);
                  testStepArray.add(new String(chars, start, length));
              else if (isComment)
                  outputWindow.addData(new String(chars, start, length)
                       + StaticVariable.NEW_LINE);
                  commentArray.add(new String(chars, start, length));
              else if (isRequirement)
                  outputWindow.addData(new String(chars, start, length)
                       + StaticVariable.NEW_LINE);
                  requirementArray.add(new String(chars, start, length));
              else if (isResult)
                  outputWindow.addData(new String(chars, start, length)
                       + StaticVariable.NEW_LINE);
                  resultArray.add(new String(chars, start, length));
              else if (isVerify)
                  outputWindow.addData(new String(chars, start, length)
                       + StaticVariable.NEW_LINE);
                  verifyDescriptionArray
                       .add(new String(chars, start, length));
              else if (isEnsure)
                  outputWindow.addData(new String(chars, start, length)
                       + StaticVariable.NEW_LINE);
                  ensureArray.add(new String(chars, start, length));
         public void endElement(String uri, String lname, String qname)
             if (!qname.equals(StaticVariable.XML_COMMAND))
              if (qname.equals(StaticVariable.XML_VERIFY))
                  addRowData(procedurePassed);
                  clearArrays();
              else if (qname.equals(StaticVariable.XML_END))
                  clearArrays();
              isTestCase = false;
              isTestCaseInput = false;
              isTestCaseOutput = false;
              isTestStep = false;
              isComment = false;
              isRequirement = false;
              isResult = false;
              isVerify = false;
              isEnsure = false;
              eval = false;
    }Any other suggestions on trimming down that I'm not seeing would be much appreciated. Thanks again for all your help.

  • Error Message with multiple line

    Hi
    How to display a error message with multiple line?
    Example
         Goods movement not possible for material 101
         Goods movement not possible for material 102
         Goods movement not possible for material 103
    is it possible is ABAP? If so please advice me.
    Best Regards
    Asheek

    Hi Anoop,
    You can use same thing like this
    I suggest write ur message through this.
    First set the obecj.
    CALL FUNCTION 'APPL_LOG_SET_OBJECT'
    for local memory
    FUNCTION 'APPL_LOG_WRITE_MESSAGES'
             EXPORTING
                  OBJECT              = OBJECT
                  SUBOBJECT           = SUBOBJECT
                  UPDATE_OR_INSERT    = UPDATE_INSERT_FLAG
             TABLES
                  MESSAGES            = MESSAGE_TABLE
             EXCEPTIONS
                  OBJECT_NOT_FOUND    = 1
                  SUBOBJECT_NOT_FOUND = 2
                  OTHERS              = 3.
    the call for physical memory
    CALL FUNCTION 'APPL_LOG_WRITE_DB'
    In this process you only need to provide the Itab with error messages.
    Reg,
    Arpit

  • Message handling with multiple lines to display

    We have a requirement to issue an error message during dialog processing (PAI) and I'd like to use standard message handling if possible.  The syntax
    MESSAGE W008(ZTM) DISPLAY LIKE 'I'.
    gives me a dialog box but handles the message as an error hence processing stops and the user returns to the screen.  I want this functionality but with the ability to display several lines in the message pop up box.  I've looked at the function modules POPUP_DISPLAY_MESSAGE but this displays only 1 line and POPUP_TO_CONFIRM which handles multiple lines but doesn't stop processing (unless further code is added to handle the response).  Can someone suggest a standard of way of achieving this requirement or how to handle a response as an error in the subsequent processing after a call to function module POPUP_TO_CONFIRM.

    hi,
    you can handle like this.
    call function 'POPUP_TO_CONFIRM'
            exporting
              titlebar                    = text-000
      DIAGNOSE_OBJECT             = ' '
              text_question               = v_text
              text_button_1               = 'YES'
      ICON_BUTTON_1               = ' '
              text_button_2               = 'NO'
      ICON_BUTTON_2               = ' '
              default_button              = '1'
              display_cancel_button       = 'X'
      USERDEFINED_F1_HELP         = ' '
             start_column                 = 25
             start_row                    = 6
      POPUP_TYPE                  =
      IV_QUICKINFO_BUTTON_1       = ' '
      IV_QUICKINFO_BUTTON_2       = ' '
           importing
             answer                      = v_ans
    TABLES
      PARAMETER                   =
           exceptions
             text_not_found              = 1
             others                      = 2
          if sy-subrc <> 0.
            message id sy-msgid type sy-msgty number sy-msgno
                    with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
          endif.
          case v_ans.
            when '1'.
              leave program.
            when '2'.
              call screen 100.
            when others.
              call screen 100.
          endcase.
      endcase.
    Here : 1 means yes,
              2 means no.
    Regards
    Sandeep Reddy

  • One IDOC to multiple XML messages

    Hi! I am using the graphical mapper in XI to map the SHPMNT03 IDOC to an XML message. The IDOC has a shipment node and potentially multiple delivery nodes, for example:
    E1EDT20
      - E1EDL20
      - E1EDL20
      - E1EDL20
    I need to create one XML message per E1EDL20 node. I figured I could do this in the mapper but when I execute the map for an IDOC with multiple E1EDL20 nodes, I get a 'Cannot cast 2 to boolean' error. The map executes fine when there is a single E1EDL20 in the IDOC.
    As always, help is very much appreciated and points awarded.
    Thx, Duncan

    Hi Duncan,
    Can you just check if this is what you have done,
    IR
    1. Message Mapping -- Occurence of the Destination message type ( file ) is unbounded
    2. Interface Mapping -- Occurence of the Destination Interface ( File ) is unbounded
    ID
    1. No sender communication channel , sender agreement
    2. Receiver communcation channel for FIle with appropriate FILE CONSTRUCTION MODE
    3. Receiver Determination  and Interface Determination with Sender Interface as the IDOC interface and Receiver Interface as the FILE INTERFACE.
    I think there is some misunderstanding on this front.
    Multimapping will work if you are trying to  do an IDOC to FILE with a 1:N split
    just check this and let me know if you ve missed something.
    Regards,
    Bhavesh

  • How can i make the input/output field to a multiple lines in ModulePool...

    hi all...
    can any one please let me know, is there any possibility thru Module Pool program where i can make the input/output field to a multiple lines...
    say, when we drag & drop the input/output field on the screen - it'll come with single line display. so, how to make the same field to multiple lines field.
    rather i can say my question like, how to increase the height of the input/output field.
    Desired Functionality:
    • The user wants to display a long text.
    • now the input/output field should not display the record as a single line, now the field has to display the text in multiple lines (something like wrap option in ms excel).
    hope u got my question...
    please help me in this regards...

    hi Rengith, i'm not using Text Field, i'm using Inpu/Output Field to display the long text.
    If u mean text field as input/output field then can u let me know the process for this, how to do the same thru module pool program...
    Edited by: murashali on Mar 18, 2008 1:36 PM

  • Split an inbound xml message in to multiple o/b idocs

    HI,
    We have a requirement to split an XML message(Source) into multiple idocs with different order nos and respective item details. We are working on XI 3.0 and we have a restriction not to use the BPM. Could you please let me know whether its possible to do 1:n mapping in XI 3.0 and how can we do this ?
    Thanks,
    Hari

    Then how you can do that in PI,we should know how many Target IDocs required,then we can import it in to PI.
    if you want to genarate same IDoc multiple times then we can do this,like change IDoc occurace to 0 to Unbounded then import as a external def and use it in mapping,logic you have to write in mapping.
    Regards,
    Raj

  • Missing lines in an  XML message

    Hello,
    The scenario is as follows
    [SAP] --> Idoc --> [XI] --> XML --> [Mail]
    The XML structure is imported as an external definition.
    In the created XML message the following lines are missing:
    mlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.ean.nl Order.xsd".
    Does someone have any idea how I can add these lines ?
    Thanks.
    Regards,
    Marco van Iersel

    Hello Sridhar,
    Thanks for the quick reaction, only I don't think this is the solution.
    I'll give some more info.
    Now the beginning of the message looks like this:
    <?xml version="1.0" encoding="UTF-8"?>
    <Order>
      <OrderHeader>
        <OrderVersion>1.1</OrderVersion>
    And it should be like this:
    <?xml version="1.0" encoding="UTF-8"?>
    <Order xmlns="http://www.ean.nl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ean.nl Order.xsd">
      <OrderHeader>
        <OrderVersion>1.1</OrderVersion>
    How can I do this?
    Kind regards,
    Marco

Maybe you are looking for

  • Filenet connection with java api not working

    I have written the following code to connect content engine and process engine.. MY content engine is connected fine and good...But process engine is not connecting code: public String PE_CONNECTION_POINT      = "PEConnection"; public Connection ceCo

  • Bluetooth File Won't Open

    Hi, I have a imac Intel, and an iBook, both with bluetooth capabilities. If i transfer a file over from the iBook to the iMac, there are no problems, if however i transfer files from the iMac to the iBook, when i try to open said file i get the messa

  • How to copy a database to a new database on Windows 32bit?

    Hi Gurus, I have a production database 10g on Windows 32bit and I want to make a copy of this database as Test in same server ? Please help.... Thanks,

  • Site Template and webparts in Publishing Pages

    Hi I've created a couple of webparts in SPD and added these to the pages in the Pages Library (Publish). I then export the site as a template (switching publish off first) and create a new sites from the template. Unfortunately the weparts are missin

  • Deleting attachments

    10.6.3 STILL does not fix this problem. I have been posting this problem since i upgraded to snow leopard. i am unable to empty the trash in the finder, if the trash contains a file that i sent as an attachment. i get a message saying "file in use".