Vous êtes sur la page 1sur 9

Funciones de variante con un ejemplo

Clasificación PLM
característica valor característico clasificación dependencia configuración de variantes savia
configuración de variantes función variante

Mientras realizamos la configuración de Variant, podemos encontrarnos con escenarios donde std. La sintaxis
de VC no será suficiente. Para este tipo de escenarios, podemos usar las funciones Variant para lograr la
funcionalidad deseada. Las funciones de variante usarán módulos de funciones, aquí tenemos que escribir el
código usando ABAP.

Visión general
Las funciones de variantes nos permiten integrar los módulos de funciones con todos los tipos de
dependencias de objetos. En las dependencias de objetos necesitamos usar la sintaxis para llamar al
módulo de funciones, así como los parámetros de entrada y salida.
Condiciones de variante utilizadas donde la sintaxis estándar no es suficiente para asignar la
funcionalidad deseada. Esto puede ser posible en los siguientes casos.

 Procesamiento complejo de char. valores


 Evaluación de tablas de base de datos que no pueden ser abordadas a través de características de
referencia.
 Controles complejos de validez de caracteres permitidos. valores.
 Generación de mensajes informativos personalizados.

Ejemplo:
Uso de la función de variante para concatenar valores de tres características en otra característica.
Los caracteres Valores
Procesador  Core i7
 Core i5
 Core i3

Disco duro  500 GB


 750 GB
 1 TB

RAM  2 GB
 4 GB
 6 GB

Etiqueta Los valores seleccionados de más de 3 caracteres se deben


concatenar y mostrar como una etiqueta.

Creación de la función variante:


T.Código: CU65
Para crear la función de variante tenemos que proporcionar los parámetros de entrada y salida requeridos
para el módulo de funciones.
Indique el nombre y la descripción de la función, haga clic en Características

Asigne las características de entrada y salida requeridas y guarde la función de variante. En el ejemplo
anterior, PROCESSOR, HARD_DISK, RAM son parámetros de entrada.

Creación de módulo de funciones:


Nota: para crear módulos de funciones se requiere acceso de desarrollador.
Abra la función de variante en el modo de cambio en CU66 T.code y haga clic en el botón Módulo de
función .
Aparecerá la pantalla inicial del generador de funciones. El sistema propondrá el nombre del módulo de
función, haga clic en el botón Crear .
Ingrese los detalles requeridos y presione el botón Guardar.

Interfaz del módulo de funciones


Parámetros de importación
Nombre del Mecanografía Campo de Contenido
parámetro referencia
GLOBALES ME GUSTA CUOV_00 Parámetros globales para llamar a una función. Sin embargo, la lista de
campos actualmente solo contiene la fecha.

Mesas
Nombre del Mecanografía Tipo de Contenido
parámetro referencia
CONSULTA ME GUSTA CUOV_01 Tabla de parámetros de entrada y los parámetros de salida esperados
PARTIDO ME GUSTA CUOV_01 Tabla de parámetros de salida

Todos los campos parciales, excepto ATCIO, deben rellenarse con una entrada
de PARTIDO (especialmente el formato ATFOR)

La estructura CUOV_01 comprende los siguientes campos:

 VARNAM (nombre característico)


 ATFOR (formato del valor)
 ATWRT (valor característico alfanumérico en formato interno)
 ATFLV (valor característico numérico)
 ATCIO (Indicador: parámetro de entrada (I) o salida (O))
Los campos ATFOR, ATWRT y ATFLV solo tienen valores asignados para los parámetros de entrada.

Excepciones:

FALLAR Esta excepción muestra que la condición representada por la función no se cumple.
ERROR INTERNO Esta excepción muestra que se ha producido un error de tiempo de ejecución al procesar la función.

Código fuente: se utiliza para escribir su propia lógica para el módulo de funciones utilizando ABAP.

Las siguientes funciones de ayuda son compatibles para acceder a los parámetros de importación:

 CUOV_GET_FUNCTION_ARGUMENT: Lee las características de los parámetros de entrada.


 CUOV_GET_FUNCTION_ARGUMENT: transfiere el valor de las características a la
configuración de Variant.
Escriba el código ABAP y guarde y active el módulo de funciones.

