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. 😉
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.
Leave a Reply