ABAP Mapping with multiple records

Hi All,
I am doing an ABAP mapping and I am new to this.
I have a following record structure:
<record>
   <field1>
   <field2>
   <fieldn>
</record>
I will receive the multiple records with the above structure in single file.
I have following the Blog from SDN but it is saying only for single record.
Can please someone post the code for handing multiple records (ie. loop structure).
or else please mail me at [email protected]
Regards,
Shylesh

Hi Thanks for the reply.
But actually these threads do not sufficient for my requriement.
I written the following code and it is working fine for one single record.  But I want to change this code to work for multiple records which I am not able to do as I am new to Object Oriented.
method IF_MAPPING~EXECUTE.
initialize iXML
  type-pools: ixml.
  class cl_ixml definition load.
create main factory
  data: ixmlfactory type ref to if_ixml.
  ixmlfactory = cl_ixml=>create( ).
create stream factory
  data: streamfactory type ref to if_ixml_stream_factory.
  streamfactory = ixmlfactory->create_stream_factory( ).
create input stream
  data: istream type ref to if_ixml_istream.
  istream = streamfactory->create_istream_xstring( source ).
parse input document =================================================
initialize input document
  data: idocument type ref to if_ixml_document.
  idocument = ixmlfactory->create_document( ).
parse input document
  data: iparser type ref to if_ixml_parser.
  iparser = ixmlfactory->create_parser( stream_factory = streamfactory
                                                 istream = istream
                                                document = idocument ).
  iparser->parse( ).
get message content of tag <empno>
  data: incode type ref to if_ixml_node_collection.
  data: incode1 type ref to if_ixml_node_collection.
  data: incode2 type ref to if_ixml_node_collection.
  data: incode3 type ref to if_ixml_node_collection.
  data: incode4 type ref to if_ixml_node_collection.
  data: incode5 type ref to if_ixml_node_collection.
  data: incode6 type ref to if_ixml_node_collection.
  data: incode7 type ref to if_ixml_node_collection.
  data: incode8 type ref to if_ixml_node_collection.
  data: incode9 type ref to if_ixml_node_collection.
  incode = idocument->get_elements_by_tag_name( 'empno' ).
  incode1 = idocument->get_elements_by_tag_name( 'empname' ).
  incode2 = idocument->get_elements_by_tag_name( 'address1' ).
  incode3 = idocument->get_elements_by_tag_name( 'address2' ).
  incode4 = idocument->get_elements_by_tag_name( 'address3' ).
  incode5 = idocument->get_elements_by_tag_name( 'zipcode' ).
  incode6 = idocument->get_elements_by_tag_name( 'mailid' ).
  incode7 = idocument->get_elements_by_tag_name( 'phoneno' ).
  incode8 = idocument->get_elements_by_tag_name( 'country' ).
  incode9 = idocument->get_elements_by_tag_name( 'city' ).
get XI header data (here: "Sender Service")
  data: l_sender_service type string.
  l_sender_service = param->get( if_mapping_param=>sender_service ).
add trace (appears in message monitoring)
  data: l_trace type string.
  concatenate 'Sender Service = ' l_sender_service into l_trace.
  trace->trace( level = '1'
  message = l_trace ).
build up output document =============================================
create output document
  data: odocument type ref to if_ixml_document.
  odocument = ixmlfactory->create_document( ).
create element 'SenderService' and add it to the document
  data: msgtype type ref to if_ixml_element.
  msgtype = odocument->create_simple_element( name = 'record'
                                            parent = odocument ).
create element 'SenderService' and add it to the output document
  data: elementsender type ref to if_ixml_element.
  elementsender = odocument->create_simple_element( name = 'SenderService'
                                                   value = l_sender_service
                                                  parent = msgtype ).
