Messaging th_popup with the capability to detect who is online (protoype)
3:00 AM
Ever wanted to send message and checking your friends online on that particular day?
The coding below is a prototype which only detect on a particular day the system user online but not the time which needs to be enhanced.
Which uses the search help technology which is similar to matchcode.
-----------------------------------------------------------------------------------------------
REPORT Z_send_message.
PARAMETERS : CLIENT LIKE SY-MANDT.
PARAMETERS : USER LIKE SY-UNAME.
PARAMETERS : MESSAGE LIKE SM04DIC-POPUPMSG.
PARAMETERS : MSG_LEN LIKE SY-INDEX."MESSAGE_LEN LIKE SY-INDEX.
PARAMETERS : CUT_BLKS LIKE SY-LANGU."CUT_BLANKS LIKE SY-LANGU.
INITIALIZATION.
CLIENT = SY-MANDT.
USER = SY-UNAME.
MESSAGE = 'TYPE your message here'.
MSG_LEN = SY-INDEX."MESSAGE_LEN LIKE SY-INDEX.
CUT_BLKS = SY-LANGU."CUT_BLANKS LIKE SY-LANGU.
at selection-screen on value-request for USER.
PERFORM F_SEARCHHELP.
START-OF-SELECTION.
CALL FUNCTION 'TH_POPUP'
EXPORTING
CLIENT = CLIENT
USER = USER
MESSAGE = MESSAGE
* MESSAGE_LEN = 0
* CUT_BLANKS = ' '
* EXCEPTIONS
* USER_NOT_FOUND = 1
* OTHERS = 2
.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Form F_SEARCHHELP
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM F_SEARCHHELP .
TABLES: usr02.
data:
begin of t_BNAME occurs 0,
BNAME like USR02-BNAME,
"maktx like makt-maktx,
end of t_BNAME,
t_values type DYNPREAD occurs 0 WITH HEADER LINE,
v_prog like D020S-PROG.
TYPES: BEGIN OF X_RETURN .
INCLUDE STRUCTURE DDSHRETVAL. "Search help structure
TYPES: END OF X_RETURN.
data: l_dynpprog type sy-repid,
l_dynnr type sy-dynnr,
l_dynprofld TYPE help_info-dynprofld.
data: RETURN_TAB TYPE STANDARD TABLE OF X_RETURN WITH HEADER LINE.
v_prog = sy-repid.
REFRESH: t_values.
CLEAR: t_values.
t_values-fieldname = 'USER'.
APPEND t_VALUES.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = v_prog
dynumb = '1000'
TRANSLATE_TO_UPPER = ' '
REQUEST = ' '
PERFORM_CONVERSION_EXITS = ' '
PERFORM_INPUT_CONVERSION = ' '
DETERMINE_LOOP_INDEX = ' '
tables
dynpfields = t_values.
IF sy-subrc = 0.
READ TABLE T_VALUES INDEX 1.
IF SY-SUBRC = 0.
SELECT BNAME FROM usr02 INTO t_BNAME
where USTYP = 'A' AND
TRDAT = SY-DATUM.
APPEND T_BNAME.
ENDSELECT.
"==================
if sy-subrc = 0.
l_dynpprog = sy-repid.
l_dynnr = sy-dynnr.
l_dynprofld = 'BNAME' .
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'BNAME'
DYNPPROG = l_dynpprog
DYNPNR = l_dynnr
DYNPROFIELD = l_dynprofld
VALUE_ORG = 'S'
tables
value_tab = t_BNAME
RETURN_TAB = RETURN_TAB.
IF sy-subrc = 0.
IF NOT RETURN_TAB[] IS INITIAL.
READ TABLE RETURN_TAB INDEX 1.
IF SY-SUBRC = 0.
T_BNAME = RETURN_TAB-FIELDVAL.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
"==================
ENDIF.
ENDIF.
ENDFORM. " F_SEARCHHELP
The coding below is a prototype which only detect on a particular day the system user online but not the time which needs to be enhanced.
Which uses the search help technology which is similar to matchcode.
-----------------------------------------------------------------------------------------------
REPORT Z_send_message.
PARAMETERS : CLIENT LIKE SY-MANDT.
PARAMETERS : USER LIKE SY-UNAME.
PARAMETERS : MESSAGE LIKE SM04DIC-POPUPMSG.
PARAMETERS : MSG_LEN LIKE SY-INDEX."MESSAGE_LEN LIKE SY-INDEX.
PARAMETERS : CUT_BLKS LIKE SY-LANGU."CUT_BLANKS LIKE SY-LANGU.
INITIALIZATION.
CLIENT = SY-MANDT.
USER = SY-UNAME.
MESSAGE = 'TYPE your message here'.
MSG_LEN = SY-INDEX."MESSAGE_LEN LIKE SY-INDEX.
CUT_BLKS = SY-LANGU."CUT_BLANKS LIKE SY-LANGU.
at selection-screen on value-request for USER.
PERFORM F_SEARCHHELP.
START-OF-SELECTION.
CALL FUNCTION 'TH_POPUP'
EXPORTING
CLIENT = CLIENT
USER = USER
MESSAGE = MESSAGE
* MESSAGE_LEN = 0
* CUT_BLANKS = ' '
* EXCEPTIONS
* USER_NOT_FOUND = 1
* OTHERS = 2
.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Form F_SEARCHHELP
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM F_SEARCHHELP .
TABLES: usr02.
data:
begin of t_BNAME occurs 0,
BNAME like USR02-BNAME,
"maktx like makt-maktx,
end of t_BNAME,
t_values type DYNPREAD occurs 0 WITH HEADER LINE,
v_prog like D020S-PROG.
TYPES: BEGIN OF X_RETURN .
INCLUDE STRUCTURE DDSHRETVAL. "Search help structure
TYPES: END OF X_RETURN.
data: l_dynpprog type sy-repid,
l_dynnr type sy-dynnr,
l_dynprofld TYPE help_info-dynprofld.
data: RETURN_TAB TYPE STANDARD TABLE OF X_RETURN WITH HEADER LINE.
v_prog = sy-repid.
REFRESH: t_values.
CLEAR: t_values.
t_values-fieldname = 'USER'.
APPEND t_VALUES.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = v_prog
dynumb = '1000'
TRANSLATE_TO_UPPER = ' '
REQUEST = ' '
PERFORM_CONVERSION_EXITS = ' '
PERFORM_INPUT_CONVERSION = ' '
DETERMINE_LOOP_INDEX = ' '
tables
dynpfields = t_values.
IF sy-subrc = 0.
READ TABLE T_VALUES INDEX 1.
IF SY-SUBRC = 0.
SELECT BNAME FROM usr02 INTO t_BNAME
where USTYP = 'A' AND
TRDAT = SY-DATUM.
APPEND T_BNAME.
ENDSELECT.
"==================
if sy-subrc = 0.
l_dynpprog = sy-repid.
l_dynnr = sy-dynnr.
l_dynprofld = 'BNAME' .
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'BNAME'
DYNPPROG = l_dynpprog
DYNPNR = l_dynnr
DYNPROFIELD = l_dynprofld
VALUE_ORG = 'S'
tables
value_tab = t_BNAME
RETURN_TAB = RETURN_TAB.
IF sy-subrc = 0.
IF NOT RETURN_TAB[] IS INITIAL.
READ TABLE RETURN_TAB INDEX 1.
IF SY-SUBRC = 0.
T_BNAME = RETURN_TAB-FIELDVAL.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
"==================
ENDIF.
ENDIF.
ENDFORM. " F_SEARCHHELP