SAP Jobsuche bei DV-Treff
Dirk Steffens
vor 7 Jahre
Hallo,

dies ist mein erster Post in diesem Forum. Falls ich einen Fehler mache, bitte ich im Voraus um Entschuldigung.Ich entwickle ein externes Lagerverwaltungssystem. Ich bekomme Wareneingänge mit dem ZMBGMCR-IDOC als EDI-Textdatei übertragen.

In der vorliegenden Doku ist das Segment E2BP2017_GM_HEAD_01003 beschrieben:

Segmentdefinition E2BP2017_GM_HEAD_01003 freigegeben seit Release 620 ,

Segmentlänge : 0208

innerhalb des Segments gibt es das Feld REF_DOC_NO_LONG:

REF_DOC_NO_LONG : Referenz-Belegnummer (Abhängigkeiten siehe Langtext)

interner Datentyp : CHAR

interne Länge : 000035 Stellen

Position in Segment : 011, Offset : 0161. externe Länge : 000035

Nun das Problem:

In der Datei die ich erhalte wird die Zeile beginnend mit E2BP2017_GM_HEAD_01003 am Ende des Inhalts des Felds REF_DOC_NO_LONG, also nach 161+8 Zeichen abgeschnitten, es folgt ein 0D0A ().

Frage:

Laut der Nachrichtendefinition sollte das Segment ja eigentlich 208 Zeichen lang sein. Aber es ist jetzt nur 169 Zeichen lang. Gibt es in SAP eine Einstellung, die das vorzeitige Abschneiden von Zeilen steuert?

Mit freundlichen Grüßen,

Dirk Steffens

Förderer

peterl
vor 7 Jahre
Hallo,

die Struktur E1BP2017_GM_HEAD_01 hat laut Dictionary eine Dictionary-Länge von 208 und eine ABAP-Länge von 408.

Unten die Doku zu den beiden Längenangaben; die ABAP-Länge ist mit 'Interne Länge in Bytes' angegeben.

Vielleicht hilft das weiter.

Das Feld Datum (hier PSTNG_DATE oder DOC_DATE ist SAP-intern vom Typ DATS (8 Stellen) und hat eine Ausgabelänge von 10 Zeichen.

Der Datenteil eines Idoc-Segments hat übrigens eine Länge von 1000 und ist vom Typ LCHR (siehe Struktur EDIDD).

Das ZMBGMCR-IDOC ist übrigens kein SAP-Standard, sondern entweder ein reduzierter Nachrichtentyp oder eine Erweiterung zum Basistyp MBGMCRnn - das geht nicht eindeutig aus der Frage hervor. - Vielleicht liegt das Problem schon im Z-Bereich (Kundenentwicklung).

Gruß

Peter

Dictionary-Länge

Länge (Anzahl der Zeichen)

Anzahl der gültigen Positionen eines Feldes ohne Aufbereitungszeichen

(z.B. Kommata oder Punkte).

Abhängigkeiten

Beachten Sie, daß einige Datentypen eine feste Länge haben. Zum

Beispiel ist der Datentyp CLNT (Mandant) stets dreistellig. Falls Sie

für einen solchen Datentyp eine unzulässige Länge eingeben, wird dies

vom System nach einer Warnung automatisch korrigiert.

String-Datentypen (STRING, RAWSTRING) besitzen eine unbeschränkte

Länge.

Im Dictionary kann dennoch eine Länge (mindestens 256 Zeichen)

angegeben werden. Diese wird als Basis für Optimierungen bei der

Ablage von String-Feldern auf der Datenbank benutzt. Ab einer gewissen

Länge sind keine Optimierungen mehr möglich, daher kann hier die

Längenangabe ganz entfallen (Länge 0).

Wenn im Dictionary die Länge 0 angegeben wird, wird keine Optimierung

bei der Ablage auf der Datenbank durchgeführt, sondern eine

unbeschränkte Länge angenommen.

Interne Länge in Bytes

Zahl der Stellen einschließlich der Nachkommastellen bei Dezimalzahlen.

Die Aufbereitungszeichen (Kommata und Punkte) werden hierbei nicht

berücksichtigt.