Willkommen Gast! Um alle Funktionen zu aktivieren müssen Sie sich Anmelden oder Registrieren.

Mitteilung

Icon
Error

Optionen
Gehe zum aktuellsten Beitrag Gehe zum letzten Ungelesenen
Offline Bjoern77  
#1 Geschrieben : Freitag, 22. Februar 2019 06:52:50(UTC)
Bjoern77

Beiträge: 24
Germany
Wohnort: Pinneberg
Hallo zusammen, danke für die Aufnahme. ich bin noch sehr neu auf dem Gebiet ABAP, im September 2018 habe ich die Zertifizierung gemacht. Davor war ich Berater seit 2013. Ich stehe nun vor einer Aufgabe die ich nicht ganz bewältigen kann.

Die Inhalte aus der Transaktion COGI sollen gruppiert nach Nachrichtennummer und Nachrichtenklasse an einen bestimmten E-Mail-User (extern) versendet werden.
Die Zuordnung der E-Mail Empfänger findet über eine Z-Tabelle statt und orientiert sich an Nachrichtennummer und Nachrichtenklasse (Schlüsselfelder)

Im E-Mail Body sollen relevante Informationen zu den selektierten COGI-Sätzen angezeigt werden.
Das Programm läuft soweit, nur sendet es immer nur eine Email an einen Empfänger mit allen Fehlern der COGI.

Ich konnte den Fehler auch eingrenzen, aber da komme ich nicht weiter.

Code:

[code]*&---------------------------------------------------------------------*
*& Report  Z_COGI_EMAIL
*& Björn Heidke
*&---------------------------------------------------------------------*
*& 19.02.2019
*&
*&---------------------------------------------------------------------*

REPORT z_cogi_email_kopie.

**********************************************************************
* Datendeklaration aus der ZTABELLE ZCOGIEMAIL und AFFW
**********************************************************************
* Data für Email-Versand
DATA gt_doc_content TYPE TABLE OF solisti1.
DATA gs_doc_content TYPE solisti1.
DATA gt_receivers TYPE TABLE OF somlreci1.
DATA gs_receivers TYPE somlreci1.
DATA gs_doc_data TYPE sodocchgi1.
DATA gv_entries TYPE sy-tabix.
DATA lt_cogi_mail TYPE TABLE OF zcogiemail.
DATA ls_cogi_mail TYPE zcogiemail.
* Data AFFW
DATA lt_cogi_daten TYPE zosc_t_cogi.
DATA ls_cogi_daten TYPE zosc_s_cogi.
* Datendeklaration Messagetype
DATA lv_message TYPE solisti1.
**********************************************************************
* Start of Selection
**********************************************************************
* Select zcogiemal
SELECT * FROM zcogiemail
  INTO CORRESPONDING FIELDS OF TABLE lt_cogi_mail.
* Select auf AFFW
SELECT * FROM affw
  INTO CORRESPONDING FIELDS OF TABLE lt_cogi_daten.
**********************************************************************
* Verarbeitung der Daten ZCOGIEMAIL und AFFW auf Key MSGNO
**********************************************************************
* Verarbeitung AFFW
LOOP AT lt_cogi_daten ASSIGNING FIELD-SYMBOL(<lf_cogi_daten>).
  <lf_cogi_daten>-msgid_key      = <lf_cogi_daten>-msgid.
  <lf_cogi_daten>-msgno_key      = <lf_cogi_daten>-msgno.
  <lf_cogi_daten>-msgty_key      = <lf_cogi_daten>-msgty.
  <lf_cogi_daten>-msgv1_key      = <lf_cogi_daten>-msgv1.
  <lf_cogi_daten>-msgv2_key      = <lf_cogi_daten>-msgv2.
  <lf_cogi_daten>-msgv3_key      = <lf_cogi_daten>-msgv3.
  <lf_cogi_daten>-msgv4_key      = <lf_cogi_daten>-msgv4.
  <lf_cogi_daten>-weblnr_key     = <lf_cogi_daten>-weblnr.
ENDLOOP.
SORT lt_cogi_daten.
BREAK-POINT.
**********************************************************************
* Start Arbeitsbereich Email-verarbeitung
**********************************************************************
* Verarbeitung Receiver von ZCOGIEMAIL
LOOP AT lt_cogi_daten ASSIGNING <lf_cogi_daten>.
  AT NEW msgno_key.
