Friday, October 15, 2010

ABAP Program for Yet another customized logon screen - this one with configurable active elements (URL ...)

************************************************************************
* Yet another logon screen modification solution.
* This one is similar to program #90 (same setup steps) but:
* - it runs during logon but also can be run any time from SAP from the
* help menu
* - it displays a list type window with active elements. By clicking
* on those elements the user can start a report, an SAP transaction
* or a web browser displaying a particular web page.
* - the format (color, element type, intensified, program to run ...)
* for the dynamic logon screen for the different SAP systems is
* configured in a single config file residing on a filesystem shared
* between all SAP the systems.
*This is an example config file:
*
* SID|XX|YY|T|#|#|#|#|#|Text|URL
* | | | | | | | | | | |
* | | | | | | | | | | Url, Transaction or Program/type U,T or P
* | | | | | | | | | Text to be displayed
* | | | | | | | | 1/0 Input on/off
* | | | | | | | 1/0 Hotspot on/off
* | | | | | | 1/0 Inverse on/off
* | | | | | 1/0 Intensified on/off
* | | | | 0-7 Color
* | | | R:Regular, U:URL, T:Start transact., P:Start program
* | | Y coordinate (<20)
* | X coordinate (<66)
* System
*
*SID|1|1|R|6|0|0|0|0| SID: SAP 3.1 Development|
*SID|2|3|R|2|1|0|0|0|This is the first line of the important message|
*SID|2|4|R|2|1|0|0|0|This is the second line of the important message|
*SID|2|5|R|2|1|0|0|0|This is the third line of the important message|
*SID|1|7|U|1|0|1|1|0|Click here for more info from the WEB|http://XXX
*SID|1|9|T|1|0|1|1|0|Click here to start transaction SICK|SICK
*SID|1|11|P|1|0|1|1|0|Click here to start program SHOWCOLO|SHOWCOLO
*SID|1|13|S|1|0|1|1|0|Send mail to the BASIS team|imre@kabai.com
*SID|1|18|R|2|0|1|0|0|To display this window from SAP go to Help/webhelp
*
***********************************************************************
FUNCTION Z_POPUP_SYSTEM_INFO_LIST.
*"----------------------------------------------------------------------
*"*"Local interface:
*"----------------------------------------------------------------------
CALL SCREEN 333 STARTING AT 1 3
ENDING AT 65 16.
ENDFUNCTION.
*---------------------------------------------------------------------*
* MODULE STATUS_0333 OUTPUT *
*---------------------------------------------------------------------*
MODULE STATUS_0333 OUTPUT.
SET TITLEBAR '000'.
INCLUDE .
DATA: MESSAGE(20), L1(81), L2(81), L3(81), L4(81),
L5(81), L6(81), L7(81), L8(81), L9(81).
DATA: C.
DATA: L(200), A1(81), A2(81), A3(81), A4(81), A5(81), A6(81).
DATA: DESRCIPTION(6) VALUE 'Z| |',
SYSTEM_MESSAGE(6) VALUE 'M| |'.
DATA: BEGIN OF A.
INCLUDE STRUCTURE RFCSI.
DATA: END OF A.
DATA: BEGIN OF LINE_TBL OCCURS 100.
INCLUDE STRUCTURE SPFLIST.
DATA: END OF LINE_TBL.
* Run only on my pc (good for the testing)
* CALL FUNCTION 'RFC_SYSTEM_INFO' DESTINATION 'SAPGUI'
* IMPORTING RFCSI_EXPORT = A.
* IF A NS 'IMRE'.
* EXIT.
* ENDIF.
* Create the SID specific search patterns
DESRCIPTION+2(3) = SY-SYSID.
SYSTEM_MESSAGE+2(3) = SY-SYSID.
* Trick to avoid OPEN DATASET (no user->no authorization->open fails)
CALL FUNCTION 'RZL_READ_FILE_LOCAL'
EXPORTING
DIRECTORY = '/globaldirectory'
NAME = 'login_screen_list.ctl'
TABLES
LINE_TBL = LINE_TBL
EXCEPTIONS
NOT_FOUND = 1.
* If the file is missing: do not display anything
IF SY-SUBRC = 1.
SET SCREEN 0. LEAVE SCREEN.
ENDIF.
* Get the text from the internal table
SUPPRESS DIALOG.
LEAVE TO LIST-PROCESSING AND RETURN TO SCREEN 0.
NEW-PAGE NO-TITLE NO-HEADING.
DATA: SYS(3),X(2),Y(2),T, COL,INT,INV,HOT,INP,TXT(62),URL(60).
LOOP AT LINE_TBL.
IF LINE_TBL CS SY-SYSID.
SPLIT LINE_TBL AT '|' INTO SYS X Y T COL INT INV HOT INP TXT URL.
*
CASE COL.
WHEN '1'. FORMAT COLOR 1.
WHEN '2'. FORMAT COLOR 2.
WHEN '3'. FORMAT COLOR 3.
WHEN '4'. FORMAT COLOR 4.
WHEN '5'. FORMAT COLOR 5.
WHEN '6'. FORMAT COLOR 6.
WHEN '7'. FORMAT COLOR 7.
ENDCASE.
*
FORMAT INTENSIFIED OFF.
FORMAT INVERSE OFF.
FORMAT HOTSPOT OFF.
FORMAT INPUT OFF.
IF HOT = '1'. FORMAT HOTSPOT ON. ENDIF.
IF INT = '1'. FORMAT INTENSIFIED ON. ENDIF.
IF INV = '1'. FORMAT INVERSE ON. ENDIF.
IF INP = '1'. FORMAT INPUT ON. ENDIF.
*
SKIP TO LINE Y.
IF T = 'U'.
WRITE AT X(2) ICON_SYSTEM_HELP AS ICON.
X = X + 3.
WRITE AT X TXT. HIDE: T, URL.
ELSEIF T = 'T'.
WRITE AT X(2) ICON_EXECUTE_OBJECT AS ICON.
X = X + 3.
WRITE AT X TXT. HIDE: T, URL.
ELSEIF T = 'S'.
WRITE AT X(2) ICON_MAIL AS ICON.
X = X + 3.
WRITE AT X TXT. HIDE: T, URL.
ELSEIF T = 'P'.
WRITE AT X(2) ICON_EXECUTE_OBJECT AS ICON.
X = X + 3.
WRITE AT X TXT. HIDE: T, URL.
ELSE.
WRITE AT X TXT.
ENDIF.
*
ENDIF.
ENDLOOP.
CLEAR: SYS, X, Y, T, COL, INT, INV, HOT, INP, TXT, URL.
ENDMODULE.
*
AT LINE-SELECTION.
READ LINE SY-INDEX.
DATA: LOCATION(200).
IF T = 'U'.
CALL FUNCTION 'REGISTRY_GET'
EXPORTING
KEY = 'protocol\StdFileEditing\server'
SECTION = 'NetscapeMarkup'
IMPORTING
VALUE = LOCATION.
IF LOCATION IS INITIAL.
MESSAGE ID 00 TYPE 'I' NUMBER 208
WITH 'Can not locate Netscape in the registry'.
EXIT.
ENDIF.
CALL FUNCTION 'WS_EXECUTE'
EXPORTING
PROGRAM = LOCATION
COMMANDLINE = URL
INFORM = ''
EXCEPTIONS
FRONTEND_ERROR = 1
NO_BATCH = 2
PROG_NOT_FOUND = 3
ILLEGAL_OPTION = 4.
IF SY-SUBRC <> 0.
MESSAGE ID 00 TYPE 'I' NUMBER 208
WITH 'Can not start Netscape on your pc'.
EXIT.
ENDIF.
ELSEIF T = 'T' AND NOT SY-UNAME IS INITIAL.
CALL TRANSACTION URL.
ELSEIF T = 'P' AND NOT SY-UNAME IS INITIAL.
SUBMIT (URL) AND RETURN.
ELSEIF T = 'S' AND NOT SY-UNAME IS INITIAL.
*
ENDIF.
*---------------------------------------------------------------------*
* MODULE USER_COMMAND_0333 INPUT *
*---------------------------------------------------------------------*
MODULE USER_COMMAND_0333 INPUT.
ENDMODULE.
*---------------------------------------------------------------------*
* MODULE STATUS_0222 OUTPUT *
*---------------------------------------------------------------------*
MODULE STATUS_0222 OUTPUT.
CALL FUNCTION 'Z_POPUP_SYSTEM_INFO_LIST'.
ENDMODULE.

No comments:

Tutorials on SAP-ABAP

Adobe Interactive Forms Tutorials

Business Server Pages (BSP)

Userexits/BADIs

Web Dynpro for ABAP (Step by step procedure for web dynpro,Tutorials on Web Dynpro,)

ALV Tutorials

Blog Archive

goodsites