Unterschiede in der ABAP-Länge

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

Unterschiede in der ABAP-Länge

Beitrag von ABAPMeff (ForumUser / 5 / 2 / 0 ) »
Hallo zusammen,

ich habe zwei "gleiche" Strukturen angelegt. Einmal mit Includes und einmal nur die Felder (der Includes), die Dictionary-Länge ist gleich jedoch gibt es unterschiede bei der ABAP-Länge. Hintergrund ist, dass diese Struktur für einen RFC verwendet wird und die Felder auf dem Zielsystem verschoben sind. Es scheint an dieser unterschiedlichen ABAP-Länge zu liegen, denn wenn ich die Struktur ohne Includes verwende funktioniert es ohne Probleme. Kann jemand diesen Fehler erklären oder hatte ein ähnliches Problem?

Danke & Gruß

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Unterschiede in der ABAP-Länge

Beitrag von a-dead-trousers (Top Expert / 4399 / 223 / 1182 ) »
hi!

Ich weiß jetzt nicht, wie die RFC-Schnittstelle auf unterschiedliche Strukturdefinition in Hinblick auf die Reihenfolge reagiert.
Persönlich würde ich erwarten, dass die Strukurlänge entscheidend ist. Sprich ist die Länge gleich, werden die Felder von links nach rechts aufgefüllt und das unabhängig von ihrer Reihenfolge. Dadurch kann es mitunter sein, dass der Inhalt eines Quell-Feldes auf mehrere Zielfelder aufgeteilt wird bzw. die Inhalte mehrerer Quellfelder in ein und demselben Zielfeld landen.
Aber ich kann mich auch täuschen ;)

Wie hast du denn die Struktur mit den INCLUDES definiert?
Mit INCLUDE TYPE (.INCLUDE im DDIC) oder ist jedes Teil-Include als eigenes Feld per Name eingebunden?

lg ADT
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Unterschiede in der ABAP-Länge

Beitrag von ABAPMeff (ForumUser / 5 / 2 / 0 ) »
Hi,

die Felder sind in der gleichen Reihenfolge und haben die gleiche Strukturlänge... Nur wenn ich im Dictionary unter Zusätze->Strukturbreite gehe kommt eine unterschiedliche ABAP-Länge, trotz das es die gleichen Felder sind :?
Die Struktur ist mit .INCLUDE Types definiert.

Re: Unterschiede in der ABAP-Länge

Beitrag von a-dead-trousers (Top Expert / 4399 / 223 / 1182 ) »
Aus der Hilfe zur Strukturlänge:
Die hier angezeigten Längen haben folgende Bedeutung:

In der Spalte 'Dictionary' ist die Summe der Angaben aus der Spalte
'Länge' der Komponentenanzeige aufaddiert. Strukturierte Komponenten
werden dabei expandiert, sofern sie nicht Type ... Boxed sind.

Die Spalte ABAP liefert die Gesamtlänge in der Laufzeitumgebung. Sie wird
aus dem zugehörigen Laufzeitobjekt übernommen.

Im Laufzeitobjekt muss je nach Komponententyp die Komponente ausgerichtet
werden, was die Gesamtlänge beeinflusst. Daher können sich die Summen
voneinander unterscheiden.
Das erklärt zumindest den Unterschied zwischen DB und DDIC aber der Unterschied zwischen zwei Strukturen mit denselben Feldern eher nicht.
(Hier gehts vor allem darum wenn man Zahlenfelder verwendet, dass die im Speicher mitunter anders verwaltet werden)

Wie schauen denn deine Strukturen aus? Kannst du die mal posten?
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Unterschiede in der ABAP-Länge

Beitrag von ABAPMeff (ForumUser / 5 / 2 / 0 ) »
Okay das Problem wurde gefunden, es erklärt zwar immer noch nicht warum die Längen auseinander gehen, aber wenigstens funktioniert die Übertragung. 8)

