Introducción
Estas clases proporcionan una API simple para la gestión de carpetas y archivos en repositorios. Cada clase permite realizar operaciones básicas como crear, leer, actualizar y eliminar (CRUD). La implementación es directa, y a continuación se presentan ejemplos de uso para facilitar la integración.
Clase /edge/cl_dc_api_folder
Descripción: La clase /edge/cl_dc_api_folder
permite gestionar las carpetas en un repositorio. Las operaciones CRUD pueden realizarse utilizando los métodos proporcionados.
Métodos:
Create (Crear carpeta)
Crea una nueva carpeta en el repositorio.
DATA: lo_api_folder TYPE REF TO /edge/cl_dc_api_folder.
/edge/cl_dc_api_folder=>create(
EXPORTING
iv_foldername = 'Nombre Carpeta' "Nombre de la carpeta
iv_repository = 'N1' "ID del repositorio
iv_bo_type = 'BKPF' "Tipo del BO
iv_bo_key = 'AVHU00016000012024' "Clave del BO
RECEIVING
ro_folder = lo_api_folder ). "Instancia de la API de carpeta
Read (Lee una carpeta)
Lee los datos de la carpeta. Devuelve el ID de la carpeta, un flag si existe en el repositorio, y una tabla con los adjuntos, si los tiene, en formato API de adjuntos.
DATA: lv_exist type xfeld,
lv_id type /edge/dc_repos,
ltr_api_file type table of ref to /edge/cl_dc_api_file.
CALL METHOD lo_api_folder->read
IMPORTING
ev_exist = lv_exist "Flag de que existe la carpeta
ev_id = lv_id "ID de la carpeta en el repositorio
etr_api_file = ltr_api_file. "Tabla con instancias API de arhivos dentro de la carpeta.
Update (Actualiza una carpeta)
Actualiza el nombre de la carpeta, permite mover la carpeta de su ubicación actual a otra carpeta, usando el ID de la nueva carpeta padre.
lo_api_folder->update( EXPORTING iv_new_foldername = 'Nuevo nombre carpeta' "Nuevo nombre de la carpeta
iv_new_folderparent = '2c14b36b-6dd2-4e54-be35-e9249f75f487' "Nueva carpeta padre ).
Delete (Borra una carpeta)
Borra una carpeta
lo_api_folder->delete( ).
Clase /edge/cl_dc_api_file
Descripción: La clase /edge/cl_dc_api_file
gestiona los archivos adjuntos dentro de las carpetas del repositorio. Las operaciones CRUD están disponibles para gestionar los adjuntos.
Métodos:
Create (Crear archivo)
Crea un nuevo fichero en el repositorio y la carpeta asociada al BO si no existe.
DATA: lo_api_file TYPE REF TO /edge/cl_dc_api_file.
CALL METHOD /edge/cl_dc_api_file=>create
EXPORTING
iv_filename = 'Nombre de fichero' "Nombre del archivo
iv_ar_object = '/EDGE/GRAP' "Clase de documento
iv_repository = 'N1' "ID del repositorio
iv_bo_type = 'BKPF' "Tipo del BO
iv_bo_key = 'AVHU00016000012024' "Clave del BO
iv_extension = 'txt' "Extension del archivo
iv_file = lv_file "Binario
RECEIVING
ro_file = lo_api_file. "Instancia de la API del archivo.
Read (Lee una carpeta)
Lee los datos del archivo. Devuelve un flag si existe el archivo y el contenido.
DATA: lv_exist type xfeld,
lv_content type xstring.
CALL METHOD lo_api_file->read
IMPORTING
ev_content = lv_content
ev_exist = lv_exist.
Update (Actualiza un archivo)
Puede actualizar los siguientes datos del archivo en el repositorio:
Nombre del archivo, usando el parámetro iv_new_filename
.
Carpeta donde está alojado, usando el parámetro iv_new_folderid
. (Esto moverá el archivo de carpeta).
Actualizar los metadatos según la parametrización, marcando el flag iv_autoupdate_metadata
.
Actualizar los metadatos pasándolos por el parámetro it_metadata
.
DATA lt_metadata TYPE /EDGE/DC_METADATA.
CALL METHOD lo_api_file->update
EXPORTING
iv_new_filename = 'nuevo nombre.txt'. "Nuevo nombre del fichero
iv_new_folderid = '2c14b36b-6dd2-4e54-be35-e9249f75f487' "ID de la nueva carpeta donde se moverá el archivo
iv_autoupdate_metadata = 'X' "Flag de actualización de metadatos según parametrización
it_metadata = lt_metadata. "Tabla con los metadatos
Delete (Borra un archivo)
En el siguiente fragmento se muestra un ejemplo de uso de ambas clases API:
Ejemplo completo
Lee los datos de la carpeta. Devuelve el ID de la carpeta, un flag si existe en el repositorio, y una tabla con los adjuntos, si los tiene, en formato API de adjuntos.
DATA: lv_exist type xfeld,
lv_id type /edge/dc_repos,
ltr_api_file type table of ref to /edge/cl_dc_api_file.
CALL METHOD lo_api_folder->read
IMPORTING
ev_exist = lv_exist
ev_id = lv_id
etr_api_file = ltr_api_file.