Read IDOC segment with qualifier

Hi,
I need to read data into a workArea from a IDOC segment which has Qualifiers for it.
The IDOC or BASIC type is   DELVRY03.
Segment                                E1EDT13.
Qualifier                                 006
Thx in advance
Mac

DATA:
lx_e1edt13      TYPE e1edt13.
FIELD-SYMBOLS:
  <fs_idoc_data>  LIKE LINE OF idoc_data.
LOOP AT idoc_data ASSIGNING <fs_idoc_data> WHERE segnam = 'E1EDT13'.
  lx_e1edt13 = <ls_idoc_data>-sdata.
  IF lx_e1edt13-qualf = '006'.
your code
or get the data into internal table as per your requiremnt
  ENDIF.
ENDLOOP.

Similar Messages

  • How to map IDoc segment with qualifiers

    Hi everyone!
    I have the following problem: In an IDoc of type DESADV01 there can be several segments of type E2EDS01. Each segment has a different qualifier, which is the value of the field SUMID in this case. My target structure (type EDIFACT) now has several segments, each again with a sort of qualifier. Now I have to map the values of certain source segments to the respective target segments.
    Exaple (in XML format):
    Source
      <E1EDS01 SEGMENT="1">
        <SUMID>021</SUMID>
        <SUMME>0000000001.000</SUMME>
        <SUNIT>KGM</SUNIT>
      </E1EDS01>
      <E1EDS01 SEGMENT="1">
        <SUMID>022</SUMID>
        <SUMME>0000000001.000</SUMME>
        <SUNIT>KGM</SUNIT>
      </E1EDS01>
    Target
      <S_MEA>
        <C_C502>
          <D_6313>N</D_6313>
        </C_C502>
        <C_C174>
          <D_6411>KGM</D_6411>
          <D_6314>1</D_6314>
        </C_C174>
      </S_MEA>
      <S_MEA>
        <C_C502>
          <D_6313>G</D_6313>
        </C_C502>
        <C_C174>
          <D_6411>KGM</D_6411>
          <D_6314>1</D_6314>
        </C_C174>
      </S_MEA>
    (i have omitted several details here, but I'm only interested in the general procedure anyway).
    So in general the source segment with qualifier "021" should be mapped to a target structure with qualifier "N" etc.
    How can this be done using standard XI mapping techniques?
    Regards, Joerg

    Hi everyone!
    Thanks for your input data - unfortunately this wasn't quite what I was looking for. However I thik I solved my original problem and I just wanted to share this solution with you - maybe it helps others, maybe some of you have suggestions what I could do differently.
    To sum up the requirement: There can be multiple input segments, each with a certain qualifier. These input segments have to be mapped to the target segments, respectively - however, the qualifiers change. There can be several segments with qualifiers that do not match the requirement, and required segments might be missing.
    So here's what I came up with:
    Use the qualifier of the source segments as an input to a <b>FixValues</b> function. In this function, map the desired qualifiers to the value <b>true</b>, use <b>false</b> as the default value. Map the output of the <b>FixValues</b> function to a <b>createIf</b> function and use this to create the desired output segment. This way, for each of the required segments, one target segment will be created. All other segments (with unwanted qualifiers) will be removed.
    So far, this technique worked for me - do you have improvements/suggestions?
    Regards, Joerg

  • How to Read Idoc - Segment fields values and status messages

    Hi,
      I am having one requirement as i want to read the segments along with the field values and also i want to read all the status messages.
    first i read the idoc data from EDIDS and segments data from EDID4 and the staus messges from T100. but still i am not getting all the status messages.
    is there any other table which contains the information of IDOC segments and field values and also the status messages.
    Regards,
    Kumar

    You need to use
    V_MSGNO = EDIDS-STAMNO.
    CALL FUNCTION 'MESSAGE_PREPARE'
      EXPORTING
        MSG_ID   = EDIDS-STAMID
        MSG_NO   = V_MSGNO
        MSG_VAR1 = EDIDS-STAPA1
        MSG_VAR2 = EDIDS-STAPA2
        MSG_VAR3 = EDIDS-STAPA3
        MSG_VAR4 = EDIDS-STAPA4
      IMPORTING
        MSG_TEXT = V_TEXT.
    WRITE: / V_TEXT.

  • Idoc segment with 1000 char

    Hi
    I have a custom IDOC created with one of the segments being 1000 char. The data is populated through a custom program.
    In WE02 I am unable to see all the 1000 char. Even if I export the IDOC to a spreadsheet or word doc it does not show completely all the characters.
    I am able to use FM IDOC_Read_Completely to read the IDOC and view the complete segment but I am looking for a standard transaction.
    Any inputs on how the I can view all the data in the segment in a standard trx ?.

    hi,
    the data in the edid4-sdata is filled with according to Segement field lenght.
    you can directly read from table with Idoc number from table EDID4 in se16.
    or we05 or we02 or we19 or BD87 transactions.
    prabhudas

  • Dump while extracting IDOC segments with FM 'EDI_SEGMENTS_GET_ALL'

    Hi All,
    I am fetching all the available segments for a perticular IDOC with the help of function module "EDI_SEGMENTS_GET_ALL".
    In production i am getting dump because of large no. of segments for the IDOC.
    The short dump is as follows:
    Runtime error          TSV_TNEW_PAGE_ALLOC_FAILED
           Opgetreden op   11.11.2008 om 23:11:41
    No storage space available for extending the internal table.
    What happened?
    You attempted to extend an internal table, but the required space was
    not available.
    Error Analysis
    The internal table (with the internal identifier "IT_11") could not be
    enlarged any further. To enable error handling, the internal table had
    to be deleted before this error log was formatted. Consequently, if you
    navigate back from this error log to the ABAP Debugger, the table will
    be displayed there with 0 lines.
    When the program was terminated, the internal table concerned returned
    the following information:
    Line width: 1062
    Number of lines: 351368
    Allocated lines: 351368
    New no. of requested lines: 8 (in 1 blocks)
    Information about breaking off
    The termination occurred in the ABAP program "SAPLEDI1" in
    "EDI_SEGMENTS_GET_ALL".
    The main program was "SAPMSSY1 ".
    The termination occurred in line 39 of the source code of the (Include)
    program "LEDI1U03"
    of the source code of program "LEDI1U03" (when calling the editor 390).
    Is there any other function module or method sothat i can fetch all the segments without causing dump.
    Thanks in advance
    Taj

    Try to call fm  EDI_DOCUMENT_CLOSE_READ after fm call EDI_SEGMENTS_GET_ALL?
    * procedure to read idoc (open - read - close)
      call function 'EDI_DOCUMENT_OPEN_FOR_READ'
      if sy-subrc = 0.
       " <<<<< clear your internal table
        call function 'EDI_SEGMENTS_GET_ALL'
    endif.
    * close idoc after usage
      call function 'EDI_DOCUMENT_CLOSE_READ'

  • How to read multiple segments with same name in IDOC

    I want to read segments in IDOC say e1edk02.I am using orders05 idoc.
    BUT If I use the statement
    CONSTANTS :
                c_segnam1     type  char19 value  'E1EDK02'.
    read table idoc_data into wa_idocdata with key segnam = c_segnam1.
    It will read only one segment.but we are populating 2 e1edk02 segments.

    LOOP AT IDOC_DATA
        WHERE DOCNUM = IDOC_CONTRL-DOCNUM.
        CASE IDOC_DATA-SEGNAM.
          WHEN 'E1EDK02'.
           MOVE IDOC_DATA-SDATA TO E1EDK02.
    reward if useful
    check FM idoc_input_orders for reference

  • IDOC segment with multiple lines

    Hi,
    I have a requirement where I need to populate the multiple lines in one segment without getting created multiple segment.
    I am generating material with multiple line data in the additional data using MATMAS05 IDOC for segment E1MTXHM but its generating multiple sub segments. I need to have multiple lines in one segment and not multiple segment.
    Please let me know how to achieve multiple lines in one segment.
    Thanks & Regards,
    Rayan

    Hi Subas,
    I haven written any code as I am triggering IDOC through BD10. This is a testing requirement and we need any IDOC irresepective of MATMAS, DEBMAS, CREMAS etc etc which can have multiple lines in a single segemnt.
    Sample IDOC:
    Z2XXXXD000                                       00002300002203CTDI-PA
    90210 Testing Address
    CA
    Beverly Hills
    United States                                                             
    Z2XXXD000                                       00002400002203ON TESTING
    303 308 5319                                                                               
    Z2XXXXC000                                       00002500000102Z004E          
    Actually every IDOC I am generating is getting multiple segment and each segment holding one line and my requirement is that all the lines should be get accomadated in a single segment like the above sample IDOC.
    Actually each segment has segment name and IDOC no. followed by field values but my requirement is within one segment name and IDOC no. all the field values get accomadated. Hope you got the understanding of what my requirement is? Please guide me how to trigger multiple line in a segment.
    Thanks & Regards,
    Rayan

  • Idoc segment not apperaing for PO creation.

    Dear All.
    Sceanrio:
    Once PO is created , NEU ouptut gets triggered.On release of PO, it generates an outbound idoc.
    Issue.
    In this outbound idoc the segment E1EDKA1 WE is missing.This segment gives the Ship to address in the PO, ie normally the plant address to which the material is shipped.
    Analysis:
    This PO has 3 line items and these are created by reffering 3 different PR s.So my question here is , whether is this standarad SAP behaviour where Ship to address segment wont get populated into idocs for multiple line item POs.Why i am asking this is that, if suppose the PO has 10 different line items , with 10 different plants.Each plant has different address.Then how system will decide which ship to address will populate in E1EDKA1 WE segment.
    Or is there any other behaviours, when the PO has multiple line items.
    Please let me know your thoughts on this.
    Regards
    Shyam

    Hello Shyam ,
    The reason for this behavior could be that tthe items in the IDOC have a different delivery address maintained in the Ourchase Order. If the delivery address for all items is the same , the segment E1EDPA1 with qualifier WE will be not populated. Instead of generating E1EDPA1 , the system will create one E1EDKA1 segment with qualifier WE. This will prevent on receiving side the creation of the same delivery address for all items.
    I hope this information has been helpful.
    Best Regards,
    Frank Farinella

  • IDOC SEGMENT QUALIFIER DOUBT...

    Gurus,
    I was looking at a givcen IDOC which was posted. The IDOC was of t5ype INVOIC01. I see that there are couple of segments with the same name but with different IDOC qualifier like:
    EIEDP02 which has three qulaifier reocrds like 001, 002 and 016. But the data gets posted only from one of this qualifier record.
    What is a qualifier ? How the system comes to know what qualifier record should be used to post data?
    Regards,
    Rajesh.

    >What is a qualifier ? How the system comes to know what qualifier record should be used to post data?
    if it is inbound it should be handled by Inbound processing function module. if it is Outbound then a predefined mapping (Requirement specific) can tell you which qualifier belongs to what data.
    and also Read the Idoc type documentation using tcode WE61.

  • 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!

  • Read MULTIPLE idocs data with all sgmn to my internal table in a single

    Dear SAP Folks!
    I have a question, I know to read SINGLE idoc data with all segments, we have FM IDOC_READ_COMPLETELY but my requirement is to Read MULTIPLE idocs data with all segments to my internal table in a single shot without keeping this FM in loop! since it is performance issue, at a time i may want to read 1000 idocs data!
    Could anyone please let me know is there any way to get this, keeping mind of performance and any other FM?
    Best Regards,
    Srini

    Hi,
    I know idoc numbers and i can write a select Query to DB table EDID4 to get all segments data to my internal table. But i am looking for FM to do this. because i have too many number of idocs and each idoc is having many segments(I am thinking in performance point of view!) The FM IDOC_READ_COMPLETELY can accept only ONE IDOC number as import parameters at a time to get segment data. in similar way do we have any other FM? or other way? except select query to EDID4 table?
    Best Regards,
    Srini

  • How to map idoc segment field E1IDB02-FIIKONTO with BSEG-ESRNR.

    Hi,
    I have searched for lot of threads in the forum , and also i tried myself but i am not able to map this fields segment with my logic, so please anyone kindly contribute in mapping idoc segment field  with the logic given below:
    idoc type :PAYEXT  outbound idoc.
    message type: PEXR2002
    This is my logic: i need to populate the ISR number(BSEG-ESRNR  ) in idoc segment field( E1IDB02-FIIKONTO)
    DATA : str1 TYPE string,
          len1  TYPE i,
          len2  TYPE i,
          str2  TYPE string,
          str3  TYPE string.
    str1 = '01-1234-4'. ---> BSEG-ESRNR  "ISR Subscriber Number
    REPLACE FIRST OCCURRENCE OF '-' IN str1 WITH '_'.
    REPLACE ALL OCCURRENCES OF  '-' IN str1 WITH space.
    CONDENSE str1.
    len1 = STRLEN( str1 ).
    IF len1 LT '9'.
    len2 = '9' - len1.
    CASE len2.
       WHEN '1'.
         REPLACE ALL OCCURRENCES OF '_' IN str1 WITH '00'.
       WHEN '2'.
         REPLACE ALL OCCURRENCES OF '_' IN str1 WITH '000'.
       WHEN '3'.
         REPLACE ALL OCCURRENCES OF '_' IN str1 WITH '0000'.
       WHEN '4'.
         REPLACE ALL OCCURRENCES OF '_' IN str1 WITH '000000'.
       WHEN OTHERS.
    ENDCASE.
    ELSEIF len1 EQ '9'.
    REPLACE ALL OCCURRENCES OF '_' IN str1 WITH '0'.
    ELSEIF len1 GT '9'.
    REPLACE ALL OCCURRENCES OF '_' IN str1 WITH space.
    CONDENSE str1.
    ENDIF.
    Thanks in Advance.

    Resolved.

  • IDOC segment report with domain lookup

    Does anyone know of a report that will list an IDOC's segments with the qualifier texts expanded.
    Example:
    The E1EDK14-QUALF segment belongs to domain EDI_QUALFO (IDOC qualifier organization) which has 19 values in its value table.
    I'd like a report that would print the IDOC segment by segment along with the qualifiers value text.

    Hello Ed,
    Use function module 'IDOCTYPE_READ_COMPLETE'. This will give you a list of segments with description, a list of fields with description, a list of domain values for the fields and a list of message types connected to that IDOC type.
    You need to populate PI_IDOCTYP with the IDOC type and possibly PI_CIMTYP with the extension, if you are using an extension with that type. If not, Idoc Type is sufficient.
    Regards,
    Michael

  • Find the idoc segment link with Sap Table

    Dear Abaers,
    I am new to Idoc. i have one Idoc (Orders01) for creating sales order.
    I had seen the t-codes WE 30 and WE 60 to know the field description.
    The fielddescription shows names like name1 name2 ort01 etc.
    i want to know what are the db tables involved for that particular idoc segment.
    Thanks in Advance,
    Arati

    Hi Arati,
    to get the description name:
    WE30 transaction and check the segments name available.
    With the segment name, go to WE31 and check the fields used and column 'Data element'.
    Double-click in data element (or inform in se11), you have the description value of the field.
    About the tables involved:
    Click in 'Where use list' os this data element.

  • IDOC: How to create child segment with abap code.

    Hi,
    I'am trying to write an abap code to create segments for an Idoc which structure is the following:
    ZLE_00060_DLVY
    >  E1EDL20
    > Z1DEL_CONS
    >Z1DEL_MAT_HEADER
    > Z1DEL_MAT
    > E1EDL20RET2
    > E1EDL22
    > E1EDL21
    > E1EDL23
    > E1EDL51
    I receive a sintax error: Error in IDoc with status 26 .
    Checking the result I note all segment at the same level and an error about the segment E1EDL22
    EDI: Syntax error in IDoc (segment cannot be identified)
         Message no. E0078
    Diagnosis
         The segment E1EDL22 does not occur at the current level of the basic
         type DELVRY05 (extension ZLE_00060_DLVY).
         This error can have several reasons:
         o   The segment E1EDL22 is assigned to a group whose header segment does
             not occur.
         o   The segment E1EDL22 does not exist in the syntax description of the
             basic type DELVRY05 (extension ZLE_00060_DLVY).
         o   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
         DELVRY05 (extension ZLE_00060_DLVY).
    After the error I have:
    data records
    E1EDL20
    Z1DEL_CONS
    Z1DEL_MAT_HEADER
    Z1DEL_MAT
    Z1DEL_MAT
    Z1DEL_MAT
    Z1DEL_MAT
    Z1DEL_MAT
    Z1DEL_MAT
    Z1DEL_MAT
    Z1DEL_MAT
    Z1DEL_MAT
    Z1DEL_MAT
    Z1DEL_MAT
    Z1DEL_MAT
    Z1DEL_MAT
    Z1DEL_MAT
    E1EDL20RET2
    E1EDL22
    E1EDL21
    Abap code:
            idoc_data-segnam = 'Z1DEL_CONS'.
            idoc_data-sdata = s_z1del_cons.
            append idoc_data.
              idoc_data-segnam = 'Z1DEL_MAT_HEADER'.
              s_z1del_mat_header-tsegment = 'MATERIAL'.
              idoc_data-sdata = s_z1del_mat_header.
              append idoc_data.
            clear idoc_data-sdata.                            <<<<<<<<<<< how to indent the structure because this is a child.
             idoc_data-sdata = s_Z1DEL_MAT.
             idoc_data-segnam = 'Z1DEL_MAT'.
             append idoc_data.
             idoc_data-segnam = 'E1EDL20RET2'.
             idoc_data-sdata = s_E1EDL20RET2.
             append idoc_data.
             clear idoc_data.
             idoc_data-segnam = 'E1EDL22'.
             idoc_data-sdata = s_e1edl22.
             append idoc_data.
             clear idoc_data.
             idoc_data-segnam = 'E1EDL21'.
             idoc_data-sdata = s_e1edl21.
             append idoc_data.
    Any help will be well appreciated.
    Thanks in advance.
    Regards,
        Giovanni

    Hi,
    following in debugging mode the abap code of the INCLUDE ZXTRKU02 where is defined the TABLES IDOC_DATA STRUCTURE  EDIDD, I find that all field of the table IDOC_DATA are not set. More exactly my expectation is to find values for SEGNUM, HLEVEL, PSGNUM.
    In a few words I need to execute an enhancement, via abap code, of the struscure of the idoc before sending it out since I have a requirement to test this enhancement in my XI environment, receiving as input this ideoc modified.
    Then, I need to add a new segment and one child.
    Any suggestion will be well appreciated.
    Thanks in advance.
    Regards,
        Giovanni

Maybe you are looking for