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: Wo befindet sich ein Qualifier, Marker oder sonstwas, welche Felder im Segment 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.adazip hat geschrieben: Wie kann ich die Felder ausgeben, welche auch in dem jeweiligen IDoc benutzt werden ?
Code: Alles auswählen.
IF seg-field IS INITIAL.
WRITE: seg-feld.
ENDIF.
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.adazip hat geschrieben: Im Anschluß daran gleich noch die Frage, die kann ich die Daten aus sdata mit den Feldern verknüpfen ?
Code: Alles auswählen.
DATA: g_segment TYPE segment_structur.
g_segment = sdata.
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.