Show TOC Anfang des Inhaltsbereichs

Attribute dynamisch setzen  Dokument im Navigationsbaum lokalisieren

Jedes Bildschirmfeld besitzt bestimmte Attribute, die bei der Definition des Dynpros im Screen Painter festgelegt werden. Während der Laufzeit des ABAP-Programms kann ein Teil der Attribute jedes Bildschirmfelds über spezielle Anweisungen in eine vordefinierte Struktur screen eingelesen und über diese modifiziert werden.

Die Struktur screen

Diese Struktur muss nicht im Programm deklariert werden. Auf  screen kann während der Dynpro-Verarbeitung in Dialogmodulen zugegriffen werden.

Komponente

Länge

Typ

Bedeutung

Attribut

name

132

C

Name des Bildschirmfelds

Name

group1

3

C

Modifikationsgruppe 1

Gruppe1

group2

3

C

Modifikationsgruppe 2

Gruppe2

group3

3

C

Modifikationsgruppe 3

Gruppe3

group4

3

C

Modifikationsgruppe 4

Gruppe4

required

1

C

Feldeingabe ist obligatorisch

Muss-Feld

input

1

C

Feld ist eingabebereit

Eingabe

output

1

C

Feld dient nur zur Anzeige

Ausgabe

intensified

1

C

Feld ist hervorgehoben

Hell

invisible

1

C

Feld ist ausgeblendet

Unsichtbar

length

1

X

Länge des Felds

visLänge

active

1

C

Feld ist aktiv

Eingabe/Ausgabe/Unsichtbar

display_3d

1

C

Dreidimensionaler Rahmen

Zweidimensional

value_help

1

C

Anzeige der Eingabehilfetaste

Eingabehilfe

request

1

C

Eingabe vorhanden

-

In der letzten Spalte sind die zugehörigen Attribute der Bildschirmfelder im Screen Painter aufgeführt.

Die Struktur screen  kann zum Zeitpunkt PBO eines Dynpros verwendet werden, um im ABAP-Programm Bildschirmelemente zu modifizieren. Die modifizierten Elemente übersteuern für genau einen Bildschirmaufruf die statischen Attribute der Bildschirmfelder. Die einzigen erlaubten Anweisungen zur Bearbeitung der Struktur screen sind:

LOOPAT SCREEN.
...
  MODIFY SCREEN.
...
ENDLOOP.

LOOP AT SCREEN ist eine eigene Anweisung, die nicht mit einer Schleife über eine interne Tabelle verwechselt werden darf.

Die Komponente NAME enthält den Namen des Bildschirmfelds. Die Komponenten GROUP1 bis GROUP4 können beliebige dreistellige Kürzel enthalten, die es erlauben die Bildschirmfelder in bis zu vier Modifikationsgruppen zusammenzufassen. Ein Bildschirmfeld kann zu verschiedenen Modifikationsgruppen gehören. Modifikationsgruppen sind eine Art weitere Schlüsselfelder der Struktur screen, die es erlauben, die Attribute aller Bildschirmfelder einer Gruppe gleichartig abzuändern. Die Zuordnung zu Modifikationsgruppen erfolgt statisch im Screen Painter, kann aber auch dynamisch im Programm überschrieben werden.

Die übrigen Komponenten dienen dem Auslesen und der Aktivierung bzw. Deaktivierung der Anzeigeattribute von Bildschirmfeldern. Dabei ist für alle Komponenten bis auf LENGTH der Inhalt 1 gleichbedeutend mit aktiv und der Inhalt 0 gleichbedeutend zu inaktiv.

ACTIVE, INPUT, OUTPUT und INVISIBLE

Die Komponenten ACTIVE, INPUT, OUTPUT und INVISIBLE haben untereinander gewisse Hierarchien und wirken auch unterschiedlich bei unterschiedlichen statischen Vorbelegungen.

Die Komponente ACTIVE hat keine Entsprechung in den Attributen, sondern sie beeinflusst die Attribute Eingabe, Ausgabe und Unsichtbar und entsprechend auch die Komponenten INPUT, OUTPUT und INVISIBLE.

