Desarrollo > Utilidades > Parches > Crear parches 

Mostrar todoOcultar todo

Esta función permite crear un archivo con los desarrollos creados en un dossier determinado (el dossier en curso por defecto) y un cierto número de elementos de parametrización. Es especialmente interesante si quieres transferir un conjunto de modificaciones coherentes realizadas en un dossier de parametrización o de prueba a un dossier de explotación.

Además de las posibilidades de agrupación de un conjunto de elementos, la generación del parche permite sortear la restricción del servidor único o interconectado que requiere el uso del botón Copia.

La base de esta función es extraer los elementos del diccionario de datos de un dossier, además de otros datos (en principio, datos de parametrización en cantidades limitadas, ya que este formato no es muy compacto). Todos los elementos extraídos se archivan en un fichero que se puede integrar en otro dossier mediante la función de integración de parches. Esta utilidad gestiona el aspecto multilingüe del diccionario, donde los mensajes vinculados a los elementos parcheados se pueden transferir en varios idiomas.

Cada elemento extraído se identifica por un código que define el tipo de elemento parcheado (una pantalla, un informe, los datos de una tabla, etc.) y por un elemento de información complementario (el código de la pantalla, del objeto, un criterio de selección, etc.).

Esta función la utilizan:

  • los equipos de desarrollo del estándar para crear parches correctivos o entregas funcionales complementarias;
  • los partners que han creado desarrollos verticales para instalar módulos adicionales;
  • los desarrolladores para transferir desarrollos específicos.

Gestión de pantalla

Pestaña Pantalla de entrada

Presentación

En la pantalla de entrada:

  • Se definen los parámetros generales del parche.
  • Se indican los códigos de idioma para los que se extraen los textos.
  • Se completa la tabla con la lista de elementos que hay que parchear.

La información se introduce en una única pestaña.

Cerrar

 

Campos

Los campos siguientes están presentes en esta pestaña :

Fichero

  • campo AW

 

  • Tipo de destino (campo TYPEXP)

 

  • Nombre fichero (campo VOLFIL)

 

Tipo de parche

  • Tipo de parche (campo TYPPTC)

El tipo de parche puede tomar los siguientes valores:

  • Estándar
    El parche se puede instalar en una lista de dossieres que se proporciona en la integración y, en teoría, esta lista contiene el dossier supervisor. Es el tipo de parche que se utiliza en la mayoría de los casos (también en desarrollos específicos y verticales). La entrega de los desarrollos específicos o verticales no está condicionada por el tipo de parche, sino por la lista de los códigos de actividad proporcionados en la tabla correspondiente.
  • Supervisor
    El parche solo se integrará en el dossier supervisor. Es el tipo que se utiliza para integrar elementos de preparametrización, como los modelos de importación/exportación, los asientos automáticos o las reglas de workflow, que pueden haberse modificado en los distintos dossieres. Para no sobrescribir las modificaciones realizadas, solo se actualiza el dossier supervisor. Permite disponer de valores de parametrización actualizados en caso de creación de un nuevo dossier y realizar actualizaciones manuales por copia en cada dossier tras utilizar las utilidades de comparación existentes.
  • Específico
    El parche es idéntico al parche estándar, pero permite suprimir las acciones específicas (SPE) no incluidas en el parche cuando se parchea una pantalla. Es el tipo que se utiliza para modificar el nombre de un proceso específico para una acción de diccionario en las pantallas. También es aplicable a las pantallas, los objetos, los informes, las fórmulas y las consultas.
    Para más información, consulta el anexo técnicodetallado.
  • Vertical
    El parche es idéntico al parche estándar, pero permite suprimir las acciones verticales (SPV) no incluidas en el parche cuando se parchea una pantalla. Es el tipo que se utiliza para modificar el nombre de un script vertical para una acción de diccionario en las pantallas. También es aplicable a las pantallas, los objetos, los informes, las fórmulas y las consultas.
    Para más información, consulta el anexo técnico detallado.
  • Add-on
    Es un parche dedicado a los add-on. Permite conservar las acciones en campos verticales (SPV) y las acciones específicas (SPE).

Los parches que contienen elementos de documentación se procesan de una forma específica que se describe en el anexo correspondiente.

Tabla Idiomas

Esta tabla permite definir los idiomas que se quieren parchear.

