[ABAP] SAP: Terminverwaltung

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

[ABAP] Geschäftspartner: Adressdaten lesen

PARAMETERS: p_bp TYPE bapibus1006_head-bpartner.

DATA: lv_bapibus1006_address TYPE bapibus1006_address.
DATA: lv_bapibus1006_addr_dep_att TYPE bapibus1006_addr_dep_att.
DATA: it_bapiadtel TYPE STANDARD TABLE OF bapiadtel.
DATA: it_bapiadfax TYPE STANDARD TABLE OF bapiadfax.
DATA: it_bapiadttx TYPE STANDARD TABLE OF bapiadttx.
DATA: it_bapiadtlx TYPE STANDARD TABLE OF bapiadtlx.
DATA: it_bapiadsmtp TYPE STANDARD TABLE OF bapiadsmtp.
DATA: it_bapiadrml TYPE STANDARD TABLE OF bapiadrml.
DATA: it_bapiadx400 TYPE STANDARD TABLE OF bapiadx400.
DATA: it_bapiadrfc TYPE STANDARD TABLE OF bapiadrfc.
DATA: it_bapiadprt TYPE STANDARD TABLE OF bapiadprt.
DATA: it_bapiadssf TYPE STANDARD TABLE OF bapiadssf.
DATA: it_bapiaduri TYPE STANDARD TABLE OF bapiaduri.
DATA: it_bapiadpag TYPE STANDARD TABLE OF bapiadpag.
DATA: it_bapiad_rem TYPE STANDARD TABLE OF bapiad_rem.
DATA: it_bapicomrem TYPE STANDARD TABLE OF bapicomrem.
DATA: it_addressusage TYPE STANDARD TABLE OF bapibus1006_addressusage.
DATA: it_bapiadversorg TYPE STANDARD TABLE OF bapiad1vd.
DATA: it_bapiadverspers TYPE STANDARD TABLE OF bapiad2vd.
DATA: it_bapiaduse TYPE STANDARD TABLE OF bapiaduse.
DATA: it_return TYPE STANDARD TABLE OF bapiret2.

* SAP-GP, BAPI: Adresse lesen
CALL FUNCTION 'BAPI_BUPA_ADDRESS_GETDETAIL'
  EXPORTING
    businesspartner       = p_bp
*   ADDRESSGUID           =
*   VALID_DATE            = SY-DATLO
*   RESET_BUFFER          =
  IMPORTING
    addressdata           = lv_bapibus1006_address
    address_dep_attr_data = lv_bapibus1006_addr_dep_att
  TABLES
    bapiadtel             = it_bapiadtel
    bapiadfax             = it_bapiadfax
    bapiadttx             = it_bapiadttx
    bapiadtlx             = it_bapiadtlx
    bapiadsmtp            = it_bapiadsmtp
    bapiadrml             = it_bapiadrml
    bapiadx400            = it_bapiadx400
    bapiadrfc             = it_bapiadrfc
    bapiadprt             = it_bapiadprt
    bapiadssf             = it_bapiadssf
    bapiaduri             = it_bapiaduri
    bapiadpag             = it_bapiadpag
    bapiad_rem            = it_bapiad_rem
    bapicomrem            = it_bapicomrem
    addressusage          = it_addressusage
    bapiadversorg         = it_bapiadversorg
    bapiadverspers        = it_bapiadverspers
    bapiaduse             = it_bapiaduse
    return                = it_return.

cl_demo_output=>write_data( lv_bapibus1006_address ).
cl_demo_output=>write_data( lv_bapibus1006_addr_dep_att ).
cl_demo_output=>write_data( it_bapiadtel ).
cl_demo_output=>write_data( it_bapiadfax ).
cl_demo_output=>write_data( it_bapiadtlx ).
cl_demo_output=>write_data( it_bapiadsmtp ).
cl_demo_output=>write_data( it_bapiadrml ).
cl_demo_output=>write_data( it_bapiadx400 ).
cl_demo_output=>write_data( it_bapiadrfc ).
cl_demo_output=>write_data( it_bapiadprt ).
cl_demo_output=>write_data( it_bapiadssf ).
cl_demo_output=>write_data( it_bapiaduri ).
cl_demo_output=>write_data( it_bapiadpag ).
cl_demo_output=>write_data( it_bapiad_rem ).
cl_demo_output=>write_data( it_bapicomrem ).
cl_demo_output=>write_data( it_addressusage ).
cl_demo_output=>write_data( it_bapiadversorg ).
cl_demo_output=>write_data( it_bapiadverspers ).
cl_demo_output=>write_data( it_bapiaduse ).
cl_demo_output=>write_data( it_return ).
cl_demo_output=>display( ).

[ABAP] HR: Mitarbeiterdaten lesen

