* _______ _______ _______ _______ _______ _______ ______ _______ _______ ______ _______ * | _ | _ | _ | | | _ | || _ | _ | _ | | _ | * | |_| | |_| | |_| | _ | | |_| | _ | |_| | |_| | | || | |_| | * | | | | |_| | | | | | | | | |_||_| | * | | _ || | ___| _| | |_| | | _ || __ | | * | _ | |_| | _ | | | |_| _ | | _ | |_| | | | | _ | * |__| |__|_______|__| |__|___| |_______|__| |__|______||__| |__|_______|___| |_|__| |__| * www.abapcadabra.com *------------------------------------------------------------------------------------------- * * ___ __ __ _ _ * / __\ ___ _ __ _ _ / / /\ \ \ _ __ (_)| |_ ___ _ __ * / / / _ \ | '_ \ | | | |\ \/ \/ /| '__|| || __| / _ \| '__| * / /___ | (_) || |_) || |_| | \ /\ / | | | || |_ | __/| | * \____/ \___/ | .__/ \__, | \/ \/ |_| |_| \__| \___||_| * |_| |___/ Cloack and uncloack your coding * *------------------------------------------------------------------------------------------- * program : ZABAPCADABRA_COPYWRITER * title : AbapcadabrA CopyWriter, Copy-protect your coding, hang on to original * functional area : Development tool * environment : 4.7 * program Function : Utility tool to protect installed software. The report will clear * all comments and formatting and rename local variables from methods * and routines to HEX guid codes. The original source can be re-instated * but is kept in a password protected storage, where the password was * used to scramble the source. * Documentation : Search for "Copywriter" on AbapcadabrA.com * Previous version : This is the initial version * Developer name : Wim Maasdam, Ogre full * Development date : 01/11/2016, final release 08/11/2016 * Version : 0.2 *------------------------------------------------------------------------------------------- * ___ _ _ *__/\____/\____/\__ / _ \ | ___ __ _ ___ ___ _ __ ___ | |_ ___ _ *\ /\ /\ / / /_)/ |/ _ \/ _` / __|/ _ \ | '_ \ / _ \| __/ _ (_) */_ _\/_ _\/_ _\ / ___/| | __/ (_| \__ \ __/ | | | | (_) | || __/_ * \/ \/ \/ \/ |_|\___|\__,_|___/\___| |_| |_|\___/ \__\___(_) * _ _ _ _ _ _ *| |_| |__ (_)___ /_\ | |__ __ _ _ __ ___ ___ _ _ _ __ ___ ___ ___ ___ __| | ___ *| __| '_ \| / __| //_\\| '_ \ / _` | '_ \ / __|/ _ \| | | | '__/ __/ _ \ / __/ _ \ / _` |/ _ \ *| |_| | | | \__ \ / _ \ |_) | (_| | |_) | \__ \ (_) | |_| | | | (_| __/ | (_| (_) | (_| | __/ * \__|_| |_|_|___/ \_/ \_/_.__/ \__,_| .__/ |___/\___/ \__,_|_| \___\___| \___\___/ \__,_|\___| * |_| _ _ _ *__ ____ _ ___ ___ ___ _ __ _ _ _ __ _ __ ___ | |_ ___ ___| |_ ___ __| | *\ \ /\ / / _` / __| / __/ _ \| '_ \| | | |_____| '_ \| '__/ _ \| __/ _ \/ __| __/ _ \/ _` | * \ V V / (_| \__ \ | (_| (_) | |_) | |_| |_____| |_) | | | (_) | || __/ (__| || __/ (_| | * \_/\_/ \__,_|___/ \___\___/| .__/ \__, | | .__/|_| \___/ \__\___|\___|\__\___|\__,_| * |_| |___/ |_| * +-------------------------------------------------------------------------------------------+ * | The Abap source code has undergone a copyright treatment which makes understanding and | * | changing the coding very difficult. Use report ZABAPCADABRA_COPYWRITER to reinstate the | * | original coding before applying any changes or even investigating issues. For more info | * | on the password protected Copywrite protector search for Copywriter on AbapcadabrA.com | * +-------------------------------------------------------------------------------------------+ * * REPORT ZABAPCADABRA_COPYWRITER. " ___ AbapcadabrA 2016 DATA HX29C3D9911EE6A9BE94F7AA38FB44 TYPE BOOLEAN. DATA LV_SRTFD TYPE HLPINDX-SRTFD. " / / AbapcadabrA 2016 DATA LV_DEVCLASS TYPE TADIR-DEVCLASS. " / /___ AbapcadabrA 2016 DATA LV_STATE TYPE PROGDIR-STATE. " \____/ AbapcadabrA 2016 CLASS HX29C3D9911EE6A9BE94F7AA37BB44 DEFINITION. " ___ AbapcadabrA 2016 PUBLIC SECTION. " / _ \ AbapcadabrA 2016 DATA GV_LEGAL_CHARS TYPE C LENGTH 76 VALUE 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789[]()<>!?:.,;-_'. DATA GT_WARNING_COMMENTS TYPE STANDARD TABLE OF CHAR255. DATA GT_COPYRIGHT TYPE STANDARD TABLE OF CHAR50. " _ __ AbapcadabrA 2016 DATA GV_TRANSLATION_STR TYPE CHAR255. " | '_ \ AbapcadabrA 2016 DATA GV_PASSWORD TYPE CHAR20. " | |_) | AbapcadabrA 2016 DATA GV_PASSWORD2 TYPE CHAR20. " | .__/ AbapcadabrA 2016 DATA GV_COPYRIGHT_OWNER TYPE C LENGTH 50. " |_| AbapcadabrA 2016 DATA GV_SYNTAX_CHECK TYPE BOOLEAN. " _ _ AbapcadabrA 2016 DATA GV_DECODE_REQUESTED TYPE BOOLEAN. " | | | | AbapcadabrA 2016 DATA GT_SOURCE TYPE STANDARD TABLE OF CHAR255. " | |_| | AbapcadabrA 2016 DATA GT_SOURCE_ORIGINAL TYPE STANDARD TABLE OF CHAR255. DATA BEGIN OF GW_PROCESLOG. " |___/ AbapcadabrA 2016 DATA SCRAMBLED TYPE N LENGTH 2. " _ __ AbapcadabrA 2016 DATA SCRAMBLED_LIGHT TYPE N LENGTH 2. " | '__| AbapcadabrA 2016 DATA SCRAMBLED_LINECOUNT TYPE N LENGTH 8. " | | AbapcadabrA 2016 DATA UNSCRAMBLED TYPE N LENGTH 2. " |_| AbapcadabrA 2016 DATA ORIGINAL_LINECOUNT TYPE N LENGTH 8. " _ AbapcadabrA 2016 DATA SKIPPED TYPE N LENGTH 2. " (_) AbapcadabrA 2016 DATA MESSAGE TYPE C LENGTH 90. " | | AbapcadabrA 2016 DATA END OF GW_PROCESLOG. " | | AbapcadabrA 2016 METHODS HX29C3D9911EE6A9BE94F7AA37DB44. " |_| AbapcadabrA 2016 METHODS HX29C3D9911EE6A9BE94F7AA381B44 IMPORTING TITLE TYPE ANY RETURNING VALUE(PASSWORD) TYPE CHAR20. METHODS HX29C3D9911EE6A9BE94F7AA38BB44 IMPORTING SOURCE TYPE SY-REPID. METHODS HX29C3D9911EE6A9BE94F7AA389B44 IMPORTING SOURCE TYPE SY-REPID. METHODS HX29C3D9911EE6A9BE94F7AA385B44 IMPORTING SOURCE TYPE SY-REPID. METHODS HX29C3D9911EE6A9BE94F7AA387B44 IMPORTING SOURCE TYPE SY-REPID. METHODS HX29C3D9911EE6A9BE94F7AA38DB44 IMPORTING SEED TYPE ANY OBJECT TYPE ANY. CLASS-METHODS HX29C3D9911EE6A9BE94F7AA37FB44 IMPORTING PARSOURCE TYPE ANY. CLASS-METHODS IS_PRODUCTION_SYSTEM RETURNING VALUE(IS_PRODUCTION) TYPE BOOLEAN. . " | | | | AbapcadabrA 2016 ENDCLASS. " |_| |_| AbapcadabrA 2016 CLASS HX29C3D9911EE6A9BE94F7AA37BB44 IMPLEMENTATION. METHOD HX29C3D9911EE6A9BE94F7AA37DB44. " | |_ AbapcadabrA 2016 DEFINE ADD_LINE. " | __| AbapcadabrA 2016 APPEND &1 TO GT_WARNING_COMMENTS. " | |_ AbapcadabrA 2016 . " \__| AbapcadabrA 2016 END-OF-DEFINITION. " AbapcadabrA 2016 DEFINE ADD_CHARACTER. " AbapcadabrA 2016 APPEND &1 TO GT_COPYRIGHT. " ___ AbapcadabrA 2016 . " / __\ AbapcadabrA 2016 END-OF-DEFINITION. " / / AbapcadabrA 2016 CLEAR GT_WARNING_COMMENTS[]. " / /___ AbapcadabrA 2016 ADD_LINE '* ___ _ _ '. ADD_LINE '*__/\____/\____/\__ / _ \ | ___ __ _ ___ ___ _ __ ___ | |_ ___ _ '. ADD_LINE '*\ /\ /\ / / /_)/ |/ _ \/ _` / __|/ _ \ | ''_ \ / _ \| __/ _ (_)'. ADD_LINE '*/_ _\/_ _\/_ _\ / ___/| | __/ (_| \__ \ __/ | | | | (_) | || __/_ '. ADD_LINE '* \/ \/ \/ \/ |_|\___|\__,_|___/\___| |_| |_|\___/ \__\___(_)'. ADD_LINE '* _ _ _ _ _ _ '. ADD_LINE '*| |_| |__ (_)___ /_\ | |__ __ _ _ __ ___ ___ _ _ _ __ ___ ___ ___ ___ __| | ___ '. ADD_LINE '*| __| ''_ \| / __| //_\\| ''_ \ / _` | ''_ \ / __|/ _ \| | | | ''__/ __/ _ \ / __/ _ \ / _` |/ _ \'. ADD_LINE '*| |_| | | | \__ \ / _ \ |_) | (_| | |_) | \__ \ (_) | |_| | | | (_| __/ | (_| (_) | (_| | __/'. ADD_LINE '* \__|_| |_|_|___/ \_/ \_/_.__/ \__,_| .__/ |___/\___/ \__,_|_| \___\___| \___\___/ \__,_|\___|'. ADD_LINE '* |_| _ _ _ '. ADD_LINE '*__ ____ _ ___ ___ ___ _ __ _ _ _ __ _ __ ___ | |_ ___ ___| |_ ___ __| |'. ADD_LINE '*\ \ /\ / / _` / __| / __/ _ \| ''_ \| | | |_____| ''_ \| ''__/ _ \| __/ _ \/ __| __/ _ \/ _` |'. ADD_LINE '* \ V V / (_| \__ \ | (_| (_) | |_) | |_| |_____| |_) | | | (_) | || __/ (__| || __/ (_| |'. ADD_LINE '* \_/\_/ \__,_|___/ \___\___/| .__/ \__, | | .__/|_| \___/ \__\___|\___|\__\___|\__,_|'. ADD_LINE '* |_| |___/ |_| '. ADD_LINE '* +-------------------------------------------------------------------------------------------+'. ADD_LINE '* | The Abap source code has undergone a copyright treatment which makes understanding and |'. ADD_LINE '* | changing the coding very difficult. Use report ZABAPCADABRA_COPYWRITER to reinstate the | '. ADD_LINE '* | original coding before applying any changes or even investigating issues. For more info |'. ADD_LINE '* | on the password protected Copywrite protector search for Copywriter on AbapcadabrA.com |'. ADD_LINE '* +-------------------------------------------------------------------------------------------+'. ADD_LINE '*'. " | | AbapcadabrA 2016 ADD_LINE '*'. " |_| AbapcadabrA 2016 ADD_CHARACTER ' ___ '. " __ _ AbapcadabrA 2016 ADD_CHARACTER ' / __\'. " / _` | AbapcadabrA 2016 ADD_CHARACTER ' / / '. " | (_| | AbapcadabrA 2016 ADD_CHARACTER '/ /___ '. " \__, | AbapcadabrA 2016 ADD_CHARACTER '\____/ '. " |___/ AbapcadabrA 2016 ADD_CHARACTER ' ___ '. " _ AbapcadabrA 2016 ADD_CHARACTER ' / _ \ '. " | |__ AbapcadabrA 2016 ADD_CHARACTER '| (_) |'. " | '_ \ AbapcadabrA 2016 ADD_CHARACTER ' \___/ '. " | | | | AbapcadabrA 2016 ADD_CHARACTER ' _ __ '. " |_| |_| AbapcadabrA 2016 ADD_CHARACTER '| ''_ \ '. " _ AbapcadabrA 2016 ADD_CHARACTER '| |_) |'. " | |_ AbapcadabrA 2016 ADD_CHARACTER '| .__/ '. " | __| AbapcadabrA 2016 ADD_CHARACTER '|_| '. " | |_ AbapcadabrA 2016 ADD_CHARACTER ' _ _ '. " \__| AbapcadabrA 2016 ADD_CHARACTER '| | | |'. " AbapcadabrA 2016 ADD_CHARACTER '| |_| |'. " AbapcadabrA 2016 ADD_CHARACTER ' \__, |'. " ___ AbapcadabrA 2016 ADD_CHARACTER ' |___/ '. " / __\ AbapcadabrA 2016 ADD_CHARACTER ' _ __ '. " / / AbapcadabrA 2016 ADD_CHARACTER '| ''__| '. " / /___ AbapcadabrA 2016 ADD_CHARACTER '| | '. " \____/ AbapcadabrA 2016 ADD_CHARACTER '|_| '. " ___ AbapcadabrA 2016 ADD_CHARACTER ' _ '. " / _ \ AbapcadabrA 2016 ADD_CHARACTER '(_) '. " | (_) | AbapcadabrA 2016 ADD_CHARACTER '| | '. " \___/ AbapcadabrA 2016 ADD_CHARACTER '| | '. " _ __ AbapcadabrA 2016 ADD_CHARACTER '|_| '. " | '_ \ AbapcadabrA 2016 ADD_CHARACTER ' __ _ '. " | |_) | AbapcadabrA 2016 ADD_CHARACTER ' / _` |'. " | .__/ AbapcadabrA 2016 ADD_CHARACTER '| (_| |'. " |_| AbapcadabrA 2016 ADD_CHARACTER ' \__, |'. " _ _ AbapcadabrA 2016 ADD_CHARACTER ' |___/ '. " | | | | AbapcadabrA 2016 ADD_CHARACTER ' _ '. " | |_| | AbapcadabrA 2016 ADD_CHARACTER '| |__ '. " \__, | AbapcadabrA 2016 ADD_CHARACTER '| ''_ \ '. " |___/ AbapcadabrA 2016 ADD_CHARACTER '| | | |'. " _ __ AbapcadabrA 2016 ADD_CHARACTER '|_| |_|'. " | '__| AbapcadabrA 2016 ADD_CHARACTER ' _ '. " | | AbapcadabrA 2016 ADD_CHARACTER '| |_ '. " |_| AbapcadabrA 2016 ADD_CHARACTER '| __| '. " _ AbapcadabrA 2016 ADD_CHARACTER '| |_ '. " (_) AbapcadabrA 2016 ADD_CHARACTER ' \__| '. " | | AbapcadabrA 2016 ADD_CHARACTER ''. " | | AbapcadabrA 2016 ADD_CHARACTER ''. " |_| AbapcadabrA 2016 ENDMETHOD. " __ _ AbapcadabrA 2016 METHOD HX29C3D9911EE6A9BE94F7AA381B44. " / _` | AbapcadabrA 2016 DATA LT_FIELDS TYPE STANDARD TABLE OF SVAL. " | (_| | AbapcadabrA 2016 DATA LW_FIELD TYPE SVAL. " \__, | AbapcadabrA 2016 DATA LV_RETURNCODE TYPE C LENGTH 1. " |___/ AbapcadabrA 2016 CLEAR LT_FIELDS[]. " _ AbapcadabrA 2016 LW_FIELD-TABNAME = 'PA0367'. " | |__ AbapcadabrA 2016 LW_FIELD-FIELDNAME = 'ANGT0'. " | '_ \ AbapcadabrA 2016 LW_FIELD-FIELDTEXT = 'Access code'. " | | | | AbapcadabrA 2016 LW_FIELD-NOVALUEHLP = ABAP_TRUE. " |_| |_| AbapcadabrA 2016 APPEND LW_FIELD TO LT_FIELDS. " _ AbapcadabrA 2016 CALL FUNCTION 'POPUP_GET_VALUES' EXPORTING POPUP_TITLE = TITLE IMPORTING RETURNCODE = LV_RETURNCODE TABLES FIELDS = LT_FIELDS. IF LV_RETURNCODE = 'A'. " | __| AbapcadabrA 2016 MESSAGE 'Operation cancelled' TYPE 'W'. " | |_ AbapcadabrA 2016 LEAVE PROGRAM. " \__| AbapcadabrA 2016 ENDIF. " AbapcadabrA 2016 READ TABLE LT_FIELDS INDEX 1 INTO LW_FIELD. " AbapcadabrA 2016 CALL FUNCTION 'SCRAMBLE_STRING' EXPORTING SOURCE = LW_FIELD-VALUE KEY = 19732835 IMPORTING TARGET = PASSWORD. ENDMETHOD. " / __\ AbapcadabrA 2016 METHOD HX29C3D9911EE6A9BE94F7AA38BB44. " / / AbapcadabrA 2016 DATA LV_PASSWORD TYPE CHAR20. " / /___ AbapcadabrA 2016 DATA LV_NAME TYPE TRDIR-NAME. " \____/ AbapcadabrA 2016 DATA LV_DEVCLASS TYPE TADIR-DEVCLASS. " ___ AbapcadabrA 2016 DATA LV_STATE TYPE PROGDIR-STATE. " / _ \ AbapcadabrA 2016 IF SOURCE IS INITIAL OR SOURCE = SY-REPID. " | (_) | AbapcadabrA 2016 EXIT. " \___/ AbapcadabrA 2016 ENDIF. " _ __ AbapcadabrA 2016 SELECT SINGLE DEVCLASS FROM TADIR INTO LV_DEVCLASS WHERE PGMID = 'R3TR' AND OBJECT = 'PROG' AND OBJ_NAME = SOURCE. IF SY-SUBRC <> 0 OR NOT ( LV_DEVCLASS(1) CO '$YZ' ). ADD 1 TO GW_PROCESLOG-SKIPPED. " | .__/ AbapcadabrA 2016 EXIT. " |_| AbapcadabrA 2016 ENDIF. " _ _ AbapcadabrA 2016 SELECT SINGLE DEVCLASS FROM TADIR INTO LV_DEVCLASS WHERE PGMID = 'R3TR' AND OBJECT = 'PROG' AND OBJ_NAME = SY-REPID. IF SY-SUBRC <> 0 OR ( LV_DEVCLASS <> '$TMP' ). " | |_| | AbapcadabrA 2016 ADD 1 TO GW_PROCESLOG-SKIPPED. " \__, | AbapcadabrA 2016 EXIT. " |___/ AbapcadabrA 2016 ENDIF. " _ __ AbapcadabrA 2016 SELECT SINGLE STATE FROM PROGDIR INTO LV_STATE WHERE NAME = SOURCE AND STATE = 'I'. IF SY-SUBRC = 0. " | | AbapcadabrA 2016 ADD 1 TO GW_PROCESLOG-SKIPPED. " |_| AbapcadabrA 2016 EXIT. " _ AbapcadabrA 2016 ENDIF. " (_) AbapcadabrA 2016 LV_NAME = SOURCE. " | | AbapcadabrA 2016 CALL FUNCTION 'ENQUEUE_ESRDIRE' EXPORTING MODE_TRDIR = 'E' NAME = LV_NAME EXCEPTIONS OTHERS = 4. IF SY-SUBRC <> 0. " |_| AbapcadabrA 2016 MESSAGE 'Editor lock' TYPE 'I'. " __ _ AbapcadabrA 2016 ADD 1 TO GW_PROCESLOG-SKIPPED. " / _` | AbapcadabrA 2016 EXIT. " | (_| | AbapcadabrA 2016 ENDIF. " \__, | AbapcadabrA 2016 IF IS_PRODUCTION_SYSTEM( ) = ABAP_TRUE. " |___/ AbapcadabrA 2016 ADD 1 TO GW_PROCESLOG-SKIPPED. " _ AbapcadabrA 2016 EXIT. " | |__ AbapcadabrA 2016 ENDIF. " | '_ \ AbapcadabrA 2016 IMPORT PASSWORD = LV_PASSWORD FROM DATABASE HLPINDX(ZC) ID SOURCE. IF SY-SUBRC = 0. " |_| |_| AbapcadabrA 2016 IF LV_PASSWORD <> GV_PASSWORD. " _ AbapcadabrA 2016 MESSAGE 'Password failure' TYPE 'S'. " | |_ AbapcadabrA 2016 LEAVE PROGRAM. " | __| AbapcadabrA 2016 ENDIF. " | |_ AbapcadabrA 2016 GV_DECODE_REQUESTED = ABAP_TRUE. " \__| AbapcadabrA 2016 HX29C3D9911EE6A9BE94F7AA385B44( SOURCE ). " AbapcadabrA 2016 ELSE. " AbapcadabrA 2016 GV_DECODE_REQUESTED = ABAP_FALSE. " ___ AbapcadabrA 2016 HX29C3D9911EE6A9BE94F7AA389B44( SOURCE ). " / __\ AbapcadabrA 2016 ENDIF. " / / AbapcadabrA 2016 ENDMETHOD. " / /___ AbapcadabrA 2016 METHOD HX29C3D9911EE6A9BE94F7AA389B44. " \____/ AbapcadabrA 2016 TYPES BEGIN OF LTY_BLINDMAKER. " ___ AbapcadabrA 2016 TYPES NAME TYPE C LENGTH 30. " / _ \ AbapcadabrA 2016 TYPES GUID TYPE C LENGTH 32. " | (_) | AbapcadabrA 2016 TYPES LEN TYPE I. " \___/ AbapcadabrA 2016 TYPES END OF LTY_BLINDMAKER. " _ __ AbapcadabrA 2016 DATA LT_TOKENS TYPE STANDARD TABLE OF STOKES. " | '_ \ AbapcadabrA 2016 DATA LW_TOKEN TYPE STOKES. " | |_) | AbapcadabrA 2016 DATA LT_STATEMENTS TYPE STANDARD TABLE OF SSTMNT. DATA LW_STATEMENT TYPE SSTMNT. " |_| AbapcadabrA 2016 DATA LV_SOURCELINE TYPE CHAR255. " _ _ AbapcadabrA 2016 DATA LT_DIRECTIVES TYPE STANDARD TABLE OF LTY_BLINDMAKER. DATA LT_DIRECTIVE_TOKENS TYPE STANDARD TABLE OF CHAR50. DATA LT_COMMENTS TYPE STANDARD TABLE OF CHAR255. " \__, | AbapcadabrA 2016 DATA BEGIN OF LW_FOOTPATH_METHOD. " |___/ AbapcadabrA 2016 DATA TOKEN_CLASS TYPE BOOLEAN. " _ __ AbapcadabrA 2016 DATA TOKEN_IMPLEMENTATION TYPE BOOLEAN. " | '__| AbapcadabrA 2016 DATA TOKEN_METHOD TYPE BOOLEAN. " | | AbapcadabrA 2016 DATA TOGGLE_TOKEN_DATA TYPE BOOLEAN. " |_| AbapcadabrA 2016 DATA LOCAL_VARIABLES TYPE STANDARD TABLE OF LTY_BLINDMAKER WITH DEFAULT KEY. DATA END OF LW_FOOTPATH_METHOD. " (_) AbapcadabrA 2016 DATA BEGIN OF LW_FOOTPATH_ROUTINE. " | | AbapcadabrA 2016 DATA TOKEN_FORM TYPE BOOLEAN. " | | AbapcadabrA 2016 DATA TOGGLE_TOKEN_DATA TYPE BOOLEAN. " |_| AbapcadabrA 2016 DATA LOCAL_VARIABLES TYPE STANDARD TABLE OF LTY_BLINDMAKER WITH DEFAULT KEY. DATA END OF LW_FOOTPATH_ROUTINE. " / _` | AbapcadabrA 2016 DATA LW_BLINDMAKER TYPE LTY_BLINDMAKER. " | (_| | AbapcadabrA 2016 DATA LV_COPYRIGHT_CHARCOUNTER TYPE I. " \__, | AbapcadabrA 2016 DATA LV_MACRO_TOGGLE TYPE BOOLEAN. " |___/ AbapcadabrA 2016 DATA LV_CHARPART TYPE CHAR50. " _ AbapcadabrA 2016 DATA LV_CHARPART2 TYPE CHAR50. " | |__ AbapcadabrA 2016 DATA LV_LIGHT TYPE BOOLEAN. " | '_ \ AbapcadabrA 2016 DATA LV_STRLEN TYPE SY-FDPOS. " | | | | AbapcadabrA 2016 DATA LV_LINECOUNT TYPE N LENGTH 8. " |_| |_| AbapcadabrA 2016 DEFINE WRITELN. " _ AbapcadabrA 2016 ADD 1 TO LV_COPYRIGHT_CHARCOUNTER. " | |_ AbapcadabrA 2016 READ TABLE GT_COPYRIGHT INTO LV_CHARPART INDEX LV_COPYRIGHT_CHARCOUNTER. IF SY-SUBRC <> 0. " | |_ AbapcadabrA 2016 LV_COPYRIGHT_CHARCOUNTER = 1. " \__| AbapcadabrA 2016 READ TABLE GT_COPYRIGHT INTO LV_CHARPART INDEX LV_COPYRIGHT_CHARCOUNTER. ENDIF. " AbapcadabrA 2016 IF NOT GV_COPYRIGHT_OWNER IS INITIAL. " ___ AbapcadabrA 2016 IF STRLEN( LV_SOURCELINE ) < 50. " / __\ AbapcadabrA 2016 LV_SOURCELINE+50(2) = '" ' . " / / AbapcadabrA 2016 LV_SOURCELINE+52(9) = LV_CHARPART. " / /___ AbapcadabrA 2016 LV_SOURCELINE+61(50) = GV_COPYRIGHT_OWNER. " \____/ AbapcadabrA 2016 ENDIF. " ___ AbapcadabrA 2016 ENDIF. " / _ \ AbapcadabrA 2016 SHIFT LV_SOURCELINE RIGHT BY 2 PLACES. " | (_) | AbapcadabrA 2016 APPEND LV_SOURCELINE TO GT_SOURCE. " \___/ AbapcadabrA 2016 CLEAR LV_SOURCELINE. " _ __ AbapcadabrA 2016 . " | '_ \ AbapcadabrA 2016 END-OF-DEFINITION. " | |_) | AbapcadabrA 2016 DEFINE SEARCH_AND_REPLACE. " | .__/ AbapcadabrA 2016 LV_STRLEN = STRLEN( &1 ). " |_| AbapcadabrA 2016 IF STRLEN( &2 ) >= LV_STRLEN. " _ _ AbapcadabrA 2016 IF &1 = &2(LV_STRLEN). " | | | | AbapcadabrA 2016 REPLACE &1 IN &2 WITH &3. " | |_| | AbapcadabrA 2016 ELSE. " \__, | AbapcadabrA 2016 CONCATENATE '(' &1 INTO LV_CHARPART. " |___/ AbapcadabrA 2016 CONCATENATE '(' &3 INTO LV_CHARPART2. " _ __ AbapcadabrA 2016 REPLACE LV_CHARPART IN &2 WITH LV_CHARPART2. " | '__| AbapcadabrA 2016 CONCATENATE '+' &1 INTO LV_CHARPART. " | | AbapcadabrA 2016 CONCATENATE '+' &3 INTO LV_CHARPART2. " |_| AbapcadabrA 2016 REPLACE LV_CHARPART IN &2 WITH LV_CHARPART2. " _ AbapcadabrA 2016 ENDIF. " (_) AbapcadabrA 2016 ENDIF. " | | AbapcadabrA 2016 . " | | AbapcadabrA 2016 END-OF-DEFINITION. " |_| AbapcadabrA 2016 DEFINE SEARCH_AND_REPLACE2. " __ _ AbapcadabrA 2016 REPLACE &1 IN &2 WITH &3. " / _` | AbapcadabrA 2016 . " | (_| | AbapcadabrA 2016 END-OF-DEFINITION. " \__, | AbapcadabrA 2016 CLEAR GT_SOURCE[]. " |___/ AbapcadabrA 2016 READ REPORT SOURCE INTO GT_SOURCE. " _ AbapcadabrA 2016 IF SY-SUBRC <> 0. " | |__ AbapcadabrA 2016 EXIT. " | '_ \ AbapcadabrA 2016 ENDIF. " | | | | AbapcadabrA 2016 GT_SOURCE_ORIGINAL[] = GT_SOURCE[]. " |_| |_| AbapcadabrA 2016 HX29C3D9911EE6A9BE94F7AA38DB44( EXPORTING SEED = GV_PASSWORD OBJECT = SOURCE ). LOOP AT GT_SOURCE_ORIGINAL INTO LV_SOURCELINE. " | |_ AbapcadabrA 2016 TRANSLATE LV_SOURCELINE USING GV_TRANSLATION_STR. MODIFY GT_SOURCE_ORIGINAL FROM LV_SOURCELINE. " | |_ AbapcadabrA 2016 ENDLOOP. " \__| AbapcadabrA 2016 DESCRIBE TABLE GT_SOURCE LINES LV_LINECOUNT. " AbapcadabrA 2016 ADD LV_LINECOUNT TO GW_PROCESLOG-ORIGINAL_LINECOUNT. CLEAR LT_COMMENTS. " ___ AbapcadabrA 2016 LOOP AT GT_SOURCE INTO LV_SOURCELINE WHERE TABLE_LINE(2) = '**'. APPEND LV_SOURCELINE+1 TO LT_COMMENTS. " / / AbapcadabrA 2016 DELETE GT_SOURCE. " / /___ AbapcadabrA 2016 ENDLOOP. " \____/ AbapcadabrA 2016 CLEAR LT_DIRECTIVES[]. " ___ AbapcadabrA 2016 CLEAR LV_LIGHT. " / _ \ AbapcadabrA 2016 LOOP AT GT_SOURCE INTO LV_SOURCELINE WHERE TABLE_LINE(1) = '*'. CONDENSE LV_SOURCELINE NO-GAPS. " \___/ AbapcadabrA 2016 TRANSLATE LV_SOURCELINE TO UPPER CASE. " _ __ AbapcadabrA 2016 IF LV_SOURCELINE(12) = '*COPYWRITER:'. " | '_ \ AbapcadabrA 2016 SPLIT LV_SOURCELINE+12 AT ',' INTO TABLE LT_DIRECTIVE_TOKENS. LOOP AT LT_DIRECTIVE_TOKENS INTO LV_CHARPART. " | .__/ AbapcadabrA 2016 IF LV_CHARPART = 'LIGHT'. " |_| AbapcadabrA 2016 LV_LIGHT = ABAP_TRUE. " _ _ AbapcadabrA 2016 ELSE. " | | | | AbapcadabrA 2016 LW_BLINDMAKER-NAME = LV_CHARPART. " | |_| | AbapcadabrA 2016 LW_BLINDMAKER-LEN = STRLEN( LW_BLINDMAKER-NAME ). LW_BLINDMAKER-GUID = CL_SYSTEM_UUID=>IF_SYSTEM_UUID_STATIC~CREATE_UUID_C32( ). SHIFT LW_BLINDMAKER-GUID LEFT BY 2 PLACES. " _ __ AbapcadabrA 2016 LW_BLINDMAKER-GUID(2) = 'HX'. " | '__| AbapcadabrA 2016 APPEND LW_BLINDMAKER TO LT_DIRECTIVES. " | | AbapcadabrA 2016 SORT LT_DIRECTIVES BY LEN DESCENDING NAME GUID. " |_| AbapcadabrA 2016 ENDIF. " _ AbapcadabrA 2016 ENDLOOP. " (_) AbapcadabrA 2016 ENDIF. " | | AbapcadabrA 2016 ENDLOOP. " | | AbapcadabrA 2016 SCAN ABAP-SOURCE GT_SOURCE TOKENS INTO LT_TOKENS STATEMENTS INTO LT_STATEMENTS. CLEAR LV_MACRO_TOGGLE. " __ _ AbapcadabrA 2016 LOOP AT LT_TOKENS INTO LW_TOKEN. " / _` | AbapcadabrA 2016 IF LW_TOKEN-STR = 'DEFINE'. " | (_| | AbapcadabrA 2016 LV_MACRO_TOGGLE = ABAP_TRUE. " \__, | AbapcadabrA 2016 ELSEIF LW_TOKEN-STR = 'END-OF-DEFINITION'. " |___/ AbapcadabrA 2016 LV_MACRO_TOGGLE = ABAP_FALSE. " _ AbapcadabrA 2016 ELSEIF LV_MACRO_TOGGLE = ABAP_TRUE. " | |__ AbapcadabrA 2016 IF LW_TOKEN-STR(1) <> ''''. " | '_ \ AbapcadabrA 2016 TRANSLATE LW_TOKEN-STR TO UPPER CASE. " | | | | AbapcadabrA 2016 ENDIF. " |_| |_| AbapcadabrA 2016 MODIFY LT_TOKENS FROM LW_TOKEN. " _ AbapcadabrA 2016 ENDIF. " | |_ AbapcadabrA 2016 ENDLOOP. " | __| AbapcadabrA 2016 IF LV_LIGHT = ABAP_TRUE. " | |_ AbapcadabrA 2016 CLEAR GT_SOURCE[]. " \__| AbapcadabrA 2016 CLEAR LV_MACRO_TOGGLE. " AbapcadabrA 2016 ADD 1 TO GW_PROCESLOG-SCRAMBLED_LIGHT. " AbapcadabrA 2016 LOOP AT LT_STATEMENTS INTO LW_STATEMENT. " ___ AbapcadabrA 2016 CLEAR LV_SOURCELINE. " / __\ AbapcadabrA 2016 LOOP AT LT_TOKENS FROM LW_STATEMENT-FROM TO LW_STATEMENT-TO INTO LW_TOKEN. IF LW_TOKEN-STR = 'DEFINE'. " / /___ AbapcadabrA 2016 LV_MACRO_TOGGLE = ABAP_TRUE. " \____/ AbapcadabrA 2016 ELSEIF LW_TOKEN-STR = 'END-OF-DEFINITION'. " ___ AbapcadabrA 2016 LV_MACRO_TOGGLE = ABAP_FALSE. " / _ \ AbapcadabrA 2016 ENDIF. " | (_) | AbapcadabrA 2016 IF NOT LT_DIRECTIVES[] IS INITIAL. " \___/ AbapcadabrA 2016 LOOP AT LT_DIRECTIVES INTO LW_BLINDMAKER. " _ __ AbapcadabrA 2016 SEARCH_AND_REPLACE2 LW_BLINDMAKER-NAME LW_TOKEN-STR LW_BLINDMAKER-GUID. ENDLOOP. " | |_) | AbapcadabrA 2016 ENDIF. " | .__/ AbapcadabrA 2016 CONCATENATE LV_SOURCELINE LW_TOKEN-STR INTO LV_SOURCELINE SEPARATED BY SPACE. IF LV_MACRO_TOGGLE = ABAP_TRUE. " _ _ AbapcadabrA 2016 LV_STRLEN = STRLEN( LV_SOURCELINE ) - 1. " | | | | AbapcadabrA 2016 IF LV_SOURCELINE+LV_STRLEN(1) = '.' OR LV_SOURCELINE+LV_STRLEN(1) = ','. WRITELN. " \__, | AbapcadabrA 2016 ENDIF. " |___/ AbapcadabrA 2016 ENDIF. " _ __ AbapcadabrA 2016 ENDLOOP. " | '__| AbapcadabrA 2016 CONCATENATE LV_SOURCELINE '.' INTO LV_SOURCELINE. WRITELN. " |_| AbapcadabrA 2016 ENDLOOP. " _ AbapcadabrA 2016 ELSE. " (_) AbapcadabrA 2016 CLEAR GT_SOURCE[]. " | | AbapcadabrA 2016 CLEAR LW_FOOTPATH_METHOD. " | | AbapcadabrA 2016 ADD 1 TO GW_PROCESLOG-SCRAMBLED. " |_| AbapcadabrA 2016 LOOP AT LT_STATEMENTS INTO LW_STATEMENT. " __ _ AbapcadabrA 2016 LOOP AT LT_TOKENS FROM LW_STATEMENT-FROM TO LW_STATEMENT-TO INTO LW_TOKEN. CASE LW_TOKEN-STR. " | (_| | AbapcadabrA 2016 WHEN 'CLASS'. " \__, | AbapcadabrA 2016 IF LW_TOKEN-COL <= 4. " |___/ AbapcadabrA 2016 CLEAR LW_FOOTPATH_METHOD. " _ AbapcadabrA 2016 LW_FOOTPATH_METHOD-TOKEN_CLASS = ABAP_TRUE. " | |__ AbapcadabrA 2016 ENDIF. " | '_ \ AbapcadabrA 2016 WHEN 'IMPLEMENTATION'. " | | | | AbapcadabrA 2016 IF LW_FOOTPATH_METHOD-TOKEN_CLASS = ABAP_TRUE. " |_| |_| AbapcadabrA 2016 LW_FOOTPATH_METHOD-TOKEN_IMPLEMENTATION = ABAP_TRUE. ENDIF. " | |_ AbapcadabrA 2016 WHEN 'METHOD'. " | __| AbapcadabrA 2016 IF LW_FOOTPATH_METHOD-TOKEN_IMPLEMENTATION = ABAP_TRUE. LW_FOOTPATH_METHOD-TOKEN_METHOD = ABAP_TRUE. " \__| AbapcadabrA 2016 ENDIF. " AbapcadabrA 2016 WHEN 'DATA'. " AbapcadabrA 2016 IF LW_FOOTPATH_METHOD-TOKEN_METHOD = ABAP_TRUE. " ___ AbapcadabrA 2016 LW_FOOTPATH_METHOD-TOGGLE_TOKEN_DATA = ABAP_TRUE. ENDIF. " / / AbapcadabrA 2016 IF LW_FOOTPATH_ROUTINE-TOKEN_FORM = ABAP_TRUE. " / /___ AbapcadabrA 2016 LW_FOOTPATH_ROUTINE-TOGGLE_TOKEN_DATA = ABAP_TRUE. ENDIF. " ___ AbapcadabrA 2016 WHEN 'ENDMETHOD'. " / _ \ AbapcadabrA 2016 CLEAR LW_FOOTPATH_METHOD-TOKEN_METHOD. " | (_) | AbapcadabrA 2016 CLEAR LW_FOOTPATH_METHOD-TOGGLE_TOKEN_DATA. " \___/ AbapcadabrA 2016 CLEAR LW_FOOTPATH_METHOD-LOCAL_VARIABLES[]. " _ __ AbapcadabrA 2016 WHEN 'ENDCLASS'. " | '_ \ AbapcadabrA 2016 CLEAR LW_FOOTPATH_METHOD. " | |_) | AbapcadabrA 2016 CLEAR LW_FOOTPATH_METHOD-LOCAL_VARIABLES[]. " | .__/ AbapcadabrA 2016 WHEN 'FORM'. " |_| AbapcadabrA 2016 IF LW_TOKEN-COL <= 4. " _ _ AbapcadabrA 2016 CLEAR LW_FOOTPATH_ROUTINE. " | | | | AbapcadabrA 2016 LW_FOOTPATH_ROUTINE-TOKEN_FORM = ABAP_TRUE. " | |_| | AbapcadabrA 2016 ENDIF. " \__, | AbapcadabrA 2016 WHEN 'ENDFORM'. " |___/ AbapcadabrA 2016 CLEAR LW_FOOTPATH_ROUTINE. " _ __ AbapcadabrA 2016 CLEAR LW_FOOTPATH_ROUTINE-LOCAL_VARIABLES[]. " | '__| AbapcadabrA 2016 ENDCASE. " | | AbapcadabrA 2016 LV_SOURCELINE = LW_TOKEN-STR. " |_| AbapcadabrA 2016 IF LW_FOOTPATH_METHOD-TOKEN_METHOD = ABAP_TRUE. " _ AbapcadabrA 2016 IF ( STRLEN( LW_TOKEN-STR ) >= 3 ) AND LW_TOKEN-STR <> 'DATA' AND LW_FOOTPATH_METHOD-TOGGLE_TOKEN_DATA = ABAP_TRUE. IF LW_TOKEN-STR(3) = 'LV_' OR LW_TOKEN-STR(3) = 'LW_' OR LW_TOKEN-STR(3) = 'LT_' OR LW_TOKEN-STR(3) = 'LO_' OR LW_TOKEN-STR(3) = 'LR_'. READ TABLE LW_FOOTPATH_METHOD-LOCAL_VARIABLES INTO LW_BLINDMAKER WITH KEY NAME = LW_TOKEN-STR. IF SY-SUBRC = 0. " |_| AbapcadabrA 2016 ELSE. " __ _ AbapcadabrA 2016 LW_BLINDMAKER-NAME = LW_TOKEN-STR. " / _` | AbapcadabrA 2016 LW_BLINDMAKER-LEN = STRLEN( LW_TOKEN-STR ). " | (_| | AbapcadabrA 2016 LW_BLINDMAKER-GUID = CL_SYSTEM_UUID=>IF_SYSTEM_UUID_STATIC~CREATE_UUID_C32( ). SHIFT LW_BLINDMAKER-GUID LEFT BY 2 PLACES. " |___/ AbapcadabrA 2016 LW_BLINDMAKER-GUID(2) = 'HX'. " _ AbapcadabrA 2016 APPEND LW_BLINDMAKER TO LW_FOOTPATH_METHOD-LOCAL_VARIABLES. SORT LW_FOOTPATH_METHOD-LOCAL_VARIABLES BY LEN DESCENDING NAME GUID. ENDIF. " | | | | AbapcadabrA 2016 LW_FOOTPATH_METHOD-TOGGLE_TOKEN_DATA = ABAP_FALSE. LV_SOURCELINE = LW_BLINDMAKER-GUID. " _ AbapcadabrA 2016 ELSE. " | |_ AbapcadabrA 2016 LV_SOURCELINE = LW_TOKEN-STR. " | __| AbapcadabrA 2016 ENDIF. " | |_ AbapcadabrA 2016 ELSEIF LW_TOKEN-STR <> 'DATA' AND NOT LW_FOOTPATH_METHOD-LOCAL_VARIABLES[] IS INITIAL. LOOP AT LW_FOOTPATH_METHOD-LOCAL_VARIABLES INTO LW_BLINDMAKER. SEARCH_AND_REPLACE LW_BLINDMAKER-NAME LW_TOKEN-STR LW_BLINDMAKER-GUID. ENDLOOP. " ___ AbapcadabrA 2016 LV_SOURCELINE = LW_TOKEN-STR. " / __\ AbapcadabrA 2016 ELSE. " / / AbapcadabrA 2016 LV_SOURCELINE = LW_TOKEN-STR. " / /___ AbapcadabrA 2016 ENDIF. " \____/ AbapcadabrA 2016 ENDIF. " ___ AbapcadabrA 2016 IF LW_FOOTPATH_ROUTINE-TOKEN_FORM = ABAP_TRUE. " / _ \ AbapcadabrA 2016 IF ( STRLEN( LW_TOKEN-STR ) >= 3 ) AND LW_TOKEN-STR <> 'DATA' AND LW_FOOTPATH_ROUTINE-TOGGLE_TOKEN_DATA = ABAP_TRUE. IF LW_TOKEN-STR(3) = 'LV_' OR LW_TOKEN-STR(3) = 'LW_' OR LW_TOKEN-STR(3) = 'LT_' OR LW_TOKEN-STR(3) = 'LO_' OR LW_TOKEN-STR(3) = 'LR_'. READ TABLE LW_FOOTPATH_ROUTINE-LOCAL_VARIABLES INTO LW_BLINDMAKER WITH KEY NAME = LW_TOKEN-STR. IF SY-SUBRC = 0. " | '_ \ AbapcadabrA 2016 ELSE. " | |_) | AbapcadabrA 2016 LW_BLINDMAKER-NAME = LW_TOKEN-STR. " | .__/ AbapcadabrA 2016 LW_BLINDMAKER-LEN = STRLEN( LW_TOKEN-STR ). " |_| AbapcadabrA 2016 LW_BLINDMAKER-GUID = CL_SYSTEM_UUID=>IF_SYSTEM_UUID_STATIC~CREATE_UUID_C32( ). SHIFT LW_BLINDMAKER-GUID LEFT BY 2 PLACES. " | | | | AbapcadabrA 2016 LW_BLINDMAKER-GUID(2) = 'HX'. " | |_| | AbapcadabrA 2016 APPEND LW_BLINDMAKER TO LW_FOOTPATH_ROUTINE-LOCAL_VARIABLES. SORT LW_FOOTPATH_ROUTINE-LOCAL_VARIABLES BY LEN DESCENDING NAME GUID. ENDIF. " _ __ AbapcadabrA 2016 LW_FOOTPATH_ROUTINE-TOGGLE_TOKEN_DATA = ABAP_FALSE. LV_SOURCELINE = LW_BLINDMAKER-GUID. " | | AbapcadabrA 2016 ELSE. " |_| AbapcadabrA 2016 LV_SOURCELINE = LW_TOKEN-STR. " _ AbapcadabrA 2016 ENDIF. " (_) AbapcadabrA 2016 ELSEIF LW_TOKEN-STR <> 'DATA' AND NOT LW_FOOTPATH_ROUTINE-LOCAL_VARIABLES[] IS INITIAL. LV_SOURCELINE = LW_TOKEN-STR. " | | AbapcadabrA 2016 LOOP AT LW_FOOTPATH_ROUTINE-LOCAL_VARIABLES INTO LW_BLINDMAKER. SEARCH_AND_REPLACE LW_BLINDMAKER-NAME LW_TOKEN-STR LW_BLINDMAKER-GUID. ENDLOOP. " / _` | AbapcadabrA 2016 ELSE. " | (_| | AbapcadabrA 2016 LV_SOURCELINE = LW_TOKEN-STR. " \__, | AbapcadabrA 2016 ENDIF. " |___/ AbapcadabrA 2016 ENDIF. " _ AbapcadabrA 2016 IF NOT LT_DIRECTIVES[] IS INITIAL. " | |__ AbapcadabrA 2016 LOOP AT LT_DIRECTIVES INTO LW_BLINDMAKER. " | '_ \ AbapcadabrA 2016 SEARCH_AND_REPLACE2 LW_BLINDMAKER-NAME LW_TOKEN-STR LW_BLINDMAKER-GUID. ENDLOOP. " |_| |_| AbapcadabrA 2016 ENDIF. " _ AbapcadabrA 2016 WRITELN. " | |_ AbapcadabrA 2016 ENDLOOP. " | __| AbapcadabrA 2016 LV_SOURCELINE = '.'. " | |_ AbapcadabrA 2016 WRITELN. " \__| AbapcadabrA 2016 ENDLOOP. " AbapcadabrA 2016 ENDIF. " AbapcadabrA 2016 INSERT LINES OF GT_WARNING_COMMENTS INTO GT_SOURCE INDEX 1. INSERT LINES OF LT_COMMENTS INTO GT_SOURCE INDEX 1. DESCRIBE TABLE GT_SOURCE LINES LV_LINECOUNT. " / / AbapcadabrA 2016 ADD LV_LINECOUNT TO GW_PROCESLOG-SCRAMBLED_LINECOUNT. HX29C3D9911EE6A9BE94F7AA387B44( SOURCE ). " \____/ AbapcadabrA 2016 ENDMETHOD. " ___ AbapcadabrA 2016 METHOD HX29C3D9911EE6A9BE94F7AA385B44. " / _ \ AbapcadabrA 2016 DATA LV_SOURCELINE TYPE CHAR255. " | (_) | AbapcadabrA 2016 DATA LV_LINECOUNT TYPE N LENGTH 8. " \___/ AbapcadabrA 2016 CLEAR GT_SOURCE[]. " _ __ AbapcadabrA 2016 IMPORT SOURCE = GT_SOURCE FROM DATABASE HLPINDX(ZC) ID SOURCE. CHECK NOT GT_SOURCE[] IS INITIAL. " | |_) | AbapcadabrA 2016 HX29C3D9911EE6A9BE94F7AA38DB44( EXPORTING SEED = GV_PASSWORD OBJECT = SOURCE ). LOOP AT GT_SOURCE INTO LV_SOURCELINE. " |_| AbapcadabrA 2016 TRANSLATE LV_SOURCELINE USING GV_TRANSLATION_STR. MODIFY GT_SOURCE FROM LV_SOURCELINE. " | | | | AbapcadabrA 2016 ENDLOOP. " | |_| | AbapcadabrA 2016 ADD 1 TO GW_PROCESLOG-UNSCRAMBLED. " \__, | AbapcadabrA 2016 DESCRIBE TABLE GT_SOURCE LINES LV_LINECOUNT. " |___/ AbapcadabrA 2016 ADD LV_LINECOUNT TO GW_PROCESLOG-ORIGINAL_LINECOUNT. HX29C3D9911EE6A9BE94F7AA387B44( SOURCE ). " | '__| AbapcadabrA 2016 ENDMETHOD. " | | AbapcadabrA 2016 METHOD HX29C3D9911EE6A9BE94F7AA387B44. " |_| AbapcadabrA 2016 TYPE-POOLS SYNT. " _ AbapcadabrA 2016 DATA LV_INFO TYPE CHAR255. " (_) AbapcadabrA 2016 DATA LW_DIR TYPE TRDIR. " | | AbapcadabrA 2016 DATA LT_WARNINGS TYPE SYNT_ERRORS. " | | AbapcadabrA 2016 DATA LV_ERROR_MESSAGE TYPE STRING. " |_| AbapcadabrA 2016 DATA LV_ERROR_LINE TYPE I. " __ _ AbapcadabrA 2016 DATA LV_ERROR_LINE_C TYPE C LENGTH 6. " / _` | AbapcadabrA 2016 DATA LV_ERROR_WORD TYPE STRING. " | (_| | AbapcadabrA 2016 DATA LV_SOURCELINE TYPE CHAR255. " \__, | AbapcadabrA 2016 DATA LV_ANSWER TYPE C LENGTH 1. " |___/ AbapcadabrA 2016 DATA LV_LINECOUNTER TYPE I. " _ AbapcadabrA 2016 IF GV_DECODE_REQUESTED = ABAP_FALSE AND GV_SYNTAX_CHECK = ABAP_TRUE. SYNTAX-CHECK FOR GT_SOURCE MESSAGE LV_ERROR_MESSAGE LINE LV_ERROR_LINE WORD LV_ERROR_WORD PROGRAM SOURCE ID 'MSG' TABLE LT_WARNINGS. IF NOT LV_ERROR_MESSAGE IS INITIAL. " | | | | AbapcadabrA 2016 IF LV_ERROR_LINE > 10. " |_| |_| AbapcadabrA 2016 SUBTRACT 10 FROM LV_ERROR_LINE. " _ AbapcadabrA 2016 ENDIF. " | |_ AbapcadabrA 2016 WRITE / SY-ULINE(100). " | __| AbapcadabrA 2016 WRITE / 'Program: '. " | |_ AbapcadabrA 2016 WRITE (90) SOURCE COLOR 1. " \__| AbapcadabrA 2016 WRITE / 'Message: '. " AbapcadabrA 2016 WRITE (90) LV_ERROR_MESSAGE COLOR 6 INTENSIFIED OFF. WRITE / SY-ULINE(100). " ___ AbapcadabrA 2016 CLEAR LV_LINECOUNTER. " / __\ AbapcadabrA 2016 LOOP AT GT_SOURCE INTO LV_SOURCELINE FROM LV_ERROR_LINE. IF LV_LINECOUNTER = 10. " / /___ AbapcadabrA 2016 WRITE /(100) LV_SOURCELINE COLOR 3 INTENSIFIED ON. ELSE. " ___ AbapcadabrA 2016 WRITE /(100) LV_SOURCELINE COLOR 2 INTENSIFIED OFF. ENDIF. " | (_) | AbapcadabrA 2016 ADD 1 TO LV_LINECOUNTER. " \___/ AbapcadabrA 2016 IF LV_LINECOUNTER = 20. " _ __ AbapcadabrA 2016 EXIT. " | '_ \ AbapcadabrA 2016 ENDIF. " | |_) | AbapcadabrA 2016 ENDLOOP. " | .__/ AbapcadabrA 2016 WRITE / SY-ULINE(100). " |_| AbapcadabrA 2016 SKIP. " _ _ AbapcadabrA 2016 EXIT. " | | | | AbapcadabrA 2016 ENDIF. " | |_| | AbapcadabrA 2016 ENDIF. " \__, | AbapcadabrA 2016 IF GV_DECODE_REQUESTED = ABAP_FALSE. " |___/ AbapcadabrA 2016 WRITE SY-DATUM DD/MM/YYYY TO LV_INFO. " _ __ AbapcadabrA 2016 WRITE SY-UZEIT USING EDIT MASK '__:__:__' TO LV_INFO+11. CONCATENATE LV_INFO SY-UNAME INTO LV_INFO SEPARATED BY SPACE. EXPORT PASSWORD = GV_PASSWORD SOURCE = GT_SOURCE_ORIGINAL INFO = LV_INFO TO DATABASE HLPINDX(ZC) ID SOURCE. IF SY-SUBRC = 0. " _ AbapcadabrA 2016 INSERT REPORT SOURCE FROM GT_SOURCE. " (_) AbapcadabrA 2016 ENDIF. " | | AbapcadabrA 2016 ELSE. " | | AbapcadabrA 2016 INSERT REPORT SOURCE FROM GT_SOURCE. " |_| AbapcadabrA 2016 IF SY-SUBRC = 0. " __ _ AbapcadabrA 2016 DELETE FROM DATABASE HLPINDX(ZC) ID SOURCE. " / _` | AbapcadabrA 2016 ENDIF. " | (_| | AbapcadabrA 2016 ENDIF. " \__, | AbapcadabrA 2016 ENDMETHOD. " |___/ AbapcadabrA 2016 METHOD HX29C3D9911EE6A9BE94F7AA38DB44. " _ AbapcadabrA 2016 DATA LV_SEED TYPE C LENGTH 40. " | |__ AbapcadabrA 2016 DATA LV_POSITION TYPE SY-INDEX. " | '_ \ AbapcadabrA 2016 DATA BEGIN OF LW_RANDOMIZER. " | | | | AbapcadabrA 2016 DATA HASH TYPE C LENGTH 76. " |_| |_| AbapcadabrA 2016 DATA STRLEN TYPE SY-FDPOS. " _ AbapcadabrA 2016 DATA LENGTH TYPE SY-FDPOS. " | |_ AbapcadabrA 2016 DATA MOD TYPE SY-FDPOS. " | __| AbapcadabrA 2016 DATA END OF LW_RANDOMIZER. " | |_ AbapcadabrA 2016 DATA LV_TRANSLATION TYPE C LENGTH 76. " \__| AbapcadabrA 2016 FIELD-SYMBOLS TYPE C. " AbapcadabrA 2016 CONCATENATE SEED OBJECT INTO LV_SEED. " AbapcadabrA 2016 TRANSLATE LV_SEED TO UPPER CASE. " ___ AbapcadabrA 2016 TRANSLATE LV_SEED USING 'A3B4C2D3E4F5G6H7I8J9K5L6M2N3O4P5Q6R7S8T9U7V8W2X3Y4Z5~6@7&8^9#9!2?2%3=4(5)6_7-8+9:3;2|3\4/5>60718'. CLEAR LW_RANDOMIZER. " / / AbapcadabrA 2016 LW_RANDOMIZER-STRLEN = STRLEN( LV_SEED ) - 1. " / /___ AbapcadabrA 2016 LW_RANDOMIZER-HASH = LV_SEED. " \____/ AbapcadabrA 2016 LV_TRANSLATION = GV_LEGAL_CHARS. " ___ AbapcadabrA 2016 DO LW_RANDOMIZER-STRLEN TIMES. " / _ \ AbapcadabrA 2016 MOVE LW_RANDOMIZER-HASH(1) TO LW_RANDOMIZER-LENGTH. ASSIGN LV_TRANSLATION(LW_RANDOMIZER-LENGTH) TO . LW_RANDOMIZER-MOD = LW_RANDOMIZER-LENGTH MOD 3. " _ __ AbapcadabrA 2016 CASE LW_RANDOMIZER-MOD. " | '_ \ AbapcadabrA 2016 WHEN 0. " | |_) | AbapcadabrA 2016 SHIFT RIGHT BY 5 PLACES CIRCULAR. " | .__/ AbapcadabrA 2016 WHEN 1. " |_| AbapcadabrA 2016 SHIFT LEFT BY 3 PLACES CIRCULAR. " _ _ AbapcadabrA 2016 WHEN 2. " | | | | AbapcadabrA 2016 SHIFT LEFT BY 1 PLACES CIRCULAR. " | |_| | AbapcadabrA 2016 ENDCASE. " \__, | AbapcadabrA 2016 SHIFT LV_TRANSLATION RIGHT BY 1 PLACES CIRCULAR. " |___/ AbapcadabrA 2016 SHIFT LW_RANDOMIZER-HASH LEFT BY 1 PLACES. " _ __ AbapcadabrA 2016 ENDDO. " | '__| AbapcadabrA 2016 CLEAR GV_TRANSLATION_STR. " | | AbapcadabrA 2016 LW_RANDOMIZER-STRLEN = STRLEN( LV_TRANSLATION ). " |_| AbapcadabrA 2016 DO LW_RANDOMIZER-STRLEN TIMES. " _ AbapcadabrA 2016 LV_POSITION = SY-INDEX - 1. " (_) AbapcadabrA 2016 IF GV_DECODE_REQUESTED = ABAP_FALSE. " | | AbapcadabrA 2016 CONCATENATE GV_TRANSLATION_STR GV_LEGAL_CHARS+LV_POSITION(1) LV_TRANSLATION+LV_POSITION(1) INTO GV_TRANSLATION_STR. ELSE. " |_| AbapcadabrA 2016 CONCATENATE GV_TRANSLATION_STR LV_TRANSLATION+LV_POSITION(1) GV_LEGAL_CHARS+LV_POSITION(1) INTO GV_TRANSLATION_STR. ENDIF. " / _` | AbapcadabrA 2016 ENDDO. " | (_| | AbapcadabrA 2016 ENDMETHOD. " \__, | AbapcadabrA 2016 METHOD HX29C3D9911EE6A9BE94F7AA37FB44. " |___/ AbapcadabrA 2016 TYPES BEGIN OF LTY_COLUMNS. " _ AbapcadabrA 2016 TYPES SOURCE TYPE TADIR-OBJ_NAME. " | |__ AbapcadabrA 2016 TYPES INFO TYPE TKV02-AWSTX. " | '_ \ AbapcadabrA 2016 TYPES END OF LTY_COLUMNS. " | | | | AbapcadabrA 2016 DATA LT_COLUMNS TYPE STANDARD TABLE OF LTY_COLUMNS. DATA LW_COLUMN TYPE LTY_COLUMNS. " _ AbapcadabrA 2016 DATA LV_DYNPROFIELD TYPE HELP_INFO-DYNPROFLD. " | |_ AbapcadabrA 2016 DATA LT_SOURCES TYPE STANDARD TABLE OF HLPINDX-SRTFD. DATA LV_INFO TYPE CHAR255. " | |_ AbapcadabrA 2016 CLEAR LT_COLUMNS[]. " \__| AbapcadabrA 2016 SELECT SRTFD FROM HLPINDX INTO TABLE LT_SOURCES WHERE RELID = 'ZC' AND SRTF2 = 0. LOOP AT LT_SOURCES INTO LW_COLUMN-SOURCE. " AbapcadabrA 2016 IMPORT INFO = LV_INFO FROM DATABASE HLPINDX(ZC) ID LW_COLUMN-SOURCE. LW_COLUMN-INFO = LV_INFO. " / __\ AbapcadabrA 2016 APPEND LW_COLUMN TO LT_COLUMNS. " / / AbapcadabrA 2016 ENDLOOP. " / /___ AbapcadabrA 2016 LV_DYNPROFIELD = PARSOURCE. " \____/ AbapcadabrA 2016 CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST' EXPORTING RETFIELD = 'SOURCE' DYNPPROG = SY-REPID DYNPNR = '1000' DYNPROFIELD = LV_DYNPROFIELD VALUE_ORG = 'S' TABLES VALUE_TAB = LT_COLUMNS. ENDMETHOD. " / _ \ AbapcadabrA 2016 METHOD IS_PRODUCTION_SYSTEM. " | (_) | AbapcadabrA 2016 DATA LV_CCCATEGORY TYPE T000-CCCATEGORY. " \___/ AbapcadabrA 2016 SELECT SINGLE CCCATEGORY FROM T000 INTO LV_CCCATEGORY WHERE MANDT = SY-MANDT. IF SY-SUBRC = 0 AND LV_CCCATEGORY = 'P'. " | '_ \ AbapcadabrA 2016 IS_PRODUCTION = ABAP_TRUE. " | |_) | AbapcadabrA 2016 ELSE. " | .__/ AbapcadabrA 2016 CLEAR IS_PRODUCTION. " |_| AbapcadabrA 2016 ENDIF. " _ _ AbapcadabrA 2016 ENDMETHOD. " | | | | AbapcadabrA 2016 ENDCLASS. " | |_| | AbapcadabrA 2016 SELECTION-SCREEN BEGIN OF LINE. " \__, | AbapcadabrA 2016 SELECTION-SCREEN COMMENT 1(15) LBL_L00 FOR FIELD PA_CTEXT. SELECTION-SCREEN POSITION 20. " _ __ AbapcadabrA 2016 PARAMETERS PA_CTEXT TYPE SY-MSGV1 VISIBLE LENGTH 30 LOWER CASE DEFAULT 'AbapcadabrA 2016'. PARAMETERS PA_SYNTX AS CHECKBOX DEFAULT ABAP_TRUE. SELECTION-SCREEN COMMENT 55(20) LBL_L01 FOR FIELD PA_SYNTX. SELECTION-SCREEN END OF LINE. " _ AbapcadabrA 2016 SELECTION-SCREEN BEGIN OF LINE. " (_) AbapcadabrA 2016 SELECTION-SCREEN COMMENT 1(15) LBL_L02 FOR FIELD PA_STA01. PARAMETERS PA_STA01 TYPE ICON_D VISIBLE LENGTH 2 MODIF ID ICO. PARAMETERS PA_SRC01 TYPE SY-REPID OBLIGATORY VISIBLE LENGTH 30. PARAMETERS PA_INF01 TYPE C LENGTH 30 MODIF ID INF. DEFINE PARAMETER_LINE. " / _` | AbapcadabrA 2016 SELECTION-SCREEN: END OF LINE, " | (_| | AbapcadabrA 2016 BEGIN OF LINE, " \__, | AbapcadabrA 2016 POSITION 17. " |___/ AbapcadabrA 2016 PARAMETERS: PA_STA&1 TYPE ICON_D VISIBLE LENGTH 2 MODIF ID ICO . PARAMETERS: PA_SRC&1 TYPE SY-REPID VISIBLE LENGTH 30. PARAMETERS: PA_INF&1 TYPE C LENGTH 30 MODIF ID INF. . " | | | | AbapcadabrA 2016 END-OF-DEFINITION. " |_| |_| AbapcadabrA 2016 PARAMETER_LINE 02. " _ AbapcadabrA 2016 PARAMETER_LINE 03. " | |_ AbapcadabrA 2016 PARAMETER_LINE 04. " | __| AbapcadabrA 2016 PARAMETER_LINE 05. " | |_ AbapcadabrA 2016 PARAMETER_LINE 06. " \__| AbapcadabrA 2016 PARAMETER_LINE 07. " AbapcadabrA 2016 PARAMETER_LINE 08. " AbapcadabrA 2016 PARAMETER_LINE 09. " ___ AbapcadabrA 2016 PARAMETER_LINE 10. " / __\ AbapcadabrA 2016 SELECTION-SCREEN END OF LINE. " / / AbapcadabrA 2016 SELECTION-SCREEN SKIP. " / /___ AbapcadabrA 2016 SELECTION-SCREEN BEGIN OF LINE. " \____/ AbapcadabrA 2016 SELECTION-SCREEN POSITION 17. " ___ AbapcadabrA 2016 PARAMETERS PA_STA11 TYPE ICON_D VISIBLE LENGTH 2 MODIF ID ICO. PARAMETERS PA_SRC11 TYPE SY-REPID VISIBLE LENGTH 30. PARAMETERS PA_INF11 TYPE C LENGTH 30 MODIF ID INF. PARAMETER_LINE 12. " _ __ AbapcadabrA 2016 PARAMETER_LINE 13. " | '_ \ AbapcadabrA 2016 PARAMETER_LINE 14. " | |_) | AbapcadabrA 2016 PARAMETER_LINE 15. " | .__/ AbapcadabrA 2016 PARAMETER_LINE 16. " |_| AbapcadabrA 2016 PARAMETER_LINE 17. " _ _ AbapcadabrA 2016 PARAMETER_LINE 18. " | | | | AbapcadabrA 2016 PARAMETER_LINE 19. " | |_| | AbapcadabrA 2016 PARAMETER_LINE 20. " \__, | AbapcadabrA 2016 SELECTION-SCREEN END OF LINE. " |___/ AbapcadabrA 2016 DEFINE F4_LINE. " _ __ AbapcadabrA 2016 AT SELECTION-SCREEN ON VALUE-REQUEST FOR PA_SRC&1. HX29C3D9911EE6A9BE94F7AA37BB44=>HX29C3D9911EE6A9BE94F7AA37FB44( EXPORTING PARSOURCE = 'PA_SRC&1' ). . " |_| AbapcadabrA 2016 END-OF-DEFINITION. " _ AbapcadabrA 2016 F4_LINE 01. " (_) AbapcadabrA 2016 F4_LINE 02. " | | AbapcadabrA 2016 F4_LINE 03. " | | AbapcadabrA 2016 F4_LINE 04. " |_| AbapcadabrA 2016 F4_LINE 05. " __ _ AbapcadabrA 2016 F4_LINE 06. " / _` | AbapcadabrA 2016 F4_LINE 07. " | (_| | AbapcadabrA 2016 F4_LINE 08. " \__, | AbapcadabrA 2016 F4_LINE 09. " |___/ AbapcadabrA 2016 F4_LINE 10. " _ AbapcadabrA 2016 F4_LINE 11. " | |__ AbapcadabrA 2016 F4_LINE 12. " | '_ \ AbapcadabrA 2016 F4_LINE 13. " | | | | AbapcadabrA 2016 F4_LINE 14. " |_| |_| AbapcadabrA 2016 F4_LINE 15. " _ AbapcadabrA 2016 F4_LINE 16. " | |_ AbapcadabrA 2016 F4_LINE 17. " | __| AbapcadabrA 2016 F4_LINE 18. " | |_ AbapcadabrA 2016 F4_LINE 19. " \__| AbapcadabrA 2016 F4_LINE 20. " AbapcadabrA 2016 AT SELECTION-SCREEN OUTPUT. " AbapcadabrA 2016 CLEAR HX29C3D9911EE6A9BE94F7AA38FB44. " ___ AbapcadabrA 2016 LOOP AT SCREEN. " / __\ AbapcadabrA 2016 IF SCREEN-GROUP1 = 'ICO'. " / / AbapcadabrA 2016 SCREEN-INPUT = 0. " / /___ AbapcadabrA 2016 MODIFY SCREEN. " \____/ AbapcadabrA 2016 ENDIF. " ___ AbapcadabrA 2016 IF SCREEN-GROUP1 = 'INF'. " / _ \ AbapcadabrA 2016 SCREEN-INPUT = 0. " | (_) | AbapcadabrA 2016 SCREEN-OUTPUT = 1. " \___/ AbapcadabrA 2016 MODIFY SCREEN. " _ __ AbapcadabrA 2016 ENDIF. " | '_ \ AbapcadabrA 2016 ENDLOOP. " | |_) | AbapcadabrA 2016 DEFINE SET_ICON. " | .__/ AbapcadabrA 2016 CLEAR: PA_INF&1. " |_| AbapcadabrA 2016 IF PA_SRC&1 IS INITIAL. " _ _ AbapcadabrA 2016 PA_STA&1 = '@P7@' . " | | | | AbapcadabrA 2016 ELSE. " | |_| | AbapcadabrA 2016 IF PA_SRC&1 = SY-REPID. " \__, | AbapcadabrA 2016 PA_STA&1 = '@03@' . " |___/ AbapcadabrA 2016 PA_INF&1 = 'Source is for current report' . " _ __ AbapcadabrA 2016 ELSE. " | '__| AbapcadabrA 2016 SELECT SINGLE SRTFD FROM HLPINDX INTO LV_SRTFD WHERE RELID = 'ZC' AND SRTFD = PA_SRC&1 AND SRTF2 = 0. IF SY-SUBRC = 0. " |_| AbapcadabrA 2016 PA_STA&1 = '@06@' . " _ AbapcadabrA 2016 ELSE. " (_) AbapcadabrA 2016 SELECT SINGLE DEVCLASS FROM TADIR INTO LV_DEVCLASS WHERE PGMID = 'R3TR' AND OBJECT = 'PROG' AND OBJ_NAME = PA_SRC&1. IF SY-SUBRC = 0. " | | AbapcadabrA 2016 IF LV_DEVCLASS(1) CO '$YZ' . " |_| AbapcadabrA 2016 PA_STA&1 = '@07@' . " __ _ AbapcadabrA 2016 HX29C3D9911EE6A9BE94F7AA38FB44 = ABAP_TRUE. " / _` | AbapcadabrA 2016 SELECT SINGLE STATE FROM PROGDIR INTO LV_STATE WHERE NAME = PA_SRC&1 AND STATE = 'I' . IF SY-SUBRC = 0. " \__, | AbapcadabrA 2016 PA_STA&1 = '@8I@' . " |___/ AbapcadabrA 2016 PA_INF&1 = 'Source is inactive' . " _ AbapcadabrA 2016 ENDIF. " | |__ AbapcadabrA 2016 ELSE. " | '_ \ AbapcadabrA 2016 PA_STA&1 = '@OJ@' . " | | | | AbapcadabrA 2016 PA_INF&1 = 'Not a custom coding object' . " |_| |_| AbapcadabrA 2016 ENDIF. " _ AbapcadabrA 2016 ELSE. " | |_ AbapcadabrA 2016 PA_STA&1 = '@02@' . " | __| AbapcadabrA 2016 PA_INF&1 = 'Invalid report (not found)' . " | |_ AbapcadabrA 2016 ENDIF. " \__| AbapcadabrA 2016 ENDIF. " AbapcadabrA 2016 ENDIF. " AbapcadabrA 2016 ENDIF. " ___ AbapcadabrA 2016 . " / __\ AbapcadabrA 2016 END-OF-DEFINITION. " / / AbapcadabrA 2016 SET_ICON 01. " / /___ AbapcadabrA 2016 SET_ICON 02. " \____/ AbapcadabrA 2016 SET_ICON 03. " ___ AbapcadabrA 2016 SET_ICON 04. " / _ \ AbapcadabrA 2016 SET_ICON 05. " | (_) | AbapcadabrA 2016 SET_ICON 06. " \___/ AbapcadabrA 2016 SET_ICON 07. " _ __ AbapcadabrA 2016 SET_ICON 08. " | '_ \ AbapcadabrA 2016 SET_ICON 09. " | |_) | AbapcadabrA 2016 SET_ICON 10. " | .__/ AbapcadabrA 2016 SET_ICON 11. " |_| AbapcadabrA 2016 SET_ICON 12. " _ _ AbapcadabrA 2016 SET_ICON 13. " | | | | AbapcadabrA 2016 SET_ICON 14. " | |_| | AbapcadabrA 2016 SET_ICON 15. " \__, | AbapcadabrA 2016 SET_ICON 16. " |___/ AbapcadabrA 2016 SET_ICON 17. " _ __ AbapcadabrA 2016 SET_ICON 18. " | '__| AbapcadabrA 2016 SET_ICON 19. " | | AbapcadabrA 2016 SET_ICON 20. " |_| AbapcadabrA 2016 DEFINE SET_INFO. " _ AbapcadabrA 2016 IF PA_STA&1 = '@06@' . " (_) AbapcadabrA 2016 IMPORT INFO = PA_INF&1 FROM DATABASE HLPINDX(ZC) ID PA_SRC&1. ENDIF. " | | AbapcadabrA 2016 . " |_| AbapcadabrA 2016 END-OF-DEFINITION. " __ _ AbapcadabrA 2016 SET_INFO 01. " / _` | AbapcadabrA 2016 SET_INFO 02. " | (_| | AbapcadabrA 2016 SET_INFO 03. " \__, | AbapcadabrA 2016 SET_INFO 04. " |___/ AbapcadabrA 2016 SET_INFO 05. " _ AbapcadabrA 2016 SET_INFO 06. " | |__ AbapcadabrA 2016 SET_INFO 07. " | '_ \ AbapcadabrA 2016 SET_INFO 08. " | | | | AbapcadabrA 2016 SET_INFO 09. " |_| |_| AbapcadabrA 2016 SET_INFO 10. " _ AbapcadabrA 2016 SET_INFO 11. " | |_ AbapcadabrA 2016 SET_INFO 12. " | __| AbapcadabrA 2016 SET_INFO 13. " | |_ AbapcadabrA 2016 SET_INFO 14. " \__| AbapcadabrA 2016 SET_INFO 15. " AbapcadabrA 2016 SET_INFO 16. " AbapcadabrA 2016 SET_INFO 17. " ___ AbapcadabrA 2016 SET_INFO 18. " / __\ AbapcadabrA 2016 SET_INFO 19. " / / AbapcadabrA 2016 SET_INFO 20. " / /___ AbapcadabrA 2016 IF HX29C3D9911EE6A9BE94F7AA37BB44=>IS_PRODUCTION_SYSTEM( ) = ABAP_TRUE. LOOP AT SCREEN. " ___ AbapcadabrA 2016 SCREEN-INPUT = 0. " / _ \ AbapcadabrA 2016 MODIFY SCREEN. " | (_) | AbapcadabrA 2016 ENDLOOP. " \___/ AbapcadabrA 2016 MESSAGE 'Code locker is NOT for production systems' TYPE 'S'. ENDIF. " | '_ \ AbapcadabrA 2016 INITIALIZATION. " | |_) | AbapcadabrA 2016 LBL_L00 = 'Copyright owner'. " | .__/ AbapcadabrA 2016 LBL_L01 = 'Syntax check'. " |_| AbapcadabrA 2016 LBL_L02 = 'Abap sources'. " _ _ AbapcadabrA 2016 START-OF-SELECTION. " | | | | AbapcadabrA 2016 SET_ICON 01. " | |_| | AbapcadabrA 2016 SET_ICON 02. " \__, | AbapcadabrA 2016 SET_ICON 03. " |___/ AbapcadabrA 2016 SET_ICON 04. " _ __ AbapcadabrA 2016 SET_ICON 05. " | '__| AbapcadabrA 2016 SET_ICON 06. " | | AbapcadabrA 2016 SET_ICON 07. " |_| AbapcadabrA 2016 SET_ICON 08. " _ AbapcadabrA 2016 SET_ICON 09. " (_) AbapcadabrA 2016 SET_ICON 10. " | | AbapcadabrA 2016 SET_ICON 11. " | | AbapcadabrA 2016 SET_ICON 12. " |_| AbapcadabrA 2016 SET_ICON 13. " __ _ AbapcadabrA 2016 SET_ICON 14. " / _` | AbapcadabrA 2016 SET_ICON 15. " | (_| | AbapcadabrA 2016 SET_ICON 16. " \__, | AbapcadabrA 2016 SET_ICON 17. " |___/ AbapcadabrA 2016 SET_ICON 18. " _ AbapcadabrA 2016 SET_ICON 19. " | |__ AbapcadabrA 2016 SET_ICON 20. " | '_ \ AbapcadabrA 2016 DATA GO_COPYWRITER TYPE REF TO HX29C3D9911EE6A9BE94F7AA37BB44. CREATE OBJECT GO_COPYWRITER. " |_| |_| AbapcadabrA 2016 GO_COPYWRITER->GV_COPYRIGHT_OWNER = PA_CTEXT. " _ AbapcadabrA 2016 GO_COPYWRITER->GV_SYNTAX_CHECK = PA_SYNTX. " | |_ AbapcadabrA 2016 GO_COPYWRITER->GV_PASSWORD = GO_COPYWRITER->HX29C3D9911EE6A9BE94F7AA381B44( 'Enter access code' ). CLEAR GO_COPYWRITER->GW_PROCESLOG. " | |_ AbapcadabrA 2016 IF HX29C3D9911EE6A9BE94F7AA38FB44 = ABAP_TRUE. " \__| AbapcadabrA 2016 GO_COPYWRITER->GV_PASSWORD2 = GO_COPYWRITER->HX29C3D9911EE6A9BE94F7AA381B44( 'Re-enter access code' ). IF GO_COPYWRITER->GV_PASSWORD <> GO_COPYWRITER->GV_PASSWORD2. MESSAGE 'Passwords do not match' TYPE 'S'. " ___ AbapcadabrA 2016 LEAVE PROGRAM. " / __\ AbapcadabrA 2016 ENDIF. " / / AbapcadabrA 2016 ENDIF. " / /___ AbapcadabrA 2016 DEFINE PROCESS_OBJECT. " \____/ AbapcadabrA 2016 GO_COPYWRITER->HX29C3D9911EE6A9BE94F7AA38BB44( PA_SRC&1 ). . " / _ \ AbapcadabrA 2016 END-OF-DEFINITION. " | (_) | AbapcadabrA 2016 PROCESS_OBJECT 01. " \___/ AbapcadabrA 2016 PROCESS_OBJECT 02. " _ __ AbapcadabrA 2016 PROCESS_OBJECT 03. " | '_ \ AbapcadabrA 2016 PROCESS_OBJECT 04. " | |_) | AbapcadabrA 2016 PROCESS_OBJECT 05. " | .__/ AbapcadabrA 2016 PROCESS_OBJECT 06. " |_| AbapcadabrA 2016 PROCESS_OBJECT 07. " _ _ AbapcadabrA 2016 PROCESS_OBJECT 08. " | | | | AbapcadabrA 2016 PROCESS_OBJECT 09. " | |_| | AbapcadabrA 2016 PROCESS_OBJECT 10. " \__, | AbapcadabrA 2016 PROCESS_OBJECT 11. " |___/ AbapcadabrA 2016 PROCESS_OBJECT 12. " _ __ AbapcadabrA 2016 PROCESS_OBJECT 13. " | '__| AbapcadabrA 2016 PROCESS_OBJECT 14. " | | AbapcadabrA 2016 PROCESS_OBJECT 15. " |_| AbapcadabrA 2016 PROCESS_OBJECT 16. " _ AbapcadabrA 2016 PROCESS_OBJECT 17. " (_) AbapcadabrA 2016 PROCESS_OBJECT 18. " | | AbapcadabrA 2016 PROCESS_OBJECT 19. " | | AbapcadabrA 2016 PROCESS_OBJECT 20. " |_| AbapcadabrA 2016 IF GO_COPYWRITER->GW_PROCESLOG-SCRAMBLED_LINECOUNT = 0. CONCATENATE GO_COPYWRITER->GW_PROCESLOG-ORIGINAL_LINECOUNT 'lines restored' INTO GO_COPYWRITER->GW_PROCESLOG-MESSAGE SEPARATED BY SPACE. ELSE. " | (_| | AbapcadabrA 2016 CONCATENATE GO_COPYWRITER->GW_PROCESLOG-ORIGINAL_LINECOUNT 'lines processed, ' GO_COPYWRITER->GW_PROCESLOG-SCRAMBLED_LINECOUNT 'lines saved' INTO GO_COPYWRITER->GW_PROCESLOG-MESSAGE SEPARATED BY SPACE. ENDIF. " |___/ AbapcadabrA 2016 MESSAGE GO_COPYWRITER->GW_PROCESLOG-MESSAGE TYPE 'S'.