Quantcast
Channel: SCN: Message List
Viewing all articles
Browse latest Browse all 8695

Re: Outlook Calendar not sync for the sender or organizer

$
0
0

Hello Kenny,

 

Of course.

 

FUNCTION ZMD_SYNC_ACTIVITY.

*"----------------------------------------------------------------------

*"*"Interfase local

*"  IMPORTING

*"     REFERENCE(IM_SENDER) TYPE  SYUNAME

*"     REFERENCE(IM_RECEIVER) TYPE  BBPT_OM_PARTNERS

*"     REFERENCE(IM_DATEFROM) TYPE  SC_DATEFRO

*"     REFERENCE(IM_TIMEFROM) TYPE  SC_TIMEFRO

*"     REFERENCE(IM_DATETO) TYPE  SC_DATETO

*"     REFERENCE(IM_TIMETO) TYPE  SC_TIMETO

*"     REFERENCE(IM_TEXTO) TYPE  SO_TXTTAB

*"     REFERENCE(IM_SUBJECT) TYPE  SC_TXTSHOR

*"  EXCEPTIONS

*"      NO_EXISTEN_RECEPTORES

*"      OTHERS

*"----------------------------------------------------------------------

 

include <cntn01>.

type-pools: sccon.

 

DATA:

       lo_appointment type ref to cl_appointment,

       ls_participant type scspart,

       lv_address type swc_object,

       ls_address_container like swcont occurs 0 with header line,

"      data lv_location like scsappt-room.

       lo_send_request type ref to cl_bcs,

       lv_sent_to_all type os_boolean,

 

       ls_text TYPE string,

       lt_text TYPE SO_TXTTAB,

       lt_smtp TYPE TABLE OF BAPIADSMTP,

       ls_smtp TYPE BAPIADSMTP,

 

       ls_partner_guid TYPE BU_PARTNER_GUID,

       lv_username TYPE SYUNAME,

       ls_receiver LIKE LINE OF im_receiver,

 

       lv_existen_receptores  TYPE BOOLEAN.

 

 

   CREATE OBJECT lo_appointment.

 

* Agregamos los participantes

   LOOP AT im_receiver INTO ls_receiver.

 

     clear ls_participant.

 

     " aqui debe obtener el correo del participante

     CALL FUNCTION 'BAPI_BUPA_ADDRESS_GETDETAIL'

         EXPORTING

           BUSINESSPARTNER       = ls_receiver

           RESET_BUFFER          = abap_true

         TABLES

           BAPIADSMTP            = lt_smtp.

 

     IF sy-subrc = 0.

 

       READ TABLE lt_smtp INTO ls_smtp INDEX 1.

 

       IF ls_smtp-e_mail IS NOT INITIAL.

 

         lv_existen_receptores = abap_true.

 

         swc_create_object lv_address 'ADDRESS' space.

         swc_set_element ls_address_container 'AddressString' ls_smtp-e_mail.

         swc_set_element ls_address_container 'TypeId' 'U'.

         swc_call_method lv_address 'Create' ls_address_container.

 

         check sy-subrc = 0.

*       * get key and type of object

         swc_get_object_key lv_address ls_participant-objkey.

         check sy-subrc = 0.

         swc_get_object_type lv_address ls_participant-objtype.

         check sy-subrc = 0.

         move sccon_part_sndmail_with_ans to ls_participant-send_mail.

         ls_participant-comm_mode = 'INT'.

         lo_appointment->add_participant( participant = ls_participant ).

 

       ENDIF.

     ENDIF.

   ENDLOOP.

 

   IF lv_existen_receptores = abap_false.

 

     RAISE NO_EXISTEN_RECEPTORES.

 

   ENDIF.

 

*   Fecha y Hora

   lo_appointment->set_date( date_from = im_datefrom

    time_from = im_timefrom

    date_to = im_dateto

    time_to = im_timeto

    timezone = 'UTC-5'

    ).

 

*   Make appointment appear "busy"

   lo_appointment->set_busy_value( sccon_busy_busy ).

 

*   Set Organizer

 

   " aqui debe obtener el correo del sender

*  SELECT SINGLE PARTNER_GUID

*    INTO ls_partner_guid

*    FROM BUT000

*    WHERE PARTNER = im_sender.

*

*  IF sy-subrc = 0.

*

*    CALL FUNCTION 'BP_CENTRALPERSON_GET'

*      EXPORTING

*        IV_BU_PARTNER_GUID         = ls_partner_guid

*      IMPORTING

*        EV_USERNAME                = lv_username

*      EXCEPTIONS

*        NO_CENTRAL_PERSON          = 1

*        NO_BUSINESS_PARTNER        = 2

*        NO_ID                      = 3

*        OTHERS                     = 4.

*    IF SY-SUBRC = 0.

*      lo_appointment->set_organizer( lv_username ).

*    else.

*      lo_appointment->set_organizer( sy-uname ).

*    ENDIF.

*

*  ELSE.

*    lo_appointment->set_organizer( sy-uname ).

*  ENDIF.

 

   lo_appointment->set_organizer( sy-uname ).

 

*   "Type of Meeting" (value picked from table SCAPPTTYPE)

   lo_appointment->set_type( 'CUSTOMER' ).

 

   CONCATENATE 'Texto de la actividad' CL_ABAP_CHAR_UTILITIES=>NEWLINE 'Prueba de Salto'

   INTO ls_text.

  

   append ls_text TO lt_text.

   lo_appointment->set_text( lt_text ).

 

"  lo_appointment->set_text( im_texto ).

 

*   Set Meeting Subject

   lo_appointment->set_title( im_subject ).

 

*   Important to set this one to space. Otherwise SAP will send a not userfriendly e-mail

   lo_appointment->save( send_invitation = space ).

 

   TRY .

 

*     Now that we have the appointment, we can send a good one for outlook by switching to BCS

     lo_send_request = lo_appointment->create_send_request( ).

 

*     don't request read/delivery receipts

     lo_send_request->set_status_attributes( i_requested_status = 'N'

      i_status_mail = 'N'

      ).

 

*     Send it to the world

     lv_sent_to_all = lo_send_request->send( i_with_error_screen = 'X' ).

 

     COMMIT WORK AND WAIT.

 

   CATCH CX_BCS.

 

     RAISE OTHERS.

 

   ENDTRY.

 

ENDFUNCTION.


Viewing all articles
Browse latest Browse all 8695

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>