Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
ralf.wenzel
lg JensDATA 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[].
Folgende Benutzer bedankten sich beim Autor Tron für den Beitrag:
ralf.wenzel
Archivelink verwaltet Dokumente in der Tabelle TOA01 (wenn nix Anderes ge-customized wurde mit der Transaktion OAC3).ralf.wenzel hat geschrieben:Wie komme ich denn an die Archiv-Objekt-ID eines abgelegten Dokumentes. Z. B. einer Rechnung?
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.....Tron hat geschrieben:Moin Ralf.
geht so :lg JensDATA 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[].
JHM hat geschrieben:NAST-OPTARCNR oder brauchst du eine andere Archiv-ID?ralf.wenzel hat geschrieben:Wie komme ich denn an die Archiv-Objekt-ID eines abgelegten Dokumentes. Z. B. einer Rechnung?
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?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....
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.
Folgende Benutzer bedankten sich beim Autor JHM für den Beitrag:
ralf.wenzel
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.
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.
Folgende Benutzer bedankten sich beim Autor Tron für den Beitrag:
ralf.wenzel
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.JHM hat geschrieben: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?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....
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 war Letzteres, inzwischen funktioniert es komplett - vom Lesen des Dokumentes aus dem Archiv bis zur Mail.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