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.