Doppelte Ausgabe einer Mail aus SAP - Mail aus Query

Die Objektorientierung mit ABAP®: Vererbung, Dynamische Programmierung, GUI Controls (u.a. ALV im OO).
19 Beiträge • Seite 1 von 2 (current) Nächste
19 Beiträge Seite 1 von 2 (current) Nächste

Doppelte Ausgabe einer Mail aus SAP - Mail aus Query

Beitrag von yeti1967 (ForumUser / 13 / 2 / 0 ) »
Hallo,
folgendes Problem habe ich:
Eine Query läuft als Job zweimal am Tag. In der Query ist ein ABAP-Coding, was Anzahl der Datensätze, Datum und Wert ausgeben soll. Das Ganze wird aus einer SAP-Verteilerliste verteilt(aus Testzwecken erst ein Name).
Klappt alles, bis auf dem Umstand das eine zweite Mail mitrausgeht. Sie hat nur den Betreff und der Rest ist leer. Die soll/ muss weg.
Das Coding:
CLOSE DATASET lv_file.
IF sy-subrc = 0.
IF zaehler > 0.
zaehler_n = zaehler.
TRY.
*-----------Format Mail: Betreff und Body-----------------------------------
gr_document = cl_document_bcs=>create_document(
i_type = 'RAW'
i_text = gv_text
i_length = '12'
i_subject = 'Betreff.' ).
*-----------Sendeanfrage erstellen----------------------------------------
gr_send_request = cl_bcs=>create_persistent( ).
*-----------Versender-Email
gr_sender = cl_sapuser_bcs=>create( sy-uname ).
*-----------Fügen Sie den Absender zur Anfrage hinzu
CALL METHOD gr_send_request->set_sender
EXPORTING
i_sender = gr_sender.
*----------- Empfänger erstellen oder an Verteilerliste übergeben---------
CALL METHOD cl_distributionlist_bcs=>getu_persistent
EXPORTING
i_dliname = 'LISTE' "Verteilerliste
i_private = space
RECEIVING
result = gr_recipient.
*-----------Empfänger an Sendauftrag hängen
CALL METHOD gr_send_request->add_recipient(
EXPORTING
i_recipient = gr_recipient
i_express = 'X' ).
*------------Email BODY----------------------------------------------------
APPEND 'Für Sie liegen im Verzeichnis DATEN bereit!' TO gv_text.
APPEND ' ' TO gv_text.
APPEND 'Prüfsummen:' TO gv_text.
*------------Datensätze für Mail ausgeben---------------------------------
CONCATENATE zaehler_n 'Datensätze' INTO gesamtanzahl.
APPEND gesamtanzahl TO gv_text.
*------------Gesamtbetrag für Mail ausgeben-------------------------------
CONCATENATE 'Gesamtbetrag in €:' gesamtbetrag INTO gr_betrag SEPARATED BY space.
APPEND gr_betrag TO gv_text.
APPEND ' ' TO gv_text.
*------------Zeitstempel: Datum und Uhrzeit für Mail----------------------
APPEND 'Zeitstempel:' TO gv_text.
WRITE sy-datum USING EDIT MASK '__.__.____' TO lv_datum.
WRITE sy-uzeit USING EDIT MASK '__:__:__' TO lv_time.
CONCATENATE 'Datum: ' lv_datum 'Uhrzeit: ' lv_time INTO zeitangabe SEPARATED BY space.
APPEND zeitangabe TO gv_text.
*-------------Add document to send request---------------------------------
CALL METHOD gr_send_request->set_document( gr_document ).
*-------------Send email---------------------------------------------------
CALL METHOD gr_send_request->send(
EXPORTING
i_with_error_screen = 'X'
RECEIVING
result = gv_sent_to_all ).
IF gv_sent_to_all = 'X'.
WRITE 'Email sent!'.
ENDIF.
*--------------Commit to send email------------------------------------------
COMMIT WORK.
*--------------Exception handling-------------------------------------------
CATCH cx_bcs INTO gr_bcs_exception.
WRITE:
'Error!',
'Error type:',
gr_bcs_exception->error_type.
ENDTRY.


Wo ist mein Fehler?
Da ist ABAP-Anfänger bin, bitte detalliert oder mit Coding antworten ;-)

Vielen Dank!

Gruß
Yeti

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


Re: Doppelte Ausgabe einer Mail aus SAP - Mail aus Query

