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.
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
| 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. |
| Este código de versión mínima permite que el parche no se integre en una aplicación de versión inferior. |
| Este campo identifica el artículo desde el que se extrae el parche. No se puede completar. |
Tabla Objetos
| 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. |
| 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 ( ~ ). |
| 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
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.
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.
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.
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
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 | Código de la tarea periódica | 46 | |
ABF | Código de la tabla | 54 | |
ABG | 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 | Código de la tarea | 45 | |
ABV | Código de la regla | 57 | |
ACL | Código de la tabla | 18 | |
ACN | Código de la consulta | 36 | |
ACS | Procesados en forma de condición (CODACS = "valor") | 14 | |
ACT | 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 | 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 | Código de la ayuda | 48 | |
AEN | Procesado en forma de condición (CODE = "valor") | 35 | |
AFC | Código de la función | 17 | |
AGB | Nombre de la variable | 20 | |
AHH | Jerarquía BI | Código de la jerarquía | 59 |
AHI | Código de la fórmula | 7 | |
AII | Código de la condición | 60 | |
ALH | Código de la consulta | 51 | |
ALQ | Código de la consulta SQL | 52 | |
ALT | Código de la consulta | 53 | |
AMK | Código de la pantalla | 28 | |
AML | Número del menú local | 2 | |
ANG | Código de la navegación | 10 | |
ANM | Definición de un contador | Código del contador | 15 |
ANT | Código de objeto del widget | 65 | |
AOB | Definición de objeto | Código del objeto | 30 |
AOE | Código del modelo | 34 | |
AOP | Propiedades de objeto | Código del objeto | 31 |
APH | Código del modelo | 100 | |
APR | Código del proceso | 63 | |
ARP | Definición de informe en el diccionario | Código del informe | 29 |
ASL | Procesado en forma de condición (COD = "valor") | 19 | |
ASU | Descripción de subprograma en el diccionario | Nombre del subprograma | 21 |
ASY | 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 | Código del tipo | 22 | |
AUR | Código de la URL | 27 | |
AVW | Código de la vista | 26 | |
AWA | Código de la regla de workflow | 43 | |
AWE | 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 | Código del asiento | 40 | |
PS1 | Código del desencadenante | 37 | |
PS2 | Código estadístico | 38 | |
TAB | Estructura y contenido completos de una tabla (excluyendo su definición "diccionario") | Código de la tabla | 39 |
TFO | 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 |
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.
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:
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").
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 | 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).
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:
Cuando se integra un parche de documentación (tipo ADO), el principio es el siguiente:
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:
Si no se aplica esta norma, cuando se integra un conjunto de ficheros de parche en un directorio, se realizan los siguientes controles:
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).
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.
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:
Por defecto, los informes siguientes están asociados a la función :
PRTSCR : Impresión pantalla
Pero esto se puede modificar por parametrización.
Esta función puede lanzarse en Batch. La tarea estándar ZPATCHC esta prevista con este fín.
Además de los mensajes genéricos, los mensajes siguientes de error pueden aparecer durante la captura :
La ruta de acceso al fichero de parche no existe.
El tipo de objeto no corresponde ni a uno de los tipos de objetos predefinidos ni a la abreviatura de una tabla existente.
Se ha intentado extraer un objeto de un diccionario inexistente.
La condición de extracción asociada a la extracción de los datos de una tabla no es sintácticamente correcta.