TRY.
    DATA(o_eapi) = cl_hcmfab_employee_api=>get_instance( ).

    DATA(lv_pernr) = o_eapi->get_employeenumber_from_user( sy-uname ).
    DATA(lv_name) = o_eapi->get_name( lv_pernr ).
    DATA(lv_details) = o_eapi->get_employee_details( iv_pernr = lv_pernr iv_application_id = if_hcmfab_constants=>gc_application_id-mypersonaldata ).

    cl_demo_output=>write_data( lv_pernr ).
    cl_demo_output=>write_data( lv_name ).
    cl_demo_output=>write_data( lv_details ).
  CATCH cx_root INTO DATA(e_txt).
    WRITE: / e_txt->get_text( ).
ENDTRY.

[SAP] ILM

Transaktionen

ACLA (Definition Archivierungsklassen)
IRMPOL (ILM-Regelwerke)
SARA (Archivverwaltung)
DB15 Datenarchivierung: Datenbank-Tabellen

Tabellen

ARCH_DELE (Objekte mit Tabellen, aus denen Einträge gelöscht werden)
ARCH_DEF (Definition eines Archivierungsobjekts)
ARCH_OBJ (Archivierungsobjekt)
ARCH_OCLAS (Zuordnung der Klassen zu einem Archivierungsobjekt)
ARCH_RPRG (Archivierungsobjekte mit zugehörigen Leseprogrammen)
ARCH_TCODE (Anwendungs-Customizing-Transaktionen)
ARCH_TXT (Bezeichnung der Archivierungsobjekte)

Links

[ABAP] DialogBox mit Text und Auswahlbuttons anzeigen (POPUP_FOR_INTERACTION)

*'I' => ICON_MESSAGE_INFORMATION
*'W' => ICON_MESSAGE_WARNING
*'E' => ICON_MESSAGE_ERROR
*'Q' => ICON_MESSAGE_QUESTION
*'C' => ICON_MESSAGE_CRITICAL
DATA: lv_icon TYPE char1 VALUE 'C'.
DATA: lv_return TYPE char1.

* Dialog box (can be configured for various purposes)
CALL FUNCTION 'POPUP_FOR_INTERACTION'
  EXPORTING
    headline       = 'Überschrift'
    text1          = 'Text1'
    text2          = 'Text2'
    text3          = 'Text3'
*   TEXT4          = ' '
*   TEXT5          = ' '
*   TEXT6          = ' '
    ticon          = lv_icon
    button_1       = 'Ja'
    button_2       = 'Nein'
    button_3       = 'Abbruch'
  IMPORTING
    button_pressed = lv_return.

* Button-Wert: 1 - button_1, 2 - button_2 oder 3 - button_3
CASE lv_return.
  WHEN 1.
    WRITE: / 'Ja', lv_return.
  WHEN 2.
    WRITE: / 'Nein', lv_return.
  WHEN 3.
    WRITE: / 'Abbruch', lv_return.
ENDCASE.

[ABAP] Ermittlung der Anmeldedaten incl. des Rechnernamens

* Ermittlung der Anmeldedaten incl. des Rechnernamens
TRY.
    DATA(lv_server_info) = NEW cl_server_info( ).

* Server related information, Liste aller Sessions
*  SERVER_NAME Name des Applikations-Servers
*  LOGON_HDL Anmeldungs-Schlüssel
*  LOGON_ID Anmeldungs-ID
*  SESSION_HDL Backend-Session-Handle
*  USER_NAME Benutzer-ID
*  LOGON_TYPE Typ der Anmeldung
*  LOGON_SUB_TYPE Zusatzinformation zum Anmeldungs-Typ
*  TENANT Name des Mandanten
*  REQUEST_TIME Zeit-Stempel (Anzahl Sekunden seit dem 1.1.1979)
*  MEMORY In Extended Memory (EM) belegter Speicher
*  LOCATION_INFO Informationen über den Client-Rechner des Benutzers
*  APPLICATION Anwendung
*  APPLICATION_INFO Zusatzinformationen zur Anwendung
*  RFC_HDL Conversation-ID
*  RFC_TYPE RFC Typ
*  TRACE Trace-Level
*  PRIORITY Priorität
*  MEMORY_BRUTTO In Extended Segments (ES) belegter Speicher
*  MEMORY_ABAP Von der ABAP-VM belegter Speicher
*  MEMORY_HYPER Größe des Session übergreifenden Speichers
*  MEMORY_HEAP In Prozess lokalem Heap belegter Speicher
*  OPEN_TASKS Offene Aufgaben (open Tasks) dieser Session
*  ACT_PROGRAM Name des Hauptprogrammes
*  WEBSOCKET_HANDLE WebSocket-Handle

    DATA(it_session_list) = lv_server_info->get_session_list( tenant = sy-mandt ).

    cl_demo_output=>write_data( it_session_list ).
* HTML-Code vom Demo-Output holen
    DATA(lv_html) = cl_demo_output=>get( ).

* Daten im Inline-Browser im SAP-Fenster anzeigen
    cl_abap_browser=>show_html( EXPORTING title       = 'CL_SERVER_INFO'
                                          html_string = lv_html
                                          container   = cl_gui_container=>default_screen ).

* cl_gui_container=>default_screen erzwingen
    WRITE: space.

  CATCH cx_root INTO DATA(e_txt).
    WRITE: / e_txt->get_text( ).
ENDTRY.