04 May 2014

Create Outlook Meeting

Create Outlook Meeting in calandar.



*&---------------------------------------------------------------------*
*& Report  ZTEST_OUTLOOK_MAIL
*&
*&---------------------------------------------------------------------*
REPORT  ztest_outlook_mail.

DATAtext               TYPE bcsy_text.
DATAdocument           TYPE REF TO cl_document_bcs.
DATAsender             TYPE REF TO cl_sapuser_bcs.
DATArecipient          TYPE REF TO if_recipient_bcs.
DATAbcs_exception      TYPE REF TO cx_bcs.
DATAsent_to_all        TYPE os_boolean.
DATAit_content         TYPE soli_tab.
DATAit_attach          TYPE soli_tab.
DATAsend_request       TYPE REF TO cl_bcs.
DATAl_subject          LIKE sodocchgi1-obj_descr,
      l_sender_type      LIKE soextreci1-adr_typ,
      l_recsize          TYPE i,
      l_receiver         TYPE sy-subrc.
DATAlt_soli            TYPE soli_tab    .
DATAls_soli            LIKE LINE OF lt_soli.
DATAlt_soli_new        TYPE soli_tab.
DATAls_email           TYPE pa0105-usrid_long.
DATAls_uname           TYPE pa0105-usrid.
DATAls_pernr           TYPE pernr-pernr.
DATAls_begin(10)       TYPE c.
DATAls_end(10)         TYPE c.
DATAresult        TYPE REF TO cl_document_bcs.
DATABEGIN OF ls_data,
  sender TYPE lsoppvar-sender,  "sender
  kbgda  TYPE ppvar-kbgda,      "begin date
  kndda  TYPE ppvar-endda,      "end date
  kbtim  TYPE ppvar-kbtim,      "begin time first day
  ketim  TYPE ppvar-ketim,      "end time last day
  kstxt  TYPE ppvar-kstxt,      "training text
  b_ort  TYPE ppvar-b_ort,      "training location
  rstxt  TYPE ppvar-rstxt,      "room text
  amail  TYPE lsoppvar-amail,   "recipient eMail
  astxt  TYPE ppvar-astxt,      "recipient
END OF ls_data.
FIELD-SYMBOLS<fs_soli> LIKE ls_soli.
************************************************************************
* SELECTION SCREEN DEFINITION
************************************************************************
SELECTION-SCREEN BEGIN OF BLOCK group WITH FRAME TITLE text-001.
PARAMETERS:  p_trnam   LIKE p1000-stext DEFAULT 'TRAINING NAME',
             p_locnm   LIKE p1000-stext DEFAULT 'LOCATION',
             p_begda   LIKE p1000-begda DEFAULT '20140512',
             p_endda   LIKE p1000-endda DEFAULT '20170517',
             p_ltype   LIKE lso_borkey_participation-learnertype DEFAULT 'US'"  'P',
             p_lid     LIKE lso_borkey_participation-learnerid   DEFAULT sy-uname.
SELECTION-SCREEN END   OF BLOCK group.
************************************************************************
* INITIALIZATION
************************************************************************
INITIALIZATION.

START-OF-SELECTION.
  CASE p_ltype.
    WHEN 'P'.
* Move PERNR number to variable
      ls_pernr p_lid.
    WHEN 'US'.
      ls_uname p_lid.
      CONDENSE ls_uname.
      SELECT SINGLE pernr FROM pa0105 INTO ls_pernr WHERE
                                usrid ls_uname AND
                                begda LE sy-datum AND
                                endda GE sy-datum AND
                                subty '0001'.
  ENDCASE.
* Read infotype 0105 and subtypes 0001 and 0010
* Sub type 0001 has username
* sub type 0010 has e-mail
  SELECT SINGLE usrid_long FROM pa0105 INTO ls_email WHERE
                         pernr ls_pernr AND
                         begda LE sy-datum AND
                         endda GE sy-datum AND
                         subty '0010'.
  SELECT SINGLE usrid FROM pa0105 INTO ls_uname WHERE
                         pernr ls_pernr AND
                         begda LE sy-datum AND
                         endda GE sy-datum AND
                         subty '0001'.
  PERFORM f_data.
