Focus auf Eingabefelder

Wenn ein HTML-Dokument angezeigt wird, das Eingabefelder enthält, dann muss immer erst der Cursor in das Eingabefeld gesetzt werden. Erst dann können Daten eingegeben werden. Praktischer wäre es, wenn der Focus sofort auf dem Eingabefeld liegen würde. SAP stellt dafür jedoch keine Methoden zur Verfügung. Mit ein bisschen HTML-Wissen geht es trotzdem…

Wenn Sie Ihr Dokument ähnlich mit Eingabefeldern versehen haben, wie im Beispielprogramm DD_ADD_FORM_INPUT, dann können Sie mit folgendem Trick den Eingabefocus direkt auf das erste Eingabefeld im Dokument setzen:

DATA position TYPE i.
DATA wa       TYPE sdydo_html_line.

SEARCH do->html_table FOR ‘<!%_BODYSTART>’.
IF sy-subrc EQ 0.
  position = sy-tabix.
  position = position – 1.
  CONCATENATE ‘onLoad=”‘
              ‘parent.frames[0].document.’
              ‘forms[0].’
              input1->id
              ‘.focus()”‘
        INTO  wa.
  INSERT wa INTO do->html_table INDEX position.
ENDIF.

“do” ist die Referenz auf CL_DD_DOCUMENT.

“input1” ist das Eingabefeld (CL_DD_INPUT_ELEMENT).

Das Einsetzen des “onLoad”-Befehls muss vor dem do->merge erfolgen.

Hinweis:
Wenn es nicht das erste Eingabefeld sein soll, dann müssen Sie ‘forms[0]’ anpassen. 0 ist das erste Eingabefeld, 1 das zweite und so weiter.

 

Enno Wulff