Interne Tabelle Mail verschicken mit CL BCS (Business Communication Service)

Aus SAP-Wiki
Wechseln zu:Navigation, Suche

Siehe Klasse CL BCS (Business Communication Service).

FORM send_mail .
  DATA: lo_send_request       TYPE REF TO cl_bcs.
  DATA: lt_text               TYPE bcsy_text.
  DATA: lv_text               TYPE soli.
  DATA: lt_binary_content     TYPE solix_tab.
  DATA: lo_document           TYPE REF TO cl_document_bcs.
  DATA: lo_sender             TYPE REF TO cl_sapuser_bcs.
  DATA: lo_recipient          TYPE REF TO if_recipient_bcs.
  DATA: lx_bcs_exception      TYPE REF TO cx_bcs.
  DATA: lv_sent_to_all        TYPE os_boolean.

  DATA: lv_var        TYPE string,
        lv_stext      TYPE string,
        lv_percentage TYPE string.
  TRY.
      lo_send_request = cl_bcs=>create_persistent( ).
      SORT gt_outdat BY status.

      LOOP AT gt_outdat INTO DATA(ls_outdat) WHERE status <> icon_led_green.

        CASE ls_outdat-status.
          WHEN  icon_led_red.
            lv_stext = | Der Schwellenwert für das Land { ls_outdat-land1 }  wurde überschritten (siehe Transaktion ZSD_SW) | .
          WHEN icon_led_yellow.
            lv_percentage = ls_outdat-in_proz.
            REPLACE FIRST OCCURRENCE OF  '&1'  IN lv_var WITH  lv_percentage.
            lv_stext       = | Der Schwellenwert für das Land   { ls_outdat-land1 }     ist zu  { lv_percentage } Prozent erreicht | .
          WHEN icon_message_critical.
            lv_stext = | Customizing fehlt für Land { ls_outdat-land1 } | .
        ENDCASE.
        lv_text = lv_stext.

        INSERT lv_text INTO TABLE lt_text.
      ENDLOOP.

      IF lt_text IS INITIAL.
        MESSAGE 'Keine Fehler-Mails zu versenden'(007) TYPE 'I'.
      ELSE.
        lo_document = cl_document_bcs=>create_document(
                              i_type    = 'RAW'
                              i_text    = lt_text
                              i_length  = '12'
                              i_subject = CONV #( TEXT-008 ) ).   "'Fehler bei Schwellwert-Prüfung' ).

        lo_send_request->set_document( lo_document ).

        lo_sender = cl_sapuser_bcs=>create( sy-uname ).

        lo_send_request->set_sender( EXPORTING i_sender = lo_sender ).

        lo_recipient = cl_cam_address_bcs=>create_internet_address( i_address_string = CONV #( p_madr ) ).

        lo_send_request->add_recipient( EXPORTING i_recipient|1= lo_recipient i_express = abap_true ).

        lo_send_request->send( EXPORTING i_with_error_screen|1= abap_true RECEIVING result = lv_sent_to_all ).

        COMMIT WORK.

        IF sy-subrc = 0.
          MESSAGE 'Fehler-Mails wurden versandt'(002) TYPE 'I'.
        ENDIF.
      ENDIF.
    CATCH cx_bcs INTO lx_bcs_exception.
  ENDTRY.

ENDFORM.