Links verwenden

Zu jedem Schritt im Wizard wird ein “Text im Dialog” verwendet, in dem der jeweilige Schritt kurz beschrieben wird. Hier ist es möglich, Hyperlinks zu verwenden, mit denen der Benutzer in andere Transaktionen abspringen kann.

Beispiel

Die Verwendung eines Links in einem Dialogtext könnte z.B. so aussehen:

Text

Der Text sieht folgendermassen aus:

U1 Fahrzeugdaten erfassen
AS In diesem Schritt werden die Kennungsdaten für das Fahrzeug erfasst.
   Bitte geben Sie alle erforderlichen Daten ein. Nur wenn die Eingaben
   vollständig sind, können Sie mit dem nächsten Schritt weiter machen.
AS Bitte klicken Sie <DS:TRAS.ZZ01>hier</>, um eine Übersicht über den
   aktuellen Bearbeitungsstatus zu sehen.

Der Link muss mit “<DS:” beginnen, damit sie korrekt als Link angezeigt wird. Sie können im Text über das Menü Einbinden – Verweis Standard-Links einbinden. Diese müssen dann zwar auch in der Implementierung berücksichtigt werden, aber sie werden korrekt als Link erkannt.

Sie können auch eigene Links einbauen, die werden jedoch mit einer Fehlermeldung angemeckert. Diese Meldung kann allerdings ignoriert werden.

Implementierung

Damit der Link auch abgearbeitet wird, müssen Sie in die Programmlogik des Wizards eingreifen.

Zu jedem Verarbeitungsschritt wird eine Routine CB_PROCESS_STEP_nnnn ausgeführt (nnnn ist die Nummer des jeweiligen Dynpros). In dieser Routine wird der Funktionsbaustein SWF_WIZARD_CALL aufgerufen. Es werden verschiedene Parameter übergeben, die den aktuellen Schritt steuern.

In der Übergabestruktur müssen das Programm und die Routine übergeben werden, die die Behandlung des Links durchführen soll:

l_wizard-htmlform   = ‘ZZ_HANDLE_LINK’.
l_wizard-htmlpool   = sy-repid.

Die Routine selbst hat einen Übergabeparameter:

FORM zz_handle_link USING value(action).
  CASE action.
    WHEN ‘DS:TRAS.ZZ01’.
      …
  ENDCASE.
ENDFORM.

Standard-Links verarbeiten

Um die Links korrekt verarbeiten zu können die über das Menü Einbinden – Verweise eingefügt werden können, kann das folgende Coding verwendet werden:

DATA: dokclass LIKE dsysh-dokclass,    “DSYS-Klasse
      dokname    LIKE dokil-object,
      outline    LIKE tdsgl-outline,
      hometext   LIKE dsygh-doktitle,
      wort       TYPE tline,
      subrc      TYPE sysubrc,
      pf15(1)    TYPE c VALUE ‘ ‘.

wort = action+10.

CASE wort(2).
  WHEN ‘DS’.                         “DSYS-Link
    REPLACE ALL OCCURRENCES OF ‘:’ IN wort WITH ”.
    PERFORM link_string_interpret(sapfsds1)
                                  USING wort
                               CHANGING dokclass
                                        dokname
                                        outline
                                        subrc.
    IF subrc NE 0.
      EXIT.
    ENDIF.
    hometext = ‘Link’.
    IF dokclass NE ‘ABAP’ AND
       dokclass NE ‘ABEN’ AND
       dokclass NE ‘DYNP’.
      CALL FUNCTION ‘DSYS_SHOW’
        EXPORTING
          dokclass         = dokclass
          doklangu         = sy-langu
          dokname          = dokname
          hometext         = hometext
          outline          = outline
        IMPORTING
          pf15             = pf15
        EXCEPTIONS
          object_not_found = 01
          class_unknown    = 02.
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid
                TYPE sy-msgty
                NUMBER sy-msgno
                WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.
    ELSE.
      CALL FUNCTION ‘ABAP_DOCU_SHOW’
        EXPORTING
          area  = dokclass
          name  = dokname
          langu = sy-langu.
    ENDIF.
ENDCASE.

 

Enno Wulff