[SAP] IDOC-Verarbeitung

Transaktionen

BD67 (Eingangsmethoden pflegen)
BD79 (Pflege IDoc-Umsetzungsregeln)
BD87 (Statusmonitor für ALE-Nachrichten)

  • “IDocs im Eingang” selektieren -> Button “Verarbeiten”

SALE (ALE-Customizing anzeigen)
WE02 / WE05 (IDoc-Listen)

  • Selektion der IDocs
  • IDoc im ALV doppelklicken
  • Datensätz aufklappen
  • Doppelklick auf A4-Seiten-Icon vor dem Segment
  • Menü -> Datensatz -> Anzeigen -> Ändern
  • Einträge Ändern
  • Button “Speichern” (Blaue Diskette)

WE09 (IDocs suchen über Inhalt)
WE07 (IDoc Statistik)
WE11 (Löschen von IDocs)
WE19 (IDoc-Testwerkzeug (Simulation, Test und Verbuchung))

  • IDOC-Debugging
  • Erzeugen von Kopien eines existierenden IDocs -> ggf. Gefahr von Doppelbuchungen im System

WE20 (Partnervereinbarungen)
WE21 (Portbeschreibung)
WE30 (Entwicklung IDoc-Typ)
WE31 (Entwicklung IDoc-Segment)
WE41 (Vorgangscodes im Ausgang)
WE42 (Vorgangscodes im Eingang)
WE44 (Partnerarten und Prüfungen)
WE57 (Zuordnung Nachrichten zu Anw.-Objekt)
WE60 (Dokumentation für IDoc-Typen)
WE64 (Dokumentation Nachrichtentypen)
WE81 (Logische Nachrichtentypen)
WE82 (Zuordnung Nachrichten zu IDoc-Typ)
WE84 (Assignment of IDoc and appl. fields)
WLF_IDOC (IDoc Verarbeitung)

Programme

RC1_IDOC_SET_STATUS (EHS: Report zum IDOC-Status Umsetzen (nur für interne Zwecke von EHS)
RBDINPUT (Verarbeitung von eingehenden IDocs)
RBDMANIN (Starten der Fehlerbehandlung für nicht eingebuchte IDocs)
RBDMANI2 (Manuelle Verarbeitung von IDocs: Nicht gebuchte IDocs einbuchen)
RBDAPP01 (Eingangsverarbeitung von übergabebereiten IDocs)

Funktionsbausteine

EDI_DATA_INCOMING (EDI: Aufruf der Eingangsverarbeitung für eine IDoc-Datei)
IDOC_INBOUND_ASYNCHRONOUS (IDoc-Eingangsverarbeitung über tRFC)
IDOC_INBOUND_SINGLE (Eingangsverarbeitung für ein übergebenes IDoc)
IDOC_INBOUND_IN_QUEUE (IDoc: Eingang über qRFC)
IDOC_INBOUND_XML_SOAP_HTTP (eingang über soap http)
IDOC_INBOUND_XML_VIA_HTTP (eingang über http)
IDOC_CTRL_INBOUND_CONVERT (Konvertierung IDoc-Datensatz von externer in interne Darstellung)
IDOC_DATA_INBOUND_CONVERT (Konvertierung IDoc-Datensatz von externer in interne Darstellung)
IDOC_INBOUND_PROCESS_DATA_GET (Lesen der Verarbeitungsdaten für die IDoc-Eingangsverarbeitung)
IDOC_INBOUND_WRITE_TO_DB (Eingangs-IDoc mit Struktur EDI_DD wird auf der Datenbank abgespeichert)
IDOC_OUTPUT_ORDERS (Ausgabe Bestellungen für EDI in Zwischenstruktur ab Release 3.0A)
MASTER_IDOC_DISTRIBUTE (Schnittstelle der Anwendung zur ALE-Schicht auf der Ausgangsseite)
COMMUNICATION_IDOC_CREATE (ALE-Verarbeitung von Master-IDoc zu Communication-IDocs)
EDI_OUTPUT_NEW (EDI: Kommunikation)
ALE_IDOC_SERVICES_APPLY_IN (Ausführen der ALE-Services (Filtern, Umsetzen, …) für ein IDoc: Eingang)
ALE_IDOC_SERVICES_APPLY_OUT (Ausführen der ALE-Services (Filtern, Umsetzen, …) für ein IDoc: Ausgang)

Tabellen

EDIDC (Kontrollsatz (IDoc))
EDIDS (Statussatz (IDoc))
EDID4 (IDoc-Datensätze ab 4.0)
EDISDEF (IDoc Entwicklung : IDoc Segmentdefinitionen)
EDSAPPL (EDI: IDoc-Segment Anwendungsstruktur)
EDIMSGT (Kurzbeschreibung der SAP Nachrichtentypen)
EDIPORT (Sammeltabelle für alle Porttypen zur IDoc-Verarbeitung)
TBDLS (Logisches System)
EDIFCT (IDoc: Zuordnung von FB zu log. Nachricht und IDoc Typ)
TEDS2 (Kurzbeschreibung der IDoc-Statuswerte)

Includes

MBDCONST (ALE – Konstanten)

Links

[ABAP] IDoc: Strukturen der IDoc-Segmente in eine interne Tabelle lesen

* http://thinkdoforward.com/sap-idoc-tabellen-erfahrene-berater-kennen-diese-tabellen/

* Tabellen: EDIDC   – Kontrollsatz (IDoc)
*           EDIDS   – Statussatz (IDoc)
*           EDID4   – IDoc-Datensätze ab 4.0
*           EDISDEF - IDoc Entwicklung : IDoc Segmentdefinitionen
*           EDSAPPL - EDI: IDoc-Segment Anwendungsstruktur
*           EDIMSGT - Kurzbeschreibung der SAP Nachrichtentypen

TYPES: BEGIN OF ty_idoc_seg_entry,
         seg_name  TYPE string,
         comp_name TYPE string,
         value     TYPE string,
       END OF ty_idoc_seg_entry.

* IDoc-Nummer
PARAMETERS: p_idoc TYPE edidc-docnum DEFAULT '12345'.

START-OF-SELECTION.

* Lesen Segmentdaten des IDocs
  SELECT *
    INTO TABLE @DATA(it_int_edid)
    FROM edid4
    WHERE docnum EQ @p_idoc.

  IF sy-subrc = 0.
* Tabelle für aufbereitete Segmentdaten
    DATA: it_segment_data TYPE STANDARD TABLE OF ty_idoc_seg_entry WITH DEFAULT KEY.

* all. Feldsymbol für Umwandlung der Daten
    FIELD-SYMBOLS: <seg_data> TYPE any.

* Segmentdaten auslesen
    LOOP AT it_int_edid ASSIGNING FIELD-SYMBOL(<s>).
* Typecast für Umwandlung LCHR -> Type
      ASSIGN <s>-sdata TO <seg_data> CASTING TYPE (<s>-segnam).

* Typedescriptor zum Auslesen der einzelnen Datenfelder
      DATA(o_type) = cl_abap_typedescr=>describe_by_data( <seg_data> ).

      CASE o_type->kind.
* wenn Strukturtyp
        WHEN cl_abap_typedescr=>kind_struct.
          DATA(o_desc) = CAST cl_abap_structdescr( o_type ).

* Datenfelder der Struktur durchloopen
          LOOP AT o_desc->get_components( ) ASSIGNING FIELD-SYMBOL(<c>).
* Wert des Feldes auslesen
            ASSIGN COMPONENT <c>-name OF STRUCTURE <seg_data> TO FIELD-SYMBOL(<val>).
            IF <val> IS ASSIGNED.
* Zeile für Segment erstellen mit Segmentname, Komponenten-(Feld-)name, Wert
              APPEND VALUE #( seg_name  = <s>-segnam
                              comp_name = <c>-name
                              value     = <val>
                            ) TO it_segment_data.
            ENDIF.
          ENDLOOP.

        WHEN OTHERS.

      ENDCASE.
    ENDLOOP.

