Dokumenten-Download aus Archiv scheitert mit verschiedenen Bausteinen

Getting started ... Alles für einen gelungenen Start.
16 Beiträge • Seite 1 von 2 (current) Nächste
16 Beiträge Seite 1 von 2 (current) Nächste

Dokumenten-Download aus Archiv scheitert mit verschiedenen Bausteinen

Beitrag von Doobie (ForumUser / 65 / 0 / 0 ) »
Hallo nochmal,

nachdem ich dachte, ich wäre schon fast am Ziel, muß ich feststellen, daß der Dokumenten-Download aus dem Archiv weiterhin nicht funktioniert.

Ich habe es auf verschiedene Arten probiert:

1) mit FB ARCHIVOBJECT_GET_TABLE und anschließend FB SO_NEW_DOCUMENT_SEND_API1

2) mit FB SCMS_DOC_READ und anschließend SO_NEW_DOCUMENT_SEND_API1

Leider immer ohne Erfolg!

Was mache ich falsch?

Die Coding nachfolgend:

1)

CALL FUNCTION 'ARCHIVOBJECT_GET_TABLE'
EXPORTING
archiv_id = lw_connections-archiv_id
document_type = lv_document_type_fb
archiv_doc_id = lw_connections-arc_doc_id
signature = 'X'
IMPORTING
binlength = e_length
TABLES
archivobject = et_archivobject
binarchivobject = et_binarchivobject
EXCEPTIONS
error_archiv = 1
error_communicationtable = 2
error_kernel = 3
OTHERS = 4.

CASE sy-subrc.
WHEN 0.
lv_docid = ls_obj-instid.

IF et_binarchivobject[] IS NOT INITIAL.

REFRESH lt_content_bin.

CALL METHOD cl_rmps_general_functions=>convert_1024_to_255
EXPORTING
im_tab_1024 = et_binarchivobject[]
RECEIVING
re_tab_255 = lt_content_bin[].

ENDIF.
* insert receiver (sap name)

CALL FUNCTION 'SO_NEW_DOCUMENT_SEND_API1'
EXPORTING
document_data = ls_foldinfo_send
IMPORTING
new_object_id = lv_docid_send
TABLES
contents_hex = lt_content_bin
receivers = 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.

ENDCASE.

2)


CALL FUNCTION 'SCMS_DOC_READ'
EXPORTING
mandt = sy-mandt
stor_cat = ' '
crep_id = lw_connections-archiv_id
doc_id = lw_connections-arc_doc_id
TABLES
access_info = lt_info
content_txt = lt_content_txt_1022
content_bin = lt_content_bin_1022
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.

CALL METHOD cl_rmps_general_functions=>convert_1022_to_255
EXPORTING
im_tab_1022 = lt_content_bin_1022[]
RECEIVING
re_tab_255 = lt_content_bin[].

READ TABLE lt_info INTO ls_info INDEX 1.

* Test Baustein SCMS_DOC_READ - End

CASE sy-subrc.
WHEN 0.

lv_docid = ls_obj-instid.

CALL FUNCTION 'SO_NEW_DOCUMENT_SEND_API1'
EXPORTING
document_data = ls_foldinfo_send
IMPORTING
new_object_id = lv_docid_send
TABLES
contents_hex = lt_content_bin
receivers = 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.

Viele Grüße
Udo

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


Re: Dokumenten-Download aus Archiv scheitert mit verschiedenen Bausteinen

Beitrag von Tron (Top Expert / 1327 / 35 / 332 ) »
Moin.
Mit SCMS_DOC_READ / SCMS_DOC_READ_FILE liegst Du schon ganz gut im Rennen.
Ich würde empfehlen den Baustein mit einem Test Programm für ARCHIVELINK und KPRO zu analysieren
Bei ArchiveLink gibt es zwar keine Category, jedoch muß der Parameter mit SPACE und crep_Id übergeben werden .
comp_id ist immer 'data' , bei KPRO natürlich der Filename.
eg.
http://www.bb1.gate2app.com/viewtopic.php?f=36&t=20623

Code: Alles auswählen.

  CALL FUNCTION 'SCMS_DOC_READ_FILE'
    EXPORTING
*     MANDT                 = SY-MANDT
      stor_cat              = <p>-stor_cat
*     CREP_ID               = ' '
      doc_id                = <p>-phio_id
*     PHIO_ID               =
      comp_id               = <p>-file_name
      path                  = l_path
*     FRONTEND              = 'X'
*     SIGNATURE             = 'X'
      security              = ' '