Presione el botón Atrás, el sistema mostrará la transacción Cambiar Función. Cambie el estado a 1 -
Función liberada y guardada.
Función de variante de llamada
Escriba el procedimiento y asígnele al perfil de configuración del material. A continuación se muestra el
procedimiento para este ejemplo.
FUNCION ZCOMP_LABEL
(PROCESADOR = $ ROOT.PROCESOR,
HARD_DISK = $ ROOT.HARD_DISK,
RAM = $ ROOT.RAM,
LABEL = $ SELF.LABEL)

Las características en el lado izquierdo son características de la función. Las características en el lado
derecho son características de la PC.

Se debe hacer referencia a LABEL de la característica con la variable $ SELF, porque LABEL es una
característica del objeto que se está procesando actualmente. De lo contrario, los valores no se pueden
inferir. Se asume el objeto predeterminado $ ROOT para las otras características.
Pruebas
Tan pronto como todos los valores asignados a las características de la función de variante, el módulo de
función establezca el valor para ETIQUETA.
Nota:
Cuando llama a un módulo de función definido por el usuario, SAP Variant Configuration ya no tiene
control de posibles situaciones de error: la persona que escribe el módulo de función puede usar todos
los elementos del lenguaje ABAP, pero es el único responsable del código.

Código de ejemplo para módulo de función


FUNCION ZCOMP_LABEL . * ”———————————————————————- *” * ”Interfaz
local: *” IMPORTING * ”REFERENCIA (GLOBALS) LIKE CUOV_00 ESTRUCTURE
CUOV_00 *” TABLES * "QUERY STRUCTURE CUOV_01 *" MATCH STRUCTURE CUOV_01 *
"EXCEPTIONS *" FAIL * "INTERNAL_ERROR *” ———————————————————————-
DATOS : LV_PROCESSOR TYPE CUOV_01 - ATWRT ,
LV_HARDDISK TYPE CUOV_01 - ATWRT ,
LV_RAM TYPE CUOV_01 - ATWRT ,
LV_LABEL TYPE CUOV_01 - ATWRT .
REFRESCAR PARTIDO .
Función de
llamada 'CUOV_GET_FUNCTION_ARGUMENT' EXPORTING ARGUMENTO ='PRO
CESADOR' IMPORTING * vTipo = SYM_VAL = LV_PROCESSOR * NUM_VAL
=* IO_FLAG
= TABLAS CONSULTA = QUERY EXCEPCIONESARG_NOT_FOUND =
1 OTROS = 2 . SI SY - SUBRC <> 0 . * Implementar el manejo
adecuado de errores aquí ENDIF .

Función de
llamada 'CUOV_GET_FUNCTION_ARGUMENT' EXPORTING ARGUMENTO ='har
d_disk' IMPORTING * vTipo = SYM_VAL = LV_HARDDISK * NUM_VAL
= * IO_FLAG
= TABLAS CONSULTA = QUERY EXCEPCIONES ARG_NOT_FOUND =
1 OTROS = 2 . SI SY - SUBRC <> 0 . * Implementar el manejo
adecuado de errores aquí ENDIF .

Función de
llamada 'CUOV_GET_FUNCTION_ARGUMENT' EXPORTING ARGUMENTO ='RAM
' IMPORTING * vTipo = SYM_VAL = LV_RAM * NUM_VAL = * IO_FLAG
=TABLAS CONSULTA = QUERY EXCEPCIONES ARG_NOT_FOUND =
1OTROS = 2 . SI SY - SUBRC <> 0 . * Implementar el manejo
adecuado de errores aquí ENDIF .

CONCATENAR LV_PROCESSOR LV_HARDDISK LV_RAM EN LV_LABEL SEPARADO POR '|' .


Función de
llamada 'CUOV_SET_FUNCTION_ARGUMENT' EXPORTINGARGUMENTO
= 'etiqueta' vTipo ='CHAR' SYM_VAL
= LV_LABEL * NUM_VAL
= TABLASPARTIDO = PARTIDO EXCEPCIONESEXISTING_VAL
UE_REPLACED = 1 OTROS = 2 . SI SY -SUBRC
<> 0 . * Implementar el manejo adecuado de errores aquí ENDIF . FIN DE
FUNCIONAMIENTO