* Verarbeitung Receiver von ZCOGIEMAIL
    READ TABLE lt_cogi_mail
    WITH KEY msgno = <lf_cogi_daten>-msgno
             msgid = <lf_cogi_daten>-msgid
    INTO ls_cogi_mail.
    MOVE-CORRESPONDING ls_cogi_mail TO gs_receivers.
    APPEND gs_receivers TO gt_receivers.
    CLEAR gt_doc_content[].
  ENDAT.
**********************************************************************
* Email Body (Ausgabe Inhalt der Meldung in der Email
**********************************************************************
  CONCATENATE
    'Belegnummer:' <lf_cogi_daten>-weblnr_key
                      INTO gs_doc_content-line SEPARATED BY CL_ABAP_CHAR_UTILITIES=>newline.
  APPEND gs_doc_content TO gt_doc_content.
  CLEAR gs_doc_content.
**********************************************************************
* Message behandlung
**********************************************************************
  MESSAGE ID <lf_cogi_daten>-msgid_key TYPE <lf_cogi_daten>-msgty_key NUMBER <lf_cogi_daten>-msgno_key
  WITH <lf_cogi_daten>-msgv1_key
       <lf_cogi_daten>-msgv2_key
       <lf_cogi_daten>-msgv3_key
       <lf_cogi_daten>-msgv4_key
  INTO lv_message.
  CONCATENATE 'Meldung:' lv_message INTO
  gs_doc_content-line SEPARATED BY cl_abap_char_utilities=>newline.
  APPEND gs_doc_content TO gt_doc_content.
**********************************************************************
* Email Header
**********************************************************************
  gs_doc_data-obj_descr = 'Fehler bei der Transaktion COGI'.
  gs_doc_data-sensitivty = 'O'.
  AT END OF msgno_key.
**********************************************************************
* Aufbereitung Email
    DESCRIBE TABLE gt_doc_content LINES gv_entries.
    READ TABLE gt_doc_content INTO gs_doc_content INDEX gv_entries.
    gs_doc_data-doc_size = ( gv_entries - 1 ) * 255 + strlen( gs_doc_content ).
**********************************************************************
* Ende Arbeitsbereich Email-verarbeitung
**********************************************************************
* Funktionsbaustein SO_NEW_DOCUMENT_SEND_API1
**********************************************************************
    CALL FUNCTION 'SO_NEW_DOCUMENT_SEND_API1'
      EXPORTING
        document_data              = gs_doc_data
*       DOCUMENT_TYPE              = 'RAW'
*       PUT_IN_OUTBOX              = ' '
        commit_work                = 'X'
*       IP_ENCRYPT                 =
*       IP_SIGN                    =
* IMPORTING
*       SENT_TO_ALL                =
*       NEW_OBJECT_ID              =
      TABLES
*       OBJECT_HEADER              =
        object_content             = gt_doc_content
*       CONTENTS_HEX               =
*       OBJECT_PARA                =
*       OBJECT_PARB                =
        receivers                  = gt_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.
* Implement suitable error handling here
    ENDIF.
    REFRESH gt_receivers.

  ENDAT.
ENDLOOP.



Problem soweit behoben, jetzt möchte ich das bei einem Fehler (MSGID und MSGNO) pro email gesammelt werden. Und nur noch eine Email versand wird. Momentan bekommt man Pro MSGID und MSGNO eine Email. Wenn der Fehler also drei oder mehrmals auftaucht, bekommt der Empfänger drei Mails anstatt eine.

Bearbeitet vom Benutzer Montag, 25. Februar 2019 08:58:31(UTC)  | Grund: Nicht angegeben

Jobangebote

Nehmen Sie an dieser Diskussion teil! SAP FORUM - SAP Community LoginHier registrieren.

Benutzer, die gerade dieses Thema lesen
Das Forum wechseln  
Du kannst keine neue Themen in diesem Forum eröffnen.
Du kannst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge nicht löschen.
Du darfst deine Beiträge nicht editieren.
Du kannst keine Umfragen in diesem Forum erstellen.
Du kannst nicht an Umfragen teilnehmen.

- Impressum / Datenschutz -