Adobe Forms Archivierung
Bei der Archivierung mit Adobe Forms erfolgt beim Aufruf des generierten Funktionsbausteins, der eine Repräsentation der Adobe Forms-Schnittstelle darstellt.
Hier muss eine Tabelle DARATAB als Teil eine Struktur vom Typ SFPDOCPARAMS gefüllt werden. Die Tabelle DARATAB beinhaltet N Belege, an die das PDF archiviert werden soll.
Tabellen
Funktionsbausteine
ARCHIV_CREATE_TABLE
ARCHIV_CONNECTION_INSERT
Archivierung beim Formularaufruf
- Die Archivierung wird bei der Formularerstellung ausgelöst.
- Aus Performancegründen erfolgt die Archivierung asynchron, in einem separaten Workprozeß.
- Dies hat hat den Vorteil, dass die Formularerstellung nicht auf die erfolgreich vorgenommene Archivierung warten muß.
- Es hat den Nachteil, dass nach dem Formularaufruf keine Information vorliegt, ob die Archivierung erfolgreich erfolgt ist oder nicht.
Protokollierung Archivierung
- Ist die Archivierung erfolgreich, wurde ein Eintrag in der Tabelle TOA01 angelegt. Will man im Nachhinein eine Auswertung über den Erfolg einer Archivierung durchführen, ist eine Strategie die angelegten Einträge in der Tabelle TOA01 mit einer Liste der zu archivierenden Belege zu vergleichen.
- Kommt es regelmäßig vor, dass von Usern das Feedback kommt, dass Belege nicht archiviert wurden, bietet es sich an in der Formularschnittstelle eine kundeneigene Protokolltabelle zu füllen. Die Kontrolle der Tabelle TA01 ist gut, aber hier sind nur die erfolgreich archivierten Belege enthalten. Es könnte sein, dass im Formular die Archivierungsparameter nicht übergeben worden sind, dass als Ablagemodus nur "1 = Drucken" übergeben wurde oder die Archvierungsparameter falsch waren.
Die Protokolltabelle könnte diese Felder haben:
- Fortlaufende Nummer
- Systemdatum
- Systemuhrzeit
- Benutzer
- Belegnummer (z. B. Rechnungsnummer)
- Ablagemodus (1 = Drucken, 2 = Ablegen, 3 = Drucken und Ablegen)
- Drucker
- Archiverungsparameter
Wenn das Formular nur zur Anzeige aufgerufen wird, sollte kein Eintrag in die Protokolltabelle vorgenommen werden. Hier wird keine Archivierung vorgenommen und würde auch kein User erwarten. Allerdings sollte ein Eintrag hinzugefügt werden, wenn der Ablagemodus = Drucken gewählt wurde. Das kann man als User leicht übersehen, dass hier nicht "3 = Drucken und Ablegen" gewählt wurde und so könnte man dem User beweisen, dass die Nichtarchivierung folgerichtig war, wenn hier ein entsprechender Protokollierungssatz erscheint.
Die Felder Ablagemodus, Drucker und Preview werden nicht direkt dem Formular übergeben. Stehen aber nach dem Aufruf des Funktionsbausteins FP_JOB_OPEN zur Verfügung und können dann in der Formularschnittstelle dem Formular übergeben werden.
Man könnte in die Protokolltabelle auch Felder mit aufnehmen, die im Formular noch nicht bekannt sind, aber beim späteren Auswerten der Tabelle TOA01 in die Protokolltabelle geschrieben werden können.
- Archivierungsdatum
- Archivierungsuhrzeit
- ARC_DOC_ID (Verknüpfung zum Archivierungsserver)
Testprogramm FP_TEST_01
Im SAP-Programm FP_TEST_01 gibt es ein einfaches Beispiel für eine Archivierung eines Adobe Forms-PDF.
*----------------------------------------------------------------------* * Report FP_TEST_01 *----------------------------------------------------------------------* report fp_test_01. parameter: p_form type fpname default 'FP_TEST_00', p_pages type i default 2. data: fm_name type rs38l_fnam, fp_docparams type sfpdocparams, fp_outputparams type sfpoutputparams, itf type tsftext, itf_line type tline, itf_line_pattern1 type tdline value 'Line % on page #', "#EC NOTEXT itf_line_pattern2 type tdline, page_nr type string, line_nr type string, l_dara type toa_dara. ... * print data call function 'FP_FUNCTION_MODULE_NAME' exporting i_name = p_form importing e_funcname = fm_name. * now call the generated function module fp_outputparams-arcmode = '2'. fp_outputparams-nodialog = 'X'. call function 'FP_JOB_OPEN' changing ie_outputparams = fp_outputparams exceptions cancel = 1 usage_error = 2 system_error = 3 internal_error = 4 others = 5. if sy-subrc <> 0. message id sy-msgid type sy-msgty number sy-msgno with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. endif. * Choose form language and country for data formatting fp_docparams-langu = 'D'. fp_docparams-country = 'DE'. * Archive parameters l_dara-function = 'DARA'. l_dara-mandant = sy-mandt. l_dara-sap_object = 'BUS0815'. l_dara-ar_object = 'BUSTESTPDF'. concatenate sy-datum 'v' sy-uzeit into l_dara-object_id. "hier wird in der Praxis Belegnummer stehen, z. B. Rechnungsnummer l_dara-notiz = 'PDF'. append l_dara to fp_docparams-daratab. call function fm_name exporting /1bcdwb/docparams = fp_docparams textlines = itf. call function 'FP_JOB_CLOSE' * IMPORTING * E_RESULT = exceptions usage_error = 1 system_error = 2 internal_error = 3 others = 4. if sy-subrc <> 0. message id sy-msgid type sy-msgty number sy-msgno with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. endif.
YouTube