Introducción
Hello friends ,
Recientemente recibí una solicitud para obtener múltiples PDFs del servicio que ya se estaba utilizando, y ya estaba utilizando el método 'GET_STREAM' para devolver un solo PDF. Ante esta solicitud, la solución más rápida y útil que se me ocurrió fue ¿por qué no agregar múltiples PDFs en un solo archivo ZIP y aquí estamos.
Les mostraré cómo crear un archivo ZIP lleno de PDFs usando OData.
Escenario
Utilizaremos el método 'GET_STREAM' de OData para obtener un solo archivo ZIP lleno de PDFs que crearemos a partir de Adobeform.
Requisitos previos:
-
Conocimiento básico sobre Adobeform
-
Conocimiento básico sobre OData
-
Conocimiento básico sobre el uso de SAP Gateway
Procedimiento paso a paso:
-
Crear el servicio Odata y redefinir el método 'GET_STREAM'
-
Crear un archivo ZIP y llenarlo con PDFs
-
Registrar el servicio OData y probarlo desde SAP Gateway
PASO 1:
Primero necesitamos crear nuestro servicio ODATA. Ve a
SEGW
y crea un proyecto OData.
Crea un
ENTITY_TYPE
según tus necesidades. No olvides elegir tu entidad como
Media
.
Imagen 1 - Generando Servicio, Tipos de Entidades
Ahora genera los artefactos en tiempo de ejecución y luego para redefinir el método 'GET_STREAM', ve a la sección
DPC_EXT
.
Imagen 2 - Redefinir el Método GET_STREAM
PASO 2:
Ahora hagamos lo que mejor sabemos,
CODIFICAR
. Para obtener un código más fácil de leer, prefiero usar Funciones. Estas son;
1.
'
SO_PROFORMA_ZIP
' donde creo un archivo ZIP y lo convierto en una variable xstring
2.
'
SO_GET_PDF_VALUE
' donde obtengo PDFs como xstring para agregar al archivo ZIP
3.
'
SO_PROFORMA_GET_DATA
' donde obtengo mis datos para llenar los PDFs
En '
SO_GET_PDF_VALUE
' Función, estoy creando los PDFs y obteniendo sus valores xstring.
FUNCTION so_get_pdf_value.
DATA: ls_printout TYPE so_proforma_st5,
ls_fp_outputparams TYPE sfpoutputparams,
lv_form_name TYPE fpname,
lv_fm_name TYPE rs38l_fnam,
ls_fp_docparams TYPE sfpdocparams,
ls_formoutput TYPE