Mailversand wenn Feld leer ist | SO_NEW_DOCUMENT_SEND_API1

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

Mailversand wenn Feld leer ist | SO_NEW_DOCUMENT_SEND_API1

Beitrag von f.weissenberger (ForumUser / 23 / 3 / 0 ) »
Hallo Zusammen,

ich will auf Basis eines Selects checken ob ein Feld ein Wert hat.
Wenn dies nicht der Fall ist soll eine Email versendet werden (dazu will ich den FUBA SO_NEW_DOCUMENT_SEND_API1 nutzen).

Jedoch wird keine Mail erstellt.

Code: Alles auswählen.

FORM GEWICHT_ERMITTELN.

TABLES: MARM.

DATA: I_DOCUMENT_DATA LIKE SODOCCHGI1,
          I_OBJECT_HEADER TYPE TABLE OF SOLISTI1 WITH HEADER LINE,
          I_CONTENT TYPE TABLE OF SOLISTI1 WITH HEADER LINE,
          I_RECEIVERS TYPE TABLE OF SOMLRECI1 WITH HEADER LINE.


select single * from marm
   where matnr = t_avor-matnr and meinh = 'LE'.


if marm-brgew NE ''.
  t_avor-gewicht = marm-brgew.

else.

  I_DOCUMENT_DATA-OBJ_NAME = 'Gewicht nicht gepflegt'.

  I_RECEIVERS-RECEIVER = 'test@firma.de'.
  APPEND I_RECEIVERS.

  I_OBJECT_HEADER-LINE = 'Zusatzfeld Gewicht für Material nicht gepflegt.'.
  APPEND I_OBJECT_HEADER.

  CONCATENATE 'Das Zusatzfeld "Gewicht" ist für das Material:' SPACE marm-matnr 'nicht gepflegt.' INTO I_CONTENT.

  CALL FUNCTION 'SO_NEW_DOCUMENT_SEND_API1'
    EXPORTING
      DOCUMENT_DATA              = I_DOCUMENT_DATA
      DOCUMENT_TYPE              = 'HTM'
*      COMMIT_WORK                = 'X'
*      PUT_IN_OUTBOX              = ''
*   IMPORTING
*     SENT_TO_ALL                =
*     NEW_OBJECT_ID              =
    TABLES
      OBJECT_HEADER              = I_OBJECT_HEADER
      OBJECT_CONTENT             = I_CONTENT
*     CONTENTS_HEX               =
*     OBJECT_PARA                =
*     OBJECT_PARB                =
      RECEIVERS                  = I_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.

endif.

ENDFORM.

Sorry bin neu, wahrscheinlich eine Kleinigkeit...

Außerdem:
Wenn jetzt die Email-Erzeugung funktioniert, wird dann für jeden Eintrag, bei dem
" matnr = ' ' "
ist eine Email erzeugt?


Danke schonmal :D

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


Re: Mailversand wenn Feld leer ist | SO_NEW_DOCUMENT_SEND_API1

Beitrag von ST22 (Specialist / 274 / 40 / 40 ) »
ersetze mal if marm-brgew NE ''.
durch
if marm-brgew is not initial.

Re: Mailversand wenn Feld leer ist | SO_NEW_DOCUMENT_SEND_API1

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
COMMIT WORK sollte helfen.
Und der Job für den E-Mail Versand muss eingerichtet sein.
https://rz10.de/sap-basis/sap-email-kon ... nd-testen/
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: Mailversand wenn Feld leer ist | SO_NEW_DOCUMENT_SEND_API1

Beitrag von f.weissenberger (ForumUser / 23 / 3 / 0 ) »
Aber das ändert nichts daran, dass keine Mail erzeugt wird :/

Re: Mailversand wenn Feld leer ist | SO_NEW_DOCUMENT_SEND_API1

Beitrag von f.weissenberger (ForumUser / 23 / 3 / 0 ) »
a-dead-trousers hat geschrieben:
08.01.2020 09:50
COMMIT WORK sollte helfen.
Und der Job für den E-Mail Versand muss eingerichtet sein.
https://rz10.de/sap-basis/sap-email-kon ... nd-testen/
Eingerichtet ist der E-Mail Versand, und der funktioniert auch aus andere Programmen heraus.

Was genau muss ich mit dem COMMIT WORK machen?

Re: Mailversand wenn Feld leer ist | SO_NEW_DOCUMENT_SEND_API1

Beitrag von ST22 (Specialist / 274 / 40 / 40 ) »
Frag doch mal den Subrc nach Aufruf des Fubas ab. Hast du evtl ein Berechtigungsproblem?
VG
Frank

