Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Function Module for Variant Configuration

JayR
Participant
0 Likes
1,713

Is there any Function Modules available for getting the Characteristics and values of configured material. Input will be a material number.

Points assured for any helpful answers

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
856

Hi,

Use the Bapi;

BAPI_OBJCL_GETDETAIL.

You can also use:

CLAF_CLASSIFICATION_OF_OBJECTS fun module.

Regards,

Anji

Message was edited by:

Anji Reddy Vangala

2 REPLIES 2
Read only

Former Member
0 Likes
857

Hi,

Use the Bapi;

BAPI_OBJCL_GETDETAIL.

You can also use:

CLAF_CLASSIFICATION_OF_OBJECTS fun module.

Regards,

Anji

Message was edited by:

Anji Reddy Vangala

Read only

Former Member
0 Likes
856

Hello,

I don't think FM is available for getting the Characteristics values of the Material . Better use this code.


* Selection for class
  IF NOT S_KLART[] IS INITIAL.
    PERFORM F_GET_OBJECTNUMBER.
  ENDIF.
  IF G_CLASS_NE IS INITIAL.
* Fill Selection table fields
    PERFORM F_FILL_FIELDS.
* Selection for materials
    PERFORM F_GET_MATERIAL.
    SORT G_T_MAT BY MATNR.
* Read if necessary classification
    IF G_T_MATNR[] IS INITIAL AND ( NOT G_T_MAT[] IS INITIAL ).
      PERFORM F_GET_MAT_KLASS.
    ENDIF.
* Select the basic data text and fill final table
    PERFORM F_GET_BASIC_TEXT.
  ENDIF.

