Introdução
Olá amigos,
Recentemente, recebi uma solicitação para obter vários PDFs do serviço que já estava sendo utilizado, e já estava utilizando o método 'GET_STREAM' para retornar um único PDF. Diante dessa solicitação, a solução mais rápida e útil que me ocorreu foi: por que não adicionar vários PDFs em um único arquivo ZIP e aqui estamos.
Vou mostrar como criar um arquivo ZIP cheio de PDFs usando OData.
Cenário
Usaremos o método 'GET_STREAM' do OData para obter um único arquivo ZIP cheio de PDFs que criaremos a partir do Adobeform.
Requisitos prévios:
-
Conhecimento básico sobre Adobeform
-
Conhecimento básico sobre OData
-
Conhecimento básico sobre o uso do SAP Gateway
Procedimento passo a passo:
-
Criar o serviço OData e redefinir o método 'GET_STREAM'
-
Criar um arquivo ZIP e preenchê-lo com PDFs
-
Registrar o serviço OData e testá-lo no SAP Gateway
PASSO 1:
Primeiro, precisamos criar nosso serviço ODATA. Vá para
SEGW
e crie um projeto OData.
Crie um
ENTITY_TYPE
conforme suas necessidades. Não se esqueça de escolher sua entidade como
Media
.
Imagem 1 - Gerando Serviço, Tipos de Entidades
Agora, gere os artefatos em tempo de execução e depois, para redefinir o método 'GET_STREAM', vá para a seção
DPC_EXT
.
Imagem 2 - Redefinir o Método GET_STREAM
PASSO 2:
Agora vamos fazer o que sabemos melhor,
CODIFICAR
. Para obter um código mais fácil de ler, prefiro usar Funções. São elas;
1.
'
SO_PROFORMA_ZIP
' onde eu crio um arquivo ZIP e o converto em uma variável xstring
2.
'
SO_GET_PDF_VALUE
' onde obtenho PDFs como xstring para adicionar ao arquivo ZIP
3.
'
SO_PROFORMA_GET_DATA
' onde obtenho meus dados para preencher os PDFs
Em '
SO_GET_PDF_VALUE
' Função, estou criando os PDFs e obtendo seus 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