Beitrag von ewx (Top Expert / 4848 / 312 / 642 ) »
Was sagt denn das Job-Protokoll?
Steht dort einmal "Email sent" und darunter "Error"?
Erzeugt dein Codeschnipsel selbst zwei E-Mails (Sieht nicht so aus, lässt sich aber leicht testen)?
Kommen die beiden E-Mails "gleichzeitig" oder mit mehreren Minuten Versatz (Das könnte ein Fehler in der Jobdefinition sein)?
Sind ein oder zwei Empfänger in der der Verteilerliste?

PS: Code bitte in Code-Tags; das ist einfacher zu lesen!

Re: Doppelte Ausgabe einer Mail aus SAP - Mail aus Query

Beitrag von yeti1967 (ForumUser / 13 / 2 / 0 ) »
Hallo ewx,
also im Job-Log steht nichts darüber.
Der Code sollte eigentlich nur eine Mail erzeugen. Im Debugger-Modus läuft es einmal rund und steht dann nochmal am Breakpoint. Gefühlt läuft der Code dann ein zweites Mal.
Die zwei Mails kommen im gleichen Atemzug ohe Zeitverzögerung. Und in der Liste steht zur Zeit nur ein Name. Sind 2 oder mehr Namen in der Verteilerliste ist das Ergebnis gleich (also 2 Mails).

Code-Tags: ist damit der Button "Code-Tags" gemeint?

Re: Doppelte Ausgabe einer Mail aus SAP - Mail aus Query

Beitrag von ewx (Top Expert / 4848 / 312 / 642 ) »

Code: Alles auswählen.

WRITE: / 'Hier steht Code'.

Folgende Benutzer bedankten sich beim Autor ewx für den Beitrag:
yeti1967


Re: Doppelte Ausgabe einer Mail aus SAP - Mail aus Query

Beitrag von ewx (Top Expert / 4848 / 312 / 642 ) »
yeti1967 hat geschrieben:also im Job-Log steht nichts darüber.
ok. da du es direkt startest wahrscheinlich. Ansonsten könntest du ja nicht so einfach debuggen.
yeti1967 hat geschrieben:Der Code sollte eigentlich nur eine Mail erzeugen. Im Debugger-Modus läuft es einmal rund und steht dann nochmal am Breakpoint. Gefühlt läuft der Code dann ein zweites Mal.
Gefühltes Coding. :D :up:
Dann versuche mal, die einzelnen Schritte per WRITE oder MESSAGE TYPE S zu protokollieren.
Beides taucht dann im Job Protokoll auf und du kannst 1. sehen, ob es an deinem Programm liegt oder 2. evtl. am E-Mailversand.
yeti1967 hat geschrieben:Die zwei Mails kommen im gleichen Atemzug ohe Zeitverzögerung. Und in der Liste steht zur Zeit nur ein Name. Sind 2 oder mehr Namen in der Verteilerliste ist das Ergebnis gleich (also 2 Mails).
Das heißt, bei zwei Namen in der Liste kommen nur ZWEI Mails? Nicht Zwei + die unvollständige?

Re: Doppelte Ausgabe einer Mail aus SAP - Mail aus Query

Beitrag von yeti1967 (ForumUser / 13 / 2 / 0 ) »
Mailanzahl: 2 Namen bekommen 4 Mail, 3 Namen bekommen 6 Mails usw.. Jeder aus der liste bekommt 2 Mails.

Re: Doppelte Ausgabe einer Mail aus SAP - Mail aus Query

Beitrag von ewx (Top Expert / 4848 / 312 / 642 ) »
yeti1967 hat geschrieben:Mailanzahl: 2 Namen bekommen 4 Mail, 3 Namen bekommen 6 Mails usw.. Jeder aus der liste bekommt 2 Mails.
Dann Probiere mal ein Textprogramm, was nur die Mail verschickt.
Der Code sieht ansonsten ok aus.

Re: Doppelte Ausgabe einer Mail aus SAP - Mail aus Query

Beitrag von zzcpak (Expert / 673 / 5 / 68 ) »
kommentiere doch mal spaßeshalber bei deinem Sende-Aufruf den Exporting Parameter aus.
Nur ein Verdacht.

Code: Alles auswählen.

CALL METHOD gr_send_request->send(
*  EXPORTING
*    i_with_error_screen = 'X'
  RECEIVING
    result              = gv_sent_to_all ).
Ansonsten könnte es auch noch sein, dass in der Job-Definition ein Mailversand vorgesehen ist (SM37)
Das ist sogar am wahrscheinlichsten, wenn dort auch die Verteilerliste als Empfänger für die Spoolliste eingetragen ist. Und da dein Report keine Spoolliste erzeugt, ist das Mail auch leer.

Re: Doppelte Ausgabe einer Mail aus SAP - Mail aus Query

Beitrag von yeti1967 (ForumUser / 13 / 2 / 0 ) »
Hallo zzcpak,