Todos los textos del diccionario de datos (definidos con el tipo de código ATX) se almacenan en una tabla separada (tabla ATEXTE) y se identifican por un número (inferior a 100 000 para los textos estándar y superior para los demás). Estos textos se transmiten por parche en su forma literal (el número no tiene ningún significado, ya que puede variar) en varios idiomas. Por lo tanto, esta tabla proporciona la lista de idiomas que se utilizan para incluir los textos.

Bloque Número 6

  • Comentario (campo COMMENT)

Este comentario informativo permite describir el fichero de parche (con respecto a su finalidad o contenido). Aparecerá en la traza de la integración del parche.

Es el nombre del dossier desde el que se van a extraer los elementos del parche.

  • Versión mínima (campo VERSION)

Este código de versión mínima permite que el parche no se integre en una aplicación de versión inferior.

  • Producto (campo PRODUIT)

Este campo identifica el artículo desde el que se extrae el parche. No se puede completar.

Tabla Objetos

  • Tipo (campo TYPOBJ)

Esta tabla permite completar la lista de objetos que hay que parchear. La lista se identifica por un tipo de objeto y un nombre. La definición de los distintos tipos y el significado del nombre se proporcionan en un anexo.

  • Nombre objeto (campo NOMOBJ)

Introduce la clave del elemento cuyo código se ha introducido, o un complemento informativo (condición en el caso de un parche de datos). Si la clave de la ficha por parchear está en varias partes, estas van separadas por una virgulilla ( ~ ).

  • Descripción (campo INTITOBJ)

Permite definir una descripción asociada a cada ficha.

Tabla Códigos actividad

Esta tabla permite completar una lista de códigos de actividad específicos o verticales (es decir, que comienzan por X, Y o Z).

Para crear un parche con desarrollos de este tipo, hay que definir los códigos de actividad correspondientes. Los elementos del diccionario con códigos de actividad específicos no indicados se ignorarán en la integración del parche. Esta precaución es obligatoria. De lo contrario, un parche estándar podría actualizar un objeto marcado por un código de actividad específico o vertical. Es precisamente el hecho de que no se indique ningún código de actividad en la cabecera de un parche estándar lo que permite gestionar esta situación.

Estos códigos de actividad no son una forma de filtrar la extracción de los objetos del parche, sino una forma de indicar que los elementos marcados por los códigos de actividad específicos se actualizarán en la integración del parche. Los elementos marcados por los códigos de actividad se podrán cargar mediante una acción disponible en el icono Accionesde la tabla que define el contenido del parche.

Cerrar

 

Icono Acciones

Precarga

Esta acción permite precargar en la tabla todos los elementos del dossier marcados con los códigos de actividad listados en la tabla correspondiente.

Acción desviación ESTÁNDAR

Esta acción permite comprobar si el objeto de la línea en curso es idéntico en ambos dossieres. Se abre una ventana para introducir los dos códigos de dossier. Una vez completada esta ventana, se realiza la comparación y se muestran los resultados en una traza. Si no se indica que el nombre del elemento es diferente, ambos elementos son idénticos en los dossieres comparados.

Es posible que no se pueda realizar la comparación con algunos tipos de objetos. En ese caso, aparece un mensaje en la traza.

Acción desviación ESTÁNDAR

Esta acción permite comprobar si todos los objetos del parche son idénticos en ambos dossieres. Se abre una ventana para introducir los dos códigos de dossier. Una vez completada esta ventana, se realiza la comparación y se muestran los resultados en una traza.

Acción desviación ESTÁNDAR

Esta acción permite llamar a un modelo de parametrización para completar una lista de parches de tipo AAA (una línea por modelo de datos indicado en la pantalla).

Al contrario que con la función de copia de parametrización, aquí solo se generan las líneas AAA (no se incluye la línea APH que describe el modelo). Asimismo, el código de legislación todavía no se ha introducido, de modo que los filtros de legislación no se aplican correctamente.

No obstante, se puede generar una línea AAA para un modelo de datos unitarios haciendo clic en Modelo de datos desde el icono Accionesdel campo Nombre objeto. Se abre una ventana de selección para que elijas el modelo, la legislación, la clave o la fórmula de selección y crees una línea con todos los elementos.

 

Cerrar

 