FORM F_GET_OBJECTNUMBER.

  DATA: L_R_OBJECTS  TYPE TY_OBJECTS.
  DATA: L_OBJECTS TYPE TY_OBJECTS.
  CLEAR: G_T_OBJECTS.
  REFRESH: G_T_OBJECTS.

  SELECT A~CUOBJ A~OBJEK A~KLART B~ATINN B~ATZHL B~ATWRT B~ATFLV
         B~ATAWE B~ATFLB B~ATAW1 C~CLINT D~CLASS
    INTO CORRESPONDING FIELDS OF TABLE G_T_OBJECTS
    FROM INOB AS A INNER JOIN AUSP AS B
      ON A~CUOBJ = B~OBJEK AND
         A~KLART = B~KLART
         INNER JOIN KSSK AS C
         ON B~OBJEK = C~OBJEK AND
            B~KLART = C~KLART
         INNER JOIN KLAH AS D
         ON C~CLINT = D~CLINT
   WHERE A~OBJEK IN S_MATNR AND
         A~OBTAB EQ 'MARA'  AND
         A~KLART IN S_KLART AND
         B~ADZHL EQ '0000'  AND
         C~LKENZ EQ ' '     AND
         D~CLASS IN S_CLASS.

  CLEAR : G_T_KSML.
  REFRESH: G_T_KSML.

  SELECT CLINT IMERK KLART
   FROM KSML
   INTO CORRESPONDING FIELDS OF TABLE G_T_KSML
    FOR ALL ENTRIES IN G_T_OBJECTS
  WHERE CLINT EQ G_T_OBJECTS-CLINT.

  IF NOT G_T_KSML[] IS INITIAL.
    SORT G_T_KSML BY CLINT.
    SORT G_T_OBJECTS BY CUOBJ OBJEK  CLASS ATINN.
    LOOP AT G_T_KSML.

      READ TABLE G_T_OBJECTS WITH KEY ATINN = G_T_KSML-IMERK
                                      CLINT = G_T_KSML-CLINT
                                      BINARY SEARCH.
      IF SY-SUBRC NE 0.
        CLEAR: L_OBJECTS.
        READ TABLE G_T_OBJECTS WITH KEY KLART = G_T_KSML-KLART
                                        CLINT = G_T_KSML-CLINT
                                        BINARY SEARCH.
        IF SY-SUBRC = 0.
          MOVE-CORRESPONDING G_T_OBJECTS TO L_OBJECTS.
          CLEAR G_T_OBJECTS.
          G_T_OBJECTS-ATINN = G_T_KSML-IMERK.
          G_T_OBJECTS-KLART = G_T_KSML-KLART.
          G_T_OBJECTS-CLINT = G_T_KSML-CLINT.
          G_T_OBJECTS-CUOBJ = L_OBJECTS-CUOBJ.
          G_T_OBJECTS-OBJEK = L_OBJECTS-OBJEK.
          G_T_OBJECTS-CLASS = L_OBJECTS-CLASS.
          APPEND G_T_OBJECTS.
          CLEAR G_T_OBJECTS.
        ENDIF.
      ENDIF.
    ENDLOOP.
  ENDIF.
  DELETE ADJACENT DUPLICATES FROM G_T_OBJECTS
                               COMPARING OBJEK KLART CLASS ATINN ATAWE.
  IF NOT G_T_OBJECTS[] IS INITIAL.
    SORT G_T_OBJECTS BY CUOBJ OBJEK  CLASS ATINN.
    CLEAR: G_T_MATNR,G_R_MATNR,G_T_CLASSDESC,G_T_CHARDESC,G_T_CABN,
           G_T_CAWNT.
    REFRESH: G_T_MATNR,G_T_CLASSDESC,G_T_CHARDESC,G_T_CABN,G_T_CAWNT..

    SELECT CLINT KSCHL
      FROM SWOR
      INTO CORRESPONDING FIELDS OF TABLE G_T_CLASSDESC
       FOR ALL ENTRIES IN G_T_OBJECTS
     WHERE CLINT EQ G_T_OBJECTS-CLINT AND
           KLPOS EQ '01'              AND
           SPRAS EQ SY-LANGU.

    IF NOT G_T_CLASSDESC[] IS INITIAL.
      SORT G_T_CLASSDESC BY CLINT.
    ENDIF.

    SELECT ATINN ATBEZ
      FROM CABNT
      INTO CORRESPONDING FIELDS OF TABLE G_T_CHARDESC
       FOR ALL ENTRIES IN G_T_OBJECTS
     WHERE ATINN EQ G_T_OBJECTS-ATINN AND
           SPRAS EQ SY-LANGU.

    IF NOT G_T_CHARDESC[] IS INITIAL.
      SORT G_T_CHARDESC BY ATINN.
    ENDIF.

    SELECT ATINN MSEHI
      FROM CABN
      INTO CORRESPONDING FIELDS OF TABLE G_T_CABN
       FOR ALL ENTRIES IN G_T_OBJECTS
     WHERE ATINN EQ G_T_OBJECTS-ATINN.

    SELECT ATINN ATWTB
     FROM CAWNT
     INTO CORRESPONDING FIELDS OF TABLE G_T_CAWNT
      FOR ALL ENTRIES IN G_T_OBJECTS
    WHERE ATINN EQ G_T_OBJECTS-ATINN AND
          ADZHL EQ '0000'            AND
          SPRAS EQ SY-LANGU.

    LOOP AT G_T_OBJECTS.
      AT NEW OBJEK.
        G_R_MATNR-MATNR = G_T_OBJECTS-OBJEK.
        APPEND G_R_MATNR TO G_T_MATNR.
      ENDAT.
    ENDLOOP.
  ENDIF.

  IF G_T_MATNR[] IS INITIAL.
    G_CLASS_NE = 'X'.
  ENDIF.

ENDFORM.                    " f_get_objectnumber
FORM F_GET_MAT_KLASS.


  DATA: BEGIN OF L_T_OBJECT OCCURS 0,
         OBJEK TYPE OBJNUM,
         MATNR TYPE MATNR,
        END OF L_T_OBJECT.
  DATA: L_OBJECTS TYPE TY_OBJECTS.
  CLEAR: L_T_OBJECT.
  REFRESH: L_T_OBJECT.
* Fill the object number
  LOOP AT G_T_MAT INTO G_R_MAT.
    AT NEW MATNR.
      L_T_OBJECT-OBJEK = G_R_MAT-MATNR.
      L_T_OBJECT-MATNR = G_R_MAT-MATNR.
      APPEND L_T_OBJECT.
    ENDAT.
  ENDLOOP.
  CLEAR:G_T_OBJECTS,G_T_CLASSDESC,G_T_CHARDESC,G_T_CABN,G_T_KSML,
        G_T_CAWNT.
  REFRESH: G_T_OBJECTS,G_T_CLASSDESC,G_T_CHARDESC,G_T_CABN,G_T_KSML,
           G_T_CAWNT.