leider mit dem gleichen Ergebnis.
SM37= Bewusst wurde hier kein Mailversand aktiviert. Eine Spoolliste wird nicht erzeugt und die Verteilerliste wird auch nicht in der Job-Definition hinterlegt.
Alles aus dem Coding heraus.

Re: Doppelte Ausgabe einer Mail aus SAP - Mail aus Query

Beitrag von yeti1967 (ForumUser / 13 / 2 / 0 ) »
Textprogramm: Auch hier erhalte ich 2 Mails. Egal ob als Hintergrundjob oder direkter Aufruf.
Vorlage : BCS_EXAMPLE_1 (Demo von SAP)

Re: Doppelte Ausgabe einer Mail aus SAP - Mail aus Query

Beitrag von zzcpak (Expert / 673 / 5 / 68 ) »
hmmm, ok

die Reihenfolge in deinem Coding ist etwas seltsam

Du erzeugst zuerst eine Instanz des Dokuments

Code: Alles auswählen.

gr_document = cl_document_bcs=>create_document(
  i_type = 'RAW'
  i_text = gv_text
  i_length = '12'
  i_subject = 'Betreff.' ).
aber erst später im Coding wird der Mailtext (GV_TEXT) überhaupt erst mit Werten gefüllt.

Wir kennen ja jetzt nicht dein ganzes Coding, aber wenn diese Routine zweimal hintereinander aufgerufen wird, wäre beim ersten Aufruf GV_TEXT leer und erst beim zweiten Mail gefüllt.
Vorausgesetzt, dein gezeigtes Coding befindet sich nicht innerhalb einer Form-Routine oder einer Methode.

Das würde das Verhalten dann auch ggfs. erklären.

Folgende Benutzer bedankten sich beim Autor zzcpak für den Beitrag:
yeti1967


Re: Doppelte Ausgabe einer Mail aus SAP - Mail aus Query

Beitrag von zzcpak (Expert / 673 / 5 / 68 ) »
ok, da der SAP-Report auch zwei Mails liefert, ist es das wohl auch nicht :)

dann schau doch noch mal in deine SBWP Settings. Ist dort eine evtl. eine Vertreter-Regelung oder eine automatische Weiterleitung eingetragen?

Re: Doppelte Ausgabe einer Mail aus SAP - Mail aus Query

Beitrag von black_adept (Top Expert / 4090 / 127 / 940 ) »
Wie viele Einträge stehen denn in der SOST, wenn du die Mail erzeugst?
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Doppelte Ausgabe einer Mail aus SAP - Mail aus Query

Beitrag von yeti1967 (ForumUser / 13 / 2 / 0 ) »
Habe das mal als Idee aufgegriffen und diese Zeilen verschoben.
Als Hintergrundjob und dann direkt aufgerufen.
Resultat:
direkter Aufruf : 2 Mails, eine davon mit dem korrekten Textaufbau. Die zweite Mail ist nicht mehr leer, sondern hat den Text nun doppelt drin :down:
Job: Oh Wunder 1x mit dem korrekten Textaufbau!!! Keine zweite Mail!!
Mache in 20 Minuten nochmal einen Test (habe jetzt eine Sitzung) Melde mich dann!

Code: Alles auswählen.

CLOSE DATASET lv_file.
IF sy-subrc = 0.
    IF zaehler > 0.
     zaehler_n = zaehler.
    TRY.
**-----------Format Mail: Betreff und Body---------------------------------------
*        gr_document = cl_document_bcs=>create_document(
*                      i_type    = 'RAW'
*                      i_text    = gv_text
*                      i_length  = '12'
*                      i_subject = 'Betreff.' ).
*-----------Sendeanfrage erstellen----------------------------------------
        gr_send_request = cl_bcs=>create_persistent( ).
*-----------Versender-Email
        gr_sender = cl_sapuser_bcs=>create( sy-uname ).
*-----------Fügen Sie den Absender zur Anfrage hinzu
        CALL METHOD gr_send_request->set_sender
          EXPORTING
            i_sender = gr_sender.
*----------- Empfänger erstellen oder an Verteilerliste übergeben -----------------
        CALL METHOD cl_distributionlist_bcs=>getu_persistent
          EXPORTING
            i_dliname = 'LISTE' "Verteilerliste
            i_private = space
          RECEIVING
            result    = gr_recipient.
*-----------Empfänger an Sendauftrag hängen
        CALL METHOD gr_send_request->add_recipient(
          EXPORTING
            i_recipient = gr_recipient
            i_express   = 'X' ).
