Create a customized logon screen with configurable active elements

Create a customized logon screen with configurable active elements
By Imre Kabai

This tip is published with the permission of Imre Kabai.

This logon screen modification solution 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     = 'protocolStdFileEditingserver'
              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.

Visit Kabai.com to view this tip or to browse through a collection of other useful ABAP programs.

Did you like this tip? If so (or if not) let us know. Send an email to sound off. Or go to our tips page and rate this and other tips, or send us one of your own.

Related Book
Developing SAP R/3 Applications with ABAP/4
Author : Dr. Ruediger Kretschmer, Dr. Wolfgang Weiss
Publisher : Sybex
ISBN/CODE : 078211881X
Cover Type : Soft Cover
Pages : 645
Published : May 1996
Summary:
Developing SAP's R/3 Applications with ABAP/4 is the official and complete guide to the ABAP/4 programming language. Written by two ABAP/4 developers at SAP, this book is required reading for programmers, consultants, and IS managers who are using the R/3 system now, or evaluating it for purchase.

This was first published in April 2001

Dig deeper on SAP security administration

Pro+

Features

Enjoy the benefits of Pro+ membership, learn more and join.

0 comments

Oldest 

Forgot Password?

No problem! Submit your e-mail address below. We'll send you an email containing your password.

Your password has been sent to:

SearchManufacturingERP

SearchOracle

SearchDataManagement

SearchAWS

SearchBusinessAnalytics

SearchCRM

SearchContentManagement

SearchFinancialApplications

Close