* Datenausgabe
    cl_demo_output=>display( it_segment_data ).
  ENDIF.

[ABAP] IDoc: Segmente und Statusinfos lesen

* http://thinkdoforward.com/sap-idoc-tabellen-erfahrene-berater-kennen-diese-tabellen/

* Tabellen: EDIDC   – Kontrollsatz (IDoc)
*           EDIDS   – Statussatz (IDoc)
*           EDID4   – IDoc-Datensätze ab 4.0
*           EDISDEF - IDoc Entwicklung : IDoc Segmentdefinitionen
*           EDSAPPL - EDI: IDoc-Segment Anwendungsstruktur
*           EDIMSGT - Kurzbeschreibung der SAP Nachrichtentypen

* IDoc-Nummer
PARAMETERS: p_idoc TYPE edidc-docnum DEFAULT '12345'.

START-OF-SELECTION.

  DATA: lv_idoc_control TYPE edidc.
  DATA: lv_number_of_data_records TYPE sy-dbcnt.
  DATA: lv_number_of_status_records TYPE sy-dbcnt.
  DATA: it_int_edids TYPE STANDARD TABLE OF edids WITH DEFAULT KEY.
  DATA: it_int_edidd TYPE STANDARD TABLE OF edidd WITH DEFAULT KEY.

* Lesen aller Informationen eines IDocs
  CALL FUNCTION 'IDOC_READ_COMPLETELY'
    EXPORTING
      document_number          = p_idoc
    IMPORTING
      idoc_control             = lv_idoc_control
      number_of_data_records   = lv_number_of_data_records
      number_of_status_records = lv_number_of_status_records
    TABLES
      int_edids                = it_int_edids
      int_edidd                = it_int_edidd
    EXCEPTIONS
      document_not_exist       = 1
      document_number_invalid  = 2
      OTHERS                   = 3.

  IF sy-subrc = 0.
    cl_demo_output=>write_data( lv_idoc_control ).
    cl_demo_output=>write_data( lv_number_of_data_records ).
    cl_demo_output=>write_data( lv_number_of_status_records ).
    cl_demo_output=>write_data( it_int_edids ).
    cl_demo_output=>write_data( it_int_edidd ).
    cl_demo_output=>display( ).
  ENDIF.