Mail an mehrere Empfänger

Getting started ... Alles für einen gelungenen Start.
8 Beiträge • Seite 1 von 1
8 Beiträge Seite 1 von 1

Mail an mehrere Empfänger

Beitrag von Schäfer_anfänger (ForumUser / 38 / 1 / 0 ) »
Guten Morgen ich habe mein Programm zusammen mit einem Kollegen soweit zum laufen bekommen, jedoch stehe ich nun vor dem Problem, dass es nicht möglich ist eine Mail an mehrere Empfänger zu senden. Die Mails sollten in dem Tabellenfeld '<g_expiry_check>-email_to.' gepflegt werden und mit einem Semikolon von einander getrennt werden. Bei der Eingabe von mehreren Adressen geht jedoch keine Mail heraus. Habt ihr eine Idee/Vorschlag wie ich so zusagen in meinem Code das ganze beachten kann? Andere Lösungsvorschläge sind natürlich auch willkommen :D

Code: Alles auswählen.

REPORT zbc_expiry_check.

DATA:   heute                 TYPE sy-datum,
        diff                  TYPE i,
        lt_expiry_check       TYPE TABLE OF zbc_expiry_check,
        go_tabelle    TYPE REF TO cl_salv_table,
        go_funktionen TYPE REF TO cl_salv_functions,
        lv_dates(10)          TYPE c.


DATA:   lv_betreff            TYPE sodocchgi1,
        lt_receivers          TYPE STANDARD TABLE OF somlreci1 WITH HEADER LINE,
        ls_receivers          TYPE somlreci1,
        lt_inhalt             TYPE STANDARD TABLE OF solisti1 WITH HEADER LINE,
        ls_inhalt             TYPE solisti1,
        lt_kopf               TYPE STANDARD TABLE OF solisti1,
        ls_kopf               TYPE solisti1,
        ls_structure_mail     TYPE sopcklsti1,
        lt_structure_mail     TYPE STANDARD TABLE OF sopcklsti1,
        ls_objtxt             TYPE solisti1,             " Message body
        w_tab_lines           TYPE i.            " Table lines


FIELD-SYMBOLS: <g_expiry_check> LIKE LINE OF lt_expiry_check .

heute = sy-datum.

SELECT *
FROM zbc_expiry_check
INTO TABLE lt_expiry_check.

LOOP AT lt_expiry_check ASSIGNING <g_expiry_check>.
  diff = <g_expiry_check>-expiry_date - heute.

  CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
    EXPORTING
      date_internal            = <g_expiry_check>-expiry_date
    IMPORTING
      date_external            = lv_dates
    EXCEPTIONS
      date_internal_is_invalid = 1
      OTHERS                   = 2.

*Wenn das Objekt abgelaufen ist
  IF diff < 0.
    CLEAR lt_inhalt[].
    CLEAR ls_inhalt.

    ls_objtxt-line = |The following object has expired:|.
    APPEND ls_objtxt TO lt_inhalt.

    ls_objtxt-line = ' '.
    APPEND ls_objtxt TO lt_inhalt.

    ls_objtxt-line = |CRITICAL - | && sy-sysid && |: | && <g_expiry_check>-type &&
    | | && <g_expiry_check>-name && | expired (| && lv_dates && |). | .
    APPEND ls_objtxt TO lt_inhalt.

    ls_objtxt-line = ' '.
    APPEND ls_objtxt TO lt_inhalt.

    ls_objtxt-line = |This message was generated in system | && sy-sysid &&
    | / report name: | && sy-repid && | (jobname may differ...) |.
    APPEND ls_objtxt TO lt_inhalt.

    lv_betreff-obj_name = 'EXPIRY CHECK'.
    lv_betreff-obj_descr = 'A SAP-OBJECT EXPIRED'.
    lv_betreff-obj_langu = 'D'.
    lv_betreff-sensitivty = 'F'.

    DESCRIBE TABLE lt_inhalt LINES w_tab_lines.
    READ TABLE lt_inhalt INDEX w_tab_lines.
    lv_betreff-doc_size = ( w_tab_lines - 1 ) * 255 + strlen( lt_inhalt ).

    CLEAR lt_receivers[].
    ls_receivers-receiver = <g_expiry_check>-email_to.
    ls_receivers-rec_type = 'U'.
    ls_receivers-express = 'X'.
    APPEND ls_receivers TO lt_receivers.

    CALL FUNCTION 'SO_NEW_DOCUMENT_SEND_API1'
      EXPORTING
        document_type              = 'RAW'
        document_data              = lv_betreff
        put_in_outbox              = 'X'
        commit_work                = 'X'
      TABLES
        object_header              = lt_kopf
        object_content             = lt_inhalt
        receivers                  = lt_receivers
      EXCEPTIONS
        too_many_receivers         = 1
        document_not_sent          = 2
        document_type_not_exist    = 3
        operation_no_authorization = 4
        parameter_error            = 5
        x_error                    = 6
        enqueue_error              = 7
        OTHERS                     = 8.

    IF sy-subrc <> 0.
      EXIT.
    ENDIF.