add node to the output document
  data: outcode type ref to if_ixml_node.
  data: outcode1 type ref to if_ixml_node.
  data: outcode2 type ref to if_ixml_node.
  data: outcode3 type ref to if_ixml_node.
  data: outcode4 type ref to if_ixml_node.
  data: outcode5 type ref to if_ixml_node.
  data: outcode6 type ref to if_ixml_node.
  data: outcode7 type ref to if_ixml_node.
  data: outcode8 type ref to if_ixml_node.
  data: outcode9 type ref to if_ixml_node.
  outcode = incode->get_item( index = 0 ).
  outcode1 = incode1->get_item( index = 0 ).
  outcode2 = incode2->get_item( index = 0 ).
  outcode3 = incode3->get_item( index = 0 ).
  outcode4 = incode4->get_item( index = 0 ).
  outcode5 = incode5->get_item( index = 0 ).
  outcode6 = incode6->get_item( index = 0 ).
  outcode7 = incode7->get_item( index = 0 ).
  outcode8 = incode8->get_item( index = 0 ).
  outcode9 = incode9->get_item( index = 0 ).
  data irc type i.
  irc = msgtype->append_child( outcode ).
  irc = msgtype->append_child( outcode1 ).
  irc = msgtype->append_child( outcode2 ).
  irc = msgtype->append_child( outcode3 ).
  irc = msgtype->append_child( outcode4 ).
  irc = msgtype->append_child( outcode5 ).
  irc = msgtype->append_child( outcode6 ).
  irc = msgtype->append_child( outcode7 ).
  irc = msgtype->append_child( outcode8 ).
  irc = msgtype->append_child( outcode9 ).
render document ======================================================
create output stream
  data: ostream type ref to if_ixml_ostream.
  ostream = streamfactory->create_ostream_xstring( result ).
create renderer
  data: renderer type ref to if_ixml_renderer.
  renderer = ixmlfactory->create_renderer( ostream = ostream
                                          document = odocument ).
  irc = renderer->render( ).
endmethod.
Can anybody help me making these changes.
Thanks in advance.
Shylesh

Similar Messages

  • I need your expert opinion on how to create a map with multiple conditions.

    Hello.
    I need your expert opinion on how to create a map with multiple conditions.
    I have a procedure (which i cannot import or re-create in OWB due to the bug), so i am trying to create a map instead :-(
    How can i create a cursors within the map?
    My function creates table and cursor.
    Then it will have to check for duplicates in the tables (the one created and another table) - the criteria for finding duplicates is a number of fields.I then need to place few different conditions (if some attributes are not available) and it has to load cursor based on this conditions. The next step is to fetch the data into the cursor based on what attributes are missing.
    The next thing it will do is insert the data into table (if record doesn't exist), output the error in separate table is record is corrupted, or update the record with changed information.
    In short i need to re-create match / merge but with conditions, iterations etc 'built into' it.
    I can read up on available functions - it's just what would be the best options? and what would be the best approach to do so?
    In my function i use %rowtype - but cannot use it in owb - so what would be the alternative? i don't really want to create a lot of variables and then have a nightmare of maintaing it. are there any tips regarding this?
    having looked through Oracle dedupe - it's not really what i need because it is just DISTINCT.
    I would appreciate any help / advise on this.
    Thank you very much

    thanks a lot for your reply - i will look into this option :-)
    it is a bit more complicated now as i have to re-create the match / merge and then somehow 'tweak' it to achieve the result i need.
    At the moment i am looking to breakdown the package into smaller chunks 'functions' and try creating the map that way.
    Anyway, thank you very much for your suggestion.

  • How to isolate error with a record/segment in IDOC with multiple records

    I have an IDOC with multiple records/segments (typically 1000 records/segments). Sometime XI can not process the IDOC because of some control characters in data.
    1. How can I pre-processed the IDOC to remove those control characters?
    Can I use XPATH expression/Java class to do it? How can I configure the XPATH expression/Java class in XI to pre-process the file?
    2. Until I have answer to 1st question. I would like to find out the error is exactly for which record? What configuration can I do in XI to isolate the error is with which record/segment in IDOC?
    Thanks in advance.

    Split the IDoc.
    with in the UDF, after the validations if every thing fine, pass as successful records to success_MT and pass it to target system using Branching in BPM.
    if errors found in the record, then store the error records in Hash table with in UDF, get the IDoc number, frame as a string and raise alert.
    U have to do this in the context of IDoc.
    If U wanna get the IDoc Number, Segment Name and field name for every failure, U can pass the expected error field name as constant to UDF, frame the sentence in the UDF like -> <b>IDoc 1234321 segment – SEG001 – field – FLD03 has a special character ‘*’</b>.
    If U wanna pass this string to source/target, U can do in error messages branch in BPM.
    U must use BPM for splitting the IDoc, since it is multi-mapping.
    reg.,
    Yallabandi.

  • Flat File with multiple record types (OWB 10.2.0.2)

    Hi!
    I`m using OWB 10.2.0.2 and I`m trying to load a flat file with multiple record types, using SQL LOADER.
    In the flat file editor in the Record tab, I`ve set the type values and the corresponding record names like this:
    Type Value Record Name
    ======== ===========
    T TRAILER
    0 DETAILS
    1 DETAILS
    2 DETAILS
    When using this flat file in a mapping to load the data in a staging table, the generated code looks like this:
    INTO TABLE TRAILER
    TRUNCATE
    REENABLE DISABLED_CONSTRAINTS
    WHEN (1:1) = 'T'
    INTO TABLE DETAILS
    APPEND
    REENABLE DISABLED_CONSTRAINTS
    WHEN (1:1) = '0,1,2'
    The above clause (WHEN (1:1) = '0,1,2') is wrong as I expect one "INTO TABLE..." clause for each record type.
    Could this be a bug or am I doing something wrong?
    Thanks a lot for your help,
    Yorgos

    We`re using two target tables, one for the trailer record and the other for the details records.
    We are facing this problem from the moment we upgraded from OWB 10.1 to OWB 10.2.0.2, so we think it must be something with the way the sql loader code is generated in the new version.
    As our data sources are mainly flat files coming from mainframes, this is a huge problem for us. We even asked an expert in DW from Oracle to help us on this, but still haven`t found a solution.
    Is there any workaround for this or should we forget sql loader and go with an external tables + custom PL/SQL code solution?
    Your help is greatly appreciated Jean-Pierre.
    Regards,
    Yorgos

  • How can I convert string to the record store with multiple records in it?

    Hi Everyone,
    How can I convert the string to the record store, with multiple records? I mean I have a string like as below:
    "SecA: [Y,Y,Y,N][good,good,bad,bad] SecB: [Y,Y,N][good,good,cant say] SecC: [Y,N][true,false]"
    now I want to create a record store with three records in it for each i.e. SecA, SecB, SecC. So that I can retrieve them easily using enumerateRecord.
    Please guide me and give me some links or suggestions to achieve the above thing.
    Best Regards

    Hi,
    I'd not use multiple records for this case. Managing more records needs more and redundant effort.
    Just use single record. Create ByteArrayOutputStream->DataOutputStream and put multiple strings via writeUTF() (plus any other data like number of records at the beginning...), then save the byte array to the record...
    It's easier, it's faster (runtime), it's better manageable...
    Rada

  • File to RFC with multiple records using BPM Scenario Error...!!!

    Hello Guru's,
      I have done the File to RFC with multiple records using BPM scenario as per the Materiel available in the sdn.sap. This involves BAPI (BAPI_MATERIEL_AVAILABILITY). I have done exactly the same what is their in the materiel. SXI_CACHE is also giving return value " 0 ". File is getting deleted from the source directory, but no file in target directory. SXMB_MONI is also showing no error (black Flag). BPM is also error free. Checked the interfaces also.
    Can any one tell me what mistake would i have done.
    Thanks in advance.

    Hi,
    There is one similar discussion I found,
    FTP TO RFC using BPM
    Thanks
    Swarup

  • Item master Item mapping with multiple vendors

    Hi Experts,
    I need your help, I have one item like 'TV' in item master and need to enter multiple prices make wise samsung,sony,lg like.
    How can I maintain this in SAP B1 2005B.
    One Item mapping with multiple vendors with price...
    Thanks,

    Dear Aarti,
    I would recommend to have multiple items for the different brands you are selling.
    For example, you can call the item code Samsung, Sony etc and all of these item can be added to an item group called TV.
    Then you can assign a price to the items in the price lists.
    Alternatevely, if you need to have one single item called TV and different prices according to the brand, create a number of price lists called Sony, Sumsung etc and then if you know which customers buy a particular brand you can connect the price list to the customer under
    Business partner master data - Payment Terms - Price list.
    Please, if these 2 options are not helpful let us know the exact scenario and business reason behind your request.
    Kind Regards,
    Marcella Rivi
    SAP Business One Forums Team

  • How do i test split by value functionality in mesage mapping with multiple

    how do i test split by value functionality in mesage mapping with multiple values ?
    regards,
    venkat

    repeat your source node. in mapping editor you can view queues by right clicking to mapped element.. selecting Display Queues option.. this will show u your values .
    You can also select this Display Queue option for splitByValue option
    for example
    source--->splitByValue>target
    Try viewing your queues to each this step... for splitByValue in display Queue you will see context inserted(grey colour) accodingly

  • Handling Change of IT with multiple records in P&F

    Good Morning all,
    Has anyone done this yet? What is the approach to change an infotype with multiple records using P&F; For example IT0021, Subtype 2 (Child). I'm assuming that we will need to display all the records in a tbale first in the Form. Then, create a button or radio button for each row. On click, we can then make changes to the record. Any ideas? Thanks
    Regards

    Welcome to the forum. You can loop through the records like following.
    go_block('A');
    First_Record;
    Loop
    variable := :A.Item_Name;
    Exit when :System.Last_Record = 'TRUE';
    Next_Record;
    End Loop;But what happens when u run the above code, the variable will have the last record's item value.
    So how you are trying to get all the record's Item value into one item?
    Are you going to concatenate? What's the logic you are planning?
    Regards
    Sankar MN

  • Select max date from a table with multiple records

    I need help writing an SQL to select max date from a table with multiple records.
    Here's the scenario. There are multiple SA_IDs repeated with various EFFDT (dates). I want to retrieve the most recent effective date so that the SA_ID is unique. Looks simple, but I can't figure this out. Please help.
    SA_ID CHAR_TYPE_CD EFFDT CHAR_VAL
    0000651005 BASE 15-AUG-07 YES
    0000651005 BASE 13-NOV-09 NO
    0010973671 BASE 20-MAR-08 YES
    0010973671 BASE 18-JUN-10 NO

    Hi,
    Welcome to the forum!
    Whenever you have a question, post a little sample data in a form that people can use to re-create the problem and test their ideas.
    For example:
    CREATE TABLE     table_x
    (     sa_id          NUMBER (10)
    ,     char_type     VARCHAR2 (10)
    ,     effdt          DATE
    ,     char_val     VARCHAR2 (10)
    INSERT INTO table_x (sa_id,  char_type, effdt,                          char_val)
         VALUES     (0000651005, 'BASE',    TO_DATE ('15-AUG-2007', 'DD-MON-YYYY'), 'YES');
    INSERT INTO table_x (sa_id,  char_type, effdt,                          char_val)
         VALUES     (0000651005, 'BASE',    TO_DATE ('13-NOV-2009', 'DD-MON-YYYY'), 'NO');
    INSERT INTO table_x (sa_id,  char_type, effdt,                          char_val)
         VALUES     (0010973671, 'BASE',    TO_DATE ('20-MAR-2008', 'DD-MON-YYYY'), 'YES');
    INSERT INTO table_x (sa_id,  char_type, effdt,                          char_val)
         VALUES     (0010973671, 'BASE',    TO_DATE ('18-JUN-2010', 'DD-MON-YYYY'), 'NO');
    COMMIT;Also, post the results that you want from that data. I'm not certain, but I think you want these results:
    `    SA_ID LAST_EFFD
        651005 13-NOV-09
      10973671 18-JUN-10That is, the latest effdt for each distinct sa_id.
    Here's how to get those results:
    SELECT    sa_id
    ,         MAX (effdt)    AS last_effdt
    FROM      table_x
    GROUP BY  sa_id
    ;

  • Mapping with repeating records

    Hello,
    I have once schema which has two child records out of that second child has many child fields with repeating records, but when I mapped it further I am getting that second schema only once even it has multiple.
    Help me please ASAP
    Thanks in advance

    Nilesh,
    You have two options:
    Option1:
    Just ensure in schemas, in second child records, set the repeating child record's (repeating record under second child record) "Max Occurs" property is set to
    * (or unbounded). Ensure that this property (Max Occurs =
    *) is set for repeating records in both source and destination schemas. By this way, particular child record will repeat. This way gives more control on which child record you want to
    set as repeatable.
    Options2:
    Just set the second child record (which has the repeating records under it) "Group Max Occurs" property to
    * (or unbounded). By this way, all the child records of this second child, will be set to repeating record.
    Also ensure that the repeating records (not just the child elements, but also the repeating records) are mapped from source to destination.
    If this answers your question please mark it accordingly. If this post is helpful, please vote as helpful by clicking the upward arrow mark next to my reply.

  • Loading Hex Files with multiple records with each line starting with : record marker, how do I load this hex file into a front panel table ? thanks in advance, Jeff.

    I have written a routine that loads a Hex file, checks for record marker,length,address etc then loads the data into a table on front panel. However, my routine only loads single record hex files. I need to be able to load multiple record files, I need to identify the ':' colon record marker start for each record in the hex file, I just can't see how to loop my routine so that all records with ':' prefix marker are loaded.

    Jeff,
    I'm not exactly sure of what you are trying to do. Is it possible you could post your code, or a screen shot of the diagram in question, so that I can get a better understanding, and possibly offer some assistance?
    I am familiar with hex files, but not with the : marker separating records. This may be able to be solved with simple text parsing, and as I am not familiar with how you are retrieving and/or displaying the files, I require more information.
    Thanks

  • Problem with Multiple record creation using BAPI BAPI_PRICES_CONDITION

    Hi,
    I am working on IS Media Sales And Distribution wherein i am using BAPI BAPI_PRICES_CONDITION for condition record creation in TCODE JC9B. I am able to create one record using this BAPI for one sales promotion but having problem while creation of multiple records for the same sales promotion wherein my internal table have multiple records. It gives me error that data in BAPICONDIT is missing.
    I am aatching followig code for reference
    BAPI have field of varkey which i am filling as combination of sales org. + distn channel + sales promotion + delivery type
    In this varkey  delivery type is changing for sales promotion Can be said that one sales promotion can have multiple delivery type .
    Am i giving the correct varkey for each itration of internal table ?
    I am attaching code for reference.
    Here loop it_cond contain one promotion and multiple delivery type.
    sales org   distn ch  promotion     delivery
    0100             01        zsalesprom   03
    0100             01        zsalesprom   z3
      LOOP AT it_cond INTO wa_cond.
    Get next condition number
          CALL FUNCTION 'NUMBER_GET_NEXT'
            EXPORTING
              nr_range_nr                   = '01'
              object                        = 'KONH'
      QUANTITY                      = '1'
      SUBOBJECT                     = ' '
      TOYEAR                        = '0000'
      IGNORE_BUFFER                 = ' '
           IMPORTING
              number                        = number
      QUANTITY                      =
      RETURNCODE                    =
    EXCEPTIONS
      INTERVAL_NOT_FOUND            = 1
      NUMBER_RANGE_NOT_INTERN       = 2
      OBJECT_NOT_FOUND              = 3
      QUANTITY_IS_0                 = 4
      QUANTITY_IS_NOT_1             = 5
      INTERVAL_OVERFLOW             = 6
      BUFFER_OVERFLOW               = 7
      OTHERS                        = 8
          IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
          ENDIF.
    Here i am concacating varkey for each new delivery
    CLEAR : l_min,l_length,l_var.
    CONCATENATE wa_cond-vkorg wa_cond-vtweg wa_cond-wrbakt INTO l_var.
    l_length = STRLEN( l_var ).
    IF l_var+14(2) IS INITIAL.
    WRITE wa_cond-lifart TO L_VAR+14.
    l_length = STRLEN( l_var ).
    ENDIF.
    W_LINE = W_LINE + 1.
    *First table in BAPI
            wa_bapicondct-operation = '009'.
            wa_bapicondct-cond_usage = 'A'.
            wa_bapicondct-table_no = '506'.
            wa_bapicondct-applicatio = 'J0'.
            wa_bapicondct-cond_type = 'RATE'.
            wa_bapicondct-varkey = l_var.
            wa_bapicondct-valid_to = wa_cond-datbi.
            wa_bapicondct-valid_from = wa_cond-datab.
            wa_bapicondct-cond_no = number. "
            APPEND wa_bapicondct TO it_bapicondct.
    *Second table in BAPI
            wa_bapicondhd-operation = '009'.
            wa_bapicondhd-cond_no = number.
            wa_bapicondhd-cond_usage = 'A'.
            wa_bapicondhd-table_no = '506'.
           wa_bapicondhd-created_by = sy-uname.
           wa_bapicondhd-creat_date = sy-datum.
            wa_bapicondhd-applicatio = 'J0'.
            wa_bapicondhd-cond_type = 'RATE'.
            wa_bapicondhd-varkey = l_var.
            wa_bapicondhd-valid_from = wa_cond-datab.
            wa_bapicondhd-valid_to = wa_cond-datbi.
            APPEND wa_bapicondhd TO it_bapicondhd.
    *Third table in BAPI
            wa_bapicondit-operation = '009'.
            wa_bapicondit-cond_no = number.
            wa_bapicondit-cond_count = wa_cond-cond_count.
            wa_bapicondit-applicatio = 'J0'.
            wa_bapicondit-cond_type = 'RATE'.
            wa_bapicondit-calctypcon = 'C'.
           wa_bapicondit-scaletype  = 'A'.
            wa_bapicondit-cond_value = wa_cond-kbetr.
            wa_bapicondit-condcurr = wa_cond-konwa.
            wa_bapicondit-promotion = wa_cond-wrbakt.
            APPEND wa_bapicondit TO it_bapicondit.
    *Fourth table in BAPI
            wa_bapicondqs-operation = '009'.
            wa_bapicondqs-cond_no = number.
            wa_bapicondqs-cond_count = wa_cond-cond_count.
            wa_bapicondqs-currency = wa_cond-kbetr.
            wa_bapicondqs-condcurr = wa_cond-konwa.
           wa_bapicondqs-cond_unit = 'EA'.
            wa_bapicondqs-LINE_NO = W_LINE."'0001'.
            APPEND wa_bapicondqs TO it_bapicondqs.
    *Fifth table in BAPI
            wa_bapicondvs-operation = '009'.
            wa_bapicondvs-cond_no = number.
            wa_bapicondvs-cond_count = wa_cond-cond_count.
            wa_bapicondvs-currenckey = wa_cond-konwa.
            wa_bapicondvs-currenciso = wa_cond-konwa.
           wa_bapicondvs-currency = wa_cond-kbetr.
           wa_bapicondvs-condcurr = wa_cond-konwa.
           wa_bapicondvs-curren_iso = wa_cond-konwa.
           wa_bapicondvs-LINE_NO = W_LINE."'0001'.
            APPEND wa_bapicondvs TO it_bapicondvs.
            CALL FUNCTION 'BAPI_PRICES_CONDITIONS'
    EXPORTING
      PI_INITIALMODE       = ' '
      PI_BLOCKNUMBER       =
              TABLES
                ti_bapicondct        = it_bapicondct
                ti_bapicondhd        = it_bapicondhd
                ti_bapicondit        = it_bapicondit
                ti_bapicondqs        = it_bapicondqs
                ti_bapicondvs        = it_bapicondvs
                to_bapiret2          = it_bapiret2
                to_bapiknumhs        = it_bapiknumhs
                to_mem_initial       = it_cnd_mem_initial
             EXCEPTIONS
               update_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.
            CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
             EXPORTING
               wait          = 'X'
    IMPORTING
      RETURN        =
            CLEAR : wa_bapicondct,wa_bapicondhd,wa_bapicondvs,wa_bapicondqs.
            CLEAR : wa_bapicondit.
          ENDLOOP.
        ENDIF.
      ENDIF.
    Kindly Suggest.
    Thanks
    Parag

    Solved By myself
    There is problem while passing data to internal table for item level

  • ABAP list with multiple headers

    Hi experts,
    i have to display a table with multiple headers. Example:
    Header 1 = Sales order header
    Header 2 = Sales order items
    It's possible to create an ABAP list with 2 headers?
    Thanks in advance.

    Hi Dan,
    FYI .
    [ALV Grid with Multiple Headers;
    Regards
    Abhii

  • Get MUTLIPLE output files for SINGLE input file with multiple records

    Hi ,
    I have source xml file  which has multiple records in it and  I want to get multiple seperate  flat files for it.
    this is my source structure
    <root>
    <Header1 fld1=1234 fld2="name1" fld3='SAP1"
    fld4='000" fld5=0 fld6="sdn1"></header>...............no line items here
    <Header2 fld1=123 fld2="name" fld3='SAP"
    fld4='00" fld5=0 fld6="sdn" ><line fld7=value1 fld8=value2 fld9=value3 /line><line fld7=value4 fld8=value5 fld9=value6 /line></header>.....two line items here
    <Header3 fld1=123 fld2="name" fld3='SAP"
    fld4='00" fld5=0 fld6="sdn" ><line fld7=value7 fld8=value8 fld9=value9 /line></header>......one line item here
    Header4 fld1=12345 fld2="name2" fld3='SAP2"
    fld4='0006" fld5=01 fld6="sdn2"</header>.......no line items here
    </root>
    I am trying to get flat files as many time the <b>header</b> values occur that many target files should appear in the target.
    like
    file1:
    1234name1SAP10000~sdn1
    file2:
    123nameSAp000~sdn
    value1value2valu3
    valu4value5value6
    file3:
    123namesap000~sdn
    value7valu8value9
    file4:
    12345name2SAP2000601~SDN2
    here I have 4 headers so i need to get 4 output files ,similarly for 'n' headers I need to get 'n'  output flat files. the above mentioned source xml file is just one file,like that I might get somany sourc xml files which has similar structure in it.
    and also it is important to get the line items,if exists to the header, for the corresponding headers.
    how can I achieve this?do I need to use BPM or any mappings other than Graphical? 
    please suggest me.
    thank you.
    Babu
    sorry,output file structure changed
            Babu

    Babu,
    See the Mapping and the logic.
    Make sure your target message occurrence:http://www.flickr.com/photo_zoom.gne?id=1412748793&size=o
    Check out for source and target structure
    http://www.flickr.com/photo_zoom.gne?id=1412748803&size=o
    http://www.flickr.com/photo_zoom.gne?id=1412748809&size=o
    http://www.flickr.com/photo_zoom.gne?id=1412748815&size=o
    http://www.flickr.com/photo_zoom.gne?id=1412748825&size=o
    Results:http://www.flickr.com/photo_zoom.gne?id=1412748799&size=o
    Note:
    While creating Interface determination choose it as Enhanced/Extended
    The Receiver Content conversion - For field separator and line separator give 'nl' , coz we concatenated all of them using ~ in mapping.
    If you find any discrepancy in the above logic , please let me know.
    raj.

Maybe you are looking for