Anfang des InhaltsbereichsAnbindung von ABAP-Strings an Dynprofelder

ABAP-Felder, die mit den Datentypen STRING oder XSTRING deklariert sind, also Zeichenfolgen oder Bytefolgen dynamischer Länge, können wie Felder fixer Länge an gleichnamige Dynprofelder angebunden werden. Dabei ist aber zu beachten, daß es keine Dynprofelder variabler Länge gibt, sondern die Länge eines Dynprofelds immer durch das Elementattribut defLg im Screen Painter definiert ist. Dynprofelder entsprechen somit Zeichenfeldern vom Typ C in ABAP, deren Länge auch immer festgelegt ist.

Der Datentransport zwischen ABAP-Programm und Dynpro erfolgt daher bei ABAP-Feldern vom Typ STRING oder XSTRING wie bei einer ABAP-internen Zuweisung (MOVE) zwischen Zeichen-/Bytefolgen und Zeichenfeldern:

Diese Einschränkungen gelten sowohl für den Transport von und zu normalen Ein-/Ausgabefeldern als auch für Felder in Strukturlink Table Controls ohne zugeordnete interne Tabelle und bei der Verwendung von Strukturlink Dropdown-Boxen.

Beispiel

REPORT demo_dynpro_strings.

DATA: string1 TYPE string,
string2 TYPE string,
char1(10) TYPE c,
char2(100) TYPE c.

DATA len TYPE i.

string1 = '123 X'.
string1 = string1(10).
char1 = string1.
string2 = '12345678901234567890'.
char2 = string2.

len = strlen( string1 ).
WRITE: 'PBO:',
/ 'Length of STRING1:', len.
len = strlen( char1 ).
WRITE: / 'Length of CHAR1: ', len.
len = strlen( string2 ).
WRITE: / 'Length of STRING2:', len.
len = strlen( char2 ).
WRITE: / 'Length of CHAR2: ', len.
ULINE.

CALL SCREEN 100.

len = strlen( string1 ).
WRITE: 'PAI:',
/ 'Length of STRING1:', len.
len = strlen( char1 ).
WRITE: / 'Length of CHAR1: ', len.
len = strlen( string2 ).
WRITE: / 'Length of STRING2:', len.
len = strlen( char2 ).
WRITE: / 'Length of CHAR2: ', len.
ULINE.

Die statische Folgedynpronummer von Dynpro 100 ist 0 und sein Layout ist:

Diese Grafik wird im zugehörigen Text erklärt

Die Dynprofelder haben alle eine Länge von 10. In der Dynproablauflogik werden keine Module aufgerufen.

Bei Programmausführung wird das Bildschirmbild mit den Werten ' 123 ' und '1234567890' in den Feldern STRING1/CHAR1 bzw. STRING2/CHAR2 angezeigt. Nach der Bestätigung mit ENTER erscheint folgende Liste:

PBO:
Length of STRING1: 10
Length of CHAR1: 3
Length of STRING2: 20
Length of CHAR2: 20

PAI:
Length of STRING1: 3
Length of CHAR1: 3
Length of STRING2: 10
Length of CHAR2: 10

Zu PBO enthält STRING1 zehn Zeichen, davon sieben schließende Leerzeichen. Diese gehen bei der Zuweisung an CHAR1 verloren und die Zeichenlänge von CHAR1 ist nur drei.

Zu PAI enthält STRING1 auch nur noch drei Zeichen, da die Leerzeichen beim Transport zu und vom Dynpro unterdrückt werden.

Sowohl bei STRING2 als auch bei CHAR2 werden alle Zeichen, die nicht in die entsprechenden Dynprofelder passen, abgeschnitten.

 

 

Ende des Inhaltsbereichs