Tipos de elementos que se pueden parchear

Esta tabla permite completar la lista de objetos que hay que parchear. La lista se identifica por un tipo de objeto y un nombre. La definición de los distintos tipos y el significado del nombre se proporcionan más adelante. La columna Rango indica el orden en el que se ordenan los tipos de elementos en el fichero de parche (ver siguiente párrafo). Los elementos que contienen un rango 100en la tabla siempre se sitúan al final del parche (por orden alfabético de los códigos de los elementos).

Código

Significado

Nombre

Rango

AAA

Líneas procedentes de un modelo de parametrización

Formato específico (ver párrafo correspondiente)

100

ABA

Tareas periódicas batch

Código de la tarea periódica

46

ABF

Tabla de hechos BI

Código de la tabla

54

ABG

Grupos de tareas

Código del grupo

47

ABI

Dimensión BI

Código de la dimensión

55

ABM

Datamart BI

Código del datamart

56

ABO

Informe Business Objects

Código del informe

58

ABT

Tarea batch

Código de la tarea

45

ABV

Regla de sincronización BI

Código de la regla

57

ACL

Tabla de control

Código de la tabla

18

ACN

Consulta

Código de la consulta

36

ACS

Códigos de acceso

Procesados en forma de condición (CODACS = "valor")

14

ACT

Acción

Código de la acción

16

ACV

Definición de un código de actividad

Código de actividad

1

ADC

Descripción de un script (diccionario)

Nombre del script

9

ADF

Vínculos de documentación

Tipo ~ Código del elemento

50

ADI

Contenido de una tabla varia

Número de la tabla

24

ADO

Ayuda funcional (todos los párrafos)

Tipo ~ Código de la ayuda

49

ADP

Parámetro (definición y valor si existen a nivel general)

Código del parámetro

32

ADV

Parametrización de una tabla varia

Número de la tabla

23

ADX

Script (solo compilado)

Nombre del fichero de script

11

ADZ

Ayuda del campo

Código de la ayuda

48

AEN

Encadenamiento de importación/exportación

Procesado en forma de condición (CODE = "valor")

35

AFC

Función

Código de la función

17

AGB

Variable global

Nombre de la variable

20

AHH

Jerarquía BI

Código de la jerarquía

59

AHI

Fórmulas de depuración

Código de la fórmula

7

AII

Condición predefinida BI

Código de la condición

60

ALH

Peticionario

Código de la consulta

51

ALQ

Peticionario SQL

Código de la consulta SQL

52

ALT

Peticionario gráfico

Código de la consulta

53

AMK

Pantalla

Código de la pantalla

28

AML

Menú local

Número del menú local

2

ANG

Navegación

Código de la navegación

10

ANM

Definición de un contador

Código del contador

15

ANT

Parametrización del widget Netvibes

Código de objeto del widget

65

AOB

Definición de objeto

Código del objeto

30

AOE

Modelo de importación/exportación

Código del modelo

34

AOP

Propiedades de objeto

Código del objeto

31

APH

Modelos de parametrización

Código del modelo

100

APR

Proceso gráfico

Código del proceso

63

ARP

Definición de informe en el diccionario

Código del informe

29

ASL

Estilo condicional

Procesado en forma de condición (COD = "valor")

19

ASU

Descripción de subprograma en el diccionario

Nombre del subprograma

21

ASY

Estilo de presentación

Código del estilo

61

ATB

Definición de una tabla (el contenido no se puede transferir, la estructura se actualiza sin perder los datos comunes)

Código de la tabla

25

ATN

Transacciones

Código de la transacción

8

ATY

Tipo de datos

Código del tipo

22

AUR

URL

Código de la URL

27

AVW

Vista

Código de la vista

26

AWA

Regla de workflow

Código de la regla de workflow

43

AWE

Web service

Nombre de la publicación

64

AWI

Definición de ventana

Código de la ventana

33

AWM

Modelo de datos de workflow

Código del modelo

41

AWR

Regla de asignación de workflow

Código de la regla de asignación

42

AWW

Parametrización del plan de trabajo de workflow

Código del plan de trabajo

44

BIA

Objetos BIAR

Código del objeto

4

ELT

Elemento de la interfaz de cliente (xsl, imagen, archivo vario)

Ruta del fichero

