Mail mit Anhang aus SAP ArchivLink

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

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

Mail mit Anhang aus SAP ArchivLink

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
Moin,

ich habe eine Datei im SAP Archiv (PDF), die ich als Anhang einer Mail verarbeiten soll. Nun bringt leider der ARCHIVEOBJECT_GET_TABLE die Datei in einem anderen Format als CL_BCS das gern hätte (SOLIX_TAB).

Da ich mit Binärdaten nicht so viel Erfahrung habe: Wie konvertiere ich von einem Format ins andere, ohne was kaputtzumachen?


Gruß und vielen Dank

Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

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


Re: Mail mit Anhang aus SAP ArchivLink

Beitrag von a-dead-trousers (Top Expert / 4399 / 223 / 1182 ) »
Hab da mal vor ein paar Jahren einen Code Schnippsel dazu gepostet:
http://www.abapforum.com/forum/viewtopi ... 18&t=17980

lg ADT

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
ralf.wenzel

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: Mail mit Anhang aus SAP ArchivLink

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
Genau DAS hab ich befürchtet *lol*

Danke.
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Mail mit Anhang aus SAP ArchivLink

Beitrag von Tron (Top Expert / 1327 / 35 / 332 ) »
Moin Ralf.
geht so :
DATA lbuffer TYPE xstring.
DATA contents_hex TYPE solix_tab.
DATA numbytes TYPE i.
DATA: BEGIN OF lt_pdf OCCURS 0,
t(134),
END OF lt_pdf.

* I_tab nach Xstring
CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'
EXPORTING
input_length = numbytes
IMPORTING
buffer = lbuffer
TABLES
binary_tab = lt_pdf
EXCEPTIONS
failed = 1
OTHERS = 2.

IF sy-subrc <> 0.
ENDIF.

* Xstring nach Itab

CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING
buffer = lbuffer
TABLES
binary_tab = contents_hex[].
lg Jens

Folgende Benutzer bedankten sich beim Autor Tron für den Beitrag:
ralf.wenzel

<:: 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.

Re: Mail mit Anhang aus SAP ArchivLink

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
Das funktioniert prächtig @TRON
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Mail mit Anhang aus SAP ArchivLink

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
Öhm - ich hab da noch ne Nachfrage: Wie komme ich denn an die Archiv-Objekt-ID eines abgelegten Dokumentes. Z. B. einer Rechnung?
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Mail mit Anhang aus SAP ArchivLink

Beitrag von JHM (Top Expert / 1197 / 1 / 197 ) »
ralf.wenzel hat geschrieben:Wie komme ich denn an die Archiv-Objekt-ID eines abgelegten Dokumentes. Z. B. einer Rechnung?
NAST-OPTARCNR oder brauchst du eine andere Archiv-ID?
Gruß Hendrik

Re: Mail mit Anhang aus SAP ArchivLink

Beitrag von Tron (Top Expert / 1327 / 35 / 332 ) »
Moin.
ralf.wenzel hat geschrieben:Wie komme ich denn an die Archiv-Objekt-ID eines abgelegten Dokumentes. Z. B. einer Rechnung?
Archivelink verwaltet Dokumente in der Tabelle TOA01 (wenn nix Anderes ge-customized wurde mit der Transaktion OAC3).
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.

Re: Mail mit Anhang aus SAP ArchivLink

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
Trons Tipp hat gezogen. Ich hab nur noch nicht verstanden, wie die Objekt-ID sich zusammensetzt - die fängt an mit der Rechnungsnummer und dann kommen Leerzeichen und schließlich eine Nummer, die ich nicht zuordnen kann.
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Mail mit Anhang aus SAP ArchivLink

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
Tron hat geschrieben:Moin Ralf.
geht so :
DATA lbuffer TYPE xstring.
DATA contents_hex TYPE solix_tab.
DATA numbytes TYPE i.
DATA: BEGIN OF lt_pdf OCCURS 0,
t(134),
END OF lt_pdf.