ENDIF.

*Wenn das Objekt ausläuft
  IF diff <= <g_expiry_check>-warn_thres_d AND diff >= 0.

*<g_expiry_check>-thres_reduced_d = <g_expiry_check>-warn_thres_d - 5.
    CLEAR lt_inhalt[].
    CLEAR ls_inhalt.
    ls_objtxt-line = |The following object is about to expire:|.
    APPEND ls_objtxt TO lt_inhalt.

    ls_objtxt-line = ' '.
    APPEND ls_objtxt TO lt_inhalt.

    ls_objtxt-line = |WARNING - | && sy-sysid && |: | && <g_expiry_check>-type &&
    | | && <g_expiry_check>-name && | expires in | && diff && | days (| && lv_dates && |). | .
    APPEND ls_objtxt TO lt_inhalt.

    ls_objtxt-line = ' '.
    APPEND ls_objtxt TO lt_inhalt.

    ls_objtxt-line = |This message was generated in system | && sy-sysid &&
    | / report name: | && sy-repid && | (jobname may differ...) |.
    APPEND ls_objtxt TO lt_inhalt.

    lv_betreff-obj_name = 'EXPIRY CHECK'.
    lv_betreff-obj_descr = 'A SAP-OBJECT IS GOING TO EXPIRE'.
    lv_betreff-obj_langu = 'D'.
    lv_betreff-sensitivty = 'F'.

    DESCRIBE TABLE lt_inhalt LINES w_tab_lines.
    READ TABLE lt_inhalt INDEX w_tab_lines.
    lv_betreff-doc_size = ( w_tab_lines - 1 ) * 255 + strlen( lt_inhalt ).

    CLEAR lt_receivers[].
    ls_receivers-receiver = <g_expiry_check>-email_to.
    ls_receivers-rec_type = 'U'.
    ls_receivers-express = 'X'.
    APPEND ls_receivers TO lt_receivers.

    CALL FUNCTION 'SO_NEW_DOCUMENT_SEND_API1'
      EXPORTING
        document_type              = 'RAW'
        document_data              = lv_betreff
        put_in_outbox              = 'X'
        commit_work                = 'X'
      TABLES
        object_header              = lt_kopf
        object_content             = lt_inhalt
        receivers                  = lt_receivers
      EXCEPTIONS
        too_many_receivers         = 1
        document_not_sent          = 2
        document_type_not_exist    = 3
        operation_no_authorization = 4
        parameter_error            = 5
        x_error                    = 6
        enqueue_error              = 7
        OTHERS                     = 8.

    IF sy-subrc <> 0.
      EXIT.
    ENDIF.
  ENDIF.
ENDLOOP.



TRY.                                                                                         "Just for me
  cl_salv_table=>factory( IMPORTING r_salv_table = go_tabelle
                          CHANGING t_table = lt_expiry_check    ).
    CATCH cx_salv_msg.
  ENDTRY.
  go_funktionen = go_tabelle->get_functions( ).
  go_funktionen->set_all( abap_true ).
  go_tabelle->display( ).
