Subscribe

RSS Feed (xml)



Powered By

Skin Design:
Free Blogger Skins

Powered by Blogger

Friday, October 15, 2010

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 < f1 =" f3" new_name ="">do 30 times.

i = sy-index - 1.

new_name+i(1) = '_'.

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 program

No comments:

Blog Archive