PDF per E-Mail kann man nicht öffnen

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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

PDF per E-Mail kann man nicht öffnen

Beitrag von Adrian (Specialist / 126 / 61 / 0 ) »
Hi @ all,

ich habe ein Kundenbenachrichtigung wenn das Packet unser Lager verlässt programmiert die im Anhang unsere rechnung hat.
Aber wenn ich jetzt die rechnung öffnen will kommt "Beim Offnen dieses Dokuments ist ein Fehler aufgetreten. Diese Datei ist beschädigt und kann nicht repariert werden."

Code: Alles auswählen.

*&---------------------------------------------------------------------*
*& Report  ZMAILVERSAND
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZMAILVERSAND.

TABLES: ZSPEDT.

TYPES: BEGIN OF ANHANGLISTE,
       WARGRBEZ(255)   TYPE C,
       END OF ANHANGLISTE.

*SELECT * FROM ZSPEDT
*  WHERE STATUS <> '__X%'.

DATA: MAIL_RECEIVER   LIKE SOMLRECI1  OCCURS 1 WITH HEADER LINE,
      MAIL_BETREFF    LIKE SODOCCHGI1,
      MAIL_TEXT       LIKE SOLI       OCCURS 10 WITH HEADER LINE.

PERFORM LIEFERPRIO_PRUEFEN.

*  IF SY-SUBRC = 0.

ZSPEDT-STATUS+2(1) = 'X'.
UPDATE ZSPEDT.

PERFORM E-MAIL_AUFBAUEN.
PERFORM ANHANG.
PERFORM EMPFAENGER.
PERFORM SENDEN.

DATA:  LT_OBJPACK       TYPE TABLE OF SOPCKLSTI1,
       LS_OBJPACK       TYPE          SOPCKLSTI1,
       LT_OBJHEAD       TYPE TABLE OF SOLISTI1,
       LS_OBJHEAD       TYPE          SOLISTI1,
       ANHANGLISTE1       TYPE TABLE OF Anhangliste,
       ANHANGLISTE2       TYPE TABLE OF Anhangliste,
       LV_TAB_LINES TYPE SY-TABIX,
       LS_DOCUMENT_DATA TYPE SODOCCHGI1,
       LS_OBJTXT        TYPE          SOLISTI1.

*  ENDIF.

*ENDSELECT.
*&---------------------------------------------------------------------*
*&      Form  LIFERPRIO_PRUEFEN
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM LIEFERPRIO_PRUEFEN.

  DATA TEM_LIEFERPRIO LIKE ZSPEDT-LIEFNR.
  CLEAR: TEM_LIEFERPRIO.


  SELECT SINGLE LPRIO FROM LIKP INTO TEM_LIEFERPRIO
    WHERE VBELN = ZSPEDT-LIEFNR.


ENDFORM.                    "LIFERPRIO_PRUEFEN
*&---------------------------------------------------------------------*
*&      Form  E-MAIL_AUFBAUEN
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM E-MAIL_AUFBAUEN.

  MAIL_BETREFF-OBJ_DESCR = 'Betreff'.


  APPEND MAIL_TEXT.
  MAIL_TEXT-LINE = 'Sehr geehrter Kunde,'.
  APPEND MAIL_TEXT.
  MAIL_TEXT-LINE = ''.
  APPEND MAIL_TEXT.
  MAIL_TEXT-LINE = 'Ihre Bestellung hat unser Lager heute verlassen.'.
  APPEND MAIL_TEXT.
  MAIL_TEXT-LINE = ''.
  APPEND MAIL_TEXT.
  MAIL_TEXT-LINE = 'Mit freundlichen Grüßen'.
  APPEND MAIL_TEXT.
  MAIL_TEXT-LINE = 'TEST TEST'.
  APPEND MAIL_TEXT.

  DESCRIBE TABLE MAIL_TEXT LINES LV_TAB_LINES.
  READ TABLE MAIL_TEXT INTO LS_OBJTXT INDEX LV_TAB_LINES.
  MAIL_BETREFF-DOC_SIZE = 10000000.

  CLEAR LS_OBJPACK.
  LS_OBJPACK-TRANSF_BIN = ''.
  LS_OBJPACK-HEAD_START = 1.
  LS_OBJPACK-HEAD_NUM   = 0.
  LS_OBJPACK-BODY_START = 1.
  LS_OBJPACK-BODY_NUM   = LV_TAB_LINES.
  LS_OBJPACK-DOC_TYPE   = 'RAW'.
  APPEND LS_OBJPACK TO LT_OBJPACK.



ENDFORM.                    "E-MAIL_AUFBAUEN
*&---------------------------------------------------------------------*
*&      Form  ANHANG
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM ANHANG.

  DATA: DATASET(1000) TYPE          C.
  DATA: OBJEKTZEILE   TYPE          SOLISTI1.

  DATASET = '\\stherp01.sth.local\SAP_DATENTRANSFER\Test\TEST.PDF'.
  OPEN DATASET DATASET FOR INPUT IN BINARY MODE.

  DO.
    READ DATASET DATASET INTO OBJEKTZEILE.

    IF SY-SUBRC <> 0.
      EXIT.
    ENDIF.

    APPEND OBJEKTZEILE TO ANHANGLISTE1.

  ENDDO.

  CALL FUNCTION 'QCE1_CONVERT'
  TABLES
    T_SOURCE_TAB = ANHANGLISTE1
    T_TARGET_TAB = ANHANGLISTE2.

* Erstellen der Anlage für das Dokument

  DESCRIBE TABLE ANHANGLISTE2 LINES LV_TAB_LINES.
  LS_OBJHEAD = 'Rechnung.pdf'(T05). APPEND LS_OBJHEAD TO LT_OBJHEAD.