*&---------------------------------------------------------------------*
*&      Form  f_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM f_data .
* Calendar logic begin
  ls_soli-line 'BEGIN:VCALENDAR'.
  APPEND ls_soli TO lt_soli.
  ls_soli-line 'PRODID:-//Microsoft Corporation//Outlook 11.0 MIMEDIR//EN'.
  APPEND ls_soli TO lt_soli.
  ls_soli-line 'VERSION:1.0'.
  APPEND ls_soli TO lt_soli.
  ls_soli-line 'METHOD:REQUEST'.
  APPEND ls_soli TO lt_soli.
  ls_soli-line 'BEGIN:VEVENT'.
  APPEND ls_soli TO lt_soli.
  CONCATENATE 'ATTENDEE;CN=' ls_uname ';ROLE=REQ-        PARTICIPANT;RSVP=TRUE:MAILTO:' ls_email INTO ls_soli-line.
  APPEND ls_soli TO lt_soli.
  CONCATENATE 'DTSTART:' p_begda   'T063000Z' INTO ls_soli-line.
  APPEND ls_soli TO lt_soli.
  CONCATENATE 'DTEND:' p_endda 'T160000Z' INTO ls_soli-line.
  APPEND ls_soli TO lt_soli.
  CONCATENATE 'LOCATION:' p_locnm INTO ls_soli-line.
  APPEND ls_soli TO lt_soli.
  ls_soli-line 'TRANSP:OPAQUE'.
  APPEND ls_soli TO lt_soli.
  ls_soli-line 'SEQUENCE:1'.
  APPEND ls_soli TO lt_soli.

  CONCATENATE 'DESCRIPTION:This is the Body Text of the Appointment'
              ' This text body content max 255 characters only!'
              'You can put any text Appointment ...'
        INTO ls_soli-line SEPARATED BY space.
  APPEND ls_soli TO lt_soli.


**
  CONCATENATE 'SUMMARY: Course Participation for ' ls_uname INTO ls_soli-line SEPARATED BY space.
  APPEND ls_soli TO lt_soli.
  ls_soli-line 'PRIORITY:5'.
  APPEND ls_soli TO lt_soli.
  ls_soli-line 'X-MICROSOFT-CDO-IMPORTANCE:1'.
  APPEND ls_soli TO lt_soli.
  ls_soli-line 'CLASS:PUBLIC'.
  APPEND ls_soli TO lt_soli.
  ls_soli-line 'END:VEVENT'.
  APPEND ls_soli TO lt_soli.
  ls_soli-line 'END:VCALENDAR'.
  APPEND ls_soli TO lt_soli.
* End of Calendar
* Call this function module to convert data created for calendar entry
*
  CALL FUNCTION 'SO_RAW_TO_RTF'
    TABLES
      objcont_old lt_soli[]
      objcont_new lt_soli_new[].
  l_subject 'Course Participation'.
  ls_soli-line 'This is to notify following course has been approved'.
  APPEND ls_soli TO it_content.
  CLEAR ls_soli.
  APPEND ls_soli TO it_content.
  CONCATENATE 'Training Name: ' p_trnam INTO ls_soli-line.
  APPEND ls_soli TO it_content.
  CLEAR ls_soli.
  APPEND ls_soli TO it_content.
  WRITE p_begda TO ls_begin.
  WRITE p_endda TO ls_end.
  CONCATENATE 'Begin Date: ' ls_begin INTO ls_soli-line.
  APPEND ls_soli TO it_content.
  CLEAR ls_soli.
  APPEND ls_soli TO it_content.
  CONCATENATE 'End Date: ' ls_end INTO ls_soli-line.
  APPEND ls_soli TO it_content.
  CLEAR ls_soli.
  APPEND ls_soli TO it_content.
  CONCATENATE 'Location Name: ' p_locnm INTO ls_soli-line.
  APPEND ls_soli TO it_content.
  CLEAR ls_soli.
  APPEND ls_soli TO it_content.
  TRY.
* Create persistent send request
      send_request cl_bcs=>create_persistent).
      document cl_document_bcs=>create_document(
                                    i_type    'RAW'
                                    i_text it_content[]
                                    i_subject l_subject ).
      DESCRIBE TABLE lt_soli.
      CALL METHOD document->add_attachment
        EXPORTING
          i_attachment_type    'VCS'
          i_attachment_subject 'Course'
          i_att_content_text   lt_soli_new[].
* Add document to send request
      CALL METHOD send_request->set_documentdocument ).
* Get sender object
      sender cl_sapuser_bcs=>createsy-uname ).
* Add sender
      CALL METHOD send_request->set_sender
        EXPORTING
          i_sender sender.
*     ------ add recipient (e-mail address) ----------------------
*     create recipient

*  Enter a valid e-mail address
      recipient cl_cam_address_bcs=>create_internet_address(
                                        ls_email ).
*     add recipient with its respective attributes to send request
      CALL METHOD send_request->add_recipient
        EXPORTING
          i_recipient  recipient
          i_express    'U'
          i_copy       ' '
          i_blind_copy ' '
          i_no_forward ' '.
********Trigger e-mails immediately****************************
      send_request->set_send_immediately'X' ).
      CALL METHOD send_request->send(
        EXPORTING
          i_with_error_screen 'X'
        RECEIVING
          result              sent_to_all ).
      IF sent_to_all 'X'.
        WRITE 'Document Sent Successfully'.
      ENDIF.
      COMMIT WORK.
    CATCH cx_document_bcs INTO bcs_exception.
      WRITE'Error Occurred'.
      WRITE'Error Type'bcs_exception->error_type.
      EXIT.
  ENDTRY.
ENDFORM.                    " f_data

No comments:

Post a Comment