Show TOC Anfang des Inhaltsbereichs

Hintergrunddokumentation 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:

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

       2.      Legen Sie ein Instanz-Attribut im Interface an. Dieses Attribut dient der Datenübergabe.

Diese Grafik wird im zugehörigen Text erklärt

       3.      Programmieren Sie den Aufruf der Screen-Erweiterung im Programm der Applikation:

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_subscreens
    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.

       4.      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 Subscreens.

       5.      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