Start of Content Area

Finding Out the Cursor Position  Locate the document in its SAP Library structure

After user interaction with the screen, you may need to know the position of the cursor when the action occurred. This is particularly important if the user chooses the Choose function (F2 or mouse double-click).

To find out the cursor position, use the following statement:

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

This statement transfers the name of the screen element on which the cursor is positioned during a user action to the variable f. If the cursor is on a screen element, sy-subrc is set to 0. Otherwise it is set to 4.

The addition:

·        OFFSET writes the cursor position within the screen element to the variable off.

·        LINE writes the line number of the table to the variable lin if the cursor is positioned in a table control. If the cursor is not in a table control, lin is set to zero.

·        VALUE writes the contents of the screen field in display format – that is, with all of its formatting characters – as a string to the variable val.

·        LENGTH writes the display length of the screen field to the variable len.

Example

Cursor position on the screen.

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.

The next screen (statically defined) for screen 100 is 100. It has the following layout:

This graphic is explained in the accompanying text

The relevant extract of the element list is as follows:

Name

Type

Format

Text

Function Code

TEXT1

Text

 

Input

 

input_output

I/O

CHAR

 

 

TEXT2

Text

 

Name

 

fld

I/O

CHAR

 

 

TEXT3

Text

 

Offset

 

off

I/O

INT4

 

 

TEXT4

Text

 

Content

 

val

I/O

CHAR

 

 

TEXT5

Text

 

Length

 

len

I/O

INT4

 

 

EXIT_BUTTTON

Push

 

Cancel

CANCEL

ok_code

OK

OK

 

 

The input attribute of all of the input/output fields except input_output is switched off in the Screen Painter.

The screen flow logic is as follows:

PROCESS BEFORE OUTPUT.
  MODULE init_screen_0100.

PROCESS AFTER INPUT.
  MODULE user_command_0100.

The module init_screen_0100 sets the GUI status STATUS_100 during the PBO event. In the status, the cancel icon This graphic is explained in the accompanying text (F12) is active with the function code CANCEL, and the function key F2 is active with the function code SELE.

When you run the program, the user can select any screen element by double-clicking it, or use any screen element connected to the function code SELE. The output fields on the screen return the cursor position.

 

 

 

End of Content Area