Unterschiede in der ABAP-Länge


Getting started ... Alles für einen gelungenen Start.

Moderatoren: Jan, Steff

Unterschiede in der ABAP-Länge

Beitragvon ABAPMeff » 05.12.2012, 10:00

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ß
ABAPMeff
ForumUser
 
Beiträge: 5
Registriert: 05.12.2012, 09:43
Dank erhalten: 0 mal
Ich bin: Student/in

Sponsor

Alte ABAP-Entwicklerweisheit: Weißt du weder aus noch ein, baust du einen BADI ein

Re: Unterschiede in der ABAP-Länge

Beitragvon a-dead-trousers » 05.12.2012, 10:37

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.07
Basis: 7.40
a-dead-trousers
Top Expert
 
Beiträge: 3106
Registriert: 07.02.2011, 13:40
Dank erhalten: 767 mal
Ich bin: Entwickler/in

Re: Unterschiede in der ABAP-Länge

Beitragvon ABAPMeff » 05.12.2012, 10:58

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.
ABAPMeff
ForumUser
 
Beiträge: 5
Registriert: 05.12.2012, 09:43
Dank erhalten: 0 mal
Ich bin: Student/in

Re: Unterschiede in der ABAP-Länge

Beitragvon a-dead-trousers » 05.12.2012, 11:52

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.07
Basis: 7.40
a-dead-trousers
Top Expert
 
Beiträge: 3106
Registriert: 07.02.2011, 13:40
Dank erhalten: 767 mal
Ich bin: Entwickler/in

Re: Unterschiede in der ABAP-Länge

Beitragvon ABAPMeff » 17.12.2012, 09:59

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ß
ABAPMeff
ForumUser
 
Beiträge: 5
Registriert: 05.12.2012, 09:43
Dank erhalten: 0 mal
Ich bin: Student/in

Re: Unterschiede in der ABAP-Länge

Beitragvon Frank Dittrich » 18.12.2012, 12:18

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
Frank Dittrich
Expert
 
Beiträge: 674
Registriert: 03.12.2002, 15:33
Dank erhalten: 16 mal


Zurück zu ABAP® für Anfänger

  Aktuelle Beiträge   
Applikations-Toolbar dynamisch erzeugen
vor 8 Stunden von ralf.wenzel 0 Antw.
CP_BD_DIRECT_INPUT_PLAN
Gestern von Gottschall 0 Antw.
Logische Datenbank: Selektieren mit Loop
vor 4 Stunden von deejey 12 Antw.
Globale Konstanten - Organisationseinheiten
vor 13 Stunden von ralf.wenzel 5 Antw.
Kein Zugriff auf Dateien im Applikationsserver
Gestern von zzcpak 1 Antw.

  Ähnliche Beiträge beta
gelöst Unterschiede/Vor-/Nachteile OPEN DATASET vs FB
15.06.2018, 12:00 von gs3rr4 2 Antw.
gelöst Länge von Nachrichten in SAP GUI
05.06.2018, 18:13 von ralf.wenzel 30 Antw.
Länge einer Struktur ?
14.10.2005, 21:47 von black_adept 1 Antw.
Lange Texte im Tabellenpflegegenerator
14.01.2019, 11:42 von DeathAndPain 15 Antw.
Feldabfrage nach Zeichen und Länge
25.07.2005, 14:23 von Gast 5 Antw.

 

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]

cron