*------------Email BODY----------------------------------------------------
        APPEND 'Für Sie liegen im Verzeichnis F:\fb.....!' TO gv_text.
        APPEND ' ' TO gv_text.
        APPEND 'Prüfsummen:' TO gv_text.
*------------Datensätze für Mail ausgeben---------------------------------
        CONCATENATE zaehler_n 'Datensätze' INTO gesamtanzahl.
        APPEND gesamtanzahl TO gv_text.
*------------Gesamtbetrag für Mail ausgeben-------------------------------
        CONCATENATE 'Gesamtbetrag in €:' gesamtbetrag  INTO gr_betrag SEPARATED BY space.
        APPEND gr_betrag TO gv_text.
        APPEND ' ' TO gv_text.
*------------Zeitstempel: Datum und Uhrzeit für Mail----------------------
        APPEND 'Zeitstempel:' TO gv_text.
        WRITE sy-datum USING EDIT MASK '__.__.____' TO lv_datum.
        WRITE sy-uzeit USING EDIT MASK '__:__:__' TO lv_time.
        CONCATENATE 'Datum: ' lv_datum 'Uhrzeit: ' lv_time INTO zeitangabe SEPARATED BY space.
        APPEND zeitangabe TO gv_text.
*-----------Format Mail: Betreff und Body---------------------------------------
        gr_document = cl_document_bcs=>create_document(
                      i_type    = 'RAW'
                      i_text    = gv_text
                      i_length  = '12'
                      i_subject = 'Betreff.' ).
*-------------Add document to send request---------------------------------
        CALL METHOD gr_send_request->set_document( gr_document ).
*-------------Send email---------------------------------------------------
        CALL METHOD gr_send_request->send(
*          EXPORTING
*            i_with_error_screen = 'X'
          RECEIVING
            result = gv_sent_to_all ).
        IF gv_sent_to_all = 'X'.
          WRITE 'Email sent!'.
          ENDIF.
*--------------Commit to send email------------------------------------------
        COMMIT WORK.
*--------------Exception handling---------------------------------------------
      CATCH cx_bcs INTO gr_bcs_exception.
        WRITE:
          'Error!',
          'Error type:',
          gr_bcs_exception->error_type.
    ENDTRY.
  ENDIF.
ENDIF.
 

Re: Doppelte Ausgabe einer Mail aus SAP - Mail aus Query

Beitrag von yeti1967 (ForumUser / 13 / 2 / 0 ) »
Melde mich zurück mit zwei Testergebnissen:
Alles hat geklappt!
Ich bekomme nur eine Mail mit den Daten, wenn ich das Ganze als Job laufen lasse.
In der Zwischenzeit auch das Coding erweitert, damit, wenn keine Daten vorliegen, eine neagtive Meldung kommt. Auch das funktioniert.
Die Verteilerliste mit einem zweiten Empfänger bestückt: auch hier kommt nur noch eine Mail an.

War die Postion der Codingzeilen bzgl. des Dokumentes (wie von zzcpak beschrieben) nur falsch?

Vielen Dank an alle! :up:

Vergleichbare Themen

3
Antw.
5105
Views
ALV-Ausgabe => PDF => E-Mail
von ralf.wenzel » 28.09.2012 07:49 • Verfasst in ABAP® Core
1
Antw.
6285
Views
Versand einer E-Mail aus SAP mit PDF Anhang und E-Mail Text
von Haubentaucher » 31.08.2006 07:28 • Verfasst in ABAP® Core
2
Antw.
844
Views
E-Mail-Anhang aus Verzeichnis per Mail versenden
von Patrick1982 » 22.11.2023 15:19 • Verfasst in ABAP® für Anfänger
1
Antw.
11123
Views
8
Antw.
2349
Views
SAP Query doppelte Felder
von reim95 » 25.01.2022 12:40 • Verfasst in SAP - Allgemeines

Aktuelle Forenbeiträge

Dialog-Container mit Toolbar/Status
vor 3 Stunden von black_adept gelöst 23 / 3573
User Exit EXIT_RQCPRM10_001
vor 4 Stunden von a-dead-trousers 2 / 187
Trennen Strasse und Hausnummer
vor 10 Stunden von payten 13 / 10486
Daten an Tabelle binden
Gestern von Lukas Sanders 2 / 1244

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

Dialog-Container mit Toolbar/Status
vor 3 Stunden von black_adept gelöst 23 / 3573
User Exit EXIT_RQCPRM10_001
vor 4 Stunden von a-dead-trousers 2 / 187
Trennen Strasse und Hausnummer
vor 10 Stunden von payten 13 / 10486
Daten an Tabelle binden
Gestern von Lukas Sanders 2 / 1244

Unbeantwortete Forenbeiträge

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