* _ _ _ _ _ * /_\ | |__ __ _ _ __ ___ __ _ __| | __ _| |__ _ __ /_\ * //_\\| '_ \ / _` | '_ \ / __/ _` |/ _` |/ _` | '_ \| '__//_\\ * / _ \ |_) | (_| | |_) | (_| (_| | (_| | (_| | |_) | | / _ \ * \_/ \_/_.__/ \__,_| .__/ \___\__,_|\__,_|\__,_|_.__/|_| \_/ \_/ * |_| www.abapcadabra.com *---------------------------------------------------------------------------- * program : ZABAPCADABRA_RUNMANAGER_HR * title : Run a report through a variant - HR version * 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 : The ZABAPCADABRA_RUNMANAGER * Developer name : Wim Maasdam * Development date : 16/05/2017 * Version : 0.1 *--------------------------------------------------------------------- * Change list: * Date Description * 16/05/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_HR. 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 payrollparameter type pa0001-ABKRS payroll_into type any payroll_mandatory type boolean periodparameter type fpper period_into type any period_mandatory type boolean dateparameter type d date_into type any date_mandatory type boolean dateseloption type ty_date_range dates_into type any dates_mandatory type boolean, read_PA03_record importing ABKRS type pa0001-ABKRS changing FPPER type FPPER dateseloption type ty_date_range. 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. ELSE. message 'Unknown parameter' type 'S'. 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. ELSE. message 'Unknown parameter' type 'S'. 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, lw_dateseloption like line of dateseloption, lv_pfield1 type c length 60, lv_pfield2 type c length 60. if lcl_controller=>gv_administrator_mode = abap_true. message 'Not allowed in administrator mode - please restart' type 'S'. exit. endif. * Check available input: if payroll_mandatory = abap_true. if payroll_into is initial. message 'Payroll area - settings incomplete (administrator)' type 'S'. exit. endif. if payrollparameter is initial. message 'Payroll area is mandatory - please supply value' type 'S'. exit. endif. endif. if period_mandatory = abap_true. if period_into is initial. message 'Period field - settings incomplete (administrator)' type 'S'. exit. endif. if periodparameter is initial. message 'Period field is mandatory - please supply period' type 'S'. exit. endif. endif. 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 payroll_into is initial and not payrollparameter is initial. lo_variant->set_parameter_value( parameter = payroll_into value = payrollparameter ). lv_variant_needs_2b_saved = abap_true. endif. if not period_into is initial and not periodparameter is initial. lo_variant->set_parameter_value( parameter = period_into value = periodparameter ). lv_variant_needs_2b_saved = abap_true. endif. if not payroll_into is initial and not payrollparameter is initial. lo_variant->set_parameter_value( parameter = payroll_into value = payrollparameter ). lv_variant_needs_2b_saved = abap_true. endif. 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. * The dates_into field can refer to a select option field, but is can also refer to * 2 parameter fields, which is common in PNP logical database selections. split dates_into at ';' into lv_pfield1 lv_pfield2. if lv_pfield2 is initial. lo_variant->set_selectoption_dates( selectoption = dates_into datevalues = dateseloption[] ). else. read table dateseloption into lw_dateseloption index 1. lo_variant->set_parameter_value( parameter = lv_pfield1 value = lw_dateseloption-low ). lo_variant->set_parameter_value( parameter = lv_pfield2 value = lw_dateseloption-high ). endif. 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. METHOD read_PA03_record. data: begin of lw_payroll_area_period, PERMO type T549A-PERMO, CURRENT_BEGDA type T549Q-BEGDA, CURRENT_ENDDA type T549Q-ENDDA, ABKRS_TEXT type T549T-ATEXT, CURRENT_PERIOD type T569V-PABRP, CURRENT_YEAR type T569V-PABRJ, end of lw_payroll_area_period, lw_date_range like line of dateseloption. CALL FUNCTION 'PA03_PERIODDATES_GET' EXPORTING F_ABKRS = ABKRS IMPORTING F_PERMO = lw_payroll_area_period-PERMO F_CURRENT_BEGDA = lw_payroll_area_period-CURRENT_BEGDA F_CURRENT_ENDDA = lw_payroll_area_period-CURRENT_ENDDA F_ABKRS_TEXT = lw_payroll_area_period-ABKRS_TEXT CHANGING F_CURRENT_PERIOD = lw_payroll_area_period-CURRENT_PERIOD F_CURRENT_YEAR = lw_payroll_area_period-CURRENT_YEAR EXCEPTIONS PCR_DOES_NOT_EXIST = 1 ABKRS_DOES_NOT_EXIST = 2 PERIOD_DOES_NOT_EXIST = 3 OTHERS = 4. if sy-subrc <> 0. message 'Period dates could not be determined' type 'S'. else. clear: FPPER, dateseloption[]. FPPER = lw_payroll_area_period-CURRENT_YEAR. FPPER+4(2) = lw_payroll_area_period-CURRENT_PERIOD. lw_date_range = 'IBT'. "Include values BeTween lw_date_range-low = lw_payroll_area_period-CURRENT_BEGDA. lw_date_range-high = lw_payroll_area_period-CURRENT_ENDDA. append lw_date_range to dateseloption. 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_pare FOR FIELD pa_ABKRS MODIF ID df0. PARAMETERS pa_ABKRS type PA0001-ABKRS MODIF ID df0. SELECTION-SCREEN PUSHBUTTON 24(40) button0 USER-COMMAND button0 MODIF ID df0 VISIBLE LENGTH 5. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN: SKIP. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(15) lbl_fpp FOR FIELD pa_fpper MODIF ID df3. PARAMETERS pa_fpper type fpper MODIF ID df3. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN: BEGIN OF LINE, POSITION 17. PARAMETERS pa_cbox3 AS CHECKBOX MODIF ID adm. SELECTION-SCREEN COMMENT 21(30) lbl_cbx3 FOR FIELD pa_cbox3 MODIF ID adm. 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_pay1 FOR FIELD pa_pay1 MODIF ID adm. PARAMETERS pa_pay1 type RSVAR-FIELDTEXT MODIF ID adm. PARAMETERS pa_pyX1 as checkbox MODIF ID adm. SELECTION-SCREEN COMMENT 60(10) lbl_pyx1 FOR FIELD pa_pyx1 MODIF ID adm. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(22) lbl_per1 FOR FIELD pa_per1 MODIF ID adm. PARAMETERS pa_per1 type RSVAR-FIELDTEXT MODIF ID adm. PARAMETERS pa_peX1 as checkbox MODIF ID adm. SELECTION-SCREEN COMMENT 60(10) lbl_pex1 FOR FIELD pa_pex1 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_pay2 FOR FIELD pa_pay2 MODIF ID adm. PARAMETERS pa_pay2 type RSVAR-FIELDTEXT MODIF ID adm. PARAMETERS pa_pyX2 as checkbox MODIF ID adm. SELECTION-SCREEN COMMENT 60(10) lbl_pyx2 FOR FIELD pa_pyx2 MODIF ID adm. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(22) lbl_per2 FOR FIELD pa_per2 MODIF ID adm. PARAMETERS pa_per2 type RSVAR-FIELDTEXT MODIF ID adm. PARAMETERS pa_peX2 as checkbox MODIF ID adm. SELECTION-SCREEN COMMENT 60(10) lbl_pex2 FOR FIELD pa_pex2 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_pay3 FOR FIELD pa_pay3 MODIF ID adm. PARAMETERS pa_pay3 type RSVAR-FIELDTEXT MODIF ID adm. PARAMETERS pa_pyX3 as checkbox MODIF ID adm. SELECTION-SCREEN COMMENT 60(10) lbl_pyx3 FOR FIELD pa_pyx3 MODIF ID adm. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(22) lbl_per3 FOR FIELD pa_per3 MODIF ID adm. PARAMETERS pa_per3 type RSVAR-FIELDTEXT MODIF ID adm. PARAMETERS pa_peX3 as checkbox MODIF ID adm. SELECTION-SCREEN COMMENT 60(10) lbl_pex3 FOR FIELD pa_pex3 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_pay4 FOR FIELD pa_pay4 MODIF ID adm. PARAMETERS pa_pay4 type RSVAR-FIELDTEXT MODIF ID adm. PARAMETERS pa_pyX4 as checkbox MODIF ID adm. SELECTION-SCREEN COMMENT 60(10) lbl_pyx4 FOR FIELD pa_pyx4 MODIF ID adm. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(22) lbl_per4 FOR FIELD pa_per4 MODIF ID adm. PARAMETERS pa_per4 type RSVAR-FIELDTEXT MODIF ID adm. PARAMETERS pa_peX4 as checkbox MODIF ID adm. SELECTION-SCREEN COMMENT 60(10) lbl_pex4 FOR FIELD pa_pex4 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_pay5 FOR FIELD pa_pay5 MODIF ID adm. PARAMETERS pa_pay5 type RSVAR-FIELDTEXT MODIF ID adm. PARAMETERS pa_pyX5 as checkbox MODIF ID adm. SELECTION-SCREEN COMMENT 60(10) lbl_pyx5 FOR FIELD pa_pyx5 MODIF ID adm. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(22) lbl_per5 FOR FIELD pa_per5 MODIF ID adm. PARAMETERS pa_per5 type RSVAR-FIELDTEXT MODIF ID adm. PARAMETERS pa_peX5 as checkbox MODIF ID adm. SELECTION-SCREEN COMMENT 60(10) lbl_pex5 FOR FIELD pa_pex5 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(2). when 'DF'. 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. if pa_cbox3 = abap_true. loop at screen. if screen-group1 = 'DF3'. 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' or screen-group1 = 'DF3'. 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 'BUTTON0'. if pa_ABKRS is initial. message 'Please supply the Payroll area' type 'S'. else. lcl_controller=>read_PA03_record( exporting ABKRS = pa_ABKRS changing FPPER = pa_FPPER dateseloption = so_dates[] ). endif. when 'BUTTON1'. lcl_controller=>submit_report( exporting report = pa_rep1 variant = pa_var1 payrollparameter = pa_ABKRS payroll_into = pa_pay1 payroll_mandatory = pa_pyx1 periodparameter = pa_FPPER period_into = pa_per1 period_mandatory = pa_pex1 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 payrollparameter = pa_ABKRS payroll_into = pa_pay1 payroll_mandatory = pa_pyx1 periodparameter = pa_FPPER period_into = pa_per1 period_mandatory = pa_pex1 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 payrollparameter = pa_ABKRS payroll_into = pa_pay2 payroll_mandatory = pa_pyx2 periodparameter = pa_FPPER period_into = pa_per2 period_mandatory = pa_pex2 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 payrollparameter = pa_ABKRS payroll_into = pa_pay2 payroll_mandatory = pa_pyx2 periodparameter = pa_FPPER period_into = pa_per2 period_mandatory = pa_pex2 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 payrollparameter = pa_ABKRS payroll_into = pa_pay3 payroll_mandatory = pa_pyx3 periodparameter = pa_FPPER period_into = pa_per3 period_mandatory = pa_pex3 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 payrollparameter = pa_ABKRS payroll_into = pa_pay3 payroll_mandatory = pa_pyx3 periodparameter = pa_FPPER period_into = pa_per3 period_mandatory = pa_pex3 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 payrollparameter = pa_ABKRS payroll_into = pa_pay4 payroll_mandatory = pa_pyx4 periodparameter = pa_FPPER period_into = pa_per4 period_mandatory = pa_pex4 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 payrollparameter = pa_ABKRS payroll_into = pa_pay4 payroll_mandatory = pa_pyx4 periodparameter = pa_FPPER period_into = pa_per4 period_mandatory = pa_pex4 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 payrollparameter = pa_ABKRS payroll_into = pa_pay5 payroll_mandatory = pa_pyx5 periodparameter = pa_FPPER period_into = pa_per5 period_mandatory = pa_pex5 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 payrollparameter = pa_ABKRS payroll_into = pa_pay5 payroll_mandatory = pa_pyx5 periodparameter = pa_FPPER period_into = pa_per5 period_mandatory = pa_pex5 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_pare = 'Payroll area'. button0 = '@EO\QGet control record info@'. lbl_date = 'Date'. lbl_dat2 = 'Date'. lbl_fpp = 'Period'. lbl_cbx1 = 'Suppress field'. lbl_cbx2 = 'Suppress field'. lbl_cbx3 = '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_pay1 = lbl_pay2 = lbl_pay3 = lbl_pay4 = lbl_pay5 = 'Payroll area into'. lbl_pyx1 = lbl_pyx2 = lbl_pyx3 = lbl_pyx4 = lbl_pyx5 = 'Mandatory'. lbl_per1 = lbl_per2 = lbl_per3 = lbl_per4 = lbl_per5 = 'Period parameter into'. lbl_pex1 = lbl_pex2 = lbl_pex3 = lbl_pex4 = lbl_pex5 = 'Mandatory'. 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...