Cursorposition bestimmen 

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

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 Folgedynpronummer von Dynpro 100 ist 100 und sein Layout ist:

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_100 werden zum Zeitpunkt PBO der GUI-Status STATUS_100 gesetzt. Im GUI-Status ist das Symbol (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.