Program to Hide ABAP's Source
Code and Protects it
report zsam_hide no standard page heading. ************************************************************************ * This program hides any ABAP's source code and protects it with a * password in this source code. * * After hiding, you can still run the abap (the load version is intact) * but it cannot be displayed, edited, traced, transported or generated. * * If the ABAP is not hidden, the program hides it, if it is hidden, it * unhide it. * Remember to hide this program first! ************************************************************************ selection-screen begin of block block. parameters: program(30) obligatory. selection-screen begin of line. selection-screen comment 1(8) pwd. selection-screen position 35. parameters: password(8) modif id aaa. selection-screen end of line. selection-screen end of block block. * data: message(60) type c. * at selection-screen output. loop at screen. if screen-group1 = 'AAA'. screen-invisible = '1'. modify screen. endif. endloop. * initialization. pwd = 'Password'. * start-of-selection. tables: trdir. * User name and password check if password <> 'ABCDEFG'. write: / 'Wrong password'. exit. endif. * SAP owned? if not program cp 'Z*' and not program cp 'Y*'. write: / 'Do not hide original SAP programs!'. exit. endif. * Exists? select single * from trdir where name = program. if sy-subrc <> 0. write: / 'Program does not exists!'. exit. endif. * Does it have a current generated version? data: f1 type d, f3 type d. data: f2 type t, f4 type t. EXEC SQL. SELECT UDAT, UTIME, SDAT, STIME INTO :F1, :F2, :F3, :F4 FROM D010LINF WHERE PROG = :PROGRAM ENDEXEC. if f1 < f3 or ( f1 = f3 and f2 < f4 ). write: / 'The program has no recent generated version!'. exit. endif. * Compose a new program name data: new_name(30), i type i, j type i. new_name = program. do 30 times. i = sy-index - 1. new_name+i(1) = '_'. * Search for acceptable program name variations j = 0. select * from trdir where name like new_name. j = j + 1. endselect. if j = 1. exit. endif. new_name = program. enddo. * Cannot generate appropriate program name if j > 1. write: / 'Cannot generate appropriate program name'. exit. endif. * Check if it is already hidden data: f5(30). EXEC SQL. SELECT PROG INTO :F5 FROM D010S WHERE PROG = :NEW_NAME ENDEXEC. if f5 is initial. * There is no such hidden program, hide it EXEC SQL. UPDATE D010S SET PROG = :NEW_NAME WHERE PROG = :PROGRAM ENDEXEC. concatenate 'Program' :program 'was hidden.' into message separated by space. else. * There is already a hidden program there, unhide it EXEC SQL. UPDATE D010S SET PROG = :PROGRAM WHERE PROG = :NEW_NAME ENDEXEC. concatenate 'Program' :program 'was restored.' into message separated by space. endif. write message. *** end of programABAP Tips by : Sam Hearn
Get help for your ABAP problems
ABAP Books
ABAP Functions Tips
ABAP Tips
Best regards,
All the site contents are Copyright © www.erpgreat.com
and the content authors. All rights reserved.
|