Sei sulla pagina 1di 3

The following code demonstrates how to add user defined push buttons which conta in icons to a standard report

selection screen.Push buttons are used to trigger user functions with in the program to make them interactive with the user. The e xample below shows how buttons can allow you to dynamically alter a selection sc reen depending on which button is pressed. But they can be used for many other a pplications from displaying a window to calling other reports. *&----------------------------------------------------* *& Report ZSSCRBUTTONS2 * *&----------------------------------------------------* *& Adds buttons to selection screen. * *& Demonstrates alteration of selection screen layout* *& depending on which button is pressed. * *& * *& Additional Info: * *& TEXT-FY1 = 'Fiscal Year' * *& Selection text for SO_DATES = 'Date Period' * *&----------------------------------------------------* REPORT zsscrbuttons2. TABLES: sscrfields. DATA: gd_ucomm TYPE sy-ucomm. SELECTION-SCREEN BEGIN OF BLOCK period WITH FRAME TITLE text-t02. SELECT-OPTIONS: so_dates FOR sy-datum NO-EXTENSION. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 01(20) text-fy1. "= Fiscal Year SELECTION-SCREEN POSITION 33. PARAMETERS: p_period LIKE qppnp-pabrp. SELECTION-SCREEN POSITION 36. PARAMETERS: p_year LIKE qppnp-pabrj. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN PUSHBUTTON /01(29) but1 USER-COMMAND but1. SELECTION-SCREEN PUSHBUTTON /01(29) but2 USER-COMMAND but2. SELECTION-SCREEN END OF BLOCK period. ************************************************************************ *INITIALIZATION. INITIALIZATION. * MOVE 'Fiscal Year' TO BUT1. MOVE 'Date Period' TO but2. DATA: icon_name TYPE iconname, button_text(20) TYPE c, quickinfo LIKE smp_dyntxt-quickinfo, icon_str(255) TYPE c. * Setup button 1 (Fiscal year) icon_name = 'ICON_ARROW_RIGHT'. button_text = 'Fiscal Year'. CONCATENATE button_text text-akt INTO quickinfo SEPARATED BY space. CALL FUNCTION 'ICON_CREATE' " 'ICON_DISPLAY_MORE'.

EXPORTING name text info ADD_STDINF IMPORTING RESULT EXCEPTIONS OTHERS

= icon_name = button_text = quickinfo = 'X' = icon_str = 0. "not interested in errors

* place text and icon on button but1 = icon_str. * Setup button 2 (Date period) icon_name = 'ICON_ARROW_LEFT'. " 'ICON_DISPLAY_MORE'. button_text = 'Date Period'. CONCATENATE button_text text-akt INTO quickinfo SEPARATED BY space. CALL FUNCTION 'ICON_CREATE' EXPORTING name text info * ADD_STDINF IMPORTING RESULT EXCEPTIONS OTHERS * place text and icon on button but2 = icon_str. ************************************************************************ *AT SELECTION-SCREEN. AT SELECTION-SCREEN. * Check if buttons have been IF sscrfields-ucomm EQ 'BUT1'. gd_ucomm = 'BUT1'. ELSEIF sscrfields-ucomm EQ 'BUT2'. gd_ucomm = 'BUT2'. ENDIF. ************************************************************************ *AT SELECTION-SCREEN. AT SELECTION-SCREEN OUTPUT. IF gd_ucomm IS INITIAL. LOOP AT SCREEN. IF screen-name CS 'P_PERIOD' OR screen-name CS 'P_YEAR' OR screen-name CS 'FY1' OR screen-name EQ 'BUT2'. screen-active = 0. MODIFY SCREEN. ENDIF. ENDLOOP.

= icon_name = button_text = quickinfo = 'X' = icon_str = 0. "not interested in errors

ELSEIF gd_ucomm EQ 'BUT1'. LOOP AT SCREEN. IF screen-name CS 'P_PERIOD' OR screen-name CS 'P_YEAR' OR screen-name CS 'FY1' OR screen-name EQ 'BUT2'. screen-active = 1. MODIFY SCREEN. ENDIF. IF screen-name CS 'SO_DATES' OR screen-name EQ 'BUT1'. screen-active = 0. MODIFY SCREEN. ENDIF. ENDLOOP. ELSEIF gd_ucomm EQ 'BUT2' . LOOP AT SCREEN. IF screen-name CS 'P_PERIOD' OR screen-name CS 'P_YEAR' OR screen-name CS 'FY1' OR screen-name EQ 'BUT2'. screen-active = 0. MODIFY SCREEN. ENDIF. IF screen-name CS 'SO_DATES' OR screen-name EQ 'BUT1'. screen-active = 1. MODIFY SCREEN. ENDIF. ENDLOOP. ENDIF.

Potrebbero piacerti anche