* I_tab nach Xstring
CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'
EXPORTING
input_length = numbytes
IMPORTING
buffer = lbuffer
TABLES
binary_tab = lt_pdf
EXCEPTIONS
failed = 1
OTHERS = 2.

IF sy-subrc <> 0.
ENDIF.

* Xstring nach Itab

CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING
buffer = lbuffer
TABLES
binary_tab = contents_hex[].
lg Jens
Leider geht das PDF dabei kaputt. Im Archiv ist es noch OK, aber der Mailanhang ist nur 1 KB groß und man kann es nicht öffnen.....
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Mail mit Anhang aus SAP ArchivLink

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
JHM hat geschrieben:
ralf.wenzel hat geschrieben:Wie komme ich denn an die Archiv-Objekt-ID eines abgelegten Dokumentes. Z. B. einer Rechnung?
NAST-OPTARCNR oder brauchst du eine andere Archiv-ID?

In NAST-OPTARCNR steht für jede Mail-Nachricht eine andere Nummer - das kann aber nicht sein, weil wir ja nur ein PDF haben....

Kann man irgendwie anders darauf schließen?
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Mail mit Anhang aus SAP ArchivLink

Beitrag von JHM (Top Expert / 1197 / 1 / 197 ) »
ralf.wenzel hat geschrieben:In NAST-OPTARCNR steht für jede Mail-Nachricht eine andere Nummer - das kann aber nicht sein, weil wir ja nur ein PDF haben....
So ganz versteh ich deinen "Prozess" nicht. Ist das die Geschichte mit der Auftragsnachricht, die von den Fakturanachrichten abhängt? Sind die archivierten PDFs über die Nachrichtenfindung erzeugt?

In NAST-OPTARCNR steht die Archive-ID, unter der der Output der Nachricht im Archive abgelegt wurde. z.B. PDF des Fakturadrucks.
Es können aber auch "andere" PDFs archiviert werden (z.B. Eingangsrechnungen) und im SAP mit einem Beleg verknüpft werden.
Was soll denn ausgelesen werden?


Hier funktioniert:

Code: Alles auswählen.

**********************************************************************
*** Archivelink lesen
**********************************************************************
* Objekct_ID aufabauen
  l_object_id = nast-objky.
  l_object_id+30 = nast-optarcnr.

  call function 'ARCHIV_GET_CONNECTIONS'
    exporting
      objecttype    = nast-objtype
      object_id     = l_object_id
    tables
      connections   = lt_connections
    exceptions
      nothing_found = 1
      others        = 2.

  if sy-subrc <> 0.

  endif.
**********************************************************************
*** Daten aus dem Archive lesen
**********************************************************************
  read table lt_connections into lw_connections index 1. 

  call function 'ARCHIVOBJECT_GET_TABLE'
    exporting
      archiv_id                = lw_connections-archiv_id
      document_type            = 'PDF'
      archiv_doc_id            = lw_connections-arc_doc_id
    importing
      binlength                = e_length
    tables
      binarchivobject          = et_binarchivobject
    exceptions
      error_archiv             = 1
      error_communicationtable = 2
      error_kernel             = 3
      others                   = 4.

  if sy-subrc <> 0.

  endif.
sehr gut um die archivierten Ausdrucke aus dem Archive zu laden...aber ich bin mir nicht sicher, ob es das ist was du benötigst

Folgende Benutzer bedankten sich beim Autor JHM für den Beitrag:
ralf.wenzel

Gruß Hendrik

Re: Mail mit Anhang aus SAP ArchivLink

Beitrag von Tron (Top Expert / 1327 / 35 / 332 ) »
Moin.
habe die Konvertierung nochmal gepüft mit:

Code: Alles auswählen.

*&---------------------------------------------------------------------*
*& Report  YBC_CONVERT_ITAB
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ybc_convert_itab.

