Allgemeines zur Definition von Business Add-Ins finden Sie unter
Definition eines Business Add-Ins.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 |
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.
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.
Siehe auch:
Screen-Erweiterung implementieren