SAP Netweaver / ABAP                  Notas técnicas / Tips / Tutorials

Cómo archivar un formulario ADOBE en un sistema externo y asociarlo a un documento SAP

Aprenda cómo ejecutar un formulario ADOBE (SFP) archivándolo y vinculándolo a un documento SAP.

Dado un formulario ADOBE existe la posiblidad de: impirmirlo, visualizarlo por pantalla o archivarlo en un repositorio externo.

En el presente tip detallaremos el procedimiento para archivarlo en un respositorio externo asociándolo a un documento SAP. (Se recomienda la lectura del tip "Cómo crear formularios de impresión basados en PDF e imprimirlos desde un programa ABAP" publicado años atrás en Teknodatips, para un entendimiento básico sobre la creación de Adobe Forms).

 

La función asociada al formulario ADOBE, contiene los parámetros necesarios para indicar el documento SAP al cual se anexará el mismo.

El parámetro de entrada /1BCDWB/DOCPARAMS se utilizará para asignar los valores del documento al cual se adjuntará la imagen del formulario:

 ABAP function builder display 1 a

 El parámetro de salida /1BCDWB/FORMOUTPUT contendrá el contenido PDF del formulario:

ABAP function builder display 2 a

 Para que este parámetro de salida se complete, antes es necesario activar en la función 'FP_JOB_OPEN' el parámetro IE_OUTPUTPARAMS-GETPDF = ‘X’.

 

En el código ejemplo siguiente se detalla paso a paso el procedimiento que asociará el formulario ADOBE a un documento SAP. 

Tener en cuenta que antes de cada porción de código se indican requerimientos y acciones a realizar. 


Declaración de datos

data:
        v_fm_name            type funcname,
        wa_input_parm      type sfpoutputparams,
        wa_docparam          type sfpdocparams,
        wa_pdf_file            type fpformoutput,
        wa_outdoc              type toadt,
        it_archivobject         type table of  docs,
        it_binarchivobject     type table of  tbl1024,
        wa_dara                  type tfpdara,
        it_dara                    type tfpdara,
        v_documentkey        type saeobjid.

parameters: p_bukrs type bukrs,
                 p_belnr type belnr_d,
                 p_gjahr type gjahr.

 

Para archivar el PDF y no mostrarlo por pantalla es necesario activarlo
                wa_input_parm-getpdf = ‘X’.

 

Abrir el Spool


call function 'FP_JOB_OPEN'
      changing
            ie_outputparams = wa_input_parm
      exceptions
           cancel               = 1
           usage_error        = 2
           system_error      = 3
           internal_error     = 4
           others               = 5.

Obtener el nombre de la función asociada al formulario Adobe.

Como la función generada puede cambiar, es necesario obtenerla nuevamente ingresando como parámetro de entrada el nombre del Formulario ADOBE en SFP.

call function 'FP_FUNCTION_MODULE_NAME'
     exporting
         i_name = 'Z_NOMBRE_DE_PDF_EN_SFP'
     importing
          e_funcname = v_fm_name.

En este momento ya es posible llamar al formulario Adobe, indicando los parámetros necesarios de entrada del mismo y además, el documento SAP con el cual se anexará la imagen del formulario.

wa_docparam-langu = sy-langu.
wa_dara-function = DARA’.
wa_dara-mandant = sy-mandt.

En este ejemplo se asignará a un documento financiero, por lo tanto se utilizará el objeto ‘BKPF’. Estos tipos de objetos residen en el BOR (Business Object Repository).

wa_dara-sap_object = 'BKPF'.

concatenate p_bukrs p_belnr p_gjahr into v_documentkey.

wa_dara-object_id = v_documentkey.

 Los próximos parámetros determinan el repositorio externo para lo cuál se requiere una parametrización previa de ArchiveLink (Anexo A). (Ver en sección más abajo en este documento).

wa_dara-ar_object = 'ZFINPDFOUT'.
wa_dara-formarchiv = 'ZO'.
wa_dara-reserve = 'COMMIT'.
append wa_dara to it_dara.

wa_docparam-daratab[] = it_dara[].

CALL FUNCTION v_fm_name
     EXPORTING
         /1bcdwb/docparams     = wa_docparam
         bukrs                          = p_bukrs
         belnr                          = p_belnr
         gjahr                          = p_gjahr
     IMPORTING
         /1bcdwb/formoutput    = wa_pdf_file
     EXCEPTIONS
        usage_error                   = 1
        system_error                  = 2
        internal_error                 = 3
        OTHERS                       = 4.

Luego, cerrar el spool

