Show TOC Anfang des Inhaltsbereichs

Cursorposition bestimmen  Dokument im Navigationsbaum lokalisieren

Nach einer Benutzeraktion auf dem Bildschirm kann es notwendig sein, die Cursorposition zum Zeitpunkt der Benutzeraktion zu kennen. Dies ist insbesondere dann der Fall, wenn die Funktion Auswählen (F2 oder Maus-Doppelklick) verwendet wird.

Zur Bestimmung der Cursorposition dient die Anweisung:

GET CURSOR FIELD f [OFFSET off]
                   [LINE lin]
                   [VALUE val]
                   [LENGTH len].

Diese Anweisung überträgt den Namen des Bildschirmelements auf dem der Cursor während einer Benutzeraktion steht, in die Variable f. Falls der Cursor auf einem Bildschirmelement steht wird sy-subrc auf 0, ansonsten auf 4 gesetzt.

Der Zusatz

·        OFFSET schreibt die Position des Cursors innerhalb des Bildschirmelements in die Variable off.

·        LINEschreibt bei Table Controls die Zeilennummer der Tabelle in die Variable lin. Außerhalb einer Tabelle wird lin auf Null gesetzt.

·        VALUEschreibt den Inhalt des Dynpro-Felds im Ausgabeformat, also inklusive Aufbereitungszeichen, als Zeichenkette in die Variable val.

·        LENGTHschreibt die Ausgabelänge des Dynpro-Felds in die Variable len.

Beispiel

Cursorposition auf Dynpros.

PROGRAM demo_dynpro_get_cursor.

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

DATA: input_output(20) TYPE c,
      fld(20) TYPE c,
      off     TYPE i,
      val(20) TYPE c,
      len     TYPE i.

CALL SCREEN 100.

MODULE init_screen_0100 OUTPUT.
  SET PF-STATUS 'STATUS_100'.
ENDMODULE.

MODULE user_command_0100 INPUT.
  save_ok = ok_code.
  CLEAR ok_code.
  CASE save_ok.
    WHEN 'CANCEL'.
      LEAVE PROGRAM.
    WHEN 'SELE'.
      GET CURSOR FIELD fld OFFSET off VALUE val LENGTH len.
  
ENDCASE.
ENDMODULE.

Die statische Folge-Dynpro-Nummer von Dynpro 100 ist 100 und sein Layout ist:

Diese Grafik wird im zugehörigen Text erklärt

Der hier relevante Teil der Elementliste ist wie folgt:

Name

Typ

Format

Text

Funktionscode

TEXT1

Text

 

Eingabe

 

input_output

I/O

CHAR

 

 

TEXT2

Text

 

Name

 

fld

I/O

CHAR

 

 

TEXT3

Text

 

Offset

 

off

I/O

INT4

 

 

TEXT4

Text

 

Inhalt

 

val

I/O

CHAR

 

 

TEXT5

Text

 

Länge

 

len

I/O

INT4

 

 

EXIT_BUTTTON

Push

 

Abbrechen

CANCEL

ok_code

OK

OK

 

 

Für alle Ein-/Ausgabefelder bis auf das Bildschirmfeld von input_output ist die Eingabemöglichkeit im Screen Painter ausgeschaltet.

Die Bildschirmablauflogik ist:

PROCESS BEFORE OUTPUT.
  
MODULE init_screen_0100.

PROCESS AFTER INPUT.
  
MODULE user_command_0100.

Im Modul init_screen_0100 werden zum Zeitpunkt PBO der GUI-Status STATUS_100 gesetzt. Im GUI-Status ist das Symbol Diese Grafik wird im zugehörigen Text erklärt (F12) durch den Funktionscode CANCEL aktiviert und der Funktionstaste F2 ist der Funktionscode SELE zugewiesen.

Bei Ausführung des Programms kann der Benutzer alle Bildschirmelemente durch Doppelklick oder allen Oberflächenelementen, die mit F2 verknüpft sind, auswählen. Die Ausgabefelder zeigen dann die entsprechende Cursorposition an.

 

 

Ende des Inhaltsbereichs