TH_POPUP ohne Anzeige des Benutzers

Heute mal ein eher sinnloser Tipp: Ich habe mir immer wieder mal bei etwas unerfahreren Kollegen den Spaß gemacht, dass ich mit dem Funktionsbaustein “TH_POPUP” irreführende Nachrichten auf deren Bildschirm gezaubert habe. Doch irgendwann hat SAP in die Darstellung des Popups den Benutzername hinzugefügt, so dass der Gag damit eigentlich weg war. Doch durch Kopie des Funktionsbausteins kann man recht schnell und einfach die zusätzlichen Zeilen entfernen und der Fuba arbeitet wieder wie früher – ohne den Verursacher zu verraten. 😉

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
FUNCTION ZTH_POPUP. 
*"---------------------------------------------------------------------- 
*"
*"Lokale Schnittstelle: 
*" IMPORTING 
*" VALUE(CLIENT) LIKE SY-MANDT 
*" VALUE(USER) LIKE SY-UNAME 
*" VALUE(MESSAGE) LIKE SM04DIC-POPUPMSG 
*" VALUE(MESSAGE_LEN) LIKE SY-INDEX DEFAULT 0 
*" VALUE(CUT_BLANKS) LIKE SY-LANGU DEFAULT ' ' 
*" EXCEPTIONS *" USER_NOT_FOUND 
*"---------------------------------------------------------------------- 
DATA: LOC_CUT_BLANKS LIKE TH_BOOL. 
DATA: PREFIX_MESSAGE_LEN TYPE I, LINEBREAK(512), NEW_MESSAGE(512). 
DATA: TMP(1024). " Allow sending of a popup to oneself 
IF ( USER <> SY-UNAME ). 
  CALL 'C_SAPGPARAM' ID 'NAME' FIELD 'rdisp/th_popup/strict_check' "#EC CI_CCALL 
                     ID 'VALUE' FIELD TMP. 
  IF SY-SUBRC = 0. 
    IF TMP = 1. 
     AUTHORITY-CHECK OBJECT 'S_ADMI_FCD' ID 'S_ADMI_FCD' FIELD 'POPU'. 
     IF SY-SUBRC <> 0. 
       RAISE USER_NOT_FOUND. 
     ENDIF. 
   ENDIF. 
 ENDIF. 
ENDIF. 
 
IF MESSAGE_LEN = 0. 
   MESSAGE_LEN = STRLEN( MESSAGE ). 
ENDIF. 
 
IF CUT_BLANKS = ' '. 
  LOC_CUT_BLANKS = TH_FALSE. 
ELSE. 
  LOC_CUT_BLANKS = TH_TRUE. 
ENDIF. 
 
CALL 'ThUsrInfo' ID 'OPCODE' FIELD OPCODE_SEND_POP_UP "#EC CI_CCALL  
                 ID 'CLIENT' FIELD CLIENT 
                 ID 'USR' FIELD USER 
                 ID 'MSG' FIELD MESSAGE 
                 ID 'MSG_LEN' FIELD MESSAGE_LEN 
                 ID 'CUT_BLANKS' FIELD LOC_CUT_BLANKS. 
IF SY-SUBRC = 4. 
  RAISE USER_NOT_FOUND. 
ENDIF. 
 
ENDFUNCTION.

Be the first to comment

Teil mir was mit