En ocasiones necesitamos generar documentos de Word que incorporen datos de SAP. Para ello, resulta de utilidad disponer de una plantilla de Word con etiquetas que pueden ser sustituidas por datos del sistema (contratos, certificados de trabajo…).

Aunque hay varias maneras de conseguirlo, en este artículo haremos uso de la tecnología OLE. Pero antes, vamos a explicar brevemente en qué consiste y cómo se usa OLE.

OLE (Object linking and embedding) es una herramienta que usa SAP para integrar MS Excel y MS Word. Desde nuestro report, el proceso consistirá básicamente en crear un objeto OLE y llamar a sus métodos. Cada instancia del objeto OLE será una variable del tipo ole2_object, definido en el type-pool “ole2”. Por lo que el primer paso será incluir ole2incl en nuestro report. Las cinco principales sentencias que usaremos son:

  • CREATE OBJECT
    • Sintaxis: CREATE OBJECT objeto clase

Objeto: Variable del tipo ole2_object

Clase: Identificador de la aplicación correspondiente

  • Ejemplo: CREATE OBJECT gs_word ‘WORD.APPLICATION’
  • CALL METHOD

Una vez creado un objeto OLE, se puede llamar a sus métodos para ejecutar su funcionalidad.

  • Sintaxis: CALL METHOD OF objeto método [= variable] [EXPORTING parámetro1 = variable 1 … parámetro n = variable n]

Objeto: Variable del tipo ole2_object

Método: Método que se desea llamar

Variable: Variable donde se guardará el output del método

Parámetro n = variable n : Paso de parámetros.

  • Ejemplo CALL METHOD OF gs_word ‘Documents’ = gs_documents
  • SET PROPERTY
    • Sintaxis: SET PROPERTY OF objeto propiedad =  valor

Objeto: Variable del tipo ole2_object

Propiedad: Nombre de la propiedad

Valor: Valor que se asigna

  • Ejemplo SET PROPERTY OF gs_word ‘Visible’ = 1 .
  • GET PROPERTY
    • Sintaxis: GET PROPERTY OF objeto propiedad =  variable

Objeto: Variable del tipo ole2_object

Propiedad: Nombre de la propiedad

Valor: Valor que se asigna

  • Ejemplo GET PROPERTY OF gs_view ‘Type’ = gv_viewtype.
  • FREE OBJECT

Para liberar la memoria una vez utilizado nuestro objeto OLE.

  • Sintaxis: FREE OBJECT objeto

Una vez realizada esta breve introducción, vamos a ver de qué manera utilizamos OLE para reemplazar los datos en nuestra plantilla de Word.

En primer lugar, creamos nuestro documento Word. Para crear las etiquetas donde se sustituirán los datos, las delimitaremos mediante almohadillas (Ejemplo: #NOMBRE#).

Ejemplo:

A continuación, implementaremos el siguiente código en nuestro report.

Incluimos ole2incl.

Crearemos dos tablas. Por una parte, una tabla que contendrá todos los datos que incluiremos en el Word (los nombres de cada campo deben coincidir con los de las etiquetas). Por otra, una tabla que almacenará todos los nombres de las etiquetas a sustituir en el documento.

Declaramos el objeto OLE2.

Declaramos dos variables auxiliares para el nombre del nuevo documento generado y el nombre de las etiquetas.

En este ejemplo, rellenaremos la tabla con una serie de datos que aparecerán en el Word.

A continuación, rellenaremos la tabla con los nombres de las etiquetas de la plantilla de la siguiente forma:

Por cada entrada de la tabla que contiene los datos a incluir en el Word, generaremos un nuevo documento, y sustituiremos las etiquetas por los datos de cada campo, de la siguiente manera.

Vemos que se ha creado un nuevo documento por cada entrada de nuestra tabla, donde se han sustituido las etiquetas por los datos contenidos en la tabla:

Al abrir los documentos, comprobamos que se han sustituido las etiquetas.

Esperamos que este artículo te haya sido de utilidad, si tienes alguna pregunta no dudes en ponerla en los comentarios o ponerte en contacto con nosotros.