En nuestro truco de hoy volvemos a temas más técnicos, en concreto, vamos a hablar del sistema de Clasificación.
La clasificación es un componente transversal de Sap que esta disponible en diferentes elementos y que nos permite definir nuestro propios valores de clasificación en elementos tan diferentes como el maestro de materiales, clientes o proveedores; elementos de la gestión documental; definición de estrategias de liberación en solicitudes de pedido o pedido; lotes, equipos, avisos, etc. La clasificación también se utiliza en los materiales configurables, de cuyas posibilidades hablaremos próximamente en el blog.

Quien no ha tenido la necesidad de añadir criterios adicionales de clasificación en un material o el maestro de clientes o proveedores. La utilización del sistema de clasificación es la opción estándar, sin necesidad de realizar ampliaciones de las pantallas estándar o reutilizar campos que están definidos para otros objetivos.
En la imagen siguiente podéis ver un ejemplo de utilización de la clasificación en el maestro de materiales (categoría de clase 001).

Podemos tener disponibles diferentes clases según la naturaleza de nuestros materiales y asignarlas a estos, informando los correspondientes valores de clasificación. Lo bueno de utilizar esta funcionalidad es que tendremos disponible la búsqueda de los elementos de forma estándar utilizando las ayudas de búsqueda por la clasificación, así como las transacciones CL30N o CL31.

Incluso tenemos la transacción CLMM que nos permite realizar modificaciones en masa de los valores de clasificación.
Otro lugar muy frecuente donde se utiliza la clasificación es en los lotes (categoría de clase 023), donde podemos guardar las propiedades concretas de un subconjunto de stock, de acuerdos a sus propiedades físicas, analíticas, etc.

Para utilizar el sistema de clasificación, habremos de crear en primer lugar las características (transacción CT04). Cada característica puede ser del tipo CHAR, CURR, Numero, Fecha u Hora. Los valores de estas características pueden ser listas de valores indicados en la característica (o en una tabla de verificación), un módulo de función, valores libres (por ejemplo para un numero o una fecha), intervalos, varios valores a la vez, etc.

Una vez definidas las características, crearemos la clase utilizando la transacción CL02, indicando en la categoría de clase el valor correspondiente al ámbito donde se va a utilizar, así como las características relevantes para esa clase.

En nuestro truco de hoy vamos a hablar de la forma de leer la información de clasificación en nuestros desarrollos Z o en las adaptaciones al estándar que realicemos.
Básicamente, disponemos de varios módulos de función que nos permiten obtener toda la información de clasificación de nuestros objetos.
CLAF_CLASSIFICATION_OF_OBJECTS
Es uno de los módulos de función clásicos para leer la clasificación sin necesidad de acceder a las diferentes tablas (AUSP, KSSK, KLAH, etc).
- CALL FUNCTION ‘CLAF_CLASSIFICATION_OF_OBJECTS’
- EXPORTING
- classtype = ‘023’ «Categoria de clase
- features = ‘X’ «Leer características
- language = ‘S’ «Idioma
- object = w_l_object «Objeto. Por ejemplo, el material (ceros a la izda)
- objecttable = ‘MCH1’ «MARA,MARC,MCH1 o tabla relevante
- t_class = t_lclass «Tabla con la clase leida
- t_objectdata = t_objectdata «Tabla con los valores de clasificacion leidos
- EXCEPTIONS
- no_classification = 1
- no_classtypes = 2
- invalid_class_type = 3
- OTHERS = 4.
- IF sy-subrc = 0.
- endif.
Por ejemplo, para realizar la lectura de la clasificación de un material (categoría de clase 001), utilizaremos los siguientes parámetros:

En la tabla T_OBJECTDATA obtendremos los valores de clasificación encontrados.

Este modulo de función tiene un pequeño inconveniente, que para los valores CHAR, se recupera el valor de la descripción del valor de la característica en el idioma indicado, y no el valor neutral o del codigo. Por eso es recomendable utilizar el siguiente módulo de función.
La ventaja es que todos los valores de clasificación se devuelven en una única tabla interna.
BAPI_OBJCL_GETCLASSES
Con esta BAPI leeremos todas las clasificaciones de un tipo asociadas al objeto, sin necesidad de indicar la clase a leer. Básicamente, indicaremos:
- OBJECTKEY_IMP: la clave del objeto para el que vamos a leer la clasificacion (por ejemplo, para el material indicaremos 18 digitos, con el número del material lleno con 0 a las izquierda (000000000000000043); para un lote MMMMMMMMMMMMMMMMMMLLLLLLLLLL; etc).
- OBJECTTABLE_IMP: tabla asociada al objeto. Por ejemplo, MARA para materiales, KNA1 o LFA1 para clientes o proveedores, MCH1 para lotes, EQUI para equipos, etc).
- CLASSTYPE_IMP: la categoria de clase que estamos buscando.
- READ_VALUATIONS: siempre con el valor X, sino no lee los valores de características en la clasificación, solo la asignación a la clase del objeto.
- LANGUAGE: idioma para las descripciones de los valores
Podéis utilizar la transacción SE37 en modo test para comprobar el funcionamiento de los módulos de función:

Los valores de clasificación será devueltos en tres tablas, según el tipo de dato de cada una de las características:
- ALLOCVALUESCHAR: características del tipo alfanúmerico (CHAR).
- ALLOCVALUESCURR: características del tipo CURRENCY.
- AALOCVALUESNUM: características del tipo NUM, DATE o TIME.

Relacionados con este módulo de función disponemos de otros, como el BAPI_OBJCL_CREATE o BAPI_OBJCL_CHANGE que nos permiten crear los valores de clasificación o modificarlos desde un desarrollo.
VB_BATCH_GET_DETAIL
Si estais trabajando con la clasificación en los lotes, recuperar la información de clasificación es muy sencillo utilizando el módulo de función VB_BATCH_GET_DETAIL. Aquí simplemente habrá que indicar el material, el número de lote y centro, marcando el flag GET_CLASSIFICATION en la llamada.

En la tabla internat CHAR_OF_BATCH tendremos los valores de clasificación encontrados:

Bibliografia:
Algunas entradas relacionadas con el tema.
- https://sdsapblog.wordpress.com/2015/10/14/funcion-para-obtener-los-valores-de-las-caracteristicas-de-un-lote/
- https://archive.sap.com/discussions/thread/1351754
- https://wiki.scn.sap.com/wiki/display/PLM/Tables+list+for+Classification
- https://help.sap.com/saphelp_46c/helpdata/en/48/051f2bc925d311b60f0060b03c2bff/content.htm?no_cache=true
Buen día;
Excelente trabajo, muy bueno y oportuno para hacer clases de materiales. En nuestro caso tenemos una clasificación RBM, donde se agrupan materiales CEDRO. C= consumibles; E= estratégicos; D= desgaste; R0 Reemplazo y O= obsoleto
Jesus.misael
Buen dia si quiero obtener la clasificacion que le dan a un material directamente desde el medido de compras hay alguna manera?