*     NO_CACHE              = ' '
*     P_TRANSFER_PHIO       =
* IMPORTING
*     SIZE                  =
*     MIMETYPE              =
    EXCEPTIONS
      bad_storage_type      = 1
      bad_request           = 2
      unauthorized          = 3
      not_found             = 4
      conflict              = 5
      internal_server_error = 6
      error_http            = 7
      error_signature       = 8
      error_config          = 9
      error_hierarchy       = 10
      error_format          = 11
      error_open            = 12
      error_download        = 13
      error_parameter       = 14
      error                 = 15
      OTHERS                = 16.
gruß Jens
PS den Sinn der CALL FUNCTION 'SO_NEW_DOCUMENT_SEND_API1' habe ich nicht verstanden.
<:: 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: Dokumenten-Download aus Archiv scheitert mit verschiedenen Bausteinen

Beitrag von sap_enthusiast (ForumUser / 95 / 25 / 23 ) »
Tron hat geschrieben:
14.06.2022 16:33
PS den Sinn der CALL FUNCTION 'SO_NEW_DOCUMENT_SEND_API1' habe ich nicht verstanden.
Ich nehme an, das gelesene Dokument oder die drin enthaltene Infos wären als Email/Emailanhang zu versenden.

Re: Dokumenten-Download aus Archiv scheitert mit verschiedenen Bausteinen

Beitrag von Doobie (ForumUser / 65 / 0 / 0 ) »
Hallo Jens,

ich habe da noch so einige Fragen:

- sollen die Bausteine SCMS_DOC_READ_FILE und SCMS_DOC_READ hintereinander laufen (Z.B. könnte die Tabelle access_info des FB SCMS_DOC_READ ja die Ausgabeparameter des FB SCMS_DOC_READ_FILE komsumieren) oder sind die FBs unabhängig von einander zu sehen.

- Wenn unabhängig, würde ich den Baustein SCMS_DOC_READ nutzen. Mir ist hier nur nicht ganz klar wie halt der Table-Parameter access_info gefüllt werden muß oder kann der leer bleiben?

Habe nun mal beide FBs hintereinandergeschaltet und Ausgabeparameter des FB SCMS_DOC_READ_FILE dem Table-Parameter access_info zugewiesen, aber da erhalte ich auch keine Ausgabedatei content_bin.

Den FB SO_NEW_DOCUMENT_SEND_API1 nutze ich übrigens, um das heruntergeladene Dokument per Mail zu verschicken.
Hier würde ich lieber noch auf die Methode add_attachment zurückgreifen, aber erstmal muß das andere alles laufen.

Viele Grüße
Udo

Re: Dokumenten-Download aus Archiv scheitert mit verschiedenen Bausteinen

Beitrag von Doobie (ForumUser / 65 / 0 / 0 ) »
sap_enthusiast hat geschrieben:
14.06.2022 17:25
Tron hat geschrieben:
14.06.2022 16:33
PS den Sinn der CALL FUNCTION 'SO_NEW_DOCUMENT_SEND_API1' habe ich nicht verstanden.
Ich nehme an, das gelesene Dokument oder die drin enthaltene Infos wären als Email/Emailanhang zu versenden.
Genau!

Re: Dokumenten-Download aus Archiv scheitert mit verschiedenen Bausteinen

Beitrag von Tron (Top Expert / 1327 / 35 / 332 ) »
Hallo Udo.
Die Bausteine sind einzeln aufzurufen.
SCMS_DOC_READ liest die Daten in den Speicher, während
SCMS_DOC_READ_FILE die Daten direkt auf Deine Festplatte lädt.
Die Schnittstelle ist dabei fast identisch.
Die Tables haben für die Eingabe keine Bedeutung.
Für den Anfang kann es nützlich sein, Informationen vom Archivobjekt zu holen mit
CALL FUNCTION 'SCMS_DOC_INFO' und dann SCMS_DOC_READ verwenden.
ITAB A nach ITAB B:

Code: Alles auswählen.

 DATA: x TYPE XSTRING.
 
    TRY.
    CALL METHOD cl_bcs_convert=>xtab_to_xstring
      EXPORTING
        it_xtab    = file_content_binary
      RECEIVING
        rv_xstring = x.
     CATCH cx_bcs .
    ENDTRY.
 
    TRY.
    CALL METHOD cl_bcs_convert=>xstring_to_xtab
      EXPORTING
        iv_xstring = x
      IMPORTING
        et_xtab    = object_hex.
     CATCH cx_bcs .
    ENDTRY.
gruß 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: Dokumenten-Download aus Archiv scheitert mit verschiedenen Bausteinen

Beitrag von Doobie (ForumUser / 65 / 0 / 0 ) »
Hallo Jens,
leider liefert mir der Baustein SCMS_DOC_READ für einen konkreten Fall nur jeweils leere Tabellen in den Parametern content_txt und content_bin.

