Subscribe

RSS Feed (xml)

Powered By

Skin Design:
Free Blogger Skins

Powered by Blogger

Friday, April 18, 2008

Program to Hide ABAP's Source Code and Protects it SAP ABAP INTERVIEW Questions

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 =" 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

Mass update the User Parameter Value

When you need to mass maintain the User parameters to another value. This program will come in handy as you do not need to maintain the parameters for each user manually.

*
* Mass Update User parameters collectively.
*
* Written by : SAP Basis, ABAP Programming and Other IMG Stuff
*
*
REPORT ZUSERPARAM.

PARAMETERS: P_PARID(3), "Parameter ID
P_PARVA(18), "Parameter Value
P_USER(18). "User Name

TABLES: USR02, USR05.

DATA BEGIN OF IUSR02 OCCURS 5.
INCLUDE STRUCTURE USR02.
DATA END OF IUSR02.

ULINE.
WRITE: /, 'Report Selection criteria:'.
WRITE: /10 'Parameter ID:', P_PARID.
WRITE: /10 ' Parm Value:', P_PARVA.
WRITE: /10 'User Name:', P_USER.
ULINE.

SELECT * FROM USR02 INTO TABLE IUSR02 WHERE BNAME = P_USER.

LOOP AT IUSR02. "Loop thru all users
SELECT SINGLE * FROM USR05
WHERE BNAME = IUSR02-BNAME
AND PARID = P_PARID.

IF SY-SUBRC = 0.
UPDATE USR05
SET PARVA = P_PARVA
WHERE BNAME = IUSR02-BNAME
AND PARID = P_PARID.

IF SY-SUBRC = 0.
WRITE: /5 USR05-BNAME, USR05-PARID, 'Old =', USR05-PARVA,
'New =', P_PARVA.
ELSE.
WRITE: /5 'Update rc=', SY-SUBRC, USR05-BNAME.
EXIT.
ENDIF.
ELSE.
CLEAR USR05.
USR05-BNAME = IUSR02-BNAME.
USR05-PARID = P_PARID.
USR05-PARVA = P_PARVA.
INSERT USR05.
IF SY-SUBRC = 0.
WRITE: /5 'Insert ok:', USR05-BNAME, P_PARID, P_PARVA.
ELSE.
WRITE: /5 'Bad Insert, rc=', SY-SUBRC, USR05-BNAME.
EXIT.
ENDIF.
ENDIF.
ENDLOOP.

*** The end of program

No comments:

Post a Comment

Content

Recent Topics