|
Código fuente -
Utilidades varias
|
|
Martes, 08 de Marzo de 2005 04:06 |
Include para tratamiento de ficheros word.
************************************************************************
*
* INCLUDE ZINCLUDEWORD
*
* DESCRIPCIÓN: Include para tratamiento de ficheros word.
*
* Para usar esta libreria sera necesario tener definido en el programa
* un objeto del tipo ole2
* P.Ej:
* DATA: w_doc TYPE ole2_object.
*
* FORMS:
*-----------------------------------------------------------------------
* Form ABRIR_DOCUMENTO_WORD
* -->P_WORD Objeto word
* -->P_FICHERO Fichero a abrir
* -->P_VER Mostrar o no la aplicación
*-----------------------------------------------------------------------
* Form Borrar_una_palabra
* -->P_WORD Objeto word
* -->P_CUANTAS Cuantas palabras borrar
*-----------------------------------------------------------------------
* Form buscar_en_word
* -->P_WORD Objeto word
* -->P_QUE que buscar
*-----------------------------------------------------------------------
* Form buscar_reemplazar_en_word
* -->P_WORD Objeto word
* -->P_QUE Reemplazar que
* -->P_PORQUE Reemplazar por
* -->P_CUANTO Cuantas veces
*-----------------------------------------------------------------------
* Form cerrar_documento_word
* -->P_WORD Objeto word
* -->P_GUARDAR Indica si guardar un documento abierto
*-----------------------------------------------------------------------
* Form copiar_en_word
* -->P_WORD Objeto word
*-----------------------------------------------------------------------
* Form crear_objeto_word
* -->P_WORD Objeto word
*-----------------------------------------------------------------------
* Form eliminar_objeto_word
* -->P_WORD Objeto word
*-----------------------------------------------------------------------
* Form guardar_documento_word
* -->P_WORD Objeto word
* -->P_FILE Ruta en la que grabar
*-----------------------------------------------------------------------
* Form insertar_en_word
* -->P_WORD Objeto word
* -->P_QUE Que insertar
*-----------------------------------------------------------------------
* Form insertar_intro_en_word
* -->P_WORD Objeto word
*-----------------------------------------------------------------------
* Form pegar_en_word
* -->P_WORD Objeto word
*-----------------------------------------------------------------------
* Form seleccionar_todo
* -->P_WORD Objeto word
*----------------------------------------------------------------------*
* MÓDULO AL QUE PERTENECE:
*
* AUTOR: Ignacio Arnaiz Piorno FECHA: 19-05-2004
*
* ----------------------------------------------------------------------
* CONTROL DE MODIFICACIONES
* AUTOR EMPRESA FECHA MOTIVO
* .......... ....... DD/MM/AA ................................
* .......... ....... DD/MM/AA ................................
*-----------------------------------------------------------------------
***********************************************************************
*INCLUDE ZINCLUDEWORD.
************************************************************************
* INCLUDES
************************************************************************
INCLUDE ole2incl.
************************************************************************
* Definición de tablas del sistema
************************************************************************
************************************************************************
* Definición de constantes
************************************************************************
CONSTANTS: true(2) TYPE n VALUE '-1', "Valor verdadero
false(2) TYPE n VALUE '0'. "Valor falso
************************************************************************
* Definición de variables
************************************************************************
************************************************************************
* Definición de estructuras
************************************************************************
************************************************************************
* Definición de tablas internas
************************************************************************
************************************************************************
* Definición de parámetros
************************************************************************
************************************************************************
* Definición de rango de selección
************************************************************************
************************************************************************
* Definición de la pantalla de selección
************************************************************************
************************************************************************
* Definición de FIELD-SYMBOLS
************************************************************************
************************************************************************
*
* LÓGICA DEL PROGRAMA
*
************************************************************************
************************************************************************
* Definición de inicializaciones
************************************************************************
*INITIALIZATION.
************************************************************************
* Proceso principal
************************************************************************
*START-OF-SELECTION.
************************************************************************
* Acciones de final de proceso
************************************************************************
*END-OF-SELECTION.
************************************************************************
* Definición de cabeceras de listado
************************************************************************
*TOP-OF-PAGE.
************************************************************************
* Definición de líneas de pie del listado
************************************************************************
*END-OF-PAGE.
************************************************************************
* Definición de acciones a tomar en caso de selección con doble click
************************************************************************
*AT LINE-SELECTION.
************************************************************************
* Definición y control de acciones a tomar según entrada del usuario
************************************************************************
*AT USER-COMMAND.
************************************************************************
* Definición y control de acciones a tomar según la tecla de función
************************************************************************
*AT PFM.
************************************************************************
* Definición de las validaciones a realizar de los parámetros de entrada
************************************************************************
*AT SELECTION-SCREEN.
************************************************************************
*
* FORMS ADICIONALES
*
************************************************************************
*&---------------------------------------------------------------------*
*& Form crear_objeto_word
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_WORD Objeto word
*----------------------------------------------------------------------*
FORM crear_objeto_word USING p_word.
* Se crea el documento
CREATE OBJECT p_word 'WORD.BASIC'.
IF NOT sy-subrc IS INITIAL.
MESSAGE e666(01) WITH 'Se produjo un error al crear el objeto'.
ENDIF.
ENDFORM. " crear_objeto_word
*&---------------------------------------------------------------------*
*& Form ABRIR_DOCUMENTO_WORD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_WORD Objeto word
* -->P_FICHERO Fichero a abrir
* -->P_VER Mostrar o no la aplicación
*----------------------------------------------------------------------*
FORM abrir_documento_word USING p_word
p_fichero
p_ver.
DATA l_fichero(256) TYPE c.
* Solicitamos que se visualice el word. (o no depende de lo que
* prefiramos)
IF NOT p_ver IS INITIAL.
CALL METHOD OF p_word 'APPSHOW' EXPORTING #1 = 'Microsoft Word'.
ENDIF.
* Abrimos el fichero.
CONCATENATE '"' p_fichero '"' INTO l_fichero.
CALL METHOD OF p_word 'FILENEW' EXPORTING #1 = p_fichero.
IF NOT sy-subrc IS INITIAL.
MESSAGE e666(01) WITH 'Se produjo un error al abrir el fichero'.
ENDIF.
ENDFORM. " ABRIR_DOCUMENTO_WORD
*&---------------------------------------------------------------------*
*& Form buscar_reemplazar_en_word
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_WORD Objeto word
* -->P_QUE Reemplazar que
* -->P_PORQUE Reemplazar por
* -->P_CUANTO Cuantas veces
*----------------------------------------------------------------------*
FORM buscar_reemplazar_en_word USING p_word
p_que
p_porque
p_cuanto.
DO p_cuanto TIMES.
CALL METHOD OF p_word 'WW2_EDITREPLACE'
EXPORTING #1 = p_que
#2 = p_porque.
IF NOT sy-subrc IS INITIAL.
MESSAGE e666(01) WITH 'Se produjo un error al buscar/reemplazar ('
p_que
p_porque
') en el fichero'.
ENDIF.
ENDDO.
ENDFORM. " buscar_reemplazar_en_word
*&---------------------------------------------------------------------*
*& Form seleccionar_todo
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_WORD Objeto word
*----------------------------------------------------------------------*
FORM seleccionar_todo USING p_word.
CALL METHOD OF p_word 'EDITSELECTALL'.
IF NOT sy-subrc IS INITIAL.
MESSAGE e666(01) WITH 'Se produjo un error al seleccionar todo.'.
ENDIF.
ENDFORM. " seleccionar_todo
*&---------------------------------------------------------------------*
*& Form buscar_en_word
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_WORD Objeto word
* -->P_QUE que buscar
*----------------------------------------------------------------------*
FORM buscar_en_word USING p_word
p_que.
* Se busca la cadena en el documento
CALL METHOD OF p_word 'EDITFIND'
EXPORTING #1 = p_que.
IF NOT sy-subrc IS INITIAL.
MESSAGE e666(01) WITH 'Se produjo un error al buscar ('
p_que
') en el fichero'.
ENDIF.
ENDFORM. " buscar_en_word
*&---------------------------------------------------------------------*
*& Form pegar_en_word
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_WORD Objeto word
*----------------------------------------------------------------------*
FORM pegar_en_word USING p_word.
* Se pega el contenido del clipboard en el documento.
CALL METHOD OF p_word 'EDITPASTE'.
IF NOT sy-subrc IS INITIAL.
MESSAGE e666(01) WITH 'Se produjo un error al pegar en '
'el documento.'.
ENDIF.
ENDFORM. " pegar_en_word
*&---------------------------------------------------------------------*
*& Form copiar_en_word
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_WORD Objeto word
*----------------------------------------------------------------------*
FORM copiar_en_word USING p_word.
* Se copia el contenido de la seleccion al clipboard
CALL METHOD OF p_word 'EDITCOPY'.
IF NOT sy-subrc IS INITIAL.
MESSAGE e666(01) WITH 'Se produjo un error al copiar del '
'documento.'.
ENDIF.
ENDFORM. " copiar_en_word
*&---------------------------------------------------------------------*
*& Form eliminar_objeto_word
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_WORD Objeto word
*----------------------------------------------------------------------*
FORM eliminar_objeto_word USING p_word.
FREE OBJECT p_word.
ENDFORM. " crear_objeto_word
*&---------------------------------------------------------------------*
*& Form cerrar_documento_word
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_WORD Objeto word
* -->P_GUARDAR Indica si guardar un documento abierto
*----------------------------------------------------------------------*
FORM cerrar_documento_word USING p_word
p_guardar.
CALL METHOD OF p_word 'FILECLOSE' EXPORTING #1 = p_guardar.
CALL METHOD OF p_word 'APPCLOSE'.
IF NOT sy-subrc IS INITIAL.
MESSAGE e666(01) WITH 'Se produjo un error al cerrar '
'el documento.'.
ENDIF.
ENDFORM. "cerrar_documento_word
*&---------------------------------------------------------------------*
*& Form Borrar_una_palabra
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_WORD Objeto word
* -->P_CUANTAS Cuantas palabras borrar
*----------------------------------------------------------------------*
FORM borrar_una_palabra USING p_word
p_cuantas.
DO p_cuantas TIMES.
CALL METHOD OF p_word 'DELETEBACKWORD'.
ENDDO.
ENDFORM. " Borrar_una_palabra
*&---------------------------------------------------------------------*
*& Form guardar_documento_word
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_WORD Objeto word
* -->P_FILE Ruta en la que grabar
*----------------------------------------------------------------------*
FORM guardar_documento_word USING p_word
p_file.
IF p_file IS INITIAL.
CALL METHOD OF p_word 'FILESAVE'.
IF NOT sy-subrc IS INITIAL.
MESSAGE e666(01) WITH 'Se produjo un error al guardar'
'el documento.'.
ENDIF.
ELSE.
CALL METHOD OF p_word 'FILESAVEAS' EXPORTING #1 = p_file.
IF NOT sy-subrc IS INITIAL.
MESSAGE e666(01) WITH 'Se produjo un error al guardar '
'el documento como .'
p_file
'.'.
ENDIF.
ENDIF.
ENDFORM. " guardar_documento_word
*&---------------------------------------------------------------------*
*& Form insertar_en_word
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_WORD Objeto word
* -->P_QUE Que insertar
*----------------------------------------------------------------------*
FORM insertar_en_word USING p_word
p_que.
CALL METHOD OF p_word 'INSERT' EXPORTING #1 = p_que.
IF NOT sy-subrc IS INITIAL.
MESSAGE e666(01) WITH 'Se produjo un error insertando en '
'el documento.'.
ENDIF.
ENDFORM. " insertar_en_word
*&---------------------------------------------------------------------*
*& Form insertar_intro_en_word
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_WORD Objeto word
*----------------------------------------------------------------------*
FORM insertar_intro_en_word USING p_word.
CALL METHOD OF p_word 'INSERTBREAK' EXPORTING #1 = 6.
IF NOT sy-subrc IS INITIAL.
MESSAGE e666(01) WITH 'Se produjo un error insertar INTRO en '
'el documento.'.
ENDIF.
ENDFORM. " insertar_intro_en_word
|