Re: Mailversand wenn Feld leer ist | SO_NEW_DOCUMENT_SEND_API1

Beitrag von Legxis (Specialist / 160 / 90 / 28 ) »
Schau mal in der SOST nach, ob die Mail erstellt wird. Dass sie im Entwicklungssystem nicht wirklich versendet wird überrascht mich nicht.
( SAP ECC 6.0, NetWeaver 7.0, ohne unicode, ohne support/enhancement packages )

Re: Mailversand wenn Feld leer ist | SO_NEW_DOCUMENT_SEND_API1

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
I_RECEIVER-REC_TYPE muss glaub ich korrekt gesetzt werden, je nachdem was in I_RECEIVER-RECEIVER übergeben wird. Im Falle einer echten E-Mail Adresse müsste es 'U' sein.

f.weissenberger hat geschrieben:
08.01.2020 09:56
Was genau muss ich mit dem COMMIT WORK machen?
Direkt nach dem Aufruf des Funktionsbaustein den Befehl ausführen.
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: Mailversand wenn Feld leer ist | SO_NEW_DOCUMENT_SEND_API1

Beitrag von jocoder (Specialist / 338 / 3 / 101 ) »
Eine deutliche robustere Variante wäre die Nutzung der BCS-Serviceklassen wie in diesem Thread diskutiert.
Zudem würde ich dir empflehen, der Prozedur einen anderen Namen zu geben. GEWICHT_ERMITTELN ist in diesem Fall sehr verwirrend, da die Prozedur etwas total anderes macht. SEND_MAIL_WHEN_BRGEW_ZERO beschreibt doch deutlich besser den Inhalt.

Bei Verwendung der BCS-Serviceklassen brauchst du Ausnahmenbehandlung mit klassischen Ausnahmen mehr zu implementieren.

So sieht der Code doch besser aus oder?

Code: Alles auswählen.

FORM send_mail_when_brgew_zero RAISING cx_bcs
  CHANGING send_sucessfully TYPE os_boolean.
  DATA: gross_weight TYPE brgew,
        request TYPE REF TO cl_bcs.
            
  SELECT brgew FROM marm INTO gross_weight WHERE 
    matnr = t_avor-matnr AND meinh = 'LH'.
  IF gross_weight IS INITIAL.
    PERFORM create_mail_request CHANGING request.
    send_sucessfully = request->send( ).
  ENDIF.  

ENDFORM.

FORM create_mail_request USING matnr TYPE matnr
  CHANGING request TYPE REF TO cl_bcs.
  DATA: body_line TYPE soli,
        body_complete TYPE soli_tab.

  request = cl_bcs=>create_persistent( ).
  DATA(recipient) = cl_cam_address_bcs=>create_internet_address( 'test@email.com' ). 
  request->add_recipient( i_recipient = recipient
                                          i_express   = abap_true ).

  CONCATENATE 'Das Zusatzfeld "Gewicht" ist für das Material:' matnr 'nicht gepflegt' INTO body-line SEPARATED BY SPACE.
  APPEND body_line TO body_complete.
  DATA(document) =   cl_document_bcs=>create_document(  
    i_subject =  'Gewicht nicht gepflegt'
    i_type = 'TXT'
    i_text = body_complete ).
  request->set_document( document ).
    
ENDFORM.
Die Ausnahme CX_BCX würde ich generell so späte wie möglich abfangen and dann erst in eine Fehlermeldung umsetzen.

Seite 1 von 1

Vergleichbare Themen

0
Antw.
331
Views
Setze EMARA Feld in Bapi bei IDOC Verarbeitung. Feld aber nachher leer
von Woelli » 12.02.2021 16:32 • Verfasst in ABAP® Core
3
Antw.
2032
Views
Dynpro-Feld aus Marc leer
von 82kolu1bma » 31.05.2016 16:46 • Verfasst in ABAP® für Anfänger
2
Antw.
11340
Views
ist Feld leer (kein Datensatz) ?
von bohne » 03.03.2006 23:38 • Verfasst in ABAP® für Anfänger
11
Antw.
1219
Views
Wenn feld in Tabelle leer ist anderen Select ausführen
von f.weissenberger » 15.03.2021 10:46 • Verfasst in ABAP® für Anfänger
0
Antw.
1254
Views
Send EXPRES SAP MAIL
von Anita57 » 30.07.2013 13:19 • Verfasst in ABAP® für Anfänger

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.

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 4 Tagen von Lucyalison 1 / 71
Group Items auf einer Filterbar
vor einer Woche von Bright4.5 1 / 111
tRFC Transaktionen SM58
vor 4 Wochen von A6272 1 / 141