PDF Formular > Spool > Mail-Anhang

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
7 Beiträge • Seite 1 von 1
7 Beiträge Seite 1 von 1

PDF Formular > Spool > Mail-Anhang

Beitrag von dvdh1979 (ForumUser / 15 / 0 / 0 ) »
Hallo zusammen,

ich würde gerne ein per SFP "gebautes" PDF-Formular befüllen, in eine Spool drucken und dann den Inhalt der Spool als Mailanhang an die SAP-Inbox versenden.

Meine Idee war zunächst, mit einem vorhandenen PDF-Formular (Entgeltnachweis) zu experimentieren:
Ein Druckprogramm zu dem Formular konnte ich nicht ermitteln, aber es gibt einen dynamisch generierten FuBa, den man herausbekommt, wenn man das Formular testet.
Rufe ich diesen jedoch in meinem Coding auf, bricht der Report ab mit dem Fehler "Kein Job gestartet (FPRUNX102)".

Meine Frage daher: kann man überhaupt ein bestehendes Formular befüllen und dann über die Spool als Umweg an eine Mail hängen?
Danke schon einmal für jeden Tipp!


Viele Grüße,
Dirk

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


Re: PDF Formular > Spool > Mail-Anhang

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
Schnellantwort:

Fuba FP_JOB_OPEN
Baustein des Formulars aufrufen
Fuba FP_JOB_CLOSE

Da gibts es auch einen FuBa der die Auflösung Formular->Baustein macht, weil je System der Name unterschiedlich sein kann. (Weis ich jetzt leider nicht auswendig)
Außerdem brauchst du gar keinen Spool-Job, denn bei der Rückgabe des FP_JOB_CLOSE kannst du das Ergebnis als XSTRING (= PDF) bekommen.
Einfach den entsprechenden Parameter GET_PDF(?) setzen.

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 Formular > Spool > Mail-Anhang

Beitrag von dvdh1979 (ForumUser / 15 / 0 / 0 ) »
Super, vielen Dank!
Das klappt schon einmal sehr gut.

Als Ergebnis erhalte ich Daten im Format RAWSTRING.

Um diese mit dem FuBa SO_NEW_DOCUMENT_ATT_SEND_API1 versenden zu können, muss ich diese noch in eine Tabelle umwandeln oder?

Hast Du einen kleinen Tipp, wie ich das am einfachsten konvertiere? Danke!


Viele Grüße,
Dirk

Re: PDF Formular > Spool > Mail-Anhang

Beitrag von JHM (Top Expert / 1188 / 1 / 195 ) »
dvdh1979 hat geschrieben:Hast Du einen kleinen Tipp, wie ich das am einfachsten konvertiere?
Vergiss den FuBa und verwende die Business Comunication Services Klassen (cl_bcs*).
Gruß Hendrik

Re: PDF Formular > Spool > Mail-Anhang

Beitrag von dvdh1979 (ForumUser / 15 / 0 / 0 ) »
Habe ich schon ;)

Mit

Code: Alles auswählen.

  call method cl_bcs_convert=>xstring_to_solix
    exporting
      iv_xstring = ls_pdf_file-pdf
    receiving
      et_solix   = it_solix.
funktioniert es.

Wenn ich das aber per SO_NEW_DOCUMENT_ATT_SEND_API1 so versenden will:

Code: Alles auswählen.

  CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
   EXPORTING
     document_data              = gd_doc_data
     put_in_outbox              = 'X'
     commit_work                = 'X'
   TABLES
     packing_list               = it_packing_list
*     contents_txt               = it_message
     contents_hex               = it_solix
     receivers                  = it_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.
kommt zwar keine Fehlermeldung und die Mail wird an das SAPOffice versandt aber das PDF ist nicht als Anhang enthalten...
Woran liegt das?!


Viele Grüße,
Dirk

Re: PDF Formular > Spool > Mail-Anhang

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
Ich vermute mal, dass du die PACKING_LIST nicht korrekt befüllt hast.
Da muss drinnenstehen von wo bis wo in der CONTENTS_HEX welches Objekt und in welcher Größe vorkommt.
ODER
Du nimmst wie bereits vorgeschlagen die CL_BCS_*-Klassen. Da muss du dich nicht mit dem alten Tabellen/Index Ranz herumärgern.
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 Formular > Spool > Mail-Anhang