3

ETA

Informe Crystal Reports (fichero de extensión rpt)

Nombre del informe

13

EXE

Solicitud de ejecución de un script

Nombre del script

6

GAU

Asientos automáticos

Código del asiento

40

PS1

Desencadenante estadístico

Código del desencadenante

37

PS2

Código estadístico

Código estadístico

38

TAB

Estructura y contenido completos de una tabla (excluyendo su definición "diccionario")
El parche global de una tabla es una copia plana de este fichero, como un .dat de una copia de una tabla en el directorio SVG. No se tienen en cuenta todos los vínculos a esta tabla, especialmente los textos traducibles de la tabla ATEXTRA.

Código de la tabla

39

TFO

Tabla de fórmulas

Código de la fórmula

62

TRT

Origen de un script (el script se compila en la instalación del parche)

Nombre del script

12

TXT

Fichero de texto (en el directorio TXT)

Nombre del texto

5

Abreviatura de una tabla

Contenido parcial de la tabla

Condición de extracción (expresada en forma de cláusula Where)

100

Notas importantes

Transferencia total de los datos de una tabla

El código TABpermite transferir los datos de la tabla recargándola en la base con su estructura y sus datos. No obstante, los elementos del diccionario relativos a la tabla no se crean, de modo que puede no aparecer como visible. Este código también está adaptado cuando se quiere recargar una tabla ya creada en los dossieres por parchear que no ha cambiado de estructura. Si no es el caso, hay que insertar dos líneas en la definición del parche: la primera para la definición de la tabla (ATB XXXXX) y la segunda para el contenido (TAB XXXXX). Aunque no se introduzcan en este orden, la función del parche los reemplaza en este orden. En la integración del parche, la tabla se crea en el diccionario y en la base, si no existe (de lo contrario, la estructura se actualiza si ha cambiado). A continuación, la tabla se recarga con los datos.

Transferencia parcial de los datos de una tabla

Para transferir parcialmente el contenido de una tabla, introduce la abreviatura de la tabla en la columna Tipo e indica una condición lógica en la columna Nombre objetoque se utilizará para extraer el dossier de origen y llevar a cabo la integración en el dossier de destino. Hay que tener en cuenta que los datos extraídos pueden modificar los datos existentes con las mismas claves o crear nuevos datos. No obstante, por motivos de seguridad, los datos nunca se borran en la integración del parche. En el siguiente caso, por ejemplo, en la tabla de países (abreviatura TCY):

Dossier origen

Dossier destino

Código país

Nombre país

Código país

Nombre país

AD

Andorra

AD

Andorra

AE

Emiratos Árabes Unidos

AF

Afganistán

AL

Albania

AL

Alemania

AR

Argentina

AU

Australia

BE

Bélgica

BE

Bélgica

...

...

Si en el parche se introduce una línea con TCY y la condición CRY="AL", el parche solo va a contener la línea correspondiente a Albania y la integración del parche en el dossier de destino va a reemplazar AL de Alemania por AL de Albania.

Si en el parche se introduce una línea con TCY y la condición pat(CRY,"A*"), el parche va a contener las cuatro líneas AD, AE, AF y AR. En la integración, se van a crear las fichas AE de Emiratos Árabes Unidos y AR de Argentina, se va a reemplazar AL de Alemania por AL de Albania, y se van a mantener A de Afganistán y AU de Australia, que no se habían entregado, pero que existían ya en el dossier de destino.

Si en el parche se introduce una línea con TCY y la condición find(CRY,"AD","AE","AL"), el resultado sería el mismo, salvo AR de Argentina, que no se transferiría.

La única forma de borrar datos es:

  • reemplazar globalmente el contenido de una tabla completa (parche de tipo TAB);
  • entregar un script mediante el código EXE(ver más adelante). Por ejemplo, para garantizar que en los países que comienzan por A la lista solo contenga los países con los códigos AD, AE, AL, se habría entregado un script (llamado MAJPATCHnnn, por ejemplo) con las líneas descritas en el siguiente ejemplo.

Ejecución de un script

El código EXE, que permite indicar el nombre de un script por ejecutar, es un caso específico. A pesar de su número de rango, el script se ejecuta al final de la integración del parche (puede existir de antemano o entregarse en el propio parche, ya que la ejecución se realiza al final de la integración).

