Defining Screen Enhancements

For general information on how to define Business Add-Ins, see Defining Business Add-Ins.

...

       1.      Create the following methods.

The methods PUT_DATA_TO_SCREEN and GET_DATA_FROM_SCREEN are required for data transport. These methods are called from within the program of the application at PBO or PAI (see below).

You could create the methods with the following parameters for the example we have used.

Method:

Parameter:

Type:

Reference type:

PUT_DATA_TO_SCREEN

FLIGHT

IMPORTING

SFLIGHT

GET_DATA_FROM_SCREEN

FLIGHT

EXPORTING

SFLIGHT

       2.      Create an instance attribute in the interface. This attribute is used for passing data.

       3.      Write the code for the call of the screen enhancement in the program of the application:

Top Include:

DATA: program Type program,
      dynpro Type dynnr.

      exit type ref to if_ex_badi_screen

The variable for the object reference is created using data and typed to the interface.

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

The factory method is used to create an instance of the adapter class. You then declare the instance using the public static method SET_INSTANCE_FOR_SUBSCREEN to allow the data for display on the screen to be used in the function group of the user or in the module pool.

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.

The method GET_PROG_AND_DYNP_FOR_SUBSCR and the input/output parameters specified above are used to determine the name of the customer program and the name of the subscreen. The method PUT_DATA_TO_SCREEN called at PBO time as well as the method GET_DATA_FROM_SCREEN called at PAI time are used to transport the data to be displayed. These methods are implemented by the user.

When you define a screen enhancement, you are strongly recommended to provide sample code for the methods PUT_DATA_TO_SCREEN and GET_DATA_FROM_SCREEN. This code is automatically copied when you create an implementation and can be added to if required. The user of the BAdI definition should not be responsible for the data transport.

In this case, the sample code would look like this:

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.

The data to be displayed is assigned in the methods PUT_DATA_TO_SCREEN and GET_DATA_FROM_SCREEN using the interface attribute FLIGHT.

       4.      In the Screen Painter, create a subscreen area on the screen of the calling program, and assign the name 'SUB' to it. For more information on how to create subscreens, see Subscreens.

       5.      In the BAdI Builder, choose the Subscreens tab, and enter the calling program, the screen number, and the subscreen area.

 

See also:

Implementing Screen Enhancements