Difference between revisions of "SAP ABAP ARCHIVE LINK"
From SapWiki
(→Notas) |
|||
| Line 69: | Line 69: | ||
==Bajar archivo== | ==Bajar archivo== | ||
| + | ===ARCHIV_GET_TABLE=== | ||
<nowiki> | <nowiki> | ||
DATA: l_sapobj LIKE toa01-sap_object VALUE 'BUS1309', | DATA: l_sapobj LIKE toa01-sap_object VALUE 'BUS1309', | ||
| Line 143: | Line 144: | ||
ENDIF. | ENDIF. | ||
| + | </nowiki> | ||
| + | ===ARCHIVOBJECT_GET_TABLE=== | ||
| + | <nowiki> | ||
| + | DATA it_binarchivobject TYPE TABLE OF tbl1024 WITH HEADER LINE. | ||
| + | DATA lv_document_type LIKE toadd-doc_type. | ||
| + | DATA lv_string TYPE string. | ||
| + | DATA lv_da2048 TYPE text2048. | ||
| + | DATA lv_length TYPE sapb-length. | ||
| + | |||
| + | lv_document_type = ls_toa01-ar_object. | ||
| + | |||
| + | CALL FUNCTION 'ARCHIVOBJECT_GET_TABLE' | ||
| + | EXPORTING | ||
| + | archiv_id = ls_toa01-archiv_id | ||
| + | document_type = lv_document_type | ||
| + | archiv_doc_id = ls_toa01-arc_doc_id | ||
| + | IMPORTING | ||
| + | binlength = lv_length | ||
| + | TABLES | ||
| + | binarchivobject = it_binarchivobject | ||
| + | EXCEPTIONS | ||
| + | error_archiv = 1 | ||
| + | error_communicationtable = 2 | ||
| + | error_kernel = 3 | ||
| + | OTHERS = 4. | ||
</nowiki> | </nowiki> | ||
Revision as of 20:45, 21 September 2022
Contents
Tabla de documentos
TOA01, ejemplo
SAP_OBJECT BUS1309 OBJECT_ID 2000000172RBJ ARCHIV_ID ZP ARC_DOC_ID 00505682475E1EDBBAD007C24499CD17 AR_OBJECT EDXISFOPDF AR_DATE 20210721 DEL_DATE RESERVE PDF
Verificar conexión
reporte RSCMSTBT - Verificar acceso con offset y longitud
Subir archivo
FORM f_cargar_documento USING p_data TYPE ty_data
CHANGING p_archiv_doc_id.
DATA: l_archiv_id TYPE toaom-archiv_id VALUE 'ZE',
l_ar_object TYPE toaom-ar_object,
l_object_id TYPE sapb-sapobjid,
l_sap_object TYPE toaom-sap_object VALUE 'ZBUS1309',
l_archiv_doc_id TYPE toav0-arc_doc_id.
CLEAR p_archiv_doc_id.
MOVE p_data-clase_docto TO l_ar_object.
MOVE p_data-arc_doc_id TO l_archiv_doc_id.
l_object_id = g_object_id.
CALL FUNCTION 'ARCHIV_CREATE_DIALOG_META'
EXPORTING
archiv_id = l_archiv_id
ar_object = l_ar_object
* DEL_DATE = ' '
* NOTE =
object_id = l_object_id
sap_object = l_sap_object
* FILE = ' '
* COMMIT_FLAG = ' '
* VSCAN_PROFILE = '/SCMS/KPRO_CREATE'
* FILE_DESCR_POP_SUP = ' '
IMPORTING
* ARCHIV =
archiv_doc_id = l_archiv_doc_id
* DOCUMENTCLASS =
* TABLES
* OUTDOCTAB =
* CHANGING
* INFILETAB =
EXCEPTIONS
error_archiv = 1
error_communicationtable = 2
error_connectiontable = 3
error_kernel = 4
error_parameter = 5
error_scanqueue = 6
canceled_by_user = 7
blocked_by_policy = 8
OTHERS = 9.
IF sy-subrc <> 0.
* Implement suitable error handling here
MESSAGE i000(0k) WITH 'Error en Subir Archivo a Archive Link' DISPLAY LIKE 'E'.
ENDIF.
MOVE l_archiv_doc_id TO p_archiv_doc_id.
ENDFORM. " F_VER_DOCUMENTO
Bajar archivo
ARCHIV_GET_TABLE
DATA: l_sapobj LIKE toa01-sap_object VALUE 'BUS1309',
l_objid LIKE toa01-object_id VALUE '%6527124%',
l_archiv LIKE toa01-archiv_id VALUE 'ZP',
l_object LIKE toa01-ar_object VALUE 'ZAFISH46'.
SELECT * INTO CORRESPONDING FIELDS OF TABLE t_alf
FROM toa01
WHERE
sap_object = l_sapobj AND
object_id LIKE l_objid AND
archiv_id = l_archiv AND
ar_object = l_object.
IF sy-subrc = 0.
DATA: l_tabix LIKE sy-tabix,
w_toaat TYPE toaat.
LOOP AT t_alf INTO w_alf.
l_tabix = sy-tabix.
CLEAR w_toaat.
SELECT SINGLE * INTO w_toaat
FROM toaat
WHERE arc_doc_id = w_alf-arc_doc_id.
w_alf-responsable = w_toaat-creator.
* w_alf-bp_emp = wa_alv-object_id+12(10).
w_alf-filename = w_toaat-filename.
w_alf-descr = w_toaat-descr.
MODIFY t_alf FROM w_alf INDEX l_tabix.
REFRESH :t_arc_obj, t_binarc_obj.
CALL FUNCTION 'ARCHIV_GET_TABLE'
EXPORTING
ar_object = w_alf-ar_object
object_id = w_alf-object_id
sap_object = l_sapobj
IMPORTING
length = ld_len
* BINLENGTH =
TABLES
archivobject = t_arc_obj
binarchivobject = t_binarc_obj
EXCEPTIONS
error_archiv = 1
error_communicationtable = 2
error_connectiontable = 3
error_kernel = 4
error_parameter = 5
not_unique = 6
OTHERS = 7.
IF sy-subrc <> 0.
* Implement suitable error handling here
* error = c_x.
ENDIF.
move ld_len to slen.
CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'
EXPORTING
input_length = slen
* FIRST_LINE = 0
* LAST_LINE = 0
IMPORTING
buffer = p_xstring
TABLES
binary_tab = t_binarc_obj
EXCEPTIONS
failed = 1
OTHERS = 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ARCHIVOBJECT_GET_TABLE
DATA it_binarchivobject TYPE TABLE OF tbl1024 WITH HEADER LINE.
DATA lv_document_type LIKE toadd-doc_type.
DATA lv_string TYPE string.
DATA lv_da2048 TYPE text2048.
DATA lv_length TYPE sapb-length.
lv_document_type = ls_toa01-ar_object.
CALL FUNCTION 'ARCHIVOBJECT_GET_TABLE'
EXPORTING
archiv_id = ls_toa01-archiv_id
document_type = lv_document_type
archiv_doc_id = ls_toa01-arc_doc_id
IMPORTING
binlength = lv_length
TABLES
binarchivobject = it_binarchivobject
EXCEPTIONS
error_archiv = 1
error_communicationtable = 2
error_kernel = 3
OTHERS = 4.
Ver documento
FORM f_ver_documento .
DATA: l_archiv_id TYPE toaom-archiv_id VALUE 'ZE',
l_ar_object TYPE toaom-ar_object,
l_object_id TYPE sapb-sapobjid,
l_sap_object TYPE toaom-sap_object VALUE 'ZBUS1309',
l_archiv_doc_id TYPE toav0-arc_doc_id.
MOVE wa_data-clase_docto TO l_ar_object.
MOVE wa_data-arc_doc_id TO l_archiv_doc_id.
l_object_id = g_object_id.
CALL FUNCTION 'ARCHIVOBJECT_DISPLAY'
EXPORTING
archiv_doc_id = l_archiv_doc_id
archiv_id = l_archiv_id
object_id = l_object_id
ar_object = l_ar_object
EXCEPTIONS
error_archiv = 1
error_communicationtable = 2
error_kernel = 3
OTHERS = 4.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ENDFORM. " F_VER_DOCUMENTO
Borrar archivo
CALL FUNCTION 'ARCHIV_DELETE_META'
EXPORTING
client = sy-mandt
archiv_id = gs_ds_rebj_do-archiv_id
arc_doc_id = gs_ds_rebj_do-arc_doc_id
ar_object = gs_ds_rebj_do-ar_object
object_id = gs_ds_rebj_do-object_id
sap_object = gs_ds_rebj_do-sap_object
delete_flag = 1
IMPORTING
all_connections_deleted = lv_all_connections_deleted
EXCEPTIONS
error_connectiontable = 1
error_parameter = 2
error_archiv = 3
error_kernel = 4
error_communicationtable = 5
error_authority = 6
OTHERS = 7.
Notas
Para análisis, poner un break-point en la función HTTP2_GET (todas las funciones pasan por ahí!!!)