* Get the material classification details
  SELECT A~CUOBJ A~OBJEK A~KLART B~ATINN B~ATZHL B~ATWRT B~ATFLV
         B~ATAWE B~ATFLB B~ATAW1 C~CLINT D~CLASS
    INTO CORRESPONDING FIELDS OF TABLE G_T_OBJECTS
    FROM INOB AS A INNER JOIN AUSP AS B
      ON A~CUOBJ = B~OBJEK AND
         A~KLART = B~KLART
         INNER JOIN KSSK AS C
         ON B~OBJEK = C~OBJEK AND
            B~KLART = C~KLART
         INNER JOIN KLAH AS D
         ON C~CLINT = D~CLINT
     FOR ALL ENTRIES IN L_T_OBJECT
   WHERE A~OBJEK EQ L_T_OBJECT-OBJEK AND
         A~OBTAB EQ 'MARA'  AND
         A~KLART IN S_KLART AND
         B~ADZHL EQ '0000'  AND
         C~LKENZ EQ ' '     AND
         D~CLASS IN S_CLASS.

  IF NOT G_T_OBJECTS[] IS INITIAL.
    SELECT CLINT IMERK KLART
      FROM KSML
      INTO CORRESPONDING FIELDS OF TABLE G_T_KSML
       FOR ALL ENTRIES IN G_T_OBJECTS
     WHERE CLINT EQ G_T_OBJECTS-CLINT.
  ENDIF.
  IF NOT G_T_KSML[] IS INITIAL.
    SORT G_T_KSML BY CLINT.
    SORT G_T_OBJECTS BY ATINN KLART.
    LOOP AT G_T_KSML.

      READ TABLE G_T_OBJECTS WITH KEY ATINN = G_T_KSML-IMERK.

      IF SY-SUBRC NE 0.
        CLEAR: L_OBJECTS.
        READ TABLE G_T_OBJECTS WITH KEY KLART = G_T_KSML-KLART.
        IF SY-SUBRC = 0.
          MOVE-CORRESPONDING G_T_OBJECTS TO L_OBJECTS.
          CLEAR G_T_OBJECTS.
          G_T_OBJECTS-ATINN = G_T_KSML-IMERK.
          G_T_OBJECTS-KLART = G_T_KSML-KLART.
          G_T_OBJECTS-CLINT = G_T_KSML-CLINT.
          G_T_OBJECTS-CUOBJ = L_OBJECTS-CUOBJ.
          G_T_OBJECTS-OBJEK = L_OBJECTS-OBJEK.
          G_T_OBJECTS-CLASS = L_OBJECTS-CLASS.
          APPEND G_T_OBJECTS.
          CLEAR G_T_OBJECTS.
        ENDIF.
      ENDIF.
    ENDLOOP.
  ENDIF.

  IF NOT G_T_OBJECTS[] IS INITIAL.

    SELECT CLINT KSCHL
      FROM SWOR
      INTO CORRESPONDING FIELDS OF TABLE G_T_CLASSDESC
       FOR ALL ENTRIES IN G_T_OBJECTS
     WHERE CLINT EQ G_T_OBJECTS-CLINT AND
           KLPOS EQ '01'              AND
           SPRAS EQ SY-LANGU.

    IF NOT G_T_CLASSDESC[] IS INITIAL.
      SORT G_T_CLASSDESC BY CLINT.
    ENDIF.

    SELECT ATINN ATBEZ
      FROM CABNT
      INTO CORRESPONDING FIELDS OF TABLE G_T_CHARDESC
       FOR ALL ENTRIES IN G_T_OBJECTS
     WHERE ATINN EQ G_T_OBJECTS-ATINN AND
           SPRAS EQ SY-LANGU.

    IF NOT G_T_CHARDESC[] IS INITIAL.
      SORT G_T_CHARDESC BY ATINN.
    ENDIF.

    SELECT ATINN MSEHI
    FROM CABN
    INTO CORRESPONDING FIELDS OF TABLE G_T_CABN
     FOR ALL ENTRIES IN G_T_OBJECTS
   WHERE ATINN EQ G_T_OBJECTS-ATINN.

    SELECT ATINN ATWTB
      FROM CAWNT
      INTO CORRESPONDING FIELDS OF TABLE G_T_CAWNT
       FOR ALL ENTRIES IN G_T_OBJECTS
     WHERE ATINN EQ G_T_OBJECTS-ATINN AND
           ADZHL EQ '0000'            AND
           SPRAS EQ SY-LANGU.

  ENDIF.

ENDFORM.                    " f_get_mat_klass

If useful reward.

Vasanth