define _parameter. SELECTION-SCREEN begin of line. SELECTION-SCREEN COMMENT 1(33) &2 FOR FIELD &1. parameters: &1 type &3. SELECTION-SCREEN end of line. end-of-definition. define _parameter_sta. SELECTION-SCREEN begin of line. SELECTION-SCREEN COMMENT 1(33) &2 FOR FIELD &1 MODIF ID STA. parameters: &1 type n length &3 MODIF ID STA. SELECTION-SCREEN end of line. end-of-definition. define _radio_button. selection-screen begin of line. parameter &1 radiobutton group &2 modif id &3. selection-screen comment 3(28) &4 for field &1 modif id &3. selection-screen end of line. end-of-definition. define _skip. selection-screen begin of line. selection-screen comment 2(15) &1 modif id &2. selection-screen end of line. end-of-definition. define _selection_option. selection-screen begin of line. selection-screen comment 1(28) &4 for field &1 modif id &3. select-options: &1 for &2 modif id &3. selection-screen end of line. end-of-definition. * || _ DEFINITION * LCL_LOGGING || ___| | __ _ ___ ___ * || / __| |/ _` / __/ __| * || | (__| | (_| \__ \__ \ * || \___|_|\__,_|___/___/ CLASS lcl_logging DEFINITION FINAL. PUBLIC SECTION. CLASS-DATA: go_log TYPE REF TO cl_ishmed_bal, gv_errors_were_logged TYPE boolean VALUE space. CLASS-METHODS: initialize IMPORTING object TYPE balobj_d DEFAULT 'ALERT' subobject TYPE balsubobj DEFAULT 'PROCESSING', set_subject IMPORTING subject TYPE any, set_message IMPORTING message TYPE any OPTIONAL par1 TYPE any DEFAULT space par2 TYPE any DEFAULT space par3 TYPE any DEFAULT space msgty TYPE symsgty DEFAULT 'I' PREFERRED PARAMETER message, set_error IMPORTING message TYPE any OPTIONAL par1 TYPE any DEFAULT space par2 TYPE any DEFAULT space PREFERRED PARAMETER message, set_syst, set_bapiret2 IMPORTING bapiret type bapiret2. ENDCLASS. "lcl_logging DEFINITION * || _ IMPLEMENTATION * LCL_LOGGING || ___| | __ _ ___ ___ * || / __| |/ _` / __/ __| * || | (__| | (_| \__ \__ \ * || \___|_|\__,_|___/___/ CLASS lcl_logging IMPLEMENTATION. * || _ _ _ * Class : LCL_LOGGING || _ __ ___ ___| |_| |__ ___ __| | * Method: INITIALIZE || | '_ ` _ \ / _ | __| '_ \ / _ \ / _` | * || | | | | | | __| |_| | | | (_) | (_| | * || |_| |_| |_|\___|\__|_| |_|\___/ \__,_| METHOD initialize. TRY. CREATE OBJECT go_log EXPORTING i_object = object i_subobject = subobject i_repid = sy-repid. CATCH cx_ishmed_log. "#EC NO_HANDLER * No actual processing here ENDTRY. ENDMETHOD. "initialize * || _ _ _ * Class : LCL_LOGGING || _ __ ___ ___| |_| |__ ___ __| | * Method: SET_SUBJECT || | '_ ` _ \ / _ | __| '_ \ / _ \ / _` | * || | | | | | | __| |_| | | | (_) | (_| | * || |_| |_| |_|\___|\__|_| |_|\___/ \__,_| METHOD set_subject. DATA: lv_subject TYPE c LENGTH 100. lv_subject = subject. * concatenate '==>' lv_subject into lv_subject SEPARATED BY space. TRANSLATE lv_subject TO UPPER CASE. TRY. go_log->add_free_text( EXPORTING i_msg_type = 'W' i_text = lv_subject ). CATCH cx_ishmed_log. "#EC NO_HANDLER * No actual logic on catch ENDTRY. ENDMETHOD. "set_subject * || _ _ _ * Class : LCL_LOGGING || _ __ ___ ___| |_| |__ ___ __| | * Method: SET_MESSAGE || | '_ ` _ \ / _ | __| '_ \ / _ \ / _` | * importing message type any, par1, par2 || | | | | | | __| |_| | | | (_) | (_| | * || |_| |_| |_|\___|\__|_| |_|\___/ \__,_| METHOD set_message. " importing message type any, par1, par2 DATA: lv_message TYPE c LENGTH 100. lv_message = message. REPLACE '&' WITH par1 INTO lv_message. CONDENSE lv_message. REPLACE '&' WITH par2 INTO lv_message. CONDENSE lv_message. REPLACE '&' WITH par3 INTO lv_message. CONDENSE lv_message. TRY. go_log->add_free_text( EXPORTING i_msg_type = msgty i_text = lv_message ). CATCH cx_ishmed_log. "#EC NO_HANDLER * No actual logic on catch ENDTRY. ENDMETHOD. "set_message * || _ _ _ * Class : LCL_LOGGING || _ __ ___ ___| |_| |__ ___ __| | * Method: SET_ERROR || | '_ ` _ \ / _ | __| '_ \ / _ \ / _` | * importing message type any, par1, par2 || | | | | | | __| |_| | | | (_) | (_| | * || |_| |_| |_|\___|\__|_| |_|\___/ \__,_| METHOD set_error. " importing message type any, par1, par2 DATA: lv_message TYPE c LENGTH 100. lv_message = message. REPLACE '&' WITH par1 INTO lv_message. REPLACE '&' WITH par2 INTO lv_message. CONDENSE lv_message. TRY. go_log->add_free_text( EXPORTING i_msg_type = 'E' i_text = lv_message ). lcl_logging=>gv_errors_were_logged = abap_true. CATCH cx_ishmed_log. "#EC NO_HANDLER * No actual logic on catch ENDTRY. ENDMETHOD. "set_error * || _ _ _ * Class : LCL_LOGGING || _ __ ___ ___| |_| |__ ___ __| | * Method: SET_SYST || | '_ ` _ \ / _ | __| '_ \ / _ \ / _` | * || | | | | | | __| |_| | | | (_) | (_| | * || |_| |_| |_|\___|\__|_| |_|\___/ \__,_| METHOD set_syst. if sy-msgty = 'E'. lcl_logging=>gv_errors_were_logged = abap_true. endif. TRY. go_log->ADD_MSG( I_type = sy-msgty I_ID = sy-msgid I_NUMBER = sy-msgno I_MESSAGE_V1 = sy-msgv1 I_MESSAGE_V2 = sy-msgv2 I_MESSAGE_V3 = sy-msgv3 I_MESSAGE_V4 = sy-msgv4 ). CATCH cx_ishmed_log. "#EC NO_HANDLER * No actual logic on catch ENDTRY. ENDMETHOD. * || _ _ _ * Class : LCL_LOGGING || _ __ ___ ___| |_| |__ ___ __| | * Method: SET_BAPIRET2 || | '_ ` _ \ / _ | __| '_ \ / _ \ / _` | * || | | | | | | __| |_| | | | (_) | (_| | * || |_| |_| |_|\___|\__|_| |_|\___/ \__,_| METHOD set_bapiret2. if bapiret-type = 'E'. lcl_logging=>gv_errors_were_logged = abap_true. endif. TRY. go_log->ADD_MSG( I_type = bapiret-type I_ID = bapiret-id I_NUMBER = bapiret-number I_MESSAGE_V1 = bapiret-message_v1 I_MESSAGE_V2 = bapiret-message_v2 I_MESSAGE_V3 = bapiret-message_v3 I_MESSAGE_V4 = bapiret-message_v4 ). CATCH cx_ishmed_log. "#EC NO_HANDLER * No actual logic on catch ENDTRY. ENDMETHOD. ENDCLASS. "lcl_logging IMPLEMENTATION * || _ DEFINITION * LCL_VARIANT_UTILITY || ___| | __ _ ___ ___ * || / __| |/ _` / __/ __| * || | (__| | (_| \__ \__ \ * || \___|_|\__,_|___/___/ CLASS lcl_variant_utility DEFINITION. PUBLIC SECTION. TYPES: ty_matnr_range type range of mara-matnr, ty_num5 type n length 5. DATA: gv_report type RSVAR-REPORT, gv_variant TYPE RSVAR-VARIANT, gw_varid type varid, gt_contents TYPE TABLE OF rsparams, gt_VARI_TEXT TYPE TABLE OF VARIT. 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_matnr IMPORTING selectoption TYPE any values type ty_matnr_range, save IMPORTING variant_name TYPE any DEFAULT space RETURNING VALUE(success) type boolean, copy IMPORTING variant_name TYPE any RETURNING VALUE(success) type boolean. CLASS-METHODS: f4_presentation_file importing title type any changing filepath type any, delete IMPORTING reportname type sy-repid runnr type ty_num5 RETURNING VALUE(success) type boolean. ENDCLASS. * || _ DEFINITION * LCL_JOB_UTILITY || ___| | __ _ ___ ___ * || / __| |/ _` / __/ __| * || | (__| | (_| \__ \__ \ * || \___|_|\__,_|___/___/ CLASS lcl_job_utility DEFINITION. PUBLIC SECTION. CLASS-DATA: gv_jobname type TBTCJOB-JOBNAME, gv_jobcount type TBTCJOB-JOBCOUNT, gt_JOBLIST type standard table of TBTCJOB, gv_jobdetails_selected type boolean. CLASS-METHODS: job_open importing jobname type TBTCJOB-JOBNAME returning value(success) type boolean, job_submit importing reportname type sy-repid variant type RSVAR-VARIANT returning value(success) type boolean, job_close importing immediate type boolean start_date type sy-datum start_time type sy-uzeit returning value(success) type boolean, job_select importing jobname type TBTCJOB-JOBNAME PRELIM type boolean default abap_true SCHEDUL type boolean default abap_true READY type boolean default abap_true RUNNING type boolean default abap_true FINISHED type boolean default abap_false ABORTED type boolean default abap_false RETURNING VALUE(NR_OF_JOBS_FOUND) type i, foobar. ENDCLASS. * || _ IMPLEMENTATION * LCL_VARIANT_UTILITY || ___| | __ _ ___ ___ * || / __| |/ _` / __/ __| * || | (__| | (_| \__ \__ \ * || \___|_|\__,_|___/___/ CLASS lcl_variant_utility IMPLEMENTATION. * || _ _ _ * Class : LCL_VARIANT_UTILITY || _ __ ___ ___| |_| |__ ___ __| | * Method: CONSTRUCTOR || | '_ ` _ \ / _ | __| '_ \ / _ \ / _` | * || | | | | | | __| |_| | | | (_) | (_| | * || |_| |_| |_|\___|\__|_| |_|\___/ \__,_| METHOD constructor. gv_report = report_name. gv_variant = variant_name. CLEAR: gt_contents[], gt_VARI_TEXT[]. 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. * Fetch the texts with the variant SELECT * FROM varit INTO TABLE gt_VARI_TEXT WHERE langu = sy-langu and report = gv_report and variant = gv_variant. ELSE. clear: gv_report, gv_variant. ENDIF. ENDMETHOD. "constructor * || _ _ _ * Class : LCL_VARIANT_UTILITY || _ __ ___ ___| |_| |__ ___ __| | * Method: GET_PARAMETER_VALUE || | '_ ` _ \ / _ | __| '_ \ / _ \ / _` | * || | | | | | | __| |_| | | | (_) | (_| | * || |_| |_| |_|\___|\__|_| |_|\___/ \__,_| 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. * || _ _ _ * Class : LCL_VARIANT_UTILITY || _ __ ___ ___| |_| |__ ___ __| | * Method: SET_PARAMETER_VALUE || | '_ ` _ \ / _ | __| '_ \ / _ \ / _` | * || | | | | | | __| |_| | | | (_) | (_| | * || |_| |_| |_|\___|\__|_| |_|\___/ \__,_| 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. * || _ _ _ * Class : LCL_VARIANT_UTILITY || _ __ ___ ___| |_| |__ ___ __| | * Method: SET_SELECTOPTION_MATNR || | '_ ` _ \ / _ | __| '_ \ / _ \ / _` | * || | | | | | | __| |_| | | | (_) | (_| | * || |_| |_| |_|\___|\__|_| |_|\___/ \__,_| METHOD set_selectoption_matnr. data: lw_matnr_range like line of values, 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 values into lw_matnr_range. move-corresponding lw_matnr_range to lw_contents. " 0. message 'Kon bestand niet openen' type 'E'. else. read table lt_files index 1 into lw_file. filepath = lw_file-pathname. endif. endmethod. * || _ _ _ * Class : LCL_VARIANT_UTILITY || _ __ ___ ___| |_| |__ ___ __| | * Method: DELETE || | '_ ` _ \ / _ | __| '_ \ / _ \ / _` | * || | | | | | | __| |_| | | | (_) | (_| | * || |_| |_| |_|\___|\__|_| |_|\___/ \__,_| METHOD delete. data: lt_variants type standard table of vari-variant, lv_variant type vari-variant, begin of lw_vname, runnumber type c length 5, dummy type c length 20, end of lw_vname, lv_runnumber type n length 5, lv_deletions_done type boolean. clear success. * Fetch the variant names - for specifically generated variants select variant from vari into table lt_variants where relid = 'VA' and report = reportname and variant like '_____@BJ__ST__' and srtf2 = 0. loop at lt_variants into lv_variant. split lv_variant at '@' into lw_vname-runnumber lw_vname-dummy. move lw_vname-runnumber to lv_runnumber. if lv_runnumber < runnr. * Go ahead - delete the variant * Functie module RS_VARIANT_DELETE geeft een popup, dus alleen het * uitvoeren van de delete wordt hier aangeroepen: *-------------------------------------------------------- perform DEL_VARIANT in program SAPLSVAR USING reportname lv_variant. *-------------------------------------------------------- success = abap_true. endif. endloop. ENDMETHOD. ENDCLASS. * || _ IMPLEMENTATION * LCL_JOB_UTILITY || ___| | __ _ ___ ___ * || / __| |/ _` / __/ __| * || | (__| | (_| \__ \__ \ * || \___|_|\__,_|___/___/ CLASS lcl_job_utility IMPLEMENTATION. * || _ _ _ * Class : LCL_JOB_UTILITY || _ __ ___ ___| |_| |__ ___ __| | * Method: JOB_OPEN || | '_ ` _ \ / _ | __| '_ \ / _ \ / _` | * || | | | | | | __| |_| | | | (_) | (_| | * || |_| |_| |_|\___|\__|_| |_|\___/ \__,_| METHOD job_open. gv_jobname = jobname. CALL FUNCTION 'JOB_OPEN_ADK' EXPORTING JOBNAME = gv_jobname IMPORTING JOBCOUNT = gv_jobcount EXCEPTIONS OTHERS = 4. IF SY-SUBRC <> 0. clear success. ELSE. success = abap_true. ENDIF. ENDMETHOD. * || _ _ _ * Class : LCL_JOB_UTILITY || _ __ ___ ___| |_| |__ ___ __| | * Method: JOB_SUBMIT || | '_ ` _ \ / _ | __| '_ \ / _ \ / _` | * || | | | | | | __| |_| | | | (_) | (_| | * || |_| |_| |_|\___|\__|_| |_|\___/ \__,_| METHOD job_submit. clear success. CALL FUNCTION 'JOB_SUBMIT_ADK' EXPORTING AUTHCKNAM = 'BATCHUSER' JOBCOUNT = gv_jobcount JOBNAME = gv_jobname REPORT = reportname VARIANT = variant EXCEPTIONS OTHERS = 4. IF SY-SUBRC = 0. success = abap_true. ENDIF. ENDMETHOD. * || _ _ _ * Class : LCL_JOB_UTILITY || _ __ ___ ___| |_| |__ ___ __| | * Method: JOB_CLOSE || | '_ ` _ \ / _ | __| '_ \ / _ \ / _` | * || | | | | | | __| |_| | | | (_) | (_| | * || |_| |_| |_|\___|\__|_| |_|\___/ \__,_| METHOD job_close. clear success. if immediate = abap_true. CALL FUNCTION 'JOB_CLOSE_ADK' EXPORTING JOBCOUNT = gv_jobcount JOBNAME = gv_jobname STRTIMMED = 'X' EXCEPTIONS OTHERS = 4. IF SY-SUBRC = 0. success = abap_true. ENDIF. else. CALL FUNCTION 'JOB_CLOSE_ADK' EXPORTING JOBCOUNT = gv_jobcount JOBNAME = gv_jobname SDLSTRTDT = start_date SDLSTRTTM = start_time EXCEPTIONS OTHERS = 4. IF SY-SUBRC = 0. success = abap_true. ENDIF. endif. ENDMETHOD. * || _ _ _ * Class : LCL_JOB_UTILITY || _ __ ___ ___| |_| |__ ___ __| | * Method: JOB_SELECT || | '_ ` _ \ / _ | __| '_ \ / _ \ / _` | * || | | | | | | __| |_| | | | (_) | (_| | * || |_| |_| |_|\___|\__|_| |_|\___/ \__,_| METHOD job_select. data: lw_JOBSEL_PARAM_IN type BTCSELECT. clear lw_JOBSEL_PARAM_IN. lw_JOBSEL_PARAM_IN-JOBNAME = jobname. lw_JOBSEL_PARAM_IN-USERNAME = '*'. lw_JOBSEL_PARAM_IN-FROM_DATE = sy-datum - 1. lw_JOBSEL_PARAM_IN-FROM_TIME = '000000'. lw_JOBSEL_PARAM_IN-TO_DATE = sy-datum + 1. lw_JOBSEL_PARAM_IN-TO_TIME = '235959'. lw_JOBSEL_PARAM_IN-PRELIM = prelim. lw_JOBSEL_PARAM_IN-SCHEDUL = schedul. lw_JOBSEL_PARAM_IN-READY = ready. lw_JOBSEL_PARAM_IN-RUNNING = running. lw_JOBSEL_PARAM_IN-FINISHED = finished. lw_JOBSEL_PARAM_IN-ABORTED = aborted. CALL FUNCTION 'BP_JOB_SELECT' EXPORTING JOBSELECT_DIALOG = 'N' JOBSEL_PARAM_IN = lw_JOBSEL_PARAM_IN IMPORTING NR_OF_JOBS_FOUND = NR_OF_JOBS_FOUND TABLES JOBSELECT_JOBLIST = gt_JOBLIST EXCEPTIONS OTHERS = 4. IF SY-SUBRC <> 0. clear NR_OF_JOBS_FOUND. ENDIF. gv_jobdetails_selected = abap_true. ENDMETHOD. METHOD foobar. write: 'Cheese'. ENDMETHOD. ENDCLASS.