Zu Beginn von PBO ist immer ACTIVE = 1, unabhängig von den statischen Vorbelegungen. Das Setzen von ACTIVE = 0 setzt automatisch auch INPUT = 0, OUTPUT =0 und INVISIBLE = 1. Andere Zuweisungen an INPUT, OUTPUT und INVISIBLE des aktuellen Bildschirmelements werden ignoriert. Umgekehrt führt das Setzen von INPUT = 0, OUTPUT =0 und INVISIBLE = 1 automatisch auch zu ACTIVE = 0. Eine andere Zuweisung an ACTIVE des aktuellen Bildschirmelements wird ignoriert. Der Zustand ACTIVE = 1 hat ansonsten keinen Einfluss auf die Attribute. Der einzige Zweck der Komponente ACTIVE ist es, ein Bildschirmfeld durch eine einzige Zuweisung inaktiv machen zu können. Insbesondere gilt, dass auch bei SCREEN-ACTIVE = 0 ein Modulaufruf immer abläuft, der mit einer entsprechenden FIELD-Anweisung in der Dynproablauflogik mit dem Bildschirmfeld verknüpft ist. Wenn ein Modul bei einem deaktivierten Feld nicht mehr ablaufen soll, muss man FIELD- und MODULE-Anweisungen getrennt angeben.

Daraus folgen acht verschiedene Kombinationen von ACTIVE, INPUT, OUTPUT und INVISIBLE, die sich wie folgt auf Bildschirmfelder auswirken:

ACTIVE

INPUT

OUTPUT

INVISIBLE

Effekt

1

1

1

0

Anzeige des Bildschirmfelds, auch wenn statisch Unsichtbar gesetzt ist.

Ausgabe des Inhalts.

Eingabebereit auch wenn nicht statisch Eingabe gesetzt ist, außer bei statischer Nur Ausgabe.

1

1

0

0

Anzeige des Bildschirmfelds, auch wenn statisch Unsichtbar gesetzt ist, außer bei statischer Nur Ausgabe.

Keine Ausgabe des Inhalts.

Eingabebereit auch wenn nicht statisch Eingabe gesetzt ist.

1

0

1

0

Anzeige des Bildschirmfelds, auch wenn statisch Unsichtbar gesetzt ist.

Ausgabe des Inhalts.

Nicht Eingabebereit auch wenn statisch Eingabe gesetzt ist.

1

0

0

0

Anzeige des Bildschirmfelds, auch wenn statisch Unsichtbar gesetzt ist, außer bei statischer Nur Ausgabe.

Keine Ausgabe des Inhalts.

Nicht Eingabebereit auch wenn statisch Eingabe gesetzt ist.

1

1

1

1

Anzeige des Bildschirmfelds, auch wenn statisch Unsichtbar gesetzt ist, außer bei statischer Nur Ausgabe.

Keine Ausgabe des Inhalts.

Eingabebereit auch wenn nicht statisch Eingabe gesetzt ist, wobei die Benutzereingabe durch Sterne (*) maskiert wird.

1

1

0

1

Anzeige des Bildschirmfelds, auch wenn statisch Unsichtbar gesetzt ist, außer bei statischer Nur Ausgabe.

Ausgabe des Inhalts durch Sterne (*) maskiert.

Eingabebereit auch wenn nicht statisch Eingabe gesetzt ist, wobei die Benutzereingabe durch Sterne (*) maskiert wird.

1

0

1

1

Bildschirmfeld inaktiv.

Keine Anzeige des Bildschirmfelds unabhängig von den statischen Attributen.

0

0

0

1

Bildschirmfeld inaktiv.

Keine Anzeige des Bildschirmfelds unabhängig von den statischen Attributen.

Das Setzen von INPUT = 1 wird für Felder, die statisch als Nur Ausgabe gekennzeichnet sind, ignoriert. Für solche Felder gilt immer INPUT = 0. Das Unsichtbarmachen von Benutzereingaben durch Sterne (*) kann für die Eingabe von Passwörtern verwendet werden.

Wenn durch die Ausblendung von Bildschirmfeldern ganze Zeilen frei werden, wird die Bildschirmgröße des Dynpros automatisch verringert. Diese Komprimierung kann in den statischen Dynproattributen durch das Ankreuzen von Ausschalten Laufzeitkomprimierung abgeschaltet werden.

REQUIRED