ABAP Anfänger vom allerfeinsten!

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Mail an mehrere Empfänger

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
Hi!

Wenn du sagst, dass die Empfänger mit Semikolon eingetragen sind, musst du sie auch erst mal trennen:

Code: Alles auswählen.

data: lt_string type stringtab.
SPLIT <g_expiry_check>-email_to AT ';' INTO lt_string.
LOOP AT lt_string ASSIGNING FIELD-SYMBOL(<ld_string>).
  APPEND INITIAL LINE TO lt_receivers ASSIGNING FIELD-SYMBOL(<ls_receiver>). 
  <ls_receiver>-receiver = <ld_string>.
  <ls_receiver>-rec_type = 'U'.
  <ls_receiver>-express = 'X'.
ENDLOOP.
Ich würde dir aber empfehlen, wenn du das schon umbaust/neu entwickelst auf die BCS-Klassen umzusteigen und dem SO_NEW_DOCUMENT_SEND_API1 lebewohl zu sagen.

lg ADT
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Mail an mehrere Empfänger

Beitrag von Schäfer_anfänger (ForumUser / 38 / 1 / 0 ) »
a-dead-trousers hat geschrieben:Hi!

Wenn du sagst, dass die Empfänger mit Semikolon eingetragen sind, musst du sie auch erst mal trennen:

Code: Alles auswählen.

data: lt_string type stringtab.
SPLIT <g_expiry_check>-email_to AT ';' INTO lt_string.
LOOP AT lt_string ASSIGNING FIELD-SYMBOL(<ld_string>).
  APPEND INITIAL LINE TO lt_receivers ASSIGNING FIELD-SYMBOL(<ls_receiver>). 
  <ls_receiver>-receiver = <ld_string>.
  <ls_receiver>-rec_type = 'U'.
  <ls_receiver>-express = 'X'.
ENDLOOP.
Ich würde dir aber empfehlen, wenn du das schon umbaust/neu entwickelst auf die BCS-Klassen umzusteigen und dem SO_NEW_DOCUMENT_SEND_API1 lebewohl zu sagen.

lg ADT
Vielen Dank, hat soweit funktioniert :) Jetzt hätte ich aber noch ne Frage :D nicht nur an dich sondern an alle :) und zwar: Wollte ich nun einer Spalte (Spalte1) in meiner Datenbank denselben Wert wie einer bereits vorhandenen Spalte (Spalte2) zuordnen. Spalte2 wird hierbei vom Nutzer befüllt. Spalte1 soll dann automatisch denselben Wert erhalten. Danke schonmal :)
ABAP Anfänger vom allerfeinsten!

Re: Mail an mehrere Empfänger

Beitrag von black_adept (Top Expert / 4089 / 127 / 940 ) »
Edit: Überholt durch neuere Posts ( zu lange das Postingfenster hier offen gehabt )
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Mail an mehrere Empfänger

Beitrag von black_adept (Top Expert / 4089 / 127 / 940 ) »
Schäfer_anfänger hat geschrieben:Jetzt hätte ich aber noch ne Frage :D nicht nur an dich sondern an alle :) und zwar: Wollte ich nun einer Spalte (Spalte1) in meiner Datenbank denselben Wert wie einer bereits vorhandenen Spalte (Spalte2) zuordnen. Spalte2 wird hierbei vom Nutzer befüllt. Spalte1 soll dann automatisch denselben Wert erhalten. Danke schonmal :)
Was hat das mit dem Topic des Threads zu tun?
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Mail an mehrere Empfänger

