采用 cl_document_bcs 将 Meeting request 发送到 outlook 去

简介: 采用 cl_document_bcs 将 Meeting request 发送到 outlook 去
*&---------------------------------------------------------------------*
*& 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
相关文章
采用 cl_document_bcs 将 Meeting request 发送到 outlook 去
采用 cl_document_bcs 将 Meeting request 发送到 outlook 去
66 0
|
网络协议
SAP公司间STO里发货单过账后触发的IDoc报错 – Could not find code page for receiving system –
SAP公司间STO里发货单过账后触发的IDoc报错 – Could not find code page for receiving system –
SAP公司间STO里发货单过账后触发的IDoc报错 – Could not find code page for receiving system –
My Appointment编辑场景下的roundtrip
My Appointment编辑场景下的roundtrip
102 0
My Appointment编辑场景下的roundtrip
使用ABAP cl_document_bcs发送邮件
使用ABAP cl_document_bcs发送邮件
231 0
My appointment应用点了Edit后的roundtrip分析
My appointment应用点了Edit后的roundtrip分析
My appointment应用点了Edit后的roundtrip分析
使用jMeter的regular expression extract提取SSO form的XSRF protection token
使用jMeter的regular expression extract提取SSO form的XSRF protection token
110 0
使用jMeter的regular expression extract提取SSO form的XSRF protection token
SAP Spartacus delivery mode页面Cannot find control with的错误消息
SAP Spartacus delivery mode页面Cannot find control with的错误消息
106 0
SAP Spartacus delivery mode页面Cannot find control with的错误消息
SAP Shipping address页面点了continue后的网络请求
SAP Shipping address页面点了continue后的网络请求
92 0
SAP Shipping address页面点了continue后的网络请求
|
中间件 Go
SAP CRM中间件Request download的警告信息:Form of address 0001 not designated for organization
SAP CRM中间件Request download的警告信息:Form of address 0001 not designated for organization
111 0
SAP CRM中间件Request download的警告信息:Form of address 0001 not designated for organization
How to debug Interaction center inbox workflow WS14000164
How to debug Interaction center inbox workflow WS14000164
How to debug Interaction center inbox workflow WS14000164