DATA lbuffer TYPE xstring.
DATA contents_hex TYPE solix_tab.
DATA numbytes TYPE i.
DATA: BEGIN OF lt_pdf OCCURS 0,
t(134),
END OF lt_pdf.

data fname type string value 'c:\temp\000.pdf'.

CALL METHOD cl_gui_frontend_services=>gui_upload
  EXPORTING
    filename                = fname
    filetype                = 'BIN'
  IMPORTING
    filelength              = numbytes
  CHANGING
    data_tab                = lt_pdf[]
*    isscanperformed         = SPACE
  EXCEPTIONS
    file_open_error         = 1
    file_read_error         = 2
    no_batch                = 3
    gui_refuse_filetransfer = 4
    invalid_type            = 5
    no_authority            = 6
    unknown_error           = 7
    bad_data_format         = 8
    header_not_allowed      = 9
    separator_not_allowed   = 10
    header_too_long         = 11
    unknown_dp_error        = 12
    access_denied           = 13
    dp_out_of_memory        = 14
    disk_full               = 15
    dp_timeout              = 16
    not_supported_by_gui    = 17
    error_no_gui            = 18
    others                  = 19.

IF sy-subrc <> 0.
ENDIF.

* I_tab nach Xstring
CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'
EXPORTING
input_length = numbytes
IMPORTING
buffer = lbuffer
TABLES
binary_tab = lt_pdf
EXCEPTIONS
failed = 1
OTHERS = 2.

IF sy-subrc <> 0.
ENDIF.

* Xstring nach Itab

CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING
buffer = lbuffer
TABLES
binary_tab = contents_hex[].


fname = 'c:\temp\001.pdf'.

CALL METHOD cl_gui_frontend_services=>gui_download
  EXPORTING
    bin_filesize              = numbytes
    filename                  = fname
    filetype                  = 'BIN'
  changing
    data_tab                  = contents_hex[]
  EXCEPTIONS
    file_write_error          = 1
    no_batch                  = 2
    gui_refuse_filetransfer   = 3
    invalid_type              = 4
    no_authority              = 5
    unknown_error             = 6
    header_not_allowed        = 7
    separator_not_allowed     = 8
    filesize_not_allowed      = 9
    header_too_long           = 10
    dp_error_create           = 11
    dp_error_send             = 12
    dp_error_write            = 13
    unknown_dp_error          = 14
    access_denied             = 15
    dp_out_of_memory          = 16
    disk_full                 = 17
    dp_timeout                = 18
    file_not_found            = 19
    dataprovider_exception    = 20
    control_flush_error       = 21
    not_supported_by_gui      = 22
    error_no_gui              = 23
    others                    = 24.

IF sy-subrc <> 0.
ENDIF.
... und funktioniert perfekt !
Das Problem muß wohl beim Anhängen des Attachment an die Mail liegen bzw beim Laden des Archivobjekts (PDF).
(mit welchem Verfahren wird die Mail erstellt ?)

Lesen aus dem Archiv (ist eigentlich für KPRO, aber kann auch für Archivelink genutzt werden)

Code: Alles auswählen.

data :
        l_sig TYPE scms_nsiht,
        l_security TYPE char01 VALUE ' ',
        l_sec(10),
        l_status TYPE scms_docst,
        l_doc_prot(10) TYPE c,
        s_access_info TYPE scms_acinf,
        t_access_info TYPE TABLE OF scms_acinf,
        t_content_txt TYPE TABLE OF sdokcntasc,
        t_content_bin TYPE TABLE OF sdokcntbin.

    CALL FUNCTION 'SCMS_DOC_READ'
      EXPORTING
        stor_cat              = ' '
        crep_id               = ls_toa01-archiv_id
        doc_id                = up_doc_id
        signature             = l_sig
      IMPORTING
        status                = l_status
        doc_prot              = l_doc_prot
      TABLES
        access_info           = t_access_info
        content_txt           = t_content_txt
        content_bin           = t_content_bin
      EXCEPTIONS
        bad_storage_type      = 1
        bad_request           = 2
        unauthorized          = 3
        comp_not_found        = 4
        not_found             = 5
        forbidden             = 6
        conflict              = 7
        internal_server_error = 8
        error_http            = 9
        error_signature       = 10
        error_config          = 11
        error_format          = 12
        error_parameter       = 13
        error                 = 14
        OTHERS                = 15.