El script debe contener un subprograma PATCH con un parámetro correspondiente al código del dossier. Este es el subprograma que se ejecutará. Por lo tanto, para el ejemplo anterior, se obtendría el siguiente programa:

Subprog PATCH(NOMDOS)
Value Char NOMDOS
Local File =NOMDOS+".TABCOUNTRY" [TCU]
Trbegin [TCU]
Delete [TCU] Where pat(CRY,"A*")=1 & find(CRY,"AD","AE","AL")=0
Commit
End

Como se puede observar, hay que declarar las tablas en el subprograma teniendo en cuenta que deben declararse en un dossier que no es necesariamente el dossier en curso (lo garantiza la sintaxis Local File = NOMBREDOS + ".NOMBRETABLA").

Scripts genéricos por ejecutar

Cuando se realizan parches en elementos modelo de la interfaz de usuario (pantallas modelo utilizadas para crear ventanas de transacción), hay que revalidar las pantallas correspondientes.

La revalidación se puede ejecutar declarando la ejecución del script correspondiente en el mantenimiento. Estos son los scripts estándar que hay que lanzar en función del tipo de elemento parcheado:

Elemento parcheado

Script
por lanzar

Resultado

Pantalla base para una consulta parametrizable

SUBGTC

Validación de todas las pantallas de consulta

Estilos de presentación

SUBASY

Generación de estilos

Transacción de sistema

SUBAMI

Validación de las transacciones de sistema

Parámetros estadísticos

SUBPS2

Revalidación de todas las estadísticas

Pantalla base de una transacción en el objeto XXX

SUBXXX

Revalidación de las transacciones asociadas al objeto


Este tipo de funcionalidad también se puede realizar en un desarrollo específico (basta con añadir el subprograma PATCH indicado en el párrafo anterior).

Parche de documentación

La estructura de los datos de la documentación es algo diferente. Por defecto, se aplican las siguientes normas en la creación o revalidación de un dossier:

  • Los textos y ficheros de la documentación (tablas ADOCBLB y ADOCCLB) se introducen en el dossier supervisor y no se transfieren a los dossieres dependientes (pero se pueden crear textos de ayuda local para un dossier que se almacenan localmente).
  • La estructura de la documentación (vínculos de documentación, que son prácticamente elementos del diccionario, y estructura de los párrafos) se almacena en cada dossier y se copia en los dossieres inferiores en caso de revalidación (cumpliendo con los códigos de actividad verticales o específicos que se pueden haber definido en un dossier secundario).

Cuando se integra un parche de documentación (tipo ADO), el principio es el siguiente:

  • La estructura de la documentación se puede integrar en todos los dossieres indicados en la aplicación del parche, independientemente del tipo de parche (en función de la lista de dossieres proporcionada en la integración).
  • Los textos y ficheros solo se integran en el dossier supervisor si el tipo de parche es Supervisor(como en los parches de documentación estándar). Si el tipo de parche es otro, los textos y ficheros se pueden integrar en todos los dossieres.
  • El parche de tipo ADF (vínculos) se puede integrar en todos los dossieres, aunque el parche sea de tipo Supervisor.

Nombre de los ficheros de parche

La integración del parche comprueba la secuencialidad de los ficheros de parche cuando incluyen una secuencia numérica en el nombre. Es recomendable asignarles un nombre definido con la fórmula X_yyyy_zzz.dat, compuesta por los siguientes elementos:

  • "X" es un carácter (distinto a P, ya que P se utiliza en los parches estándar) que identifica el tipo de parche.
  • "yyyy" es un número secuencial (que en principio comienza por 0001).
  • "zzz" es un identificador de la versión que se va a integrar.

Si no se aplica esta norma, cuando se integra un conjunto de ficheros de parche en un directorio, se realizan los siguientes controles:

  • No se mezclan ficheros de versiones diferentes en una misma integración.
  • No se puede ignorar un número secuencial si ya se han integrado parches identificados por el mismo carácter y el mismo número de versión. Si, por ejemplo, se ha integrado el parche Z_0005_150.dat y se intenta integrar el parche Z_0007_150.dat sin haber integrado previamente Z_006_150.dat, aparece un mensaje en la integración.

Orden de los elementos en un fichero de parche

