Anfang des InhaltsbereichsHintergrunddokumentation Screen-Erweiterung definieren Dokument im Navigationsbaum lokalisieren

Allgemeines zur Definition von Business Add-Ins finden Sie unter Definition eines Business Add-Ins.

  1. Legen Sie folgende Methoden an:
  2. Diese Grafik wird im zugehörigen Text erklärt

    Die Methoden PUT_DATA_TO_SCREEN und GET_DATA_FROM_SCREEN werden für den Datentransport benötigt. Diese Methoden werden aus dem Programm der Applikation zum Zeitpunkt PBO bzw. PAI aufgerufen (siehe unten).

    Die Methoden könnten für das vorliegende Beispiel mit folgenden Parametern angelegt werden:

    Methode:

    Parameter:

    Art:

    Bezugstyp:

    PUT_DATA_TO_SCREEN

    FLIGHT

    IMPORTING

    SFLIGHT

    GET_DATA_FROM_SCREEN

    FLIGHT

    EXPORTING

    SFLIGHT

  3. Legen Sie ein Instanz-Attribut im Interface an. Dieses Attribut dient der Datenübergabe.
  4. Diese Grafik wird im zugehörigen Text erklärt

  5. Programmieren Sie den Aufruf der Screen-Erweiterung im Programm der Applikation:
  6. Top-Include:

    DATA: program Type program,
          dynpro Type dynnr.
          exit type ref to if_ex_badi_screen

    Die Variable für die Objektreferenz wird mit data angelegt und auf das Interface typisiert.

    Zeitpunkt PBO:

    MODULE initialize OUTPUT.
    CLEAR: sflight, ok_code.

     IF exit IS INITIAL.
      CALL METHOD cl_exithandler=>get_instance
        CHANGING
          instance = exit.
     ENDIF.
     CALL METHOD cl_exithandler=>set_instance_for_subscreen
        EXPORTING
          instance = exit.
    ENDMODULE.

    Über die Factory-Methode wird eine Instanz der Adapterklasse erzeugt. Anschließend wird die Instanz mit Hilfe der öffentlichen, statischen Methode SET_INSTANCE_FOR_SUBSCREEN bekannt gemacht, um eine Verwendung der im Dynpro anzuzeigenden Daten in der Funktionsgruppe des Verwenders bzw. im Modulpool zu ermöglichen.

    MODULE data_for_subscreen OUTPUT.

      program = sy-repid.
      dynpro = sy-dynnr.
      CALL METHOD cl_exithandler=>get_prog_and_dynp_for_subscr
        EXPORTING
          exit_name       = 'BADI_SCREEN'
          calling_program = program
          calling_dynpro  = dynpro
          subscreen_area  = 'SUB'
        IMPORTING
          called_program  = program
          called_dynpro   = dynpro.
      CALL METHOD exit->put_data_to_screen
        EXPORTING
          flight   = sflight
        EXCEPTIONS
          reserved = 01.
    ENDMODULE.

    Zeitpunkt PAI:

    MODULE user_command_0200 INPUT.

      CASE save_ok.
        WHEN 'BACK'.
          SET SCREEN 100.
        WHEN 'SAVE'.
          PERFORM save_flights.
        WHEN '+EXT'.
          CALL METHOD exit->get_data_from_screen
            IMPORTING
              flight      = sflight
            EXCEPTIONS
              reserved    = 01.
      ENDCASE.

    ENDMODULE.

    Mit der Methode GET_PROG_AND_DYNP_FOR_SUBSCR und den oben aufgeführten Ein-/Ausgabeparametern werden der Name des Kundenprogramms und der Name des Subscreens ermittelt. Der Aufruf der Methode PUT_DATA_TO_SCREEN zum Zeitpunkt PBO dient ebenso wie die zum Zeitpunkt PAI aufgerufene Methode GET_DATA_FROM_SCREEN dem Datentransport der anzuzeigenden Daten. Diese Methoden werden vom Verwender implementiert.

    Hinweis

    Bei der Definition einer Screen-Erweiterung sollten Sie unbedingt Beispielcoding für die Methoden PUT_DATA_TO_SCREEN und GET_DATA_FROM_SCREEN zur Verfügung stellen. Dieses wird beim Anlegen einer Implementierung automatisch übernommen und kann ggf. erweitert werden. Der Verwender der BAdI-Definition sollte nicht für den Datentransport verantwortlich sein.

    In diesem Fall würde das Beispielcoding folgendermaßen aussehen:

    method IF_EX_BADI_SCREEN~PUT_DATA_TO_SCREEN .
      me->if_ex_badi_screen~flight = flight.
    endmethod.

    method IF_EX_BADI_SCREEN~GET_DATA_FROM_SCREEN .
      flight = me->if_ex_badi_screen~flight.
    endmethod.

    In den Methoden PUT_DATA_TO_SCREEN und GET_DATA_FROM_SCREEN erfolgt die Zuordnung der anzuzeigenden Daten über das Interface-Attribut FLIGHT.

  7. Legen Sie im Screen Painter einen Subscreen-Bereich auf dem Dynpro des rufenden Programms an, und versehen Sie den Subscreen-Bereich mit dem Namen 'SUB'. Weitere Informationen zum Anlegen von Subscreens finden Sie im Abschnitt Strukturlink Subscreens.
  8. Wählen Sie im BAdI-Builder das Register Subscreens und geben Sie das rufende Programm, die Dynpronummer und den Subscreenbereich ein.

Diese Grafik wird im zugehörigen Text erklärt

 

Siehe auch:

Screen-Erweiterung implementieren

Ende des Inhaltsbereichs