IDocs: Segmente mit benutzten Feldern ausgeben

Getting started ... Alles für einen gelungenen Start.
3 Beiträge • Seite 1 von 1
3 Beiträge Seite 1 von 1

IDocs: Segmente mit benutzten Feldern ausgeben

Beitrag von adazip (ForumUser / 9 / 0 / 0 ) » 19.06.2007 14:32
Hallo,

Kann mir jemend einen Tip geben, wie ich folgedes Problem lösen kann:

Ich habe ein Programm geschrieben mit welchem ich den Inhalt von IDocs auslese. Das Problem liegt jetzt darin, dass ich über die Tabelle EDID4 an die Segmentnamen komme und über Segnam = Segtyp in EDSAPPL auch an die Felder zu dem ausgewählten Segment.
Wenn ich das aber ausgeben will, bekomme ich alle Felder aus dem Segment und nicht nur die benutzten. Wo befindet sich ein Qualifier, Marker oder sonstwas, welche Felder im Segment benutzt werden ? Wie kann ich die Felder ausgeben, welche auch in dem jeweiligen IDoc benutzt werden ? Gibt es dazu eine eigene Tabelle mit den Verknüpfungen ?
Im Anschluß daran gleich noch die Frage, die kann ich die Daten aus sdata mit den Feldern verknüpfen ?
Ich danke sehr im voraus,

mit freundlichem Gruß

Adalbert


Re: IDocs: Segmente mit benutzten Feldern ausgeben

Beitrag von JHM (Top Expert / 1139 / 1 / 179 ) » 19.06.2007 15:34
adazip hat geschrieben: Wo befindet sich ein Qualifier, Marker oder sonstwas, welche Felder im Segment benutzt werden ?
Es werden immer alle Felder in einem Segment benutzt, aber nicht immer alle Felder des Segments gefüllt. Lass dich nicht von der standard IDoc Anzeige verwirren. Dies blendet nicht gefüllte Felder aus.
adazip hat geschrieben: Wie kann ich die Felder ausgeben, welche auch in dem jeweiligen IDoc benutzt werden ?
Wie willst du die Felder denn Ausgeben (Write, Control, etc.)? Wenn du nur gefüllte Felder ausgeben willst, dann brauchst du eine Abfrage je Feld, welche kontroliert ab es gefüllt ist.

Code: Alles auswählen.

  IF seg-field IS INITIAL.
    WRITE: seg-feld.
  ENDIF.
adazip hat geschrieben: Im Anschluß daran gleich noch die Frage, die kann ich die Daten aus sdata mit den Feldern verknüpfen ?
Es gibt im DDIC immer eine Struktur, die wie das Segement aufgebaut ist. Von dieser definierst du eine Variable und weißt dieser wiederum den Inhalt von sdata zu.

Code: Alles auswählen.

DATA: g_segment TYPE segment_structur.

g_segment = sdata.
Diese Technik funktioniert meines Wissens nicht mehr in UNICODE-Systemen. Da ich hier ein NON-UNICODE System habe kann ich das nicht testen.


Hoffe meine Antworten haben geholfen.
Gruß Hendrik

idoc-Daten mit Feldern zusammenbringen

Beitrag von adazip (ForumUser / 9 / 0 / 0 ) » 20.06.2007 15:33
Hallo,

vielen Dank für die schnelle Hilfe :)
Das Programm soll eine Alternative zu der IDoc Anzeige werden, es sollen alle relevanten Daten einfach über WRITE ausgegeben werden. Mit den Daten läuft das nur noch nicht so ganz.

Die Vorschläge habe ich umgesetzt, doch leider ohne Erfolg :(
Hier der Code:

Code: Alles auswählen.

* EDSAPPL enthäll die Segmentdefinitionen und die Feldnamen
data: g_s type edsappl.

loop at i_edidd.

* Beschreibung zu den Segmenten holen
  select * from edisegt
    where segtyp eq i_edidc-docnum and langua eq sy-langu.
  endselect.

  write: / i_edidd-segnam, edisegt-descrp.

  g_s = i_edidd-sdata.

* Feldnamen holen
  select fieldname from edsappl
    into (i_edsappl-fieldname)
    where segtyp eq i_edidd-segnam.

   if i_edsappl-fieldname is initial.
     write: / , 5 i_edsappl-fieldname.
   endif.
 endselect.

 write : / , 10 g_s.

endloop.
Die Ausgabe sieht so aus:
Segment
FELD
FELD
...
FELD
Daten

Segment ....

Es werden trotzdem alle Felder ausgegeben die das Segment enthällt :( Habe versucht auf SPACE abzufragen, aber leider geht das nicht...

Was heißt das genau mit dem Unicode-System. Wie kann ich das herausfinden ? Ich arbeite an einem Schulungssystem von SAP in Magdeburg (IDES).

Die Struktur zu den Segementen (EDISEGMENTE, SED4STRUC) habe ich gefunden, glaube ich..., du meintest sowas wie das mit EDIDD ist(Struktur von EDID4/2, EDIDD_OLD) , oder ?

Das Problem mit der Verknüpfung der Daten zu den Feldern ist, dass ich das so in etwa ausgeben muss wie es die Anzeige macht (WE05).
Habe den Quelcode von den Anzeigeprogrammen schon analysiert, aber noch nicht herausgefunden wie man sowas hinbekommt. Weisst du wei man sowas machen kann ? Ich wäre dir sehr dankbar.

schönen Gruß
adalbert

Seite 1 von 1

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und besseren Inhalt:

Aktuelle Forenbeiträge

Last erzeugen im SAPGui?
vor 2 Tagen von tm987456 23 / 335
Neue Felder cji5
vor 2 Tagen von Rabea1103 1 / 33

Vergleichbare Themen

OO ALV - Liste der zuletzt benutzten Mat.Nrn. anzeigen
von kkauerau » 07.08.2019 11:04
Eigene Makros aus der TRMAC benutzten
von danielA. » 05.04.2006 15:04
ADRMAS-Segmente vorbefüllen
von lausek » 15.02.2019 12:51
IDoc-Segmente löschen
von littleJohn » 18.11.2020 14:30
IDoc-Datei beinhaltet Segmente weniger als 1063 Byte
von genua » 10.01.2008 13:06