Cuando se crea un fichero de parche, la norma consiste en que los elementos incluidos en dicho parche formen un todo cuya aplicación deje un dossier coherente. Si se crea una nueva función por parche, ya esté definida por una acción, una ventana, una pantalla, una tabla o dos scripts, parece lógico que todos los elementos se incluyan en el parche.

Cuando se utiliza un conjunto de elementos para formar un fichero de parche, la función de creación los ordena por un orden específico de tipos para evitar errores de integración. Si, por ejemplo, se integra una ventana antes que las pantallas que la componen, se produce un error de Pantalla inexistenteen la validación. Por lo tanto, los tipos de datos se integran antes que las pantallas y las tablas, las pantallas antes que las ventanas, y así sucesivamente.

El orden que se utiliza en la generación del parche corresponde al rango indicado en la tabla anterior. También es el orden propuesto que aparece en la función Creación automática de parches.

No obstante, hay que tener en cuenta que no se pueden solucionar todos los conflictos posibles. Por ejemplo, un tipo de datos puede hacer referencia a una acción, que a su vez puede hacer referencia a una ventana, que a su vez puede hacer referencia a una pantalla, que a su vez puede hacer referencia a este tipo de datos. Para solucionar este tipo de conflicto (poco habitual), es posible que haya que descomponer el fichero de parche en dos ficheros (el primero para entregar todos los elementos con un tipo de datos que no haga referencia a la acción y el segundo para entregar el tipo de datos que integre la acción, por ejemplo).

Elementos del diccionario no parcheados

Al instalar un parche con los elementos del diccionario, se respetan algunos campos, considerados como elementos parametrizables del diccionario, independientemente de sus protecciones por código de actividad. Por ejemplo, un destino por defecto en un informe.

Un anexo técnico muestra los detalles de los campos correspondientes.

Formato específico de los elementos AAA

Un parche de tipo AAA corresponde a una línea procedente de un modelo de parametrización. Utiliza un formato específico para el código del elemento. El formato es uno de los siguientes:

MODELE~CODE_LEG~CODE_TRS~='FORMULE_SELECTION'

MODELE~CODE_LEG~CODE_TRS~CLE~SOUS_CLE~SOUS_SOUS_CLE...

En estas líneas:

  • MODELE corresponde al modelo de datos utilizado para describir las tablas que se van a extraer.
  • CODE_LEG corresponde al código de legislación, que puede estar en blanco (en ese caso, se mostrarán dos "~" seguidas).
  • CODE_TRS corresponde al código de transacción, que también puede estar en blanco.
  • FORMULE_SELECTION es una condición de filtro. Cualquier cadena de texto debe expresarse entre comillas dobles ("), ya que la fórmula se introduce entre comillas simples (').
  • CLE~SOUS_CLE~SOUS_SOUS_CLE (el número de subclaves es variable) corresponde al caso específico en el que solo se quiere seleccionar un valor de clave correspondiente a la tabla principal del modelo. Este caso solo se puede dar cuando se llama a un modelo (código AAA) desde la creación del parche y se abre la ventana para seleccionar el modelo e introducir la clave por búsqueda directa.

Informes

Por defecto, los informes siguientes están asociados a la función :

 PRTSCR : Impresión pantalla

Pero esto se puede modificar por parametrización.

Tarea batch

Esta función puede lanzarse en Batch. La tarea estándar ZPATCHC esta prevista con este fín.

Botones específicos

Esta función permite recuperar la lista de elementos de un fichero de parche para completarlo, si es necesario, y crear otro fichero de parche. La ventana que se abre permite seleccionar el fichero de parche correspondiente.

Mensajes de error

Además de los mensajes genéricos, los mensajes siguientes de error pueden aparecer durante la captura :

... : directorio inexistente

La ruta de acceso al fichero de parche no existe.

Tipo de objeto erróneo

El tipo de objeto no corresponde ni a uno de los tipos de objetos predefinidos ni a la abreviatura de una tabla existente.

Diccionario de … XXX ficha inexistente

Se ha intentado extraer un objeto de un diccionario inexistente.

Valor incorrecto

La condición de extracción asociada a la extracción de los datos de una tabla no es sintácticamente correcta.

Tablas utilizadas

SEEREFERTTO Consulta la documentación de Puesta en marcha