Bin mir nicht sicher, ob die Tabelle access_info nicht doch evtl. gefüllt sein muss.

Ich habe aber auch nicht verstanden, was ich mit dem Baustein SCMS_DOC_INFO soil. Dieser liefert doch gar keine Werte für den Baustein SCMS_DOC_READ.

Viele Grüße
Udo

Re: Dokumenten-Download aus Archiv scheitert mit verschiedenen Bausteinen

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
Mit SCMS_DOC_INFO kann man prüfen ob überhaupt etwas da ist bzw. ob das Archivsystem erreichbar ist (Status) ohne das gleich die Inhalte übertragen werden müssen.
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: Dokumenten-Download aus Archiv scheitert mit verschiedenen Bausteinen

Beitrag von Doobie (ForumUser / 65 / 0 / 0 ) »
Habe es alternativ auch mit Funktionsbaustein ARCHIVOBJECT_GET_TABLE versucht.
Hier wird zwar eine Ausgabedatei (Paramater binarchivobject) erzeugt, aber im Endeffekt kann man die versendete PDF-Datei nicht öffnen :-(

Auch hier das Beispielcoding (zusätzlich mit der Methode add_attachment zum Anhängen an eine Mail:

CALL FUNCTION 'ARCHIVOBJECT_GET_TABLE'
EXPORTING
archiv_id = lw_connections-archiv_id
document_type = lv_document_type_fb
archiv_doc_id = lw_connections-arc_doc_id
all_components = ' '
signature = ' ' " vorher = 'X'
compid = ' '
IMPORTING
binlength = e_length
TABLES
archivobject = et_archivobject
binarchivobject = et_binarchivobject
EXCEPTIONS
error_archiv = 1
error_communicationtable = 2
error_kernel = 3
OTHERS = 4.

CASE sy-subrc.
WHEN 0.

lv_docid = ls_obj-instid.

IF et_binarchivobject[] IS NOT INITIAL.

REFRESH lt_content_bin.

CALL METHOD cl_rmps_general_functions=>convert_1024_to_255
EXPORTING
im_tab_1024 = et_binarchivobject[]
RECEIVING
re_tab_255 = lt_content_bin[].

ENDIF.

l_lines = lines( lt_content_bin ).
l_size = l_lines * 255.

gr_send_request = cl_bcs=>create_persistent( ).

* ADD attchment

CONCATENATE 'Invoice_' gs_invoices-vbeln INTO l_subject.

CALL METHOD gr_document->add_attachment
EXPORTING
i_attachment_type = 'pdf' " l_extension " 'EXT'
i_attachment_subject = l_subject
i_attachment_language = sy-langu
i_attachment_size = l_size
i_att_content_hex = lt_content_bin. " l_attach.

Re: Dokumenten-Download aus Archiv scheitert mit verschiedenen Bausteinen

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
Du berechnest die Dateiröße "falsch".
Der Baustein liefert die korrekte Dateigröße bereits im Parameter "binlength". Mehr brauchst du nicht.
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: Dokumenten-Download aus Archiv scheitert mit verschiedenen Bausteinen

Beitrag von Doobie (ForumUser / 65 / 0 / 0 ) »
Hallo dead-trouser,

das wsar es leider auch nicht.
PDF-Datei ist immer noch nicht zu öffnen :-(

Coding sieht nun so aus:

* Test Baustein SCMS_DOC_READ - End
CALL FUNCTION 'ARCHIVOBJECT_GET_TABLE'
EXPORTING
archiv_id = lw_connections-archiv_id
document_type = lv_document_type_fb
archiv_doc_id = lw_connections-arc_doc_id
all_components = ' '
signature = ' ' " vorher = 'X'
compid = ' '
IMPORTING
binlength = e_length
TABLES
archivobject = et_archivobject
binarchivobject = et_binarchivobject
EXCEPTIONS
error_archiv = 1
error_communicationtable = 2
error_kernel = 3
OTHERS = 4.

CASE sy-subrc.
WHEN 0.

lv_docid = ls_obj-instid.

IF et_binarchivobject[] IS NOT INITIAL.

CALL METHOD cl_rmps_general_functions=>convert_1024_to_255
EXPORTING
im_tab_1024 = et_binarchivobject[]
RECEIVING
re_tab_255 = lt_content_bin[].

ENDIF.

* Coding für PDF-Attachment-Mail
* creates persistent send request

gr_send_request = cl_bcs=>create_persistent( ).

* ADD attchment

l_size = e_length.

CONCATENATE 'Invoice_' gs_invoices-vbeln INTO l_subject.

CALL METHOD gr_document->add_attachment
EXPORTING
i_attachment_type = 'pdf' " l_extension " 'EXT'
i_attachment_subject = l_subject
i_attachment_language = sy-langu
i_attachment_size = l_size
i_att_content_hex = lt_content_bin. " l_attach.

* ADD the document TO SEND REQUEST
CALL METHOD gr_send_request->set_document( gr_document ).

Re: Dokumenten-Download aus Archiv scheitert mit verschiedenen Bausteinen

Beitrag von Tron (Top Expert / 1327 / 35 / 332 ) »
Moin.
Statt CALL METHOD cl_rmps_general_functions=>convert_1024_to_255
Nimm doch mal den code "ITAB A nach ITAB B: "
gruß 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: Dokumenten-Download aus Archiv scheitert mit verschiedenen Bausteinen

Beitrag von Doobie (ForumUser / 65 / 0 / 0 ) »
Hallo Jens,

habe nun statt der besagten Methode folgenden Code probiert:

FIELD-SYMBOLS: <lt_content_bin> TYPE any.

LOOP AT et_binarchivobject ASSIGNING <lt_content_bin>.
IF sy-subrc = 0.
APPEND <lt_content_bin> TO lt_content_bin.
ENDIF.
ENDLOOP.

Leider auch ohne Erfolg, die PDF-Datei läßt sich weiterhin nicht öffnen.

Viele Grüße
Udo

Re: Dokumenten-Download aus Archiv scheitert mit verschiedenen Bausteinen

Beitrag von Tron (Top Expert / 1327 / 35 / 332 ) »
Probiers mal damit (ist getestet):

Code: Alles auswählen.

*&---------------------------------------------------------------------*
*& Report  Z_ARCHI_READ                                                *
*&                                                                     *
*&---------------------------------------------------------------------*
*&                                                                     *
*&                                                                     *
*&---------------------------------------------------------------------*

REPORT  z_archi_read                                                .

DATA:
     l_docid TYPE toa01-arc_doc_id VALUE '028139FB9113FE42B7915E7D9D43BA25'.

DATA:
  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
*   MANDT                       = SY-MANDT
    stor_cat                    = ' '
    crep_id                     = 'VX'
    doc_id                      = l_docid
*   PHIO_ID                     =
*   SIGNATURE                   = 'X'
    security                    = 'r'
*   NO_CACHE                    = ' '
*   RAW_MODE                    = ' '
* IMPORTING
*   FROM_CACHE                  =
*   CREA_TIME                   =
*   CREA_DATE                   =
*   CHNG_TIME                   =
*   CHNG_DATE                   =
*   STATUS                      =
*   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
          .
IF sy-subrc <> 0.
  EXIT.
ENDIF.

DATA s_access_info TYPE scms_acinf.
DATA lbuffer TYPE xstring.
DATA contents_hex TYPE solix_tab.
DATA l_len TYPE i.

READ TABLE t_access_info INTO s_access_info INDEX 1.
l_len = s_access_info-comp_size.


* I_tab nach Xstring
CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'
  EXPORTING
    input_length = l_len
  IMPORTING
    buffer       = lbuffer
  TABLES
    binary_tab   = t_content_bin
  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[].


BREAK-POINT.
<:: 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: Dokumenten-Download aus Archiv scheitert mit verschiedenen Bausteinen

Beitrag von Doobie (ForumUser / 65 / 0 / 0 ) »
Hallo Tron,

leider liefert der Baustein SCMS_DOC_READ nur leere Ausgabe-Tabellen (u.a. im Parameter content_bin). Keine Ahnung, woran das liegt. Es gibt keinen Return Code und keine Exception, auch keinerlei Fehlermeldung.
Definitiv gibt es aber ein Faktura-Dokument.

Bin ein wenig am Verzweifeln :-(

Viele Grüße
Udo

Vergleichbare Themen

0
Antw.
297
Views
0
Antw.
417
Views
Download von Dokumenten im Hintergrund
von hugo.data » 16.08.2021 11:23 • Verfasst in ABAP® Core
0
Antw.
1144
Views
PDF-Download bei großen Dokumenten
von jay-tee » 24.11.2006 10:09 • Verfasst in ABAP® Core
27
Antw.
1557
Views
Download von TIFF-Dateien aus dem Archiv
von Doobie » 30.06.2022 17:35 • Verfasst in ABAP® für Anfänger
1
Antw.
9885
Views
BANF-Freigabeverfahren scheitert
von mda » 16.09.2011 16:11 • Verfasst in Material Management & Produktionsplanung

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

aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2410
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9000