Mit dem Setzen von REQUIRED = 1 werden eingabebereite Felder obligatorisch gemacht. Der Benutzer kann den Bildschirm nur Verlassen, wenn alle solchen Felder eine Eingabe enthalten. Ausnahme: Funktionscodes vom Typ E und Aufruf eines Moduls mit dem Zusatz AT EXIT-COMMAND.

DISPLAY_3D

Mit dem Setzen von DISPLAY_3D = 0 können für Ein-/Ausgabefelder die dreidimensionalen Rahmen entfernt werden. Für Textfelder und Bildschirmfelder mit dem Attribut Nur Ausgabe können aber keine dreidimensionalen Rahmen mit DISPLAY_3D = 1 eingeschaltet werden.

VALUE_HELP

Mit dem Setzen von VALUE_HELP = 0 bzw. 1 läßt sich die Anzeige der Eingabehilfetaste an- und abschalten.

INTENSIFIED

Mit dem Setzen von INTENSIFIED = 1 läßt sich die Farbe der Anzeige des Feldinhalten von Schwarz auf Rot für eingabebereite und Blau für nicht eingabebereite Felder umschalten und umgekehrt.

LENGTH

Die Komponente LENGTH läßt sich für Ein-/Ausgabefelder und Felder vom Attribut Nur Ausgabe auf Werte kleiner als die statisch definierte Ausgabelänge (visLänge) setzen. Damit kann deren Ausgabelänge verkürzt werden. Das Verkürzen anderer Bildschirmelemente oder Verlängerungen sind nicht möglich.

REQUEST

Das Setzen von REQUEST = 1 wirkt für eingabebereite Felder zum Zeitpunkt PAI so, als wenn der Benutzer den Feldinhalt geändert hat. Ein bedingter Modulaufruf mit dem ON REQUESToder ON CHAIN-REQUESTwird dann unabhängig von der wirklichen Benutzeraktion ausgeführt. Dabei wird REQUEST automatisch wieder auf 0 gesetzt.

Beispiel

Das folgende Beispiel zeigt eine einfache Bildschirmmodifikation. Eine Demonstration aller möglichen Modifikationen zeigt das Programm DEMO_DYNPRO_MODIFY_SCREEN.

Beispiel

Dynamische Bildschirm-Modifikation.

REPORT demo_dynpro_modify_simple.

DATA: ok_code TYPE sy-ucomm,
      save_ok TYPE sy-ucomm.

DATA flag(1) TYPE c.

CALL SCREEN 100.

MODULE status_0100 OUTPUT.
  SET PF-STATUS 'SCREEN_100'.
  
LOOP AT SCREEN.
    IF screen-group1 = 'MOD'.
      IF flag = ' '.
        screen-input = '0'.
      ELSEIF flag = 'X'.
        screen-input = '1'.
      ENDIF.
      MODIFY SCREEN.
    ENDIF.
  ENDLOOP.
ENDMODULE.

MODULE cancel.
  LEAVE PROGRAM.
ENDMODULE.

MODULE user_command_0100 INPUT.
  save_ok = ok_code.
  CLEAR ok_code.
  CASE save_ok.
    WHEN 'TOGGLE'.
      IF flag = ' '.
        flag = 'X'.
      
ELSEIF flag = 'X'.
        flag = ' '.
      ENDIF.
  ENDCASE.
ENDMODULE.

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

Diese Grafik wird im zugehörigen Text erklärt

Die Ein- und Ausgabefelder sind von der Struktur DEMO_CONN des ABAP Dictionarys übernommen worden. Die untersten vier Ein- und Ausgabefelder sind der Modifikationsgruppe MOD zugeordnet.

Die Bildschirmablauflogik ist:

PROCESS BEFORE OUTPUT.
  
MODULE status_0100.

PROCESS AFTER INPUT.
  MODULE cancel AT EXIT-COMMAND.
  
MODULE user_command_0100.

Im GUI Status SCREEN_100 ist der Funktionscode TOGGLE mit einer Drucktaste verknüpft.

Beim Aufruf des Programms werden die untersten vier Ein-/Ausgabefelder nicht eingabebereit angezeigt, da die Variable flag initial ein Leerzeichen enthält. Der Benutzer kann die Eingabebereitschaft mit TOGGLE ein- und ausschalten.

 

Ende des Inhaltsbereichs