*&---------------------------------------------------------------------* *& Report ZTEST1 *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT ZTEST1. DATA: text TYPE bcsy_text. DATA: document TYPE REF TO cl_document_bcs. DATA: sender TYPE REF TO cl_sapuser_bcs. DATA: recipient TYPE REF TO if_recipient_bcs. DATA: bcs_exception TYPE REF TO cx_bcs. DATA: sent_to_all TYPE os_boolean. DATA: it_content TYPE soli_tab. DATA: it_attach TYPE soli_tab. DATA: send_request TYPE REF TO cl_bcs. DATA: l_subject LIKE sodocchgi1-obj_descr, l_sender_type LIKE soextreci1-adr_typ, l_recsize TYPE i, l_receiver TYPE sy-subrc. DATA: lt_soli TYPE soli_tab . DATA: ls_soli LIKE LINE OF lt_soli. DATA: lt_soli_new TYPE soli_tab. DATA: ls_email TYPE string."pa0105-usrid_long. DATA: ls_uname TYPE string."pa0105-usrid. DATA: ls_pernr TYPE string."pernr-pernr. DATA: ls_begin(10) TYPE c. DATA: ls_end(10) TYPE c. DATA: result TYPE REF TO cl_document_bcs. DATA: BEGIN OF ls_data, sender TYPE string,"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 '20081101', p_endda LIKE p1000-endda DEFAULT '20081104', p_ltype LIKE LSO_BORKEY_PARTICIPATION-LEARNERTYPE DEFAULT 'P', p_lid LIKE LSO_BORKEY_PARTICIPATION-LEARNERID DEFAULT '10000137'. 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 'T140000Z' INTO ls_soli-line. APPEND ls_soli TO lt_soli. CONCATENATE 'DTEND:' p_endda 'T220000Z' 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. ls_soli-line = 'DESCRIPTION: Course Participation'. 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_document( document ). * Get sender object sender = cl_sapuser_bcs=>create( sy-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