Retrieve idoc number from r/3

Hi Experts.
I have an interesting issue..i am sending an idoc to r/3..asynchronously from bpm..Is it possible to get the idoc number of the idoc from the r/3 system for the same idoc that i had sent.....no the docnum is not what i am looking for, dont want to create another scenario where i retrieve it using rfc..etc...
just want the idoc number back so i can append it to the soap response..and hence wash my hands off the situation...
Venkat

Venkat,
Just check this doc,if it helps https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/f6d2d790-0201-0010-9382-b50b499b3fbe

Similar Messages

  • Get IDoc-number from flat IDoc using dynamic configuration

    Dear experts
    In an IDoc2File scenario I have added the IDoc-number to dynamic configuration using the folling code in an UDF:
    DynamicConfiguration conf = (DynamicConfiguration)
    container.getTransformationParameters().get(StreamTransformationConstants.DYNAMIC_CONFIGURATION);
    DynamicConfigurationKey FileName = DynamicConfigurationKey.create("http:/"+"/sap.com/xi/XI/System/File","DOCNUM");
    conf.put(FileName, a);
    The information is stored in the SOAP message
    <SAP:DynamicConfiguration SOAP:mustUnderstand="1">
      <SAP:Record namespace="http://sap.com/xi/XI/System/File" name="DOCNUM">0000000000012345</SAP:Record>
    </SAP:DynamicConfiguration>
    Can anybody tell me how I can access this information in the "variable substitution" section of the CC? Perhaps something like "message:docnum"?
    Additional information:
    Taking the IDoc-number from the payload using e.g. "payload:ORDERS05,1,IDOC,1,EDI_DC40,1,DOCNUM,1" does not work, since the XML-IDoc has been converted to an flat-IDoc.
    Thanks in advance for any good ideas
    Markus

    Dear Rodrigo and Sarvesh
    Thanks for your help so far! I applied your hints and now it is working fine.
    But now I have the following additional questions
    1.) My message mapping only maps the input IDoc to an output IDoc of the same type and structure. The MM is only required to process the UDF. Is there another, better solution to achieve my requirement that the IDoc-number shall be part of the filename?
    2.) In the CC you have the possibility to use temporary files (section "Processing", Option "Put File" = "Use Temporary File". I think this will not work with the given solution, will it?
    To possibly help somebody else or clarify the mechanism once again, I wrote down how my solution now looks like.
    My UDF in the message-mapping looks like this
    - Input = DOCNUM of IDoc, e.g. ORDERS05/IDOC/EDIDC/DOCNUM
    - Outpt = DOCNUM of IDoc, e.g. ORDERS05/IDOC/EDIDC/DOCNUM
    - UDF:
    public String putDynamicConfiguration(String docnum, Container container) throws StreamTransformationException{
    try
         DynamicConfiguration conf = (DynamicConfiguration) container.getTransformationParameters().get(StreamTransformationConstants.DYNAMIC_CONFIGURATION);
         DynamicConfigurationKey key = DynamicConfigurationKey.create("http://sap.com/xi/XI/System/File","FileName");
         String filename = "Prefix_" + docnum + ".txt";
         conf.put(key, filename);
         return docnum;
    catch (Exception e)
         return docnum;
    In the CC the settings are now as follows
    File Name Scheme = . -> only a dot or something else, because this field is obligatory, even if it is not used in this case.
    Variable substitution (...)
        Enable -> unchecked
    Adapter-Specific Message Attributes
        Use Adapter-Specific Message Attributes -> checked
        Fail If Adapter-Specific Message Attributes Missing -> checked
        File Name -> checked
        Directory, File Type, Temporary Name Scheme for Target File Name -> unchecked
    When I send an IDoc to PI and view the Adapte-Engine Version of the message (the SOAP-document, not the payload) I can find the Filename:
    <SAP:DynamicConfiguration SOAP:mustUnderstand="1">
    <SAP:Record namespace="http://sap.com/xi/XI/System/File" name="FileName">Prefix_0000000000012345.txt</SAP:Record>
    </SAP:DynamicConfiguration>

  • Getting valid idoc number from the sales document

    hi,
    Iam sending the code for getting the idoc number from sales document.
    but iam not getting the result.
    please see the code and correct the code so that i will get the idoc number from the sales document.
    tables edid4.
    data l_docnum like edid4-docnum.
    parameters:p_vbeln like vbak-vbeln.
    call function 'CONVERSION_EXIT_ALPHA_INPUT'
      exporting
        input         = p_vbeln
    IMPORTING
       OUTPUT        = p_vbeln
    select single docnum from edid4 into l_docnum where sdata like '&p_vbeln&'.
    if sy-subrc = 0.
    write edid4-docnum.
    else.
    write ' the record is not found'.
    endif.
    it is very urgent..............
    thanks in advance......

    See the below code :
    report zxyz.
    tables edid4.
    data l_docnum like edid4-docnum.
    parameters:p_vbeln like vbak-vbeln.
    <b>data sdata like edid4-sdata.</b>
    start-of-selection.
    call function 'CONVERSION_EXIT_ALPHA_INPUT'
    exporting
    input = p_vbeln
    IMPORTING
    OUTPUT = p_vbeln
    <b>concatenate '%' p_vbeln '%' into sdata.</b>
    select single docnum from edid4 into l_docnum
                  where sdata like <b>sdata.</b>
    if sy-subrc = 0.
    write edid4-docnum.
    else.
    write ' the record is not found'.
    endif.
    Thanks
    Seshu

  • Retreiving latest IDOC number from Invoice number

    Hi,
    I am interested in retreiving latest IDOC number from a Invoice.
    Usually we have multiple IDOC numbers for same Invoice number.
    This is a report requirement.
    thank you.
    praveen

    Hi,
    Use NAST with the invoice to get the latest record for that output type..
    use the table CMFP to get the IDOC number..The combination is
    NAST-CMFPNR = CMFP-CMFPNR..
    Then in the column CMFP-MSGV1 you can find the idoc number..
    Thanks,
    Naren

  • How to find Outbound Idoc number from inbound Idoc number.

    Hi,
    I have one inbound Idoc in my system, then
    How to find the  idoc number from the system which sends that idoc(Outbound Idoc number).

    Hello
    You can use fm SREL_GET_NEXT_NEIGHBORS for this purpose.
    Scenario: An EDI purchase order is received by SAP-XI and forwarded as Inbound ORDERS IDoc to R/3. SAP-XI generates an (outbound) IDoc number which differs from the (inbound) ORDERS05 IDoc in the R/3 system.
    Calling fm SREL_GET_NEXT_NEIGHBORS with the following parameters:
    OBJECT-OBJKEY = <IDoc number, 16-digits>
    OBJECT-OBJTYPE = 'IDOC'
    MAX_HOPS = '99'            " <<< get all links
    I get the following result:
    0000000000133906                                   IDOC       CUSTOMER   OUTIDOC
    0000000000407402                                   IDOC                  INIDOC
    000000370383                                       BUS2012    CUSTOMER   OUTBELEG
    0010057944                                         BUS2032               INBELEG
    Outbound IDoc number
    Inbound IDoc number (ORDERS05)
    PO number
    Sales order (created from inbound ORDERS IDoc)
    Regards
      Uwe

  • Retrieve a number from a stored procedure

    I need to retrieve the number of rows returned from a query in a stored procedure. This is what I currently have:
    PACKAGE PART_DATA AS
    FUNCTION GetPartDataRowCount(Company IN PART_DATA.PART1_CO_SITE%TYPE) RETURN NUMBER;
    END;
    PACKAGE BODY PART_DATA AS
    FUNCTION GetPartDataRowCount
    Company IN PART_DATA.PART1_CO_SITE%TYPE
    RETURN NUMBER
    IS
    RecordCount NUMBER;
    BEGIN
    SELECT COUNT(*)
    INTO RecordCount
    FROM PART_DATA
    WHERE PART1_CO_SITE = Company;
    RETURN RecordCount;
    END GetPartDataRowCount;
    END;
    And the .NET part:
    Public Function GetPartDataRowCount(ByVal Company As String) As Integer
    Dim con As New OracleConnection(MyConnectionString)
    'Open the connection
    con.Open()
    'Set the command text, type and connection
    Dim cmd As New OracleCommand("PART_DATA.GetPartDataRowCount", con)
    cmd.CommandType = CommandType.StoredProcedure
    'Create parameter objects
    Dim returnValue As New OracleParameter
    returnValue.Direction = ParameterDirection.ReturnValue
    returnValue.DbType = DbType.Int32
    cmd.Parameters.Add(returnValue)
    Dim pCompany As New OracleParameter
    pCompany.Direction = ParameterDirection.Input
    pCompany.DbType = DbType.AnsiStringFixedLength
    pCompany.Value = Company
    cmd.Parameters.Add(pCompany)
    'Execute the query
    cmd.ExecuteNonQuery()
    'Capture the returned value
    Dim rowCount As Integer = Convert.ToInt32(returnValue.Value)
    'Return the returned value
    Return rowCount
    'Clean up objects
    returnValue.Dispose()
    cmd.Dispose()
    con.Dispose()
    End Function
    I am using this as the SelectCountMethod on an ObjectDataSource for custom paging a GridView. Everything is working but because I'm new to Oracle I can't help thinking that there is a better way to achieve what I need, also I am confused as to whether I should be using a Function or a Procedure in my Package for this.
    I would be grateful if someone could either confirm that what I am doing is the best/correct method or show me what I should be doing instead.
    Any help much appreciated.

    Thanks Eric, that is a big help and has made things clearer for me. However I cannot get this to work using a Procedure instead of a Function. Just for the sake of completeness I would also like to make it work with a Procedure.
    Here is what I have:
    PACKAGE PART_DATA AS
    PROCEDURE GetPartDataRowCount(mtmsCompany IN PART_DATA.PART1_CO_SITE%TYPE,rowCount OUT NUMBER);
    END;
    PACKAGE BODY PART_DATA AS
    PROCEDURE GetPartDataRowCount
    mtmsCompany IN PART_DATA.PART1_CO_SITE%TYPE,
    rowCount OUT NUMBER
    IS
    BEGIN
    SELECT COUNT(*)
    INTO rowCount
    FROM PART_DATA
    WHERE PART1_CO_SITE = mtmsCompany;
    END GetPartDataRowCount;
    END;
    And the .NET code:
    Public Function GetPartDataRowCount(ByVal Company As String) As Integer
    'Open the connection
    con.Open()
    'Set the command text and type
    Dim cmd As New OracleCommand("PART_DATA.GetPartDataRowCount", con)
    cmd.CommandType = CommandType.StoredProcedure
    cmd.BindByName = True
    'Create parameter objects
    Dim rowCount As New OracleParameter
    rowCount.Direction = ParameterDirection.Output
    rowCount.DbType = DbType.Int32
    cmd.Parameters.Add(rowCount)
    Dim mtmsCompany As New OracleParameter
    mtmsCompany.Direction = ParameterDirection.Input
    mtmsCompany.DbType = DbType.AnsiStringFixedLength
    mtmsCompany.Value = Company
    cmd.Parameters.Add(mtmsCompany)
    (Exception handling is done in Global.asax hence no Try/Finally)
    'Execute the query
    cmd.ExecuteScalar()
    'Capture the returned value
    Dim returnValue As Integer = Convert.ToInt32(rowCount.Value)
    'Return the returned value
    Return returnValue
    'Clean up objects
    RowCount.Dispose()
    cmd.Dispose()
    con.Dispose()
    End Function
    The package compiles without errors, but when I run the app I get the following error:
    Oracle.DataAccess.Client.OracleException: ORA-06550: line 1, column 39: PLS-00103: Encountered the symbol ">" when expecting one of the following:
    It then gives a long list of things it was expecting. Do I also need to return a Ref Cursor?
    Once again any help much appreciated.

  • Idoc number from personal number in ECC

    Hi All,
    i am new to idocs ,please tell me how to get the idoc number using the personal number.

    https://help.sap.com/saphelp_nw04/helpdata/en/d5/edf15ddcdc11d1890c0000e8216438/content.htm
    01. Go to T code We09 or WE10
    02.Give date range for Created on
    03.Give direction : Inbound or outbound
    04.Give basic Type/logical message/ Port etc  ( If you know - for faster search )
    05. Now next tab is Criteria for search in data record :--
    a. You need Segment name : find out segment name from we02 thru some existing / known Idoc .
    b. Field name : Fro WE02 can get this value
    C. Once you know Segment and field name of personal number - enter all three values and execute.
    You will get respective Idoc#
    Hope this helps. Let us  know if you need further input on this.
    Best Regards/Rajesh

  • Get ECC idoc number from PI

    Hi All
    IS there a way to get the IDOC number created in the ecc system from PI? A FM or something you can call the get the ecc idoc number?

    IDoc acknowledgements is the way to go.
    Configure ALEAUD and it should respond back with the IDoc number and what happened to the IDoc in SAP
    http://help.sap.com/saphelp_nw04/helpdata/en/0b/2a6550507d11d18ee90000e8366fc2/frameset.htm

  • Problem in finding Idoc number from Delivery document number(VERY URGENT)

    Hi experts,
    I have a delivery document number.Now i have to find the Idoc number for thet delivery document and extract some necessary data from one of the segment of that Idoc.So I am not able to find a link through tables .
    So I exact query is 'what is the selection method i have to follow to get the idoc number given the delivery document number'.
    Regards,
    Praveen.
    Edited by: Praveen Jada on Mar 14, 2008 12:15 PM

    That's what I meant, do the following query:
    DATA: LT_DOCNUM TYPE TABLE OF EDI_DOCNUM.
    SELECT DOCNUM
      INTO TABLE LT_DOCNUM
      FROM EDID4
      WHERE SEGNAM EQ 'E1EDL20'
      AND SDATA EQ '0001234567%'.
    This will list you all the IDOC numbers in which delivery number 0001234567 appear in the delivery header segment.
    Depending on your process it's probably going to be one entry only.
    Hope that clarifies it,
    Michael

  • IDOC Number from payload in Alerts with out BPM

    Hi Everybody,
    I need to send the IDOC Number as Alert for the user.
    Is it possible to do with out BPM either by Alert Frame Work or CCMS?
    Is there any alternative way to capture the Idoc number and display for the erroneous messages?
    Helpful Answers will be rewarded points.
    Thanks,
    Zabi

    Yes,
    You can also do it via alerts.
    Alert can be triggered in different ways.
    1) Triggering by Calling a Function Module Directly. or from UDF
    /people/bhavesh.kantilal/blog/2006/07/25/triggering-xi-alerts-from-a-user-defined-function
    2) Triggering by Calling a Function Module in the Workplace Plug-In.
    3) Triggering with an Event Linkage.
    4) Triggering with the Post Processing Framework (PPF) or Message Control (MC)
    5) Triggering from a Workflow.
    6) Triggering from CCMS with autoreaction.
    7) Triggering from BPM.
    /people/michal.krawczyk2/blog/2005/03/13/alerts-with-variables-from-the-messages-payload-xi--updated
    /people/community.user/blog/2006/10/16/simple-steps-to-get-descriptive-alerts-from-bpm-in-xi
    8) Triggering alert by configuring a rule from RWB.
    http://help.sap.com/saphelp_nw2004s/helpdata/en/56/d5b54020c6792ae10000000a155106/content.htm
    Br,
    Madan Agrawal

  • Finding an idoc number from a given sales document

    hi,
           please send me the code for the finding idoc number for a given sales document.
    it is urgent............
    thanks in advance..........

    I written the code to find the idoc number for given Purchase order number,so you can change the code depends on your requirement
    TYPE-POOLS: slis.
    tables : edid4 , edidc ,edids ,lfa1,teds2.
    DATA: t_fieldcatalog TYPE slis_t_fieldcat_alv.
    DATA: s_fieldcatalog TYPE slis_fieldcat_alv.
    DATA: s_layout TYPE slis_layout_alv.
    DATA: text11 LIKE E1EDP02.
    DATA: text111 LIKE E1MBXYI.
    DATA: s_keyinfo TYPE slis_keyinfo_alv.
    DATA: v_repid TYPE syrepid.
    DATA: V_MSGNO LIKE T100-MSGNR.
    *DATA: V_TEXT(90).
    DATA : WA_EDIDS TYPE EDIDS.
    data : begin of itab_edids occurs 0,
       user like edids-UNAME,
       date like edids-CREDAT,
       time like edids-cretim,
       idoc like edids-docnum,
      MESSAGETYPE like edidc-MESTYP,
      VENDOR LIKE EDIDC-SNDPRN,
      name like lfa1-name1,
      icon(1),
       EXPAND TYPE C,
    end of itab_edids.
    data : itab type edid4.
    data : begin of itab_edidc occurs 0,
         doc_num like edidc-docnum,
         MESSAGETYPE like edidc-MESTYP,
       IDOCTYPE like edidc-DOCTYP,
       PARTNERNUMBER like edidc-RCVPRN,
       PARTNERTYPE like edidc-RCVPRT,
      MESSAGECODE like edidc-MESCOD,
      VENDOR LIKE EDIDC-SNDPRN,
      data like edidc-credat,
    *include structure edidc.
      end of itab_edidc.
    data : begin of itab_status occurs 0,
    idoc like edids-docnum,
    date_stauus like edids-logdat,
    status_counter like edids-countr,
    staTus like edids-status,
    *descrp like teds2-descrp,
    DESCRP(70),
    ponumber like  ekpo-ebeln,
    MESS LIKE edidc-MESTYP,
    *appdoc like edids-stapa1,
    end of itab_status.
    data : text like edid4-sdata.
    DATA: text1 LIKE E1EDK01.
    data : begin of itab_teds1 occurs 0.
            include structure teds1.
    data end of itab_teds1.
    *selection-screen begin of block sb with frame title text-001.
    *select-options:
       s_rsdat for edidc-CREDAT.
    *selection-screen end of block sb.
    DATA: f_fieldcatalog TYPE slis_fieldcat_alv.
    selection-screen begin of block sb with frame title text-001.
    parameters:
           p_su radiobutton group gp1,
           p_re radiobutton group gp1,
           p_al radiobutton group gp1.
    select-options:
        s_rsdat for edids-creDAT,
        s_user for edids-uname.
    selection-screen end of block sb.
    initialization.
    PERFORM INITIALIZATION.
    start-of-selection.
    PERFORM DATA_RETRIVAL.
    PERFORM DATA_BASED_SELECTION.
    PERFORM PASSING_ALV.
    *select docnum mestyp doctyp rcvprn rcvprt mescod credat into
    *table itab_edidc from edidc
    *where credat in s_rsdat.
    *CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    *EXPORTING
    *i_program_name = v_repid
    *I_INTERNAL_TABNAME = 'ITAB_STATUS'
    *CHANGING
    *ct_fieldcat = t_fieldcatalog.
    *CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    *EXPORTING
    *i_program_name = v_repid
    *I_INTERNAL_TABNAME = 'ITAB_EDIDS'
    *CHANGING
    *ct_fieldcat = t_fieldcatalog.
    s_LAYOUT-ZEBRA = 'X'.
    *s_LAYOUT-SUBTOTALS_TEXT = 'SUBTOTAL'.
    *s_LAYOUT-TOTALS_TEXT = 'TOTAL'.
    *&      Form  INITIALIZATION
          text
    -->  p1        text
    <--  p2        text
    FORM INITIALIZATION.
    V_REPID = SY-REPID.
      s_keyinfo-header01 = 'IDOC'.
      s_keyinfo-item01 = 'IDOC'.
    *s_layout-subtotals_text = 'SUBTOTAL TEXT'.
    *s_layout-key_hotspot = 'X'.
    *s_layout-expand_fieldname = 'EXPAND'.
      CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
           EXPORTING
                i_program_name         = V_REPID
                I_INTERNAL_TABNAME     = 'ITAB_STATUS'
                I_INCLNAME = V_repid
           CHANGING
                ct_fieldcat            = T_fieldcatalog
           EXCEPTIONS
                INCONSISTENT_INTERFACE = 1
                PROGRAM_ERROR          = 2
                OTHERS                 = 3.
      CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
           EXPORTING
                i_program_name         = V_REPID
                I_INTERNAL_TABNAME     = 'ITAB_EDIDS'
                I_INCLNAME = V_repid
           CHANGING
                ct_fieldcat            = T_fieldcatalog
           EXCEPTIONS
                INCONSISTENT_INTERFACE = 1
                PROGRAM_ERROR          = 2
                OTHERS                 = 3.
    f_fieldcatalog-just = 'L'.
    MODIFY t_fieldcatalog FROM f_fieldcatalog
    TRANSPORTING just
    WHERE  ( fieldname = 'IDOC' OR FIELDNAME = 'STATUS_COUNTER' ).
    f_fieldcatalog-SELTEXT_L = 'Status Message'.
    MODIFY t_fieldcatalog FROM f_fieldcatalog
    TRANSPORTING SELTEXT_L
    WHERE  fieldname = 'DESCRP'.
    f_fieldcatalog-TECH = 'X'.
    MODIFY t_fieldcatalog FROM f_fieldcatalog
    TRANSPORTING TECH
    WHERE  fieldname = 'EXPAND'.
    f_fieldcatalog-REPTEXT_DDIC = 'Vendor Name'.
    MODIFY t_fieldcatalog FROM f_fieldcatalog
    TRANSPORTING REPTEXT_DDIC
    WHERE  fieldname = 'NAME'.
    *f_fieldcatalog-REPTEXT_DDIC = 'V Code 32122'.
    *MODIFY t_fieldcatalog FROM f_fieldcatalog
    *TRANSPORTING REPTEXT_DDIC
    *WHERE  fieldname = 'VENDOR'.
    ENDFORM.                    " INITIALIZATION
    *&      Form  DATA_RETRIVAL
          text
    -->  p1        text
    <--  p2        text
    FORM DATA_RETRIVAL.
    select  uname credat cretim docnum into  table
    itab_edids from edids
                   where credat in s_rsdat and
                          uname in s_user and
                          countr = ' '.
    select  uname credat cretim docnum from edids
    *APPENDING CORRESPONDING FIELDS OF TABLE itab_edids
                  where logdat in s_rsdat and
                         uname in s_user.
                         SELECT budat hkont belnr shkzg wrbtr FROM bsas
    *APPENDING CORRESPONDING FIELDS OF TABLE it_temp WHERE hkont = w_glacct
    *"wa_cb-gl_account
    *AND bukrs IN (so_bukrs-low)
    *AND budat < so_date-low.
      delete  adjacent duplicates from itab_edids.
      if not itab_edids[]  is initial.
         select docnum mestyp doctyp rcvprn rcvprt mescod SNDPRN credat into
        table itab_edidc from edidc for all entries in itab_edids
        where docnum = itab_edids-idoc.
      endif.
    LOOP AT ITAB_edids.
       READ TABLE ITAB_EDIDC WITH KEY  DOC_NUM = ITAB_EDIDS-IDOC.
       itab_edids-messagetype = ITAB_EDIDC-MESSAGETYPE.
       itab_edids-VENDOR = ITAB_EDIDC-VENDOR.
       MODIFY ITAB_EDIDS.
       CLEAR ITAB_EDIDS.
       ENDLOOP.
    DELETE ITAB_EDIDC WHERE MESSAGETYPE = 'ORDERS'.
    loop at itab_edids.
    read table itab_edidc with key doc_num  = itab_edids-idoc.
    if sy-subrc ne 0.
    delete itab_edids.
    endif.
    endloop.
    select docnum logdat countr status into table itab_status from edids for
       all entries in itab_edidc where docnum = itab_edidc-doc_num.
       LOOP AT ITAB_STATUS.
       READ TABLE ITAB_EDIDC WITH KEY  DOC_NUM = ITAB_STATUS-IDOC.
       ITAB_STATUS-MESS = ITAB_EDIDC-MESSAGETYPE.
       MODIFY ITAB_STATUS.
       CLEAR ITAB_STATUS.
       ENDLOOP.
      loop at itab_status.
        clear : text ,text1 , text11, text111, itab.
       select single descrp from teds2 into itab_status-descrp
                              where status = itab_status-STATUS AND
                                   LANGUA = 'E'.
       select single sdata into text from edid4 where
         DOCNUM =  itab_status-idoc and
         segnam = 'E1EDK01'.
    *MOVE: text        TO text1,
         text1-BELNR TO itab_status-ponumber.
          itab_status-ponumber = text1-belnr.
       move text+83(30) to itab_status-ponumber.
       MODIFY ITAB_STATUS.
       clear itab_status.
    IF itab_status-MESS = 'WMMBXY'.
       select single * from edid4  INTO ITAB where segnam = 'E1MBXYI' AND
                     HLEVEL = '02' AND DOCNUM = itab_status-idoc.
    MOVE  : ITAB-SDATA  TO TEXT111 ,
    text111-EBELN TO itab_status-ponumber.
    **text1-BELNR TO ponumber.
    ELSE.
    select single * from edid4  INTO ITAB where segnam = 'E1EDP02' AND
                     HLEVEL = '03' AND DOCNUM = itab_status-idoc.
    MOVE  : ITAB-SDATA  TO TEXT11 ,
    *text1-EBELN TO ponumber.
    text11-BELNR TO itab_status-ponumber.
    endif.
        MODIFY ITAB_STATUS.
        clear itab_status.
      endloop.
    ENDFORM.                    " DATA_RETRIVAL
    *&      Form  PASSING_ALV
          text
    -->  p1        text
    <--  p2        text
    FORM PASSING_ALV.
    s_LAYOUT-EXPAND_FIELDNAME = 'EXPAND'.
    DATA: t_events TYPE slis_t_event.
    DATA: s_events LIKE LINE OF t_events.
    s_events-form = 'TOP_OF_PAGE'.
    s_events-name = 'TOP_OF_PAGE'.
    APPEND s_events TO t_events.
    s_layout-lights_fieldname = 'ICON'.
    sort itab_status by status_counter descending. " -
    mod3
      CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
           EXPORTING
                i_callback_program = v_repid
                is_layout          = s_layout
                it_fieldcat        = t_fieldcatalog
                i_callback_user_command = 'USER_COMMAND'
                i_tabname_header   = 'ITAB_EDIDS'
                i_tabname_item     = 'ITAB_STATUS'
                IT_EVENTS          = t_events
                is_keyinfo         = s_keyinfo
           TABLES
                t_outtab_header    = itab_EDIDS
                t_outtab_item      = itab_STATUS
           EXCEPTIONS
                program_error      = 1
                OTHERS             = 2.
      IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDFORM.                    " PASSING_ALV
    *&      Form  DATA_BASED_SELECTION
          text
    -->  p1        text
    <--  p2        text
    FORM DATA_BASED_SELECTION.
    if p_su eq 'X'.
    *loop at itab_status where status = '53'.
    *select single stapa1 from edids into itab_status-appdoc
    where  docnum = itab_status-idoc and status = '53'.
    *delete itab_status where status ne '53'.
    *modify itab_status.
    *endloop.
    delete itab_status where status ne '53'.
    loop at itab_edids.
    read table itab_status with key idoc = itab_edids-idoc binary search.
    if sy-subrc ne 0.
    delete itab_edids.
    ELSE.
    *SHIFT ITAB_EDIDS-IDOC LEFT  DELETING LEADING '0'.
    MODIFY ITAB_EDIDS.
    endif.
    endloop.
    LOOP AT ITAB_STATUS WHERE MESS NE 'WMMBXY'.
    SELECT SINGLE * FROM EDIDS INTO WA_EDIDS WHERE DOCNUM = ITAB_STATUS-IDOC
    AND COUNTR = ITAB_STATUS-STATUS_COUNTER.
    IF  WA_EDIDS-STATXT CA '&'.
    V_MSGNO = WA_EDIDS-STAMNO.
    IF V_MSGNO NE '000'. "----mod3
    CALL FUNCTION 'MESSAGE_PREPARE'
    EXPORTING
    msg_id = WA_EDIDS-STAMID
    msg_no = V_MSGNO
    MSG_VAR1 = wa_edids-stapa1
    MSG_VAR2 = WA_EDIDS-STAPA2
    MSG_VAR3 = WA_EDIDS-STAPA3
    MSG_VAR4 = WA_EDIDS-STAPA4
    IMPORTING
    MSG_TEXT = itab_status-descrp.
    CONDENSE ITAB_STATUS-DESCRP.
    ENDIF."---- mod3
    ELSE .
    ITAB_STATUS-DESCRP = WA_EDIDS-STATXT.
    ENDIF.
    *SHIFT ITAB_STATUS-IDOC LEFT  DELETING LEADING '0'.
    *SHIFT ITAB_STATUS-STATUS_COUNTER LEFT  DELETING LEADING '0'.
    MODIFY ITAB_STATUS.
    ENDLOOP.
    LOOP AT ITAB_STATUS WHERE MESS EQ 'WMMBXY'.
    SHIFT ITAB_STATUS-IDOC LEFT  DELETING LEADING '0'.
    SHIFT ITAB_STATUS-STATUS_COUNTER LEFT  DELETING LEADING '0'.
    ITAB_STATUS-DESCRP = 'APPLICATION DOCUMENT POSTED'.
    MODIFY ITAB_STATUS.
    ENDLOOP.
    delete adjacent duplicates from  itab_edids comparing idoc.
    elseif p_re eq 'X'.
    loop at itab_status where status = '53'.
    delete itab_edids where idoc = itab_status-idoc.
    endloop.
    loop at itab_status.
    read table itab_edids with key idoc = itab_status-idoc binary search.
    if sy-subrc ne 0.
    delete itab_status.
    endif.
    endloop.
    LOOP AT ITAB_STATUS.
    SELECT SINGLE * FROM EDIDS INTO WA_EDIDS WHERE DOCNUM = ITAB_STATUS-IDOC
    AND COUNTR = ITAB_STATUS-STATUS_COUNTER.
    IF  WA_EDIDS-STATXT CA '&'.
    V_MSGNO = WA_EDIDS-STAMNO.
    IF V_MSGNO NE '000'. "----mod3
    CALL FUNCTION 'MESSAGE_PREPARE'
    EXPORTING
    msg_id = WA_EDIDS-STAMID
    msg_no = V_MSGNO
    MSG_VAR1 = WA_EDIDS-STAPA1
    MSG_VAR2 = WA_EDIDS-STAPA2
    MSG_VAR3 = WA_EDIDS-STAPA3
    MSG_VAR4 = WA_EDIDS-STAPA4
    IMPORTING
    MSG_TEXT = itab_status-descrp.
    CONDENSE ITAB_STATUS-DESCRP.
    endif. "-----mod3
    ELSE .
    ITAB_STATUS-DESCRP = WA_EDIDS-STATXT.
    ENDIF.
    SHIFT ITAB_STATUS-IDOC LEFT  DELETING LEADING '0'.
    SHIFT ITAB_STATUS-STATUS_COUNTER LEFT  DELETING LEADING '0'.
    MODIFY ITAB_STATUS.
    ENDLOOP.
    LOOP AT ITAB_EDIDS.
    SHIFT ITAB_EDIDS-IDOC LEFT  DELETING LEADING '0'.
    MODIFY ITAB_EDIDS.
    ENDLOOP.
    delete adjacent duplicates from  itab_edids comparing idoc.
    elseif p_al eq 'X'.
    delete adjacent duplicates from  itab_edids comparing idoc.
    LOOP AT ITAB_STATUS." WHERE MESS NE 'WMMBXY'.
    SELECT SINGLE * FROM EDIDS INTO WA_EDIDS WHERE DOCNUM = ITAB_STATUS-IDOC
    AND COUNTR = ITAB_STATUS-STATUS_COUNTER.
    IF  WA_EDIDS-STATXT CA '&'.
    V_MSGNO = WA_EDIDS-STAMNO.
    IF V_MSGNO NE '000'. "----mod3
    CALL FUNCTION 'MESSAGE_PREPARE'
    EXPORTING
    msg_id = WA_EDIDS-STAMID
    msg_no = V_MSGNO
    MSG_VAR1 = WA_EDIDS-STAPA1
    MSG_VAR2 = WA_EDIDS-STAPA2
    MSG_VAR3 = WA_EDIDS-STAPA3
    MSG_VAR4 = WA_EDIDS-STAPA4
    IMPORTING
    MSG_TEXT = itab_status-descrp.
    CONDENSE ITAB_STATUS-DESCRP.
    endif. "----mod3
    ELSE .
    ITAB_STATUS-DESCRP = WA_EDIDS-STATXT.
    ENDIF.
    *SHIFT ITAB_STATUS-IDOC LEFT  DELETING LEADING '0'.
    *SHIFT ITAB_STATUS-STATUS_COUNTER LEFT  DELETING LEADING '0'.
    MODIFY ITAB_STATUS.
    ENDLOOP.
    endif.
    LOOP AT ITAB_EDIDS.
      if p_su EQ 'X'.
      itab_edids-icon = '3'.
      elseif p_re eq 'X'.
       itab_edids-icon = '1'.
       ELSE.
       read table itab_sTATUS with  key idoc = itab_EDIDS-idoc
                                   STATUS  = '53' ."binary search.
       IF SY-SUBRC EQ 0.
        itab_edids-icon = '3'.
       ELSE.
       itab_edids-icon = '1'.
       ENDIF.
       ENDIF.
    select single name1 from lfa1 into itab_edids-name where
                lifnr = itab_edids-vendor.
    SHIFT ITAB_EDIDS-IDOC LEFT  DELETING LEADING '0'.
    MODIFY ITAB_EDIDS.
    clear itab_edids.
    ENDLOOP.
    loop at itab_status.
    SHIFT ITAB_STATUS-IDOC LEFT  DELETING LEADING '0'.
    SHIFT ITAB_STATUS-STATUS_COUNTER LEFT  DELETING LEADING '0'.
    if itab_status-descrp is initial.
    select single descrp from teds2 into itab_status-descrp
                               where status = itab_status-STATUS AND
                                    LANGUA = 'E'.
    endif.
    MODIFY ITAB_STATUS.
    clear itab_status.
    endloop.
    sort itab_status by idoc.
    sort itab_edids by idoc.
    ENDFORM.                    " DATA_BASED_SELECTION
    *& Form TOP_OF_PAGE
    text
    FORM TOP_OF_PAGE.
    SKIP.
    ULINE.
    IF P_SU EQ 'X'.
    WRITE : / 'TITLE : SUCCESSFULLY POSTED IDOC', 50 'DATE :', SY-DATUM..
    ELSEIF P_RE EQ 'X'.
    WRITE : / 'TITLE : REJECTED IDOCS'  ,50 'DATE :', SY-DATUM.
    ELSEIF P_AL EQ 'X'.
    WRITE : / 'TITLE : ALL IDOCS' ,50 'DATE :', SY-DATUM.
    ENDIF.
    WRITE  :/9 'Successful-Green light  Unsuccessful-Red Light'.
    format color COL_TOTAL intensified on.
    WRITE : / 'NOTE  : DOUBLE CLICK TO SEE CORREPONDING IDOC AND PO'.
    WRITE :/9 'DOUBLE CLICK IDOC NO ON HEADER LIST'.
    WRITE :  'AND PO NUMBER ON DETAIL LIST'.
    format color off.
    ULINE.
    SKIP.
    ENDFORM. "TOP_OF_PAGE
    FORM user_command *
    --> UCOMM *
    --> SELFIELD *
    FORM user_command USING ucomm LIKE sy-ucomm
    selfield TYPE slis_selfield.
    DATA: WA_IDOC9 LIKE EDIDC-DOCNUM.
    DATA: SELTAB     TYPE TABLE OF RSPARAMS,
          SELTAB_WA  LIKE LINE OF SELTAB.
    RANGES : R_DATE FOR EDIDC-CREDAT." SY-DATUM.
    IF ucomm = '&IC1'.
    if SELFIELD-SEL_TAB_FIELD = 'ITAB_EDIDS-IDOC'.
    READ TABLE itab_edids INDEX selfield-tabindex.
    IF sy-subrc = 0.
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
    EXPORTING
    INPUT = ITAB_edids-IDOC
    IMPORTING
    OUTPUT = WA_IDOC9.
    *r_date-low = itab_edids-date.
    *r_date-high = itab_edids-date.
    *r_date-SIGN = 'I'.
    *r_date-OPTION = 'BT'.
    *append r_date.
    SUBMIT RSEIDOC2  WITH DOCNUM = wa_idoc9
    WITH CREDAT in R_DATE[]  AND RETURN.
    ENDIF.
    ELSEIF SELFIELD-SEL_TAB_FIELD = 'ITAB_STATUS-PONUMBER'.
    READ TABLE itab_STATUS INDEX selfield-tabindex.
    IF sy-subrc = 0.
    SET PARAMETER ID 'BES' FIELD itab_sTATUS-PONUMBER.
    CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
    ENDIF.
    ENDIF.
    ENDIF.
    ENDFORM..
    Thanks
    Seshu

  • Find Idoc number from a PO

    I have created some outbound IDOCs for a PO. Is there an easier way to programatically find the IDOC numbers corresponding to the PO ? (Other than querying on EDID4 table and scanning the SDATA field ).
    THanks.

    Hi Shareen,
    To get IDOC no from a PO no you will have to write a custome function module to do this,
    you can use the follwing code for custome function module, which will take PO number, IDOC message type and Idoc type(basic type) as an input parameter and provide details of the IDOCs.
    FUNCTION ZSTEST.
    ""Local interface:
    *"  IMPORTING
    *"     REFERENCE(PONUMBER) LIKE  EKKO-EBELN
    *"     REFERENCE(MESTYP) LIKE  EDIDC-MESTYP
    *"     REFERENCE(IDOCTYPE) LIKE  EDIDC-IDOCTP
    *"  TABLES
    *"      IDOCINFO STRUCTURE  EDIDC
      DATA: int_edidc TYPE edidc OCCURS 100 WITH HEADER LINE.
      DATA: int_edidc1 TYPE edidc OCCURS 100 WITH HEADER LINE.
      DATA: int_edidd TYPE edidd OCCURS 100 WITH HEADER LINE.
      DATA: time_0 LIKE edidc-updtim VALUE '000000',
            time_24 LIKE edidc-updtim VALUE '240000'.
      DATA: value1_2 TYPE edipar0002-edi_value.
      DATA: SEGMENT1 LIKE EDISYN-SEGTYP value 'E1EDK01'.
      DATA: found1_1 TYPE c,  found_1 TYPE c.
      DATA: offset1_1 TYPE i value '84', end1_1 TYPE i value '118'.
      RANGES        : CRETIM  FOR EDIDC-CRETIM,
                      CREDAT  FOR EDIDC-CREDAT,
                      UPDTIM  FOR EDIDC-UPDTIM,
                      upddat  FOR EDIDC-upddat,
                      direct  FOR EDIDC-direct,
                      docnum  FOR EDIDC-docnum,
                      status  FOR EDIDC-status,
                      IDOCTP  FOR EDIDC-IDOCTP,
                      cimtyp  FOR EDIDC-cimtyp,
                      mestyp1  FOR edidc-mestyp,
                      sndpor  FOR EDIDC-sndpor,
                      sndprt  FOR EDIDC-sndprt,
                      sndprn  FOR EDIDC-sndprn,
                      rcvpor  FOR EDIDC-rcvpor,
                      rcvprt  FOR EDIDC-rcvprt,
                      rcvprn  FOR EDIDC-rcvprn.
      CRETIM-SIGN = 'I'.
      CRETIM-OPTION = 'BT'.
      CRETIM-LOW = time_0.
      CRETIM-HIGH = time_24.
      APPEND CRETIM TO CRETIM.
      CREDAT-SIGN = 'I'.
      CREDAT-OPTION = 'BT'.
      CREDAT-HIGH = SY-DATUM.
      APPEND CREDAT TO CREDAT.
      UPDTIM-SIGN = 'I'.
      UPDTIM-OPTION = 'BT'.
      UPDTIM-HIGH = time_24.
      APPEND UPDTIM TO UPDTIM.
      IDOCTP-SIGN = 'I'.
      IDOCTP-OPTION = 'EQ'.
      IDOCTP-LOW = IDOCTYPE.
      APPEND IDOCTP TO IDOCTP.
      mestyp1-SIGN = 'I'.
      mestyp1-OPTION = 'EQ'.
      mestyp1-low = mestyp.
      APPEND mestyp1 TO mestyp1.
      found1_1 = ' '.
      found_1 = ' '.
      SELECT * FROM edidc INTO TABLE int_edidc
         WHERE   upddat >= credat-low
         AND     cretim IN cretim
         AND     credat IN credat
         AND     updtim IN updtim
         AND     upddat IN upddat
         AND     direct IN direct
         AND     docnum IN docnum
         AND     status IN status
         AND     idoctp IN idoctp
         AND     cimtyp IN cimtyp
         AND     mestyp IN mestyp1
         AND     sndpor IN sndpor
         AND     sndprt IN sndprt
         AND     sndprn IN sndprn
         AND     rcvpor IN rcvpor
         AND     rcvprt IN rcvprt
         AND     rcvprn IN rcvprn
         ORDER BY PRIMARY KEY.
      LOOP AT INT_EDIDC.
        IF NOT PONUMBER IS INITIAL.
          CLEAR INT_EDIDD.
          REFRESH INT_EDIDD.
          CALL FUNCTION 'IDOC_READ_COMPLETELY'
               EXPORTING
                    document_number          = int_edidc-docnum
       IMPORTING
            IDOC_CONTROL             =
            NUMBER_OF_DATA_RECORDS   =
            NUMBER_OF_STATUS_RECORDS =
              TABLES
             int_edids                =
                   int_edidd                = int_edidd
               EXCEPTIONS
                    document_not_exist       = 1
                    document_number_invalid  = 2
                    OTHERS                   = 3.
          IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
          endif.
          IF NOT segment1 IS INITIAL.
            LOOP AT int_edidd WHERE segnam = segment1.
              found1_1 = ' '.
              SEARCH int_edidd-sdata FOR PONUMBER STARTING AT offset1_1
                                     ENDING AT end1_1.
              IF sy-subrc = 0.
                found1_1 = 'X'.
              ENDIF.
              IF found1_1 = 'X'.
                  MOVE-CORRESPONDING int_edidc TO int_edidc1.
                  APPEND int_edidc1.
                  CLEAR int_edidd-sdata.
                  found_1 = 'X'.
                  EXIT.
              ENDIF.
            ENDLOOP.
            IF found_1 = 'X'.
               IDOCINFO[] = int_edidc1[].
            ENDIF.
          ENDIF.
        ENDIF.
      ENDLOOP.
    ENDFUNCTION.

  • Saving IDOC Number from control_record_out before IDOC goes out.

    Hi,
    How would I save the IDOC number so that I can maintain a table with
    Idocnumber
    Document Number
    Date
    Etc
    The IDOC num is not populated until the system finally does save the idoc and send it? Right?
    Need that IDOC number via an exit or something.
    thanks.

    Use function SREL_GET_NEXT_RELATIONS to rather get the link after the IDOC has gone out.
    Any better/easier ways?
    regards

  • Idoc number from sales order in ECC

    Hi,
    Sales order is created by processing an Idoc. Now i want to trace back the idoc number for the sales order created.
    Please let me how we can do this in ECC. I saw couple of posts stating ICON SERVICE FOR OBJECTS...i couldn't really identify that icon. In someother post i saw this can found under Environment.
    Please let me know whether there are any prerequisites for this, and how i can i achieve this in ECC?
    Thank You in Advacne
    Thank You
    Challa

    Hi Challa,
    To find which idoc created the sales order, you can do the following,
    Check for the customer PO no in the sales order.
    Then go to any other inbound idoc which is bound to create a sales order, and see in which segment is the PO number.
    Then go to WE09 and put the dates etc and then go to " Criteria for search in Data Records"
    Put the segement no in Search in segement field.
    Put the idoc field in which you see the PO number
    and put the PO no in the " for Value" field and execute.
    You will get the idoc which created the sales order.
    Let us know.
    Regards,
    SB

  • How to retrieve serial number from a SUN Fire V440

    Good afternoon,
    In order to prepare a shipping of some machines, I am trying to collect serial numbers of all of them.
    One of those is a V440.
    Normally the way to retrieve the serial number is rebooting the machine, and then the serial number appears as one of the first outputs on screen.
    However on this one machine I see "MACHINE_SN".
    The ALOM of the machine does not know the command "showplatform".
    Do you know whether there is another way to retrieve the serial number of a V440 machine?
    Thanks
    Dominique

    Can I conclude that there is no way anymore to get the serial number of that machine?That would be correct.
    The actual serial is only on that sticker unless someone installs and uses SNEEP to write the information to the prom of a system.
    In your first post of this thread you mentioned seeing something named `serial` at bootup. That is only a representation of the systemboard's MAC address and isn't a chassis serial.
    Was Explorer ever installed to that V440 by any chance? If "yes" then you might hope that the serial number information was manually entered during the installation of that software tool.
    Now, having said all that, there were some model systems that had the chassis serial already written at the factory, but those were the bigger (expensive) midrange boxes such as the SF3800 through SF6900 models. That doesn't help you with your V440, though.

Maybe you are looking for