CALL FUNCTION 'FP_JOB_CLOSE'
    EXCEPTIONS
       usage_error                    = 1
       system_error                   = 2
       internal_error                  = 3
       OTHERS                        = 4.

A partir de aquí las siguientes funciones son las que tratan el PDF en el sistema externo.
Para siempre tener actualizado el PDF, primero se borra el anterior.

 call function 'ARCHIV_DELETE_META'
      exporting
*       ARCHIV_ID                    = '  '
*       ARC_DOC_ID                  = '  '
        ar_object                        = 'ZFINPDFOUT'
        delete_flag                      = 2
        object_id                        = v_documentkey
        sap_object                      = 'BKPF'
        client                             = sy-mandt
*      SINGLE_ENTRY               = '   '
*      DOCUMENTCLASS            = 
        no_auth_check                = 'X'

    * IMPORTING
        * ALL_CONNECTIONS_DELETED =
       exceptions
          error_connectiontable        = 1
          error_parameter                = 2
          error_archiv                     = 3
          error_kernel                     = 4
          error_communicationtable  = 5
          error_authority                 = 6
          others                             = 7.

Ahora, archivar el nuevo PDF. Tener en cuenta que las tablas pueden quedar vacías.

call function 'ARCHIV_CREATE_TABLE'
      exporting
          ar_object                        = 'ZFINPDFOUT'
*        DEL_DATE                      =
          object_id                        = v_documentkey
          sap_object                      = 'BKPF'
*        FLENGTH                        =
          doc_type                        = 'PDF'
          document                       = wa_pdf_file-pdf
          mandt                            = sy-mandt
*        VSCAN_PROFILE              = '/SCMS/KPRO_CREATE'
*         FILENAME                      = '  '
*        DESCR                            = '  '
    importing
         outdoc                            = wa_outdoc
    tables
        archivobject                      = it_archivobject
        binarchivobject                  = it_binarchivobject
   exceptions
        error_archiv                      = 1
        error_communicationtable   = 2
        error_connectiontable         = 3
       error_kernel                       = 4
       error_parameter                  = 5
       error_user_exit                   = 6
       error_mandant                   = 7
       blocked_by_policy              = 8
       others                               = 9.

Si no hay ningún error del PDF en esta instancia, debería estar archivado en ArchiveLink

Con el paso anterior queda finalizado el procedimiento.

Consideraciones:

  • La función 'ARCHIV_CREATE_TABLE' devuelve una "work area" con la clave de la imagen del PDF. Según el código ejemplo: wa_outdoc-arc_doc_id.
  • La tabla TOA01 contiene la asociación del documento SAP con el Content Repository y la clave de la imagen del PDF.

(Anexo A) Parametrización ArchiveLink

Desde la Transacción SPRO se van a realizar las acciones marcadas, que se detallan a continuación:

 ABAP parametrizacion archive link 3

 1) Definir el Repositorio en función de la documentación del servidor externo que se posea:

ABAP display content repository 4 a

2) Crear un nuevo tipo de documento donde la clase de documento sea PDF:

ABAP change view global document types 5

3) Asociar el nuevo tipo de documento al objeto de documento SAP y al repositorio externo: 

ABAP change view links 6

 


n NANCY Figueroa TIP Especialista Workflow - ABAP

 

 

 

 

 


Copyright 2016 - Teknoda S.A.

IMPORTANTE:
“Notas técnicas de SAP ABAP" se envía con frecuencia variable y sin cargo como servicio a nuestros clientes SAP. Contiene notas/tutoriales/artículos técnicos desarrollados en forma totalmente objetiva e independiente. Teknoda es una organización de servicios de tecnología informática y NO comercializa hardware, software ni otros productos.
Si desea suscribir otra dirección de e-mail para que comience a recibir las Notas Técnicas SAP, envíe un mensaje desde esa direcciónsapping@teknoda.com, aclarando nombre, empresa, cargo y país del suscriptor.

SAP, Netweaver, R/3, Fiori,S4/HANA y ABAP son marcas registradas de SAP AG. SAP no es el editor de esta publicación y no es responsable de la misma en ningún aspecto. La información contenida en esta publicación ha sido generada por nuestros especialistas a partir de fuentes consideradas confiables y del ejercicio profesional cotidiano. No obstante, por la posibilidad de error humano, mecánico, cambio de versión u otro, Teknoda no garantiza la exactitud o completud de la misma.
COPYRIGHT TEKNODA S.A. PROHIBIDA SU REPRODUCCION TOTAL O PARCIAL SIN CONSENTIMIENTO DE TEKNODA

 

Copyright © 2024 Teknoda Tech Portal & Training. Todos los derechos reservados.
Joomla! es software libre, liberado bajo la GNU General Public License.