Klassen
CL_APPOINTMENT (Termin der R/3 Terminverwaltung)
CL_ORGANIZER (Terminverwaltung: Oberfläche für die Terminanzeige)
CL_PLANNER (Terminverwaltung: Planungsoberfläche)
CL_RECA_WB_ORGANIZER (Terminkalender innerhalb der Workbench)
CL_CRM_DATES_ORGANIZER_UI (CRM Scheduler (Kalender und Taskliste))
Tabellen
SCAPPTTYPE (Terminart)
SCAPPT (benutzerspezifische Termine)
SCGENAPPT (generierte Termine (regelmäßige bzw. Gruppentermine))
Typgruppen
SCCON (Terminkalender: Definition von Konstanten)
Programme
RSSC_DEMO_CL_APPOINTMENT_SIMPL
RSSC_DEMO_CL_APPOINTMENT_PERIO
RSSC_DEMO_CL_APPOINTMENT_APPL
RSSC_DEMO_CL_APPOINTMENT
RSSC_DEMO_ICAL
RSSC_TEST_CL_APPOINTMENT_REPLY
Beispiel 1 (cl_reca_wb_organizer)
TRY. cl_reca_wb_organizer=>initialize( io_custom_control = cl_gui_container=>default_screen ). WRITE: / space. CATCH cx_root INTO DATA(e_ext). ENDTRY.
Beispiel 2 (cl_appointment)
TRY. DATA(o_app) = NEW cl_appointment( ). * Terminart * siehe Tabelle SCAPPTTYPE (Terminart) o_app->set_type( 'MEETING' ). * Organisator o_app->set_organizer( organizer = sy-uname ). * Teilnehmer hinzufügen DATA: lv_part TYPE scspart. DATA: lv_address TYPE obj_record. lv_address-header = 'OBJH'. lv_address-type = 'SWO'. DATA: lv_err_msg TYPE swotreturn. CALL FUNCTION 'SWO_CREATE' EXPORTING objtype = 'ADDRESS' objkey = space IMPORTING object = lv_address-handle return = lv_err_msg. DATA: lv_mail TYPE ad_smtpadr VALUE 'test@test.de'. DATA: it_address_container TYPE STANDARD TABLE OF swcont. * Schreiben eines ABAP/4-Feldes in einen Container CALL FUNCTION 'SWC_ELEMENT_SET' EXPORTING element = 'AddressString' field = lv_mail TABLES container = it_address_container. * Schreiben eines ABAP/4-Feldes in einen Container CALL FUNCTION 'SWC_ELEMENT_SET' EXPORTING element = 'TypeId' field = 'U' TABLES container = it_address_container. * Buisness Objekt Metode aufrufen / Attribute setzen CALL FUNCTION 'SWO_INVOKE' EXPORTING access = 'C' object = lv_address-handle verb = 'Create' persistent = ' ' TABLES container = it_address_container. DATA: lv_objkey TYPE swotobjid. * Buisiness Objekt Superobjekttyp lesen CALL FUNCTION 'SWO_OBJECT_ID_GET' EXPORTING object = lv_address-handle IMPORTING objid = lv_objkey. lv_part-objkey = lv_objkey-objkey. lv_part-objtype = lv_objkey-objtype. lv_part-comm_mode = 'INT'. lv_part-send_mail = sccon_part_sndmail_with_ans. o_app->add_participant( participant = lv_part ). * Terminüberschrift / Subject DATA: lv_title TYPE sc_txtshor VALUE 'wichtiger Termin'. o_app->set_title( lv_title ). * Ort / Locaton (max. 12 Zeichen --> ggf. noch im iCal-Text unter LOCATION: ersetzen) DATA: lv_loc TYPE sc_room VALUE 'Raum 100'. o_app->set_location( lv_loc ). * o_app->set_location_string( ). * Zeitpunkt DATA(lv_date_from) = CONV sc_datefro( sy-datum ). DATA(lv_time_from) = sccon_00. DATA(lv_date_to) = CONV sc_dateto( '311299' ). DATA(lv_time_to) = sccon_235959. o_app->set_date( date_from = lv_date_from date_to = lv_date_to time_from = lv_time_from time_to = lv_time_to ). * Priorität o_app->set_priority( sccon_prio_very_high ). * Status o_app->set_status( sccon_status_planned ). * Anzeigeattribute o_app->set_view_attributes( show_on_top = abap_true ). * Busy-Wert (frei, belegt, ...) o_app->set_busy_value( sccon_busy_busy ). * Klassification (1=öffentlich, 2=privat, 3=geheim) o_app->set_classification( sccon_public ). * Beschreibung DATA(it_body_text) = VALUE so_txttab( ( line = 'Text1' ) ( line = cl_abap_char_utilities=>cr_lf ) ( line = 'Text2' ) ( line = cl_abap_char_utilities=>cr_lf ) ( line = 'Text3' ) ). o_app->set_text( it_body_text ). * Änderbarkeit (Berechtigung: 1= alle , 2 = nur Organisator) o_app->set_text_authority( '2' ). * Termin auf der DB sichern * Note:2413122-- save should only be done after BADI call. o_app->save( send_invitation = abap_false ). " Important to set this one to space. Otherwise SAP will send a not user-friendly e-mail * Mailversand DATA(o_req) = o_app->create_send_request( ). DATA(o_rec) = cl_cam_address_bcs=>create_internet_address( lv_mail ). o_req->add_recipient( i_recipient = o_rec ). o_req->set_status_attributes( EXPORTING i_requested_status = 'N' " Requested Status: N - Never i_status_mail = 'N' " Setting for Which Statuses Are Reported by Mail: N - Never ). o_req->set_send_immediately( abap_true ). * IF o_req->send( ) = abap_true. * COMMIT WORK AND WAIT. * ENDIF. * iCal-Object holen * hier ggf. 'METHOD:REQUEST' durch 'METHOD:PUBLISH' ersetzen * hier ggf. 'LOCATION:' ersetzen mit längerem Raumnamen DATA(it_ical_soli_tab) = o_app->as_ical_object( ). cl_demo_output=>write_data( it_ical_soli_tab ). cl_demo_output=>display( ). CATCH cx_root INTO DATA(e_ext). ENDTRY.
Links
- https://tricktresor.de/blog/termin-an-outlook-versenden/
- https://help.sap.com/docs/SAP_NETWEAVER_700/129cd1956c5310149cb5b3c9b18c238a/4d2aeaaefe571c91e10000000a42189e.html?version=7.0.39&locale=de-DE
- https://docplayer.net/213471347-Deleting-and-updating-calendar-appointments-ms-outlook-ibm-lotus-notes-etc-directly-from-abap-applications.html
- https://de.wikipedia.org/wiki/ICalendar