Beitrag von Tron (Top Expert / 1327 / 35 / 331 ) »
Moin.
Ist mehr als Du möchtest, daher kozentriere Dich einfach auf die Packing_list.
Beispiel:

Code: Alles auswählen.

    FORM processing USING spoolid TYPE itcpp-tdspoolid.
      DATA: numbytes TYPE i,
            pdfspoolid LIKE tsp01-rqident,
            pdf_content TYPE table of solix,
            BIN_FILE type xstring.


      DATA:   document_data LIKE sodocchgi1,
              object_txt LIKE solisti1 OCCURS 10 WITH HEADER LINE,
              object_pack LIKE sopcklsti1 OCCURS 1 WITH HEADER LINE,
              receiver_list LIKE somlreci1 OCCURS 1 WITH HEADER LINE,
              tab_lines TYPE i.

    * for Invoice Header Text
      data:
      lv_ID type THEAD-TDID value 'YEML',
      lv_LANGUAGE type THEAD-TDSPRAS,
      lv_NAME type THEAD-TDNAME,
      lv_OBJECT type THEAD-TDOBJECT value 'VBBK',
      lt_lines type table of tline,
      ls_line type tline.

    * For partner Email
      constants:
      lv_ITEM_NUMBER type VBUP-POSNR value '000000',
      lv_PARTNER_ROLE type VBPA-PARVW value 'RE'.

      data:
      lv_DOCUMENT_NUMBER type VBUK-VBELN,
      ls_vbpa type vbpa.

    ****  Main - Email  ****

    * Title and Description
      document_data-obj_name  = 'INVOICE'.
      document_data-obj_descr = nast-objky.

    * Text of Email
      CONCATENATE 'Rechnung' nast-objky INTO object_txt
      SEPARATED BY space.
      APPEND object_txt.


      lv_language = nast-spras.
      lv_NAME = nast-objky.

      CALL FUNCTION 'READ_TEXT'
        EXPORTING
          ID                      = lv_ID
          LANGUAGE                = lv_LANGUAGE
          NAME                    = lv_NAME
          OBJECT                  = lv_OBJECT
        TABLES
          LINES                   = lt_lines
        EXCEPTIONS
          ID                      = 1
          LANGUAGE                = 2
          NAME                    = 3
          NOT_FOUND               = 4
          OBJECT                  = 5
          REFERENCE_CHECK         = 6
          WRONG_ACCESS_TO_ARCHIVE = 7
          OTHERS                  = 8.

      IF SY-SUBRC <> 0.
      ENDIF.

      loop at lt_lines into ls_line.
        append ls_line-TDLINE to object_txt.
      endloop.

    * Packing List(Main-Part)

    * Calculate the contens length
      DESCRIBE TABLE object_txt LINES tab_lines.
      READ TABLE object_txt INDEX tab_lines.
      document_data-doc_size = ( tab_lines - 1 ) * 255 +
      STRLEN( object_txt ).

    * generate the Packing List
      CLEAR object_pack-transf_bin.
      object_pack-head_start = 1.
      object_pack-head_num   = 0.
      object_pack-body_start = 1.
      object_pack-body_num   = tab_lines.
      object_pack-doc_type   = 'RAW'.
      APPEND object_pack.
           
    CALL FUNCTION 'CONVERT_OTFSPOOLJOB_2_PDF'
      EXPORTING
        SRC_SPOOLID                    = spoolid
        NO_DIALOG                      = 'X'
    *   DST_DEVICE                     =
        PDF_DESTINATION                = 'X'
        NO_BACKGROUND                  = 'X'
    *   USE_CASCADING                  = ' '
      IMPORTING
        PDF_BYTECOUNT                  = numbytes
    *   PDF_SPOOLID                    =
    *   OTF_PAGECOUNT                  =
    *   BTC_JOBNAME                    =
    *   BTC_JOBCOUNT                   =
        BIN_FILE                       = BIN_FILE
    * TABLES
    *   PDF                            =
    EXCEPTIONS
       ERR_NO_OTF_SPOOLJOB            = 1
       ERR_NO_SPOOLJOB                = 2
       ERR_NO_PERMISSION              = 3
       ERR_CONV_NOT_POSSIBLE          = 4
       ERR_BAD_DSTDEVICE              = 5
       USER_CANCELLED                 = 6
       ERR_SPOOLERROR                 = 7
       ERR_TEMSEERROR                 = 8
       ERR_BTCJOB_OPEN_FAILED         = 9
       ERR_BTCJOB_SUBMIT_FAILED       = 10
       ERR_BTCJOB_CLOSE_FAILED        = 11
       OTHERS                         = 12.

    .

    *     -------- convert document -------------------------------
    pdf_content = cl_document_bcs=>xstring_to_solix( BIN_FILE ).


    * Generate the Attachment
    *  Packing List(Att)
      DESCRIBE TABLE pdf_content LINES tab_lines.

      object_pack-doc_size = numbytes.
      object_pack-transf_bin = 'X'.
      object_pack-head_start = 1.
      object_pack-head_num   = 0.
      object_pack-body_start = 1.
      object_pack-body_num   = tab_lines.
      object_pack-doc_type   = 'PDF'.
      object_pack-obj_name   = 'SPOOL'.
      object_pack-obj_descr  = nast-objky.
      APPEND object_pack.


    * generate the receiver list

      lv_DOCUMENT_NUMBER = nast-objky.

    * Get Partner RE Email
      CALL FUNCTION 'SD_VBPA_SELECT'
        EXPORTING
          I_DOCUMENT_NUMBER = lv_DOCUMENT_NUMBER
          I_ITEM_NUMBER     = lv_ITEM_NUMBER
          I_PARTNER_ROLE    = lv_PARTNER_ROLE
        IMPORTING
          E_VBPA            = ls_vbpa
        EXCEPTIONS
          PARTNER_NOT_FOUND = 1
          OTHERS            = 2.

      IF SY-SUBRC <> 0.
      ENDIF.

    * Internet User
      clear receiver_list.

      select single SMTP_ADDR from adr6 into receiver_list-receiver where
      ADDRNUMBER = ls_vbpa-adrnr and FLGDEFAULT = 'X'.

      if sy-subrc = 0 and not receiver_list-receiver is initial.
        receiver_list-rec_type = 'U'.
        receiver_list-com_type ='INT'.
        APPEND receiver_list.
      else.
        receiver_list-receiver = 'SAPUSER@LOCALHOST'.
        receiver_list-rec_type = 'U'.
        receiver_list-com_type ='INT'.
        APPEND receiver_list.
      endif.


    * Send the mail / ggf. COMMIT_WORK  = 'X' !!
         
    CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
      EXPORTING
        DOCUMENT_DATA                    = DOCUMENT_DATA
    *   PUT_IN_OUTBOX                    = ' '
        COMMIT_WORK                      = ' '
    * IMPORTING
    *   SENT_TO_ALL                      =
    *   NEW_OBJECT_ID                    =
      TABLES
        PACKING_LIST                     = object_pack
    *   OBJECT_HEADER                    =
    *   CONTENTS_BIN                     =
        CONTENTS_TXT                     = object_txt
        CONTENTS_HEX                     = pdf_content
    *   OBJECT_PARA                      =
    *   OBJECT_PARB                      =
        RECEIVERS                        = receiver_list
    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.
        retcode = 1.
      ENDIF.

    ENDFORM.                    "PROCESSING
lg Jens
<:: XING-Gruppe Tricktresor::>
Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen –
Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

Seite 1 von 1

Vergleichbare Themen

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
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
1
Antw.
1630
Views
Mail mit Anhang xls
von klabunde » 07.02.2006 15:23 • Verfasst in ABAP® Core
10
Antw.
9944
Views
E-Mail mit PDF als Anhang versenden
von etalon » 18.08.2004 11:31 • Verfasst in SAP - Allgemeines
3
Antw.
4544
Views
Mail mit Anhang versenden
von jokabi » 17.07.2014 15:29 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


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

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