* Erstellen des Eintrags zur komprimierten Anlage
  CLEAR: LS_OBJPACK.
  LS_OBJPACK-TRANSF_BIN = 'X'.
  LS_OBJPACK-HEAD_START = 1.
  LS_OBJPACK-HEAD_NUM   = 1.
  LS_OBJPACK-BODY_START = 1.
  LS_OBJPACK-BODY_NUM   = LV_TAB_LINES.
  LS_OBJPACK-DOC_TYPE   = 'PDF'.
  LS_OBJPACK-OBJ_NAME   = 'ANLAGE'(T06).
  LS_OBJPACK-OBJ_DESCR  = 'Abbildung Objekt 138'(T07).
  LS_OBJPACK-DOC_SIZE   = LV_TAB_LINES * 255.
  APPEND LS_OBJPACK TO LT_OBJPACK.

ENDFORM.                    "ANHANG
*&---------------------------------------------------------------------*
*&      Form  EMPFAENGER
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM EMPFAENGER.

  REFRESH MAIL_RECEIVER.
  CLEAR MAIL_RECEIVER.

  MOVE: 'TEST@test.com' TO MAIL_RECEIVER-RECEIVER,
        'X'      TO MAIL_RECEIVER-EXPRESS,
        'U'      TO MAIL_RECEIVER-REC_TYPE.
  APPEND MAIL_RECEIVER.

ENDFORM.                    "EMPFAENGER
*&---------------------------------------------------------------------*
*&      Form  SENDEN
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM SENDEN.

*  CALL FUNCTION 'SO_NEW_DOCUMENT_SEND_API1'
*    EXPORTING
*      DOCUMENT_DATA              = MAIL_BETREFF
*      COMMIT_WORK                = 'X'
*    TABLES
*      OBJECT_CONTENT             = MAIL_TEXT
*      RECEIVERS                  = MAIL_RECEIVER
*    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.

  CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
    EXPORTING
      DOCUMENT_DATA              = MAIL_BETREFF
      PUT_IN_OUTBOX              = 'X'
      COMMIT_WORK                = 'X'
    TABLES
      PACKING_LIST               = LT_OBJPACK
      OBJECT_HEADER              = LT_OBJHEAD
      CONTENTS_BIN               = ANHANGLISTE2
      CONTENTS_TXT               = MAIL_TEXT
      RECEIVERS                  = MAIL_RECEIVER
    EXCEPTIONS
      TOO_MANY_RECEIVERS         = 1
      DOCUMENT_NOT_SENT          = 2
      OPERATION_NO_AUTHORIZATION = 4
      OTHERS.

ENDFORM.                    "SENDEN
Grüße
Adrian

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


Re: PDF per E-Mail kann man nicht öffnen

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
hi!

Soweit ich weiß, müssen die Anhänge in CONTENTS_BIN mit den mit den Daten in PACKING_LIST und OBJECT_HEADER übereinstimmen.
Im Moment zeigen dein Text und dein Attachment auf dieselben Einträge.

Der HEAD_START für den Text wäre 1.
Der HEAD_NUM für den Text wäre 1.
Der BODY_START für den Text wäre 1.
Der BODY_NUM für den Text wäre LV_TAB_LINES.

Der HEAD_START für das Attachment wäre 2.
Der HEAD_NUM für das Attachment wäre 1.
Der BODY_START für das Attachment wäre 1.
Der BODY_NUM für das Attachment wäre LV_TAB_LINES.

Die ganzen Angaben beziehen sich auf die Position in der jeweiligen Tabelle

Die DOC_SIZE für das Attachment wäre übrigens (LV_TAB_LINES - 1) * 255 + xstrlen( Letzte Zeile ).

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: PDF per E-Mail kann man nicht öffnen

Beitrag von Adrian (Specialist / 126 / 61 / 0 ) »
Bei manchen PDF geht meine Lösung nur bei den SAP Rechnungen spinnt der rum


Re: PDF per E-Mail kann man nicht öffnen

Beitrag von StefanS (ForumUser / 35 / 0 / 9 ) »
Was kennzeichnen 'mache' PDFs aus vs. SAP Rechnungen?

Mit welches App öffnest du denn das PDF? Bzw. wo kommt denn die Fehlermeldung "Fehler beim Öffnen des Dokuments" hoch?
Adobe etc meckert gern wg. falscher Dateilänge! Google mal nach PDF validator o.ä. die sagen dir dann, was an der Datei korrukt ist.

gruß StS
♥ ABAP ...

Seite 1 von 1

Vergleichbare Themen

18
Antw.
6327
Views
Doppelte Ausgabe einer Mail aus SAP - Mail aus Query
von yeti1967 » 28.05.2018 09:21 • Verfasst in ABAP Objects®
1
Antw.
5804
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
1
Antw.
10757
Views
2
Antw.
133
Views
E-Mail-Anhang aus Verzeichnis per Mail versenden
von Patrick1982 » 22.11.2023 15:19 • Verfasst in ABAP® für Anfänger
7
Antw.
4435
Views
TIF-Dokument öffnen
von Chilledkroete » 11.07.2013 15:26 • Verfasst in ABAP® Core

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 64
Interne Tabelle
vor 5 Tagen von black_adept 2 / 133
MaLo-Checker in ABAP
vor einer Woche von A6272 6 / 254

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

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 64
Interne Tabelle
vor 5 Tagen von black_adept 2 / 133
MaLo-Checker in ABAP
vor einer Woche von A6272 6 / 254

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 64
Group Items auf einer Filterbar
vor einer Woche von Bright4.5 1 / 107
tRFC Transaktionen SM58
vor 4 Wochen von A6272 1 / 140