Copyright 2024 - BV TallVision IT

Classification data (transaction CL00 for the classification menu) is really data about data, which can be applied/used for many separate areas. It's available in many standard SAP elements such as the material master. So how to get to this information, when you need it in your report ? 

The data in classification is composed of characteristics and characteristic values. The easiest way to fetch this is using function module BAPI_OBJCL_GETDETAIL, which will return the characteristic values in 3 data tables. These values are separated in 3 tables, because of their types.

If you need values for your report, direct table access may be a more convenient way to select. To do this, first find out what the internal characteristic number is (ATINN). This can be done like so:

DATA: lw_ATINN type AUSP-ATINN. 
CALL FUNCTION 'CONVERSION_EXIT_ATINN_INPUT'
  EXPORTING
    input  = 'MY_CHARACTERISTIC' 
  IMPORTING
    output = wa_atinn.

If there are multiple characteristics needed, check table CABN which holds the characteristic name ATNAM and it's internal characteristic number ATINN.

With the internal characteristic numbers the actual values can be looked up in table AUSP - Characteristic Values. Beware that the key to table AUSP first needs to be looked up in table INOB - Link between Internal Number and Object - in case of multi-value characteristics (this is declared on TCLA-MULTOBJ ).

This example demonstrates how these tables hang together and how they can be selected on for 1 specific characteristic and 1 specific object (the material MAT007).

types: begin of ty_char_value,
         objek type inob-objek, "The material number
         atnam type cabn-atnam,
         atwrt type ausp-atwrt,
         atwtb type cawnt-atwtb,
       end of ty_char_value.

data: lt_char_values type STANDARD TABLE OF ty_char_value,
      lv_multiple_values_allowed type tcla-MULTOBJ.

select single MULTOBJ from TCLA
  into lv_multiple_values_allowed
  where KLART = '001'.

* Fetch the values for the characteristic(s):
if lv_multiple_values_allowed = 'X'.
* Link table INOB is involved when there are multiple values for
* characteristic (specified on the class)
  SELECT inob~objek cabn~atnam ausp~atwrt cawnt~atwtb
    INTO CORRESPONDING FIELDS OF TABLE lt_char_values
    FROM inob INNER JOIN ausp
      ON inob~cuobj = ausp~objek
      INNER JOIN cawn "Soul purpose: pick up ATZHL value
        ON cawn~atinn = ausp~atinn AND
           cawn~atwrt = ausp~atwrt AND
           cawn~adzhl = ausp~adzhl
       INNER JOIN cawnt
         ON cawnt~atinn = ausp~atinn AND
            cawnt~atzhl = cawn~atzhl AND
            cawnt~adzhl = ausp~adzhl
         INNER JOIN cabn
           ON cabn~atinn = ausp~atinn
* FOR ALL entries IN lt_objek - suggestion
         WHERE inob~objek = 'MAT007' and
               inob~klart = '001' and
               inob~obtab = 'MARA' and
*             cabn~atnam  = 'MY_CHARACTERISTIC' and
               cawnt~spras = sy-langu.
else.
  SELECT ausp~objek cabn~atnam ausp~atwrt cawnt~atwtb
    INTO CORRESPONDING FIELDS OF TABLE lt_char_values
      FROM ausp INNER JOIN cawn "Soul purpose: pick up ATZHL value
        ON cawn~atinn = ausp~atinn AND
           cawn~atwrt = ausp~atwrt AND
           cawn~adzhl = ausp~adzhl
       INNER JOIN cawnt
         ON cawnt~atinn = ausp~atinn AND
            cawnt~atzhl = cawn~atzhl AND
            cawnt~adzhl = ausp~adzhl
         INNER JOIN cabn
           ON cabn~atinn = ausp~atinn
* FOR ALL entries IN lt_objek - suggestion
         WHERE ausp~objek = 'MAT007' and
               ausp~klart = '001' and
*             cabn~atnam  = 'MY_CHARACTERISTIC' and
               cawnt~spras = sy-langu.
endif.

Create classification data? Check out transaction CLB1 Batch Input for Classification and CLB2 Direct Input for Classification (also check CLB3).