* _ _ _ _ _ * /_\ | |__ __ _ _ __ ___ __ _ __| | __ _| |__ _ __ /_\ * //_\\| '_ \ / _` | '_ \ / __/ _` |/ _` |/ _` | '_ \| '__//_\\ * / _ \ |_) | (_| | |_) | (_| (_| | (_| | (_| | |_) | | / _ \ * \_/ \_/_.__/ \__,_| .__/ \___\__,_|\__,_|\__,_|_.__/|_| \_/ \_/ * |_| www.abapcadabra.com *---------------------------------------------------------------------------- * program : ZABAPCADABRA_RUNMANAGER * title : Run a report through a variant * functional area : Cross modules * environment : 4.7 * program Function : This report can be used to call another report though * it's variant, for ease-of-use. Complex variant settings * for a given task can be hidden for the end user. * Documentation : Search for "Run manager" on AbapcadabrA.com * Previous version : This is the initial version * Developer name : Wim Maasdam * Development date : 05/10/2017 * Version : 0.1 *--------------------------------------------------------------------- * Change list: * Date Description * 05/10/2017 Initial release *--------------------------------------------------------------------- * __ _ * /\ \ \__ _ _ __ ___ (_)_ __ __ _ * / \/ / _` | '_ ` _ \| | '_ \ / _` | * / /\ / (_| | | | | | | | | | | (_| | * \_\ \/ \__,_|_| |_| |_|_|_| |_|\__, | _ _ * ___ ___ _ ____ _____|___/ | |_(_) ___ _ __ ___ * / __/ _ \| '_ \ \ / / _ \ '_ \| __| |/ _ \| '_ \/ __| * | (_| (_) | | | \ V / __/ | | | |_| | (_) | | | \__ \ * \___\___/|_| |_|\_/ \___|_| |_|\__|_|\___/|_| |_|___/ * Selection screen variables: * PA_ Parameter field * SO_ Select-option field * Globally defined variables: Locally defined variables: * TY_ Type definition | LTY_ Locally defined Type definition (types: begin of lty_...) * GC_ Constant | LC_ Constant * GV_ Variable | LV_ Variable * GW_ Work Area | LW_ Work Area (holding multiple fields) * GT_ internal Table | LT_ internal Table * GR_ Range variable | LR_ Range variable (type range of) * GO_ Object variable | LO_ Object variable (type ref to ..) * LCL_ Local class definition/implementation * Field-symbols: * - Field symbol definitions have no naming convention, but * should be used for a single data type only * Local classes: * - A local class can hold globally defined variables as well as * locally defined variables * - Instance and static variables use the same naming convention * - Parameters on a method have no naming convention * - Exceptions have no naming convention *--------------------------------------------------------------------- REPORT ZABAPCADABRA_RUNMANAGER . TABLES: syst, sscrfields. "Selection screen definition purpose only * ___ _ _ __ _ _ _ _ * / __\ | __ _ ___ ___ __| | ___ / _(_)_ __ (_) |_(_) ___ _ __ * / / | |/ _` / __/ __| / _` |/ _ \ |_| | '_ \| | __| |/ _ \| '_ \ * / /___| | (_| \__ \__ \ | (_| | __/ _| | | | | | |_| | (_) | | | | * \____/|_|\__,_|___/___/ \__,_|\___|_| |_|_| |_|_|\__|_|\___/|_| |_| CLASS lcl_variant_utility DEFINITION. PUBLIC SECTION. TYPES: ty_date_range type range of sy-datum. DATA: gv_report type RSVAR-REPORT, gv_variant TYPE RSVAR-VARIANT, gw_varid type varid, gt_contents TYPE TABLE OF rsparams. METHODS: constructor IMPORTING report_name TYPE any DEFAULT sy-repid variant_name TYPE any, get_parameter_value IMPORTING parameter TYPE any RETURNING VALUE(value) type rsparams-low, set_parameter_value IMPORTING parameter TYPE any value type any, set_selectoption_dates IMPORTING selectoption TYPE any datevalues type ty_date_range, save. ENDCLASS. CLASS lcl_controller DEFINITION. PUBLIC SECTION. CONSTANTS co_default_variant type varid value 'RUNMANAGER'. TYPES: ty_date_range type range of sy-datum. CLASS-DATA: gv_administrator_mode type boolean, gv_buttons_active type boolean. CLASS-METHODS: set_variant, submit_report importing report type any variant type any direct type boolean default abap_true dateparameter type d date_into type any date_mandatory type boolean dateseloption type ty_date_range dates_into type any dates_mandatory type boolean. ENDCLASS. * ___ _ _ _ * / __\ | __ _ ___ ___ (_)_ __ ___ _ __ | | ___ _ __ ___ * / / | |/ _` / __/ __| | | '_ ` _ \| '_ \| |/ _ \ '_ ` _ \ * / /___| | (_| \__ \__ \ | | | | | | | |_) | | __/ | | | | |_ * \____/|_|\__,_|___/___/ |_|_| |_| |_| .__/|_|\___|_| |_| |_(_) * |_| CLASS lcl_variant_utility IMPLEMENTATION. METHOD constructor. gv_report = report_name. gv_variant = variant_name. CLEAR: gt_contents[]. SELECT * FROM varid INTO gw_varid UP TO 1 ROWS WHERE REPORT = gv_report AND variant = gv_variant. ENDSELECT. IF sy-subrc = 0. * Read current variant settings: CALL FUNCTION 'RS_VARIANT_CONTENTS' EXPORTING REPORT = gv_report variant = gv_variant move_or_write = 'M' TABLES valutab = gt_contents EXCEPTIONS OTHERS = 0. ELSE. clear: gv_report, gv_variant. ENDIF. ENDMETHOD. "constructor * Fetch the value of a parameter (P) field METHOD get_parameter_value. DATA: lw_contents TYPE rsparams. check not gv_variant is initial. CLEAR VALUE. READ TABLE gt_contents INTO lw_contents WITH KEY SELNAME = PARAMETER KIND = 'P'. IF sy-subrc = 0. VALUE = lw_contents-low. ENDIF. ENDMETHOD. * Set/modify the value of a parameter (P) field METHOD set_parameter_value. FIELD-SYMBOLS: TYPE rsparams. check not gv_variant is initial. READ TABLE gt_contents ASSIGNING WITH KEY SELNAME = PARAMETER KIND = 'P'. IF sy-subrc = 0. -low = VALUE. ENDIF. ENDMETHOD. METHOD set_selectoption_dates. data: lw_date_range like line of datevalues, lw_contents type rsparams. check not gv_variant is initial. READ TABLE gt_contents into lw_contents WITH KEY SELNAME = selectoption KIND = 'S'. IF sy-subrc = 0. * First remove existing values: DELETE gt_contents WHERE SELNAME = selectoption AND KIND = 'S'. loop at datevalues into lw_date_range. move-corresponding lw_date_range to lw_contents. " sy-tcode and "Current variant <> transaction code sy-slset <> co_default_variant. * Check: variant with the name of the transaction available ? select single * from varid into lw_varid where report = sy-repid and variant = sy-tcode and flag1 = space and flag2 = space. IF sy-subrc = 0. * A variant exists, restart the report for this variant: SUBMIT (lw_varid-report) USING SELECTION-SET lw_varid-variant VIA SELECTION-SCREEN. ELSE. * Check the default variant 'RUNMANAGER' (co_default_variant) select single * from varid into lw_varid where report = sy-repid and variant = co_default_variant and flag1 = space and flag2 = space. IF sy-subrc = 0. * A variant exists, restart the report for this variant: SUBMIT (lw_varid-report) USING SELECTION-SET lw_varid-variant VIA SELECTION-SCREEN. ENDIF. ENDIF. ENDIF. ENDMETHOD. METHOD submit_report. data: lo_variant type ref to lcl_variant_utility, lv_variant_needs_2b_saved type boolean. if lcl_controller=>gv_administrator_mode = abap_true. message 'Not allowed in administrator mode - please restart' type 'S'. exit. endif. * Check available input: if date_mandatory = abap_true. if date_into is initial. message 'Date field - settings incomplete (administrator)' type 'S'. exit. endif. if dateparameter is initial. message 'Date field is mandatory - please supply date' type 'S'. exit. endif. endif. if dates_mandatory = abap_true. if dates_into is initial. message 'Date range field - settings incomplete (administrator)' type 'S'. exit. endif. if dateseloption[] is initial. message 'Date field range is mandatory - please supply date range' type 'S'. exit. endif. endif. * Check the variant CREATE OBJECT lo_variant EXPORTING report_name = report variant_name = variant. if lo_variant->gv_report is initial. message 'Variant does not exist (administrator)' type 'S'. exit. endif. clear lv_variant_needs_2b_saved. * Adjust the variant - where needed: if not date_into is initial and not dateparameter is initial. lo_variant->set_parameter_value( parameter = date_into value = dateparameter ). lv_variant_needs_2b_saved = abap_true. endif. if not dates_into is initial and not dateseloption[] is initial. lo_variant->set_selectoption_dates( selectoption = dates_into datevalues = dateseloption[] ). lv_variant_needs_2b_saved = abap_true. endif. if lv_variant_needs_2b_saved = abap_true. lo_variant->save( ). endif. * Submit the report if direct = abap_true. SUBMIT (report) USING SELECTION-SET variant AND RETURN. else. SUBMIT (report) USING SELECTION-SET variant VIA SELECTION-SCREEN AND RETURN. endif. ENDMETHOD. ENDCLASS. * __ _ _ _ * / _\ ___| | ___ ___| |_(_) ___ _ __ ___ ___ _ __ ___ ___ _ __ * \ \ / _ \ |/ _ \/ __| __| |/ _ \| '_ \ / __|/ __| '__/ _ \/ _ \ '_ \ * _\ \ __/ | __/ (__| |_| | (_) | | | | \__ \ (__| | | __/ __/ | | | * \__/\___|_|\___|\___|\__|_|\___/|_| |_| |___/\___|_| \___|\___|_| |_| SELECTION-SCREEN: SKIP. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(79) lbl_welc MODIF ID wel. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(15) lbl_date FOR FIELD pa_date MODIF ID df1. PARAMETERS pa_date type syst-datum MODIF ID df1. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN: BEGIN OF LINE, POSITION 17. PARAMETERS pa_cbox1 AS CHECKBOX MODIF ID adm. SELECTION-SCREEN COMMENT 21(30) lbl_cbx1 FOR FIELD pa_cbox1 MODIF ID adm. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(12) lbl_dat2 FOR FIELD so_dates MODIF ID df2. SELECT-OPTIONS so_dates for syst-datum MODIF ID df2. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN: BEGIN OF LINE, POSITION 17. PARAMETERS pa_cbox2 AS CHECKBOX MODIF ID adm. SELECTION-SCREEN COMMENT 21(30) lbl_cbx2 FOR FIELD pa_cbox2 MODIF ID adm. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(15) lbl_titl FOR FIELD pa_title MODIF ID adm. PARAMETERS pa_title type c length 40 lower case MODIF ID adm. SELECTION-SCREEN END OF LINE. * BUTTON 1 SELECTION-SCREEN: SKIP, BEGIN OF LINE. SELECTION-SCREEN PUSHBUTTON 17(40) button1 USER-COMMAND button1 MODIF ID bt1. SELECTION-SCREEN PUSHBUTTON 58(5) icon1 USER-COMMAND icon1 MODIF ID bt1. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(15) lbl_lbl1 FOR FIELD pa_lbl1 MODIF ID adm. PARAMETERS pa_lbl1 type c length 40 lower case MODIF ID adm. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(15) lbl_rep1 FOR FIELD pa_rep1 MODIF ID adm. PARAMETERS pa_rep1 type RSVAR-REPORT MODIF ID adm. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(15) lbl_var1 FOR FIELD pa_var1 MODIF ID adm. PARAMETERS pa_var1 type RSVAR-VARIANT MODIF ID adm. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(22) lbl_dpa1 FOR FIELD pa_dpa1 MODIF ID adm. PARAMETERS pa_dpa1 type RSVAR-FIELDTEXT MODIF ID adm. PARAMETERS pa_dpX1 as checkbox MODIF ID adm. SELECTION-SCREEN COMMENT 60(10) lbl_dpx1 FOR FIELD pa_dpx1 MODIF ID adm. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(22) lbl_dso1 FOR FIELD pa_dso1 MODIF ID adm. PARAMETERS pa_dso1 type RSVAR-FIELDTEXT MODIF ID adm. PARAMETERS pa_dsX1 as checkbox MODIF ID adm. SELECTION-SCREEN COMMENT 60(10) lbl_dsx1 FOR FIELD pa_dsx1 MODIF ID adm. SELECTION-SCREEN END OF LINE. * BUTTON 2 SELECTION-SCREEN: SKIP, BEGIN OF LINE. SELECTION-SCREEN PUSHBUTTON 17(40) button2 USER-COMMAND button2 MODIF ID bt2. SELECTION-SCREEN PUSHBUTTON 58(5) icon2 USER-COMMAND icon2 MODIF ID bt2. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(15) lbl_lbl2 FOR FIELD pa_lbl2 MODIF ID adm. PARAMETERS pa_lbl2 type c length 40 lower case MODIF ID adm. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(15) lbl_rep2 FOR FIELD pa_rep2 MODIF ID adm. PARAMETERS pa_rep2 type RSVAR-REPORT MODIF ID adm. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(15) lbl_var2 FOR FIELD pa_var2 MODIF ID adm. PARAMETERS pa_var2 type RSVAR-VARIANT MODIF ID adm. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(22) lbl_dpa2 FOR FIELD pa_dpa2 MODIF ID adm. PARAMETERS pa_dpa2 type RSVAR-FIELDTEXT MODIF ID adm. PARAMETERS pa_dpX2 as checkbox MODIF ID adm. SELECTION-SCREEN COMMENT 60(10) lbl_dpx2 FOR FIELD pa_dpx2 MODIF ID adm. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(22) lbl_dso2 FOR FIELD pa_dso2 MODIF ID adm. PARAMETERS pa_dso2 type RSVAR-FIELDTEXT MODIF ID adm. PARAMETERS pa_dsX2 as checkbox MODIF ID adm. SELECTION-SCREEN COMMENT 60(10) lbl_dsx2 FOR FIELD pa_dsx2 MODIF ID adm. SELECTION-SCREEN END OF LINE. * BUTTON 3 SELECTION-SCREEN: SKIP, BEGIN OF LINE. SELECTION-SCREEN PUSHBUTTON 17(40) button3 USER-COMMAND button3 MODIF ID bt3. SELECTION-SCREEN PUSHBUTTON 58(5) icon3 USER-COMMAND icon3 MODIF ID bt3. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(15) lbl_lbl3 FOR FIELD pa_lbl3 MODIF ID adm. PARAMETERS pa_lbl3 type c length 40 lower case MODIF ID adm. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(15) lbl_rep3 FOR FIELD pa_rep3 MODIF ID adm. PARAMETERS pa_rep3 type RSVAR-REPORT MODIF ID adm. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(15) lbl_var3 FOR FIELD pa_var3 MODIF ID adm. PARAMETERS pa_var3 type RSVAR-VARIANT MODIF ID adm. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(22) lbl_dpa3 FOR FIELD pa_dpa3 MODIF ID adm. PARAMETERS pa_dpa3 type RSVAR-FIELDTEXT MODIF ID adm. PARAMETERS pa_dpX3 as checkbox MODIF ID adm. SELECTION-SCREEN COMMENT 60(10) lbl_dpx3 FOR FIELD pa_dpx3 MODIF ID adm. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(22) lbl_dso3 FOR FIELD pa_dso3 MODIF ID adm. PARAMETERS pa_dso3 type RSVAR-FIELDTEXT MODIF ID adm. PARAMETERS pa_dsX3 as checkbox MODIF ID adm. SELECTION-SCREEN COMMENT 60(10) lbl_dsx3 FOR FIELD pa_dsx3 MODIF ID adm. SELECTION-SCREEN END OF LINE. * BUTTON 4 SELECTION-SCREEN: SKIP, BEGIN OF LINE. SELECTION-SCREEN PUSHBUTTON 17(40) button4 USER-COMMAND button4 MODIF ID bt4. SELECTION-SCREEN PUSHBUTTON 58(5) icon4 USER-COMMAND icon4 MODIF ID bt4. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(15) lbl_lbl4 FOR FIELD pa_lbl4 MODIF ID adm. PARAMETERS pa_lbl4 type c length 40 lower case MODIF ID adm. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(15) lbl_rep4 FOR FIELD pa_rep4 MODIF ID adm. PARAMETERS pa_rep4 type RSVAR-REPORT MODIF ID adm. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(15) lbl_var4 FOR FIELD pa_var4 MODIF ID adm. PARAMETERS pa_var4 type RSVAR-VARIANT MODIF ID adm. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(22) lbl_dpa4 FOR FIELD pa_dpa4 MODIF ID adm. PARAMETERS pa_dpa4 type RSVAR-FIELDTEXT MODIF ID adm. PARAMETERS pa_dpX4 as checkbox MODIF ID adm. SELECTION-SCREEN COMMENT 60(10) lbl_dpx4 FOR FIELD pa_dpx4 MODIF ID adm. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(22) lbl_dso4 FOR FIELD pa_dso4 MODIF ID adm. PARAMETERS pa_dso4 type RSVAR-FIELDTEXT MODIF ID adm. PARAMETERS pa_dsX4 as checkbox MODIF ID adm. SELECTION-SCREEN COMMENT 60(10) lbl_dsx4 FOR FIELD pa_dsx4 MODIF ID adm. SELECTION-SCREEN END OF LINE. * BUTTON 5 SELECTION-SCREEN: SKIP, BEGIN OF LINE. SELECTION-SCREEN PUSHBUTTON 17(40) button5 USER-COMMAND button5 MODIF ID bt5. SELECTION-SCREEN PUSHBUTTON 58(5) icon5 USER-COMMAND icon5 MODIF ID bt5. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(15) lbl_lbl5 FOR FIELD pa_lbl5 MODIF ID adm. PARAMETERS pa_lbl5 type c length 50 lower case MODIF ID adm. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(15) lbl_rep5 FOR FIELD pa_rep5 MODIF ID adm. PARAMETERS pa_rep5 type RSVAR-REPORT MODIF ID adm. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(15) lbl_var5 FOR FIELD pa_var5 MODIF ID adm. PARAMETERS pa_var5 type RSVAR-VARIANT MODIF ID adm. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(22) lbl_dpa5 FOR FIELD pa_dpa5 MODIF ID adm. PARAMETERS pa_dpa5 type RSVAR-FIELDTEXT MODIF ID adm. PARAMETERS pa_dpX5 as checkbox MODIF ID adm. SELECTION-SCREEN COMMENT 60(10) lbl_dpx5 FOR FIELD pa_dpx5 MODIF ID adm. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(22) lbl_dso5 FOR FIELD pa_dso5 MODIF ID adm. PARAMETERS pa_dso5 type RSVAR-FIELDTEXT MODIF ID adm. PARAMETERS pa_dsX5 as checkbox MODIF ID adm. SELECTION-SCREEN COMMENT 60(10) lbl_dsx5 FOR FIELD pa_dsx5 MODIF ID adm. SELECTION-SCREEN END OF LINE. AT SELECTION-SCREEN OUTPUT. * Assign button texts / OR disable buttons clear lcl_controller=>gv_buttons_active. if lcl_controller=>gv_administrator_mode = abap_false. loop at screen. case screen-group1. when 'BT1'. if not pa_lbl1 is initial. button1 = pa_lbl1. lcl_controller=>gv_buttons_active = abap_true. else. screen-active = '0'. modify screen. endif. when 'BT2'. if not pa_lbl2 is initial. button2 = pa_lbl2. lcl_controller=>gv_buttons_active = abap_true. else. screen-active = '0'. modify screen. endif. when 'BT3'. if not pa_lbl3 is initial. button3 = pa_lbl3. lcl_controller=>gv_buttons_active = abap_true. else. screen-active = '0'. modify screen. endif. when 'BT4'. if not pa_lbl4 is initial. button4 = pa_lbl4. lcl_controller=>gv_buttons_active = abap_true. else. screen-active = '0'. modify screen. endif. when 'BT5'. if not pa_lbl5 is initial. button5 = pa_lbl5. lcl_controller=>gv_buttons_active = abap_true. else. screen-active = '0'. modify screen. endif. endcase. endloop. endif. if lcl_controller=>gv_buttons_active = abap_false and lcl_controller=>gv_administrator_mode = abap_false. lbl_welc = '@1A@ No active buttons. For Administrator access put ADMIN in command field'. loop at screen. case screen-group1 . when 'DF1' or 'DF2'. "Welcome screen-active = '0'. modify screen. endcase. endloop. else. loop at screen. case screen-group1 . when 'WEL'. "Welcome screen-active = '0'. modify screen. endcase. endloop. endif. * Create the titlebar by double clicking on it - set the value to & if not pa_title is initial. set titlebar 'T01' with pa_title. endif. if lcl_controller=>gv_administrator_mode = abap_false. if pa_cbox1 = abap_true. loop at screen. if screen-group1 = 'DF1'. screen-input = '0'. screen-active = '0'. modify screen. endif. endloop. endif. if pa_cbox2 = abap_true. loop at screen. if screen-group1 = 'DF2'. screen-input = '0'. screen-active = '0'. modify screen. endif. endloop. endif. * Non-administrator mode, hide loop at screen. if screen-group1 = 'ADM'. screen-input = '0'. screen-active = '0'. modify screen. endif. endloop. else. * In adminitstrator mode - some fields are READ-ONLY loop at screen. if screen-group1 = 'DF1' or screen-group1 = 'DF2'. screen-input = '0'. modify screen. endif. endloop. endif. AT SELECTION-SCREEN. case sscrfields-ucomm. when 'ADMIN'. lcl_controller=>gv_administrator_mode = abap_true. message 'Welcome administrator' type 'S'. when 'BUTTON1'. lcl_controller=>submit_report( exporting report = pa_rep1 variant = pa_var1 dateparameter = pa_date date_into = pa_dpa1 date_mandatory = pa_dpx1 dateseloption = so_dates[] dates_into = pa_dso1 dates_mandatory = pa_dsx1 ). when 'ICON1'. lcl_controller=>submit_report( exporting report = pa_rep1 variant = pa_var1 dateparameter = pa_date date_into = pa_dpa1 date_mandatory = pa_dpx1 dateseloption = so_dates[] dates_into = pa_dso1 dates_mandatory = pa_dsx1 direct = abap_false ). when 'BUTTON2'. lcl_controller=>submit_report( exporting report = pa_rep2 variant = pa_var2 dateparameter = pa_date date_into = pa_dpa2 date_mandatory = pa_dpx2 dateseloption = so_dates[] dates_into = pa_dso2 dates_mandatory = pa_dsx2 ). when 'ICON2'. lcl_controller=>submit_report( exporting report = pa_rep2 variant = pa_var2 dateparameter = pa_date date_into = pa_dpa2 date_mandatory = pa_dpx2 dateseloption = so_dates[] dates_into = pa_dso2 dates_mandatory = pa_dsx2 direct = abap_false ). when 'BUTTON3'. lcl_controller=>submit_report( exporting report = pa_rep3 variant = pa_var3 dateparameter = pa_date date_into = pa_dpa3 date_mandatory = pa_dpx3 dateseloption = so_dates[] dates_into = pa_dso3 dates_mandatory = pa_dsx3 ). when 'ICON3'. lcl_controller=>submit_report( exporting report = pa_rep3 variant = pa_var3 dateparameter = pa_date date_into = pa_dpa3 date_mandatory = pa_dpx3 dateseloption = so_dates[] dates_into = pa_dso3 dates_mandatory = pa_dsx3 direct = abap_false ). when 'BUTTON4'. lcl_controller=>submit_report( exporting report = pa_rep4 variant = pa_var4 dateparameter = pa_date date_into = pa_dpa4 date_mandatory = pa_dpx4 dateseloption = so_dates[] dates_into = pa_dso4 dates_mandatory = pa_dsx4 ). when 'ICON4'. lcl_controller=>submit_report( exporting report = pa_rep4 variant = pa_var4 dateparameter = pa_date date_into = pa_dpa4 date_mandatory = pa_dpx4 dateseloption = so_dates[] dates_into = pa_dso4 dates_mandatory = pa_dsx4 direct = abap_false ). when 'BUTTON5'. lcl_controller=>submit_report( exporting report = pa_rep5 variant = pa_var5 dateparameter = pa_date date_into = pa_dpa5 date_mandatory = pa_dpx5 dateseloption = so_dates[] dates_into = pa_dso5 dates_mandatory = pa_dsx5 ). when 'ICON5'. lcl_controller=>submit_report( exporting report = pa_rep5 variant = pa_var5 dateparameter = pa_date date_into = pa_dpa5 date_mandatory = pa_dpx5 dateseloption = so_dates[] dates_into = pa_dso5 dates_mandatory = pa_dsx5 direct = abap_false ). endcase. * _____ _ _ _ _ _ _ _ * \_ \_ __ (_) |_(_) __ _| (_)______ _| |_(_) ___ _ __ * / /\/ '_ \| | __| |/ _` | | |_ / _` | __| |/ _ \| '_ \ * /\/ /_ | | | | | |_| | (_| | | |/ / (_| | |_| | (_) | | | | * \____/ |_| |_|_|\__|_|\__,_|_|_/___\__,_|\__|_|\___/|_| |_| INITIALIZATION. lbl_date = 'Date'. lbl_dat2 = 'Date'. lbl_cbx1 = 'Suppress field'. lbl_cbx2 = 'Suppress field'. lbl_titl = 'Report title'. icon1 = icon2 = icon3 = icon4 = icon5 = '@MJ@'. lbl_lbl1 = lbl_lbl2 = lbl_lbl3 = lbl_lbl4 = lbl_lbl5 = 'Label'. lbl_rep1 = lbl_rep2 = lbl_rep3 = lbl_rep4 = lbl_rep5 = 'Report'. lbl_var1 = lbl_var2 = lbl_var3 = lbl_var4 = lbl_var5 = 'Variant'. lbl_dpa1 = lbl_dpa2 = lbl_dpa3 = lbl_dpa4 = lbl_dpa5 = 'Date parameter into'. lbl_dpx1 = lbl_dpx2 = lbl_dpx3 = lbl_dpx4 = lbl_dpx5 = 'Mandatory'. lbl_dso1 = lbl_dso2 = lbl_dso3 = lbl_dso4 = lbl_dso5 = 'Date selectoption into'. lbl_dsx1 = lbl_dsx2 = lbl_dsx3 = lbl_dsx4 = lbl_dsx5 = 'Mandatory'. lcl_controller=>set_variant( ). * __ _ _ __ __ _ _ _ * / _\ |_ __ _ _ __| |_ ___ / _| / _\ ___| | ___ ___| |_(_) ___ _ __ * \ \| __/ _` | '__| __|__ / _ \| |_ ___\ \ / _ \ |/ _ \/ __| __| |/ _ \| '_ \ * _\ \ || (_| | | | ||___| (_) | _|___|\ \ __/ | __/ (__| |_| | (_) | | | | * \__/\__\__,_|_| \__| \___/|_| \__/\___|_|\___|\___|\__|_|\___/|_| |_| START-OF-SELECTION. * The report has no business here...