lg jens
Zuletzt geändert von Tron am 16.08.2016 10:12, insgesamt 2-mal geändert.

Folgende Benutzer bedankten sich beim Autor Tron für den Beitrag:
ralf.wenzel

<:: 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.

Re: Mail mit Anhang aus SAP ArchivLink

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
JHM hat geschrieben:
ralf.wenzel hat geschrieben:In NAST-OPTARCNR steht für jede Mail-Nachricht eine andere Nummer - das kann aber nicht sein, weil wir ja nur ein PDF haben....
So ganz versteh ich deinen "Prozess" nicht. Ist das die Geschichte mit der Auftragsnachricht, die von den Fakturanachrichten abhängt? Sind die archivierten PDFs über die Nachrichtenfindung erzeugt?

In NAST-OPTARCNR steht die Archive-ID, unter der der Output der Nachricht im Archive abgelegt wurde. z.B. PDF des Fakturadrucks.
Es können aber auch "andere" PDFs archiviert werden (z.B. Eingangsrechnungen) und im SAP mit einem Beleg verknüpft werden.
Was soll denn ausgelesen werden?

(....)

sehr gut um die archivierten Ausdrucke aus dem Archive zu laden...aber ich bin mir nicht sicher, ob es das ist was du benötigst
Es wird mit einer Nachrichtenart eine Rechnung als PDF im Archiv abgelegt und mit einer anderen Nachrichtenart eine Mail versendet, an die das PDF angehängt werden soll. Der '....GET_CONNECTIONS' hat mir beim Finden geholfen.


Gruß

Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Mail mit Anhang aus SAP ArchivLink

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
Tron hat geschrieben:Das Problem muß wohl beim Anhängen des Attachment an die Mail liegen bzw beim Laden des Archivobjekts (PDF).
(mit welchem Verfahren wird die Mail erstellt ?)
lg jens
Es war Letzteres, inzwischen funktioniert es komplett - vom Lesen des Dokumentes aus dem Archiv bis zur Mail.


Gruß und vielen Dank


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Vergleichbare Themen

1
Antw.
6302
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.
864
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.
1831
Views
Mail mit Anhang xls
von klabunde » 07.02.2006 15:23 • Verfasst in ABAP® Core
1
Antw.
2368
Views
Mail aus SAP senden mit Anhang
von Gast » 30.01.2006 15:09 • Verfasst in ABAP® Core
3
Antw.
5031
Views
Mail mit Anhang versenden
von jokabi » 17.07.2014 15:29 • Verfasst in ABAP® für Anfänger

Ü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

Regex in where
vor 5 Stunden von black_adept 2 / 56
Programm anlegen mit Vorlage
vor 11 Stunden von DeathAndPain 2 / 111
IT0024 Qualifikationen CP-ID
vor 11 Stunden von DeathAndPain 2 / 351
BUSOBJEKT zu CMIS PHIO ermitteln
vor 13 Stunden von snooga87 1 / 84

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

Regex in where
vor 5 Stunden von black_adept 2 / 56
Programm anlegen mit Vorlage
vor 11 Stunden von DeathAndPain 2 / 111
IT0024 Qualifikationen CP-ID
vor 11 Stunden von DeathAndPain 2 / 351
BUSOBJEKT zu CMIS PHIO ermitteln
vor 13 Stunden von snooga87 1 / 84

Unbeantwortete Forenbeiträge

BUSOBJEKT zu CMIS PHIO ermitteln
vor 13 Stunden von snooga87 1 / 84
aRFC im OO-Kontext
vor 5 Wochen von ralf.wenzel 1 / 3260
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9821