En proyectos de Facturación Convergente, anteriormente he visto código personalizado que utiliza el Módulo de Función FKK_BIX_CIT_SELECT en lugar de las vistas CDS generadas para una clase CIT. Creo que esto puede ser más eficiente en procesos masivos. Sin embargo, dependiendo del uso de este Módulo de Función, he visto una degradación del rendimiento a medida que un sistema envejece sin suficiente archivado. Incluyo un ejemplo y algunas pautas para evitar este posible problema de rendimiento.
La configuración y el escenario:
Supongamos que la clase CIT TEST tiene al menos 20 tablas para CIT en estado calificado, y cada tabla tiene cientos de millones de CIT. La configuración de almacenamiento de la clase CIT ha sido configurada para pasar a la siguiente tabla cada seis meses, por lo que en cualquier mes dado se usarían un máximo de 2 tablas para el almacenamiento.
Dentro de un proceso masivo, un desarrollador quiere leer un CIT TEST calificado correspondiente utilizando un atributo personalizado. Llaman a FKK_BIX_CIT_SELECT con los siguientes parámetros de exportación:
CALL FUNCTION 'FKK_BIX_CIT_SELECT'
EXPORTING
irt_citcat =
irt_citstatus =
it_further_sel =
-
IRT_CITCAT
-
Contiene la clase CIT 'TEST'
-
IRT_CITSTATUS
-
Contiene '4' para calificado
-
IT_FURTHER_SEL
-
Contiene el atributo personalizado y su valor
La preocupación:
Esto hará que la lógica lea las 20 tablas muy grandes para los CIT calificados en la clase CIT TEST. Las lecturas adicionales de tablas pueden causar un problema de rendimiento dependiendo de cuántas llamadas por hora se realicen.
Evitar el problema de rendimiento:
Aquí hay algunos parámetros a considerar para ayudar a limitar qué de las 20 tablas se leen en este ejemplo.
-
IRT_CITDATAPACKID
-
Estos están asignados a CITCRDATE (ver abajo)
-
IRT_CONSUMDATE / IRT_CITDATE / IRT_CITCRDATE / IRT_RATINGDATE
-
Todos estos llevan a una tabla CIT específica para cada mes/año de las fechas elegidas
-
Nota: IRT_CONSUMDATE no se usa para identificar las tablas CIT si también se usa IRT_CITDATE
En varios casos que he visto, la CIT TEST es un sucesor de otra clase CIT. Por lo tanto, pude usar la clase CITCRDATE del predecesor CIT para restringir la lectura de la clase CIT TEST usando IRT_CITCRDATE. Se agregó un margen de 5 días en caso de que hubiera un retraso extremo al crear la CIT TEST.
DATA(citcrdates) = VALUE fkk_rt_citcrdate( (
sign = 'I'
option = 'BT'
low = <predecessor_cit>-citcrdate
high = <predecessor_cit>-citcrdate + 5 ) ).
Planificar los volúmenes de datos futuros optimizando cómo se leen los CIT calificados, especialmente cuando se utiliza mínimamente el archivado, puede ayudar a prevenir problemas de rendimiento futuros.