Beitrag von Schäfer_anfänger (ForumUser / 38 / 1 / 0 ) »
black_adept hat geschrieben:
Schäfer_anfänger hat geschrieben:Jetzt hätte ich aber noch ne Frage :D nicht nur an dich sondern an alle :) und zwar: Wollte ich nun einer Spalte (Spalte1) in meiner Datenbank denselben Wert wie einer bereits vorhandenen Spalte (Spalte2) zuordnen. Spalte2 wird hierbei vom Nutzer befüllt. Spalte1 soll dann automatisch denselben Wert erhalten. Danke schonmal :)
Was hat das mit dem Topic des Threads zu tun?
Was hat das mit einer Antwort/Hilfe/sinnvollem Beitrag zu tun?
ABAP Anfänger vom allerfeinsten!

Re: Mail an mehrere Empfänger

Beitrag von black_adept (Top Expert / 4089 / 127 / 940 ) »
Weil ein Thread, der mit Thema X gekennzeichnet ist, aber dann Fragen zu Themy Y behandelt haben will Etikettenschwindel ist. Wenn du ein neues Thema abhandeln willst mach halt einen neuen Thread dafür auf. Dann haben auch andere die Chance von den Antworten zu profitieren.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Mail an mehrere Empfänger

Beitrag von Thanatos82 (Expert / 699 / 32 / 123 ) »
Schäfer_anfänger hat geschrieben:
black_adept hat geschrieben:
Schäfer_anfänger hat geschrieben:Jetzt hätte ich aber noch ne Frage :D nicht nur an dich sondern an alle :) und zwar: Wollte ich nun einer Spalte (Spalte1) in meiner Datenbank denselben Wert wie einer bereits vorhandenen Spalte (Spalte2) zuordnen. Spalte2 wird hierbei vom Nutzer befüllt. Spalte1 soll dann automatisch denselben Wert erhalten. Danke schonmal :)
Was hat das mit dem Topic des Threads zu tun?
Was hat das mit einer Antwort/Hilfe/sinnvollem Beitrag zu tun?
Was hat dein Benehmen hier im Forum mit Freundlichkeit zu tun? Du hältst dich mehrfach nicht an die Forenregeln, aktuell beginnst du in einem Thread ein neues Thema welches nichts mit dem Thread zu tun hat, was nicht so sein soll und beim Hinweis daruf wirst du direkt aggressiv weil du keine Hilfe bekommst.
DU bist hier definitiv falsch!!!
Gruß,
der Matze

Seite 1 von 1

Vergleichbare Themen

2
Antw.
1709
Views
Mehrere Empfänger bei E-Mail Versand mit CL_BSC
von Bright4.5 » 25.10.2018 09:36 • Verfasst in ABAP® für Anfänger
3
Antw.
620
Views
SOOD Empfänger E-Mail-Adresse auslesen
von kon97 » 11.11.2022 10:44 • Verfasst in ABAP® für Anfänger
2
Antw.
3863
Views
externes Senden: Empfänger unbekannt
von Christl » 26.06.2007 13:09 • Verfasst in Sales and Distribution
2
Antw.
1695
Views
GOS - Auslesen von Objekten incl. Empfänger
von oberreute » 15.05.2008 16:47 • Verfasst in ABAP® Core
3
Antw.
2252
Views
Mahnung an mehrere eMail Empfänger versenden?
von bapimueller » 22.06.2021 17:45 • Verfasst in Financials

Aktuelle Forenbeiträge

Eclipse - warum/wann verwendet ihr es [nicht]
vor einer Stunde von tar 21 / 1387
Dialog-Container mit Toolbar/Status
vor 3 Stunden von DeathAndPain gelöst 22 / 2792
Daten an Tabelle binden
vor 8 Stunden von Lukas Sanders 2 / 870
Zeilenumbrüche ersetzen
vor 2 Tagen von ralf.wenzel 6 / 426

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

Eclipse - warum/wann verwendet ihr es [nicht]
vor einer Stunde von tar 21 / 1387
Dialog-Container mit Toolbar/Status
vor 3 Stunden von DeathAndPain gelöst 22 / 2792
Daten an Tabelle binden
vor 8 Stunden von Lukas Sanders 2 / 870
Zeilenumbrüche ersetzen
vor 2 Tagen von ralf.wenzel 6 / 426

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2461
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9047