Tiefe Strukturen können bei der Übergabe per "Tables" Probleme bei der Übertragung machen, stattdessen sollten entweder flache Strukturen oder die Tabelle per Ex bzw. Importing übertragen werden.

Danke und Gruß

Re: Unterschiede in der ABAP-Länge

Beitrag von Frank Dittrich (Expert / 674 / 0 / 15 ) »
a-dead-trousers hat geschrieben:Das erklärt zumindest den Unterschied zwischen DB und DDIC aber der Unterschied zwischen zwei Strukturen mit denselben Feldern eher nicht.
Doch, auch das wird damit erklärt.

Denn wenn eine Struktur als erste Komponente ein Feld vom Typ X mit Länge 1 hat (oder in Nicht-Unicode-Systemen ein Feld vom Typ C mit Länge 1), danach ein Feld vom Typ I, dann wird es dazwischen eine Alignment-Lücke von 3 Bytes geben (mal angenommen, die Architektur verlangt 4-Byte-Alignment für Integers).
Wenn nun diese Include-Struktur in eine andere Struktur eingebunden wird, dürfte auch die Struktur selbst an 4-Byte-Grenzen ausgerichtet werden, d.h., je nach Länge der vorherigen Komponenten incl. Alignment-Lücken gibt es unmittelbar vor der Struktur auch eine Alignment-Lücke. (Das kann man mit einem Mini-ABAP-Report und dem Befehle DESCRIBE DISTANCE ... leicht prüfen.)
Wenn statt des Includes nun aber Einzelfelder in die Struktur aufgenommen werden, wird das erste Feld vom Typ X ohne Alignment-Lücke direkt an das vorherige Feld geklebt. Dann hätte man also eine Abweichung der Gesamtlänge, die durch ein Alignment vor dem Feld mit Typ X verursacht wird, falls nicht die Einzelfelder eingebunden werden, sondern die komplette Struktur.
Auch zwischen diesem Feld vom Typ X und dem nachfolgenden vom Typ I muss beim Einbinden von Einzelfeldern die Alignment-Lücke nicht unbedingt 3 Bytes sein. Sie kann auch kleiner sein oder ganz entfallen, je nachdem, welche Gesamtlänge in Bytes erreicht ist, bevor das Feld vom Typ I kommt.

Frank

Seite 1 von 1

Vergleichbare Themen

10
Antw.
1936
Views
(Lange) Gedankenstriche in ABAP
von ralf.wenzel » 22.02.2024 21:54 • Verfasst in ABAP® Core
2
Antw.
4840
Views
ABAP in Smartforms: Länge einer CHAR Variablen festlegen
von Nautilus » 23.02.2006 14:17 • Verfasst in ABAP® Core
0
Antw.
3066
Views
1
Antw.
3104
Views
Konvertierug vom datentyp char der länge 4 in char der länge
von ratoshuan » 28.06.2006 11:33 • Verfasst in ABAP® Core
4
Antw.
12212
Views
Unterschiede
von kostonstyle » 15.09.2008 11:50 • Verfasst in Sales and Distribution

Aktuelle Forenbeiträge

Regex in where
vor 13 Stunden von tar 8 / 317
Daten an Tabelle binden
Gestern von Bright4.5 3 / 1597
Programm anlegen mit Vorlage
vor 2 Tagen von DeathAndPain 2 / 245
IT0024 Qualifikationen CP-ID
vor 2 Tagen von DeathAndPain 2 / 486

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

Regex in where
vor 13 Stunden von tar 8 / 317
Daten an Tabelle binden
Gestern von Bright4.5 3 / 1597
Programm anlegen mit Vorlage
vor 2 Tagen von DeathAndPain 2 / 245
IT0024 Qualifikationen CP-ID
vor 2 Tagen von DeathAndPain 2 / 486

Unbeantwortete Forenbeiträge

BUSOBJEKT zu CMIS PHIO ermitteln
vor 2 Tagen von snooga87 1 / 184
aRFC im OO-Kontext
letzen Monat von ralf.wenzel 1 / 3364
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9916