Looping problem in idoc segments

Dear all,
     I have created a own message type for material master,with four segments.Here for one material there may be different order unit like BOX,PAL etc.
When i am sending a material to xml format Its creating all the four segment for each order unit when it gets changed. I want only the order unit segment should repeat for one material.
Is there any looping changes should made in the program or what else?
Plz help me ASAP.
Thanks & Regards,
Arun.
Edited by: Arun Kumaran on Aug 27, 2008 3:21 PM

Please check the segment number of occurance. It should set to 1 for each parent Material segment.  Watch out for syntax error for segment structure.
I hope this will help to solve issue.
Regards,
Mahesh

Similar Messages

  • Problem with Idoc segment maximum length

    Hi friends,
    We are now creating a new Idoc type. We have started to create the first segment but we encountered a major problem.
    The problem is that we have a field of 4000 characters but the limit of all segment fields together is 1000 characters.
    Is there any way to change this limitation or another way to define Idoc?
    Thanks in advanced,
    Udi Dekel.

    Hi,
    When you create a segment that exceeds the max length, SAP automatically creates a child segment for the exceeded length. For your problem though, you can create 4 segments of length 1000 each and split the data in these 4 segments and then concatenate the data later in the idoc processing function module. On the other hand if it is an outbound idoc, you can ask the receiving system to do the same.
    Best regards,
    Advait

  • Problem in IDOC segment E1MTXLM

    Hi all,
    Basic type : MATMAS05
    One of the segments is E1MTXLM has the data as below
    "Heater assy., with NTC <(>&<)> protector, 240V, 3000W"
    where as in the MM03 transaction Basic data text is shown as below
    "Heater assy., with NTC & protector, 240V, 3000W"
    I think there is problem while the IDOC is getting created but i have no idea what could be the problem.
    Can any help in this regard.

    Hi Nejuma,
    I don't think there is any problem with cofiguration settings.u r getting the idocs for some vendors .
    if iam not wrong u r giving LS in the tcode(we20).The method which u r using is change pointers.As u r using standard idoc all the settings will be done.
    Only settings u have to do is
    1>generate partner profiles(WE20)
    2>Distribute model view(BD64).
    REGARDS,
    Nagaraj

  • Problem about Idoc Segment Conversion

    Hi experts,
    When i configured the Idoc conversion in the Sender system, it was correct. But it doesn't work after configuring the Idoc conversion in the Receiver system. The case like this: the Idoc record generated in the Sender system but doesn't generated in the Receiver system.
    I will be appreciate if anyone can help me!

    can not be solved

  • Problem with creation of IDOC Segment Type

    Hi,
    I tried to create IDOC Segment Type Z1LFA1 but error
    prompted "Structure Z1LFA1 already exist.".
    I tried deleting it at se11  but prompted
    "You cannot edit object R3TR TABL Z1LFA1 with the
    standard editor"                          
    and at sm30-TADIR, but prompted
    with "Cannot delete object directory entry, object exists."
    How will go about this??
    Please help!
    Thanks!

    hi,
    yup, tried doing that on we31 but the segment does not exist yet.
    we're currently upgrading from 4.6 to ecc, I think the structure
    was tranferred to our ecc client but the idoc segment and idoc type were not. I'll just have to transport it then.
    Thanks!

  • IDOC Status 26: EDI: Syntax error in IDoc (segment cannot be identified).

    Hi All,
    I have created IDOC extension for IDOC Basic type "PROACT01" and have followed all required necessary steps but getting IDOC
    Status 26. EDI: Syntax error in IDoc (segment cannot be identified). The exact error is:
    Please check Error Details and the details of the steps I followed for Setting up IDOC Extension:
    Error Detail :
    EDI: Syntax error in IDoc (segment cannot be identified)
    Message no. E0078
    Diagnosis
    The segment ZPROSEG does not occur at the current level of the basic type PROACT01 (extension PROACTEX).
    This error can have several reasons:
    The segment ZPROSEG is assigned to a group whose header segment does not occur.
    The segment ZPROSEG does not exist in the syntax description of the basic type PROACT01 (extension PROACTEX).
    The sequence of segments in the group in which the segment appears is incorrect.
    Previous errors ('mandatory' segment or group missing) may be due to this error.
    Procedure
    Please check the IDoc or the syntax description of the basic type PROACT01 (extension PROACTEX).
    Can you please look at this problem and suggest what is wrong with IDOC Extension/Custome Segment?
    Below is the Details of the Steps which I have followed:
    1. Tcode WE31 - Created new custom Segment ZPROSEG with 4 fields. Released segment.
    2. TCode WE30 - Created IDOC Extension PROACTEX for Basic Type PROACT01. Released IDOC extension.
         Here when I run syntax check warning appears "No predecessors exist".  I am not sure if its okay!!
    3. TCode WE82 - Added Extension PROACTEX in the Message Type PROACT with BASIC Type PROACT01.
    4. TCode WE20 - Added IDOC Extension PROACTEX in the predefined partner profile in WE20 transaction.
    5. Added the following code in the Customer Exit EXIT_SAPLWVMI_001 include ZXWVMIU01 .
    DATA segnam(27).
    READ TABLE dedidd WITH KEY segnam = 'ZPROSEG'.
    IF sy-subrc NE 0.
    LOOP AT dedidd WHERE segnam = 'E1EDP31'.
    CLEAR dedidd.
    dedidd-segnam = 'ZPROSEG'.
    zproseg-matnr = 'Mat1'.
    zproseg-lgort = '001'.
    zproseg-gernr = 'SNo1'.
    zproseg-labst = 2.
    dedidd-sdata = zproseg.
    APPEND dedidd.
    ENDLOOP.
    ENDIF.
    Finally ran  transaction WVM2 (Transfer of Stock & Sales Data) to generate IDOC, its creating IDOC but when checked IDOC in WE05 its getting Status Error "26".
    Looking forward for your reply.
    Many thanks in advance.

    Hello,
    Actually you are appending the Z segment instead of inserting into the correct position. So the segment is added at the last, so hierarchy of segments is collapsed.
    So get the index of the previous segment E1EDP31 and increase the index by 1 and INSERT the Z segment with that new index as below.
    LOOP AT dedidd WHERE segnam = 'E1EDP31'.
    lv_index = sy-tabix. " <<--
    ADD 1 TO lv_index. " <<--
    CLEAR dedidd.
    dedidd-segnam = 'ZPROSEG'.
    zproseg-matnr = 'Mat1'.
    zproseg-lgort = '001'.
    zproseg-gernr = 'SNo1'.
    zproseg-labst = 2.
    dedidd-sdata = zproseg.
    *APPEND dedidd.
    INSERT dedidd INDEX lv_index. " <<---
    ENDLOOP.
    Here actually we are insering the record inside the LOOP and it regenerates the index again. It is not actually a good practice.
    So the best practice is get the index and generate the segment inside the loop, store them into another internal table, come out the loop and insert the Z segments into DEDIDD by looping the new internal table.

  • Idoc Segment Cancel release error

    Hi all,
       I have problem in cancelling the release of an Idoc Segment. I have a requirement to add new fields to the segment. When I try to do Edit->Cancel Release it is throwing below error.
    "Error while resetting release of segment Z1PXXXX
    Message no. EA259"
    Could anyone tell me how to overcome this error or the root cause of this error?
    Many Thanks,
    Sri
    Edited by: Arunsri on Nov 10, 2009 8:37 AM

    Hello,
    The reason that you are getting these errors is that you cannot cancel
    the release of an extension made in previous version e.g. 4.6C. Instead you have to
    create a new extension.
    It is not possible to change a segment definition which is released in a
    lower release. This is a basic concept of our release strategy to
    guarantee compatibility between different releases.
    You must create a new segment definition for the new release e.g. 620 with a new segment
    field with the appropriate length. In transaction WE20, outbound parameters, you can specify
    the "segment release in IDoc type" for the communication. Please read the F1 help of this field for further
    information.
    For your own segments you can define a new version of the segment via
    transaction WE31 -> Add Version (Shift+F5).
    Please review your online help for more information on this and related topics.
    Hope this information helps.
    Regards,
    David

  • Issue in Idoc Segment.

    Hi Gurus,
    i have a problem in Idoc, while creating output type for a Billing document that time one segment repeating lots of time with same data..how to avoid this?
    Mohana

    Mohana
    Are you sure about the segment name E1EDK01 ?? Becoz.. Only one Segment of type E1EDK01 is allowed in one IDOC...
    See below for details:
    Segm.type       E1EDK01                     
    Minimum number  1                           
    Maximum number  1                           
    Parent segment                              
    Hier.level      1                           
    Thanks
    Amol Lohade

  • Facing Problem in IDOC to EDI FLAT File Scenario

    Hi,
    I am working on a scenario IDOC to EDI FLAT File. For this I have used ABAP mapping.
    The problem i am facing is that the EDI FILE contains the segment name as E1EDK01 for eg. while I need the name as per the latest segment definiton released. I have also tried this using File port and it gives the required segment names in file.  But we dont have to use File ports. Please suggest me if something is missing in PI Abap stack ?? Why I am not getting the segments name as per latest segment definition mainatined in R3.
    Thanks
    Neha

    Hi Neha,
                   Please check the segment name in sxmb_moni. Is this showing new value or the old value?
    If SXMB_MONI shows old value then the source SAP (R/3) system which is sending the idoc may not have released the segment after changing the name. You need to ensure that the idoc segment has been released properly. Then re-import the iodc into PI server again. Finally delete entry of the iodc structure in idx2 transaction, no need to re-import the idoc structute again in idx2, since once you run the scenario the metadata automatically gets imported.
    regards
    Anupam

  • Problem in Idoc extension for ORDERS05

    HI all,
    Am facing problem in inbound idoc, we have extended the Idoc ORDERS05 with one custom segment, and written the code in user exit EXIT_SAPLVEDA_001 and include ZXVEDU03 exit is triggering properly, sales orderis genarted successfull, but z-fileds are not updating in VBAK table,
    so plz help....
    Regards,
    Suresh.D
    Edited by: suresh dameruppula on Oct 20, 2009 2:39 PM

    Hi Suresh,
    The function exit and the include what you found is to read data from the IDOC segment into either internal table or structure.
    That's the first step which you have done is part of the below set:-
    EXIT_SAPLVEDA_001 & ZXVEDU03
    Now you need to populate the which you have read from the idoc into the document for that you need to write the code in the below set. The below one is a function exit which will be called during the BDC. You can see this below
    Aufruf Transaktion Auftragerfassung VA01                             *
    call transaction Order Entry VA01                                    *
            CASE xaprau.
    at line number 131 in the function module IDOC_INPUT_ORDERS.
    EXIT_SAPLVEDA_002 & ZXVEDU04
    Please let me know if you still have any further queries.
    Thanks,
    Mahesh.

  • Any FM/methods to update idoc segments without changing idoc status

    Hi All,
    My requirement is a reprocessor program which fills up some fields in the idoc segment before posting. So, after updating the segments, the idoc status should remain as before.
    Is there any function modules or methods to update idoc fields in segments without changing the idoc status?
    I have tried the FMs EDI_DOCUMENT_OPEN_FOR_EDIT, EDI_CHANGE_DATA_SEGMENT and EDI_DOCUMENT_CLOSE_EDIT, but it changes the idoc status.
    Thanks,
    Arun Mohan

    As for FM to do this, i don't know if there are any, but i think you can go directly to the tables with the IDOC data and change them without triggering the changes in status like FM do. Still, i am not sure this is completely true, but you could give it a try. Also, i don't know if this is the best way to do it, because of those legal/audit questions mentioned by Thomas.
    Here is a sample code of a program we have to change a field in a segment of WPUUMS.
    *& Report  YRE00021INTPG
    REPORT  yre00021reppg.
    TABLES: edid4 ,
            edidc ,
            mean .
    * Variaveis Auxiliares
    DATA: t_edidc TYPE edidc OCCURS 0 WITH HEADER LINE.
    DATA: t_edid4 LIKE edid4 OCCURS 0 WITH HEADER LINE .
    DATA: BEGIN OF t_docs OCCURS 0,
            docnum LIKE edidc-docnum ,
          END OF t_docs.
    DATA: wa_e1wpu02 LIKE e1wpu02 .
    DATA: wa_e1wpu03 LIKE e1wpu03 .
    DATA: t_itedidd LIKE edi_dd40 OCCURS 0 WITH HEADER LINE ,
          t_itedidc LIKE edi_dc40 OCCURS 0 WITH HEADER LINE ,
          fw_itedidc LIKE edi_dc40 ,
          fw_itedidd LIKE edi_dc40 .
    DATA: l_matnr TYPE mara-matnr,
          l_tam TYPE i.
    DATA: l_idoc_number TYPE edidc-docnum.
    * Ecran de selecção
    SELECTION-SCREEN : BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
    SELECT-OPTIONS: s_docnum FOR  edid4-docnum ,
                    s_credat FOR  edidc-credat DEFAULT sy-datum ,
                    s_cretim FOR  edidc-cretim .
    PARAMETER:      p_mestyp LIKE edidc-mestyp DEFAULT 'WPUUMS' ,
                    p_status LIKE edidc-status DEFAULT '51' .
    *SELECTION-SCREEN SKIP.
    *PARAMETER:      p_ean11 TYPE mean-ean11.
    SELECTION-SCREEN : END OF BLOCK b1.
    AT SELECTION-SCREEN.
      IF p_status <> '51'.
        MESSAGE e001(yre) WITH 'Apenas pode modificar IDOCS com erro'.
      ENDIF.
      IF p_mestyp <> 'WPUUMS'.
        MESSAGE e001(yre) WITH 'Apenas pode lançar WPUUMS'.
      ENDIF.
    *AT SELECTION-SCREEN ON p_ean11.
    *  SELECT SINGLE * FROM mean WHERE
    *    ean11 = p_ean11.
    *  IF sy-subrc <> 0.
    *    MESSAGE e001(yre) WITH 'Ean não existente'.
    *  ENDIF.
    START-OF-SELECTION.
      SELECT docnum INTO TABLE t_docs FROM edidc
                         WHERE status =  p_status
                         AND   mestyp =  p_mestyp
                         AND   docnum IN s_docnum
                         AND   credat IN s_credat
                         AND   cretim IN s_cretim .
      CHECK sy-subrc = 0 .
      LOOP AT t_docs.
        CLEAR : wa_e1wpu02.
        SELECT * FROM edidc INTO TABLE t_edidc
          WHERE docnum = t_docs-docnum.
        CHECK sy-subrc = 0.
        SELECT * FROM edid4 INTO TABLE t_edid4
                      WHERE docnum = t_docs-docnum AND
                            segnam = 'E1WPU02'.
        CHECK sy-subrc = 0.
        SORT t_edid4 BY segnum.
        LOOP AT t_edid4 .
          wa_e1wpu02 = t_edid4-sdata.
          WRITE wa_e1wpu02-artnr TO l_matnr NO-ZERO.
          CONDENSE l_matnr.
    *      l_tam = STRLEN( l_matnr ).
    *      IF l_tam <= 6.
            SELECT SINGLE ean11 INTO wa_e1wpu02-artnr FROM ytre00004 WHERE
              codcurto = l_matnr.
            IF sy-subrc = 0.
              WRITE : /1 'Código ', l_matnr, ' alterado para ', wa_e1wpu02-artnr.
            ELSE.
              WRITE : /1 'Código ', l_matnr, ' não encontrado na tabela de conversão'.
              CONTINUE.
            ENDIF.
    *        CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
    *          EXPORTING
    *            input  = p_ean11
    *          IMPORTING
    *            output = wa_e1wpu02-artnr.
    *      ENDIF.
          UPDATE edid4 SET   sdata   = wa_e1wpu02
                       WHERE docnum  = t_edid4-docnum
                       AND   counter = t_edid4-counter
                       AND   segnum  = t_edid4-segnum .
          IF sy-subrc <> 0 .
            ROLLBACK WORK .
            WRITE: / t_edid4-docnum .
          ELSE.
            COMMIT WORK.
          ENDIF.
        ENDLOOP.
      ENDLOOP.
    END-OF-SELECTION.

  • Problem with idoc DEBMAS

    Hi everybody.
    We have a problem with idoc DEBMAS.
    This idoc is sent from R3 to PI throw change pointers then the idoc is field only with the data modified in the master custumer.
    We need the information fill it in the segment /IDOC/E1KNA1M/E1KNVVM to determine the receiver determination but this segment is not always sent.
    What can be done in R3 to send always this segment.
    We dont want to sent the whole data but always this segment.
    Any idea???
    Thanks a lot!!!!!

    Hi,
    As E1KNVVM segement is not mandatory, when you are triggering IDoc based on change poitner data might not populted in the E1KNVVM segment until some sales data is changed.
    if you need that segement always just copy the Idoc type and make it mandaotry field.
    otherwise yoy can populate some fields like STDVRS with the reruried constant and can use in your receiver determination.
    Regards,
    Suresh

  • IDOC Segments data?

    Hi,
    Can anyone tell in which tables is the IDOC segments data is stored?
    Rgds,
    Kanwar

    Hi,
    IDoc segment data is stored in strcuture like EDIDD.
    Suppose you have created IDoc,then the function module export parameter for Idoc data is IDOC_data(defined as IDOC_DATA STRUCTURE  EDIDD).
    then you can access data as below.
    LOOP AT IDOC_DATA.
        CASE IDOC_DATA-SEGNAM.
          WHEN 'E1EDP01'.    
            MOVE IDOC_DATA-SDATA TO E1EDP01.
    ***Here e1edp01 structure will give you details of ***individual field.       
        ENDCASE.
      ENDLOOP.
    Similarly you can access data for all segments.
    Thanks.
    Mark points if helpful.

  • Idoc Segment Fields

    Hi,
    I am having a problem with the display of idoc segment fields. When i check the Idoc segment contents in WE02 it is displaying the fields which dont have the value in the DB table along with the fields which have the data. To avoid this what is the procedure. I dont want to display the fields in the content of segment which does not contains the data.
    Plz help me out.
    Regards
    Santosh

    Hi,
    U have to use for reduced message type...U need to filter the segments which  u don't want...In BD53 u need to create reduced message type....
    plz go through the below link..
    http://help.sap.com/saphelp_erp2005/helpdata/en/d3/06f6679aaf0e44b67ca6d6b58d91df/content.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/0b/2a6702507d11d18ee90000e8366fc2/content.htm
    Regards,
    Nagaraj

  • IDOC Segment mapping change

    Hi,
    How can i change the field attached to a IDOC segment.
    Actually we have this Invoice IDOC,in which the E1EDK03 012(Qualifier) is passing the IDOC creation date instead of Billing date.
    So i need to change this mapping to Billing date.
    Please help.

    Hi Salz,
    I just checked my version of SAP (4.7) and you should get an invoice date.  Check out the subroutine FILL_E1EDK03 in function module IDOC_OUTPUT_INVOIC.  The first section of this code creates an E1EDK03 segment with the invoice date (if there is an invoice date), with qualifyer 026.
    Is there a possibility that in fact you are getting an E1EDK03 segment with the invoice date, but you are also getting other E1EDK03 segments (such as the one you mention with qualifyer 012) and they are obscuring the one you are looking for?
    If there are definitely none being created then can I suggest that you debug the subroutine FILL_E1EDK03 in function module IDOC_OUTPUT_INVOIC to check what is happening.  You may need to change the timing of your output record to 1 and run the program RSNAST00 online to get the breakpoint to be hit correctly. 
    If, in your version, the code doesn't include this date, then you have an exit function module EXIT_SAPLVEDF_002 (called via the subroutine CUSTOMER_FUNCTION in function module IDOC_OUTPUT_INVOIC) where you can actually add your own segment data.  For example you an change the contents of an existing segment (as per your original request), or append your own E1EDK03 segment with your own data.  I would recommend adding your own segment rather than changing whats there.
    It is possible to extend idocs to add your own custom segments (eg Z1EDK03), but I wouldn't recommend it in your case, because in later versions of SAP the date is provided and by not creating a new segment (Z1EDK03) you will have no mapping changes to do when you upgrade.  You can just delete your userexit code.
    Hope that all makes sense and helps you with your problem.
    Cheers,
    Brad

Maybe you are looking for