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 .
TABLESusr02.
data:
     begin of t_BNAME occurs 0,
           BNAME like USR02-BNAME,
           "maktx like makt-maktx,
     end   of t_BNAME,
     t_values type DYNPREAD occurs WITH HEADER LINE,
     v_prog like D020S-PROG.
TYPESBEGIN OF X_RETURN .
        INCLUDE STRUCTURE DDSHRETVAL"Search help structure
TYPESEND OF X_RETURN.
datal_dynpprog       type sy-repid,
      l_dynnr          type sy-dynnr,
      l_dynprofld      TYPE help_info-dynprofld.
dataRETURN_TAB   TYPE STANDARD TABLE OF X_RETURN WITH HEADER LINE.





   v_prog sy-repid.
   REFRESHt_values.
   CLEARt_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
Read On 0 comments

how to add a sap menu short cut

4:33 AM

First
1. Transaction code = su01
2. Key in Pfnumber or sap id (then F7 – to display)

check under defaults tab :-
copy the value in the  field box “Start menu”

Then
3. Transaction code = se43
maintain the area menu


Read On 0 comments

SAP: ABAP How to send email that can have underline bold text, table and pictures using html via class CL_BCS

8:26 PM
snippet..

FORM SEND_EMAIL_OFFLN  TABLES   PT_PDF_BIN
                       
USING    PV_SENDER
                                PV_RECIPIENT
                                PV_SUBJECT
.

  CONSTANTSLC_TYPE TYPE SO_OBJ_TP VALUE 'HTM'.
  DATALO_MESSENGER TYPE REF TO CL_BCS,
        LO_DOCUMENT  
TYPE REF TO CL_DOCUMENT_BCS,
        LO_SENDER    
TYPE REF TO CL_SAPUSER_BCS,
        LO_RECIPIENT 
TYPE REF TO IF_RECIPIENT_BCS,
        LO_DELIVERY  
TYPE        OS_BOOLEAN,
        LO_ERR_MSG   
TYPE        SY-MSGV1.

  DATALT_SOLIX     TYPE SOLIX_TAB,
        LS_SOLIX     
LIKE LINE OF LT_SOLIX.

  
DATALV_ATTCH_SUBJECT    TYPE SOOD-OBJDES.

  "LOOP AT PT_PDF_BIN.
  "  CLEAR LS_SOLIX.
  "  LS_SOLIX-LINE PT_PDF_BIN.
  "  APPEND LS_SOLIX TO LT_SOLIX.
  "ENDLOOP.

  "THIS IS THE PART WHICH YOU CAN DO HTML CODINGS ß----------------------------------------------------------------PART TO PLAY AROUND
  CLEAR LS_MESSAGELS_MESSAGE '<html>'APPEND LS_MESSAGE TO LT_DOCUMENT.
  
CLEAR LS_MESSAGELS_MESSAGE '<body>'APPEND LS_MESSAGE TO LT_DOCUMENT.
  CLEAR LS_MESSAGELS_MESSAGE 'Dear Sir/Madam,<br>'.   APPEND LS_MESSAGE TO LT_DOCUMENT.
  
CLEAR LS_MESSAGELS_MESSAGE '<u><b>Underline and bold</b></u> <br><br>'.         APPEND LS_MESSAGE TO LT_DOCUMENT. " underline and bold
  CLEAR LS_MESSAGELS_MESSAGE '</body>'.   APPEND LS_MESSAGE TO LT_DOCUMENT.
  
CLEAR LS_MESSAGELS_MESSAGE '</html>'.   APPEND LS_MESSAGE TO LT_DOCUMENT.
  "-----PDF RSU-----"
  
"LV_ATTCH_SUBJECT 'Notification of Vesting.pdf'.
TRY .
      "-------- create persistent send request ------------------------
      LO_MESSENGER 
CL_BCS=>CREATE_PERSISTENT( ).
      “ Create Document Object
      LO_DOCUMENT 
CL_DOCUMENT_BCS=>CREATE_DOCUMENT(
                      I_TYPE    
LC_TYPE
                      I_SUBJECT 
PV_SUBJECT
                      I_TEXT    
LT_DOCUMENT ).
      " Add attachment
      "CALL METHOD LO_DOCUMENT->ADD_ATTACHMENT
      "     EXPORTING
      "        I_ATTACHMENT_TYPE    'BIN'
      "        I_ATTACHMENT_SUBJECT LV_ATTCH_SUBJECT
      "        I_ATT_CONTENT_HEX    LT_SOLIX.
      "****** Create Sender
      "     note: this is necessary only if you want to set the sender
      "     different from actual user (SY-UNAME). Otherwise sender is
      “     set automatically with actual user.
      LO_SENDER 
CL_SAPUSER_BCS=>CREATEPV_SENDER ).

     "Create Recipient
      LO_RECIPIENT 
CL_CAM_ADDRESS_BCS=>CREATE_INTERNET_ADDRESSPV_RECIPIENT ).

      "Setup BCS Object
      LO_MESSENGER
->SET_DOCUMENTLO_DOCUMENT ).
      LO_MESSENGER
->SET_SENDERLO_SENDER ).
      LO_MESSENGER
->ADD_RECIPIENTLO_RECIPIENT ).

      "Send the Mail via BCS Object
      LO_DELIVERY 
LO_MESSENGER->SENDI_WITH_ERROR_SCREEN 'X' ).

      
IF NOT LO_DELIVERY IS INITIAL.
        LV_MSG 
'SUCCESS: Email successfully send.'.
        
COMMIT WORK.
      
ELSE.
        LO_ERR_MSG 
'ERROR: Failed to send email.'.
      
ENDIF.

    
CATCH CX_DOCUMENT_BCS.  " cl_document_bcs=>create_document()
      
"LV_MSG 'ERROR: Failed to create BCS document.'.

    
CATCH CX_ADDRESS_BCS.   " cl_sapuser_bcs=>create()
      
"LV_MSG 'ERROR: Failed to create BCS sender'.
    
CATCH CX_SEND_REQ_BCS.  " cl_bcs=>create_persistent(), cl_bcs->set_sender(), etc.
      
"LV_MSG 'ERROR: Failed while setting up BCS object.'.
  ENDTRY.

ENDFORM.                    " SEND_EMAIL_OFFLN





"---------------------
just incase you want to add pdf 
FORM DOWNLOAD_PDF_n_send.

  
DATALS_OUTPUTPARAMS           TYPE SFPOUTPUTPARAMS.
  
DATALS_FORMOUTPUT             TYPE FPFORMOUTPUT.
  
DATALV_FM_NAME                TYPE RS38L_FNAM.
  
DATALS_DOCPARAMS              TYPE SFPDOCPARAMS.
  
DATALS_ZESOS_RSUGL_PDF        TYPE ZESOS_RSUGL_PDF.

  
DATALV_MSG                    TYPE STRING.


  
CLEAR LS_ZESOS_RSUGL_PDF.
  LS_ZESOS_RSUGL_PDF
-PERNR PERNR-PERNR.
  LS_ZESOS_RSUGL_PDF
-BEGDA PN-BEGDA.
  LS_ZESOS_RSUGL_PDF
-ENDDA PN-ENDDA.
  LS_ZESOS_RSUGL_PDF
-CPLAN P_CPLAN.
  LS_ZESOS_RSUGL_PDF
-CITEM P_CITEM.

  
"Get name of the generated function module
  
CALL FUNCTION 'FP_FUNCTION_MODULE_NAME'
    
EXPORTING
      I_NAME     
'Z_PDF_FROM_TCODE_SFP'
    
IMPORTING
      E_FUNCNAME 
LV_FM_NAME.

  
"Set the output parameters.
  LS_OUTPUTPARAMS
-NODIALOG 'X'.
  LS_OUTPUTPARAMS
-PREVIEW  ''.
  LS_OUTPUTPARAMS
-GETPDF   'X'.

  
"Open print job
  
CALL FUNCTION 'FP_JOB_OPEN'
    
CHANGING
      IE_OUTPUTPARAMS 
LS_OUTPUTPARAMS
    
EXCEPTIONS
      
OTHERS          1.

  
"Set the PDF to be dynamic and interactive.
  LS_DOCPARAMS
-FILLABLE ''.
  LS_DOCPARAMS
-DYNAMIC 'X'.

  
"Generate the PDF.
  
CLEAR LS_FORMOUTPUT.
  
CALL FUNCTION LV_FM_NAME
    
EXPORTING
      /1BCDWB/DOCPARAMS  
LS_DOCPARAMS
      ZESOS_RSUGL_PDF    
LS_ZESOS_RSUGL_PDF
    
IMPORTING
      /1BCDWB/FORMOUTPUT 
LS_FORMOUTPUT
    
EXCEPTIONS
      USAGE_ERROR        
1
      SYSTEM_ERROR       
2
      INTERNAL_ERROR     
3
      
OTHERS             4.

  
IF SY-SUBRC NE 0.
    LV_MSG 
'Failed to generate PDF.'.
    
PERFORM FILL_MSG  USING     LV_MSG
                      
CHANGING GS_OUTREP.
    
MODIFY GT_OUTREP FROM GS_OUTREP INDEX GV_TABIX.
  
ENDIF.
  
CHECK SY-SUBRC 0.

  
"Close print job.
  
CALL FUNCTION 'FP_JOB_CLOSE'.

*--------------------------------------------------------------------*
  
DATALT_PDF_BIN            TYPE TABLE OF X255.
  
DATALV_PDF_NAME           TYPE STRING.

  
CONCATENATE P_FOLDER '\PDF_TITLE'.pdf' INTO LV_PDF_NAME.


  
REFRESHLT_PDF_BIN.
  
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
    
EXPORTING
      
BUFFER     LS_FORMOUTPUT-PDF
    
TABLES
      BINARY_TAB 
LT_PDF_BIN.

IF P_OFFLN IS NOT INITIAL AND P_FOLDER IS NOT INITIAL AND P_TEST IS INITIAL." AND P_ATTCH IS INITIAL.
  
CALL FUNCTION 'GUI_DOWNLOAD'
    
EXPORTING
      FILENAME                
LV_PDF_NAME
      FILETYPE                
'BIN'
    
TABLES
      DATA_TAB                
LT_PDF_BIN
    
EXCEPTIONS
      FILE_WRITE_ERROR        
1
      NO_BATCH                
2
      GUI_REFUSE_FILETRANSFER 
3
      INVALID_TYPE            
4
      NO_AUTHORITY            
5
      UNKNOWN_ERROR           
6
      HEADER_NOT_ALLOWED      
7
      SEPARATOR_NOT_ALLOWED   
8
      FILESIZE_NOT_ALLOWED    
9
      HEADER_TOO_LONG         
10
      DP_ERROR_CREATE         
11
      DP_ERROR_SEND           
12
      DP_ERROR_WRITE          
13
      UNKNOWN_DP_ERROR        
14
      ACCESS_DENIED           
15
      DP_OUT_OF_MEMORY        
16
      DISK_FULL               
17
      DP_TIMEOUT              
18
      FILE_NOT_FOUND          
19
      DATAPROVIDER_EXCEPTION  
20
      CONTROL_FLUSH_ERROR     
21
      
OTHERS                  22.

  
IF SY-SUBRC NE 0.
    LV_MSG 
'Failed to download Vesting PDF.'.
  ELSE.
    LV_MSG 
'Successfully download RSU Notification of Vesting PDF.'.
  ENDIF.
ENDIF." IF P_OFFLN IS NOT INITIAL AND P_FOLDER IS NOT INITIAL AND P_TEST IS INITIAL." AND P_ATTCH IS INITIAL.
*--------------------------------------------------------------------*
  
DATALV_RECIPIENT      TYPE AD_SMTPADR,
*        LV_SUBJECT        TYPE SO_OBJ_DES VALUE 'RSU Notification of Vesting',
        LV_SUBJECT        
TYPE SO_OBJ_DES VALUE 'Subject title',
*        LV_SUBJECT        TYPE SO_OBJ_DES VALUE 'Notification of Vesting of the First Performance-Based Restricted Share Unit Scheme ("RSU")',
        LV_SENDER         
TYPE SY-UNAME VALUE 'USERNAME'.

    LV_RECIPIENT 
'email@email.com'.
    
PERFORM SEND_EMAIL_OFFLN TABLES LT_PDF_BIN USING SY-UNAME LV_RECIPIENT LV_SUBJECT.

ENDFORM.                    " DOWNLOAD_PDF_RS_VESTING
Read On 0 comments

message

Labels

NuffNang

Search google

Blog Archive

My Blog List

Twitter

Message

Followers