‎2007 Oct 18 8:19 AM
Hi Group,
Can anybody let me know how can I perform the following task:-
(1) Make ABAP code un-editable from any other user and client.
(2) Client could use only the functionality of the program and could not see the ABAP code of the program.
Regards,
Deepak
‎2007 Oct 18 8:23 AM
(1) Make ABAP code un-editable from any other user and client.
You can achive the above by checking the option 'Editor Lock' in attributes of the program.
‎2007 Oct 18 8:30 AM
<b>answer 2 ur second question</b>
check this program...
Program to Hide ABAP's Source Code and Protects it
report zsan_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 program
<b>answer to first query</b>
EDITOR LOCK whwn u create program make editor-lock om
‎2007 Oct 18 8:38 AM
Hello ,
When I was executing code you have given , I am getting a Run time error stating that The table or view name used does not exist in the database.
The error occurred in the current database connection "DEFAULT".
Check if it is already in d010s (already hidden)
DATA: F5(8).
EXEC SQL.
<b>SELECT PROG INTO :F5 FROM<u> D010S</u> WHERE PROG = :NEW_NAME</b>
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.
ELSE.
There is already a hidden program there, unhide it
EXEC SQL.
UPDATE D010S SET PROG = :PROGRAM WHERE PROG = :NEW_NAME ENDEXEC.
ENDIF.