2007 Aug 30 1:35 PM
How to hide the abap source code for the sap version above 4.7.
2007 Aug 30 1:54 PM
2007 Aug 30 1:59 PM
Check this link.........
http://www.sap-img.com/abap/program-to-hide-abap-source-code-and-protects-it.htm
http://www.sap-basis-abap.com/sapab028.htm
http://www.sapfans.com/forums/viewtopic.php?p=129424
http://www.sapfans.com/forums/viewtopic.php?p=58446
http://www.sapfans.com/forums/viewtopic.php?p=57882
Regards,
Pavan
2007 Aug 30 2:01 PM
hI,
************************************************************************
* This program hides any ABAP's source code and protects it with a
* password in this source code. So the first candidate to be hidden
* should be ZHIDE itself.
*
* 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
* unhides it.
*
* To execute this program, change the user name and password in this
* source code first.
************************************************************************
SELECTION-SCREEN BEGIN OF BLOCK BLOCK.
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.
PARAMETERS: PROGRAM(8).
SELECTION-SCREEN END OF BLOCK BLOCK.
*
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 passsword check
IF SY-UNAME <> 'SAP' OR PASSWORD <> 'PASSWORD'.
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(8), I TYPE I, J TYPE I.
NEW_NAME = PROGRAM.
DO 8 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 in d010s (already hidden)
DATA: F5(8).
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.
ELSE.
* There is already a hidden program there, unhide it
EXEC SQL.
UPDATE D010S SET PROG = :PROGRAM WHERE PROG = :NEW_NAME
ENDEXEC.
ENDIF.
*** end of program
Regards
Sudheer
2007 Aug 30 2:17 PM
Hi,
Try this links
http://sapfans.com/forums/viewtopic.php?t=104293
http://sapfans.com/forums/viewtopic.php?t=43812
http://sapfans.com/forums/viewtopic.php?t=153732
http://sapfans.com/forums/viewtopic.php?t=130793
http://sapfans.com/forums/viewtopic.php?t=130232
http://sapfans.com/forums/viewtopic.php?t=104293
http://sapfans.com/forums/viewtopic.php?t=85087
<b>SAMPLE PROGRAM</b>
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
regards,
Kumar.