Thursday, January 25, 2018

Add Material classification field in QA32/QA33 ALV

1. Append the structure qals_d02 in se11 with the field you want to display..

2. Append the same field in QALS table in se11. (to save you from dump on running QA32)

(e.g. you want to add Functional Criticality in the alv of QA32. go to se11, append 'ZATWRT' in the qals_d02 structure, then goto se11 again and append 'ZATWRT' in QALS table. activate both. )


3. in subroutine CALL_LISTVIEWER_F14 , implement an implicit enhancement with the code at the beginning to modify object_tab internal table which displays data. Activate the enhancement.

ENHANCEMENT 1  ZMATERIAL_CRITICALITY.    "active version
*----------------------------------------------------------------------*
*New logic for retrieving the Functional Criticality of the Material in QA32/QA33.

DATALT_VALUENUM  TYPE STANDARD TABLE OF BAPI1003_ALLOC_VALUES_NUM  WITH EMPTY KEY,
      LT_VALUECHAR TYPE STANDARD TABLE OF BAPI1003_ALLOC_VALUES_CHAR WITH EMPTY KEY,
      LT_VALUECURR TYPE STANDARD TABLE OF BAPI1003_ALLOC_VALUES_CURR WITH EMPTY KEY,
      LT_RETURN    TYPE STANDARD TABLE OF BAPIRET2.

DATALV_OBJKEY    TYPE BAPI1003_KEY-OBJECT,
      LV_OBJKEY1    TYPE BAPI1003_KEY-OBJECT,
      LV_PRUEFLOS  TYPE BAPI1003_KEY-OBJECT,
      LV_OBJTABLE  TYPE BAPI1003_KEY-OBJECTTABLE VALUE 'MARA',
      LV_CLASSNUM  TYPE BAPI1003_KEY-CLASSNUM VALUE 'TABLE_FILES',
      LV_CLASSNUM1  TYPE BAPI1003_KEY-CLASSNUM VALUE 'MPN_CLASS',
      LV_CLASSTYPE TYPE BAPI1003_KEY-CLASSTYPE VALUE '001',
      LV_ZZCRTFN   TYPE ZMM_CRTFN,
      LV_MATNR           TYPE CHAR18,
      lv_src_value TYPE string.

DATALV_TABIX TYPE SY-TABIX.

CONSTANTS:  LC_001(3)       TYPE VALUE '001',
            LC_FUNC         TYPE BAPICHARACTKEY-CHARACTNAME VALUE 'FN-CRITICALITY',
            LC_FUNC1        TYPE BAPICHARACTKEY-CHARACTNAME VALUE 'SOURCING-APRCH'.

* GET ALL CLASSIFICATION DETAILS
FIELD-SYMBOLS <WA> TYPE ANY,
                <F_LINE> TYPE ANY,
               <F_FIELD> TYPE ANY,
               <F_FIELD1> TYPE ANY,
               <LV_OBJKEY> TYPE ANY,
               <LV_OBJKEY1> TYPE ANY,
               <LV_PRUEFLOS> TYPE ANY.

LOOP AT P_OBJECT_TAB ASSIGNING <WA>.

ASSIGN COMPONENT  'ATWRT' OF STRUCTURE <WA> TO <F_FIELD>.
ASSIGN COMPONENT  'ZPURSOURCE' OF STRUCTURE <WA> TO <F_FIELD1>.
ASSIGN COMPONENT  'MATNR' OF STRUCTURE <WA> TO <LV_OBJKEY>.
ASSIGN COMPONENT  'EMATNR' OF STRUCTURE <WA> TO <LV_OBJKEY1>.
ASSIGN COMPONENT  'PRUEFLOS' OF STRUCTURE <WA> TO <LV_PRUEFLOS>.


LV_OBJKEY    <LV_OBJKEY>.
LV_OBJKEY1    <LV_OBJKEY1>.
LV_PRUEFLOS  <LV_PRUEFLOS>.

CALL FUNCTION 'BAPI_OBJCL_GETDETAIL'
  EXPORTING
    OBJECTKEY       LV_OBJKEY
    OBJECTTABLE     LV_OBJTABLE
    CLASSNUM        LV_CLASSNUM
    CLASSTYPE       LV_CLASSTYPE
    KEYDATE         SY-DATUM
  TABLES
    ALLOCVALUESNUM  LT_VALUENUM
    ALLOCVALUESCHAR LT_VALUECHAR
    ALLOCVALUESCURR LT_VALUECURR
    RETURN          LT_RETURN.

ASSIGN LT_VALUECHAR[ CHARACT LC_FUNC ] TO FIELD-SYMBOL(<LFS_CHAR>).

* GET THE FUNCTIONAL CRITICALITY
IF SY-SUBRC EQ 0.
   <F_FIELD> <LFS_CHAR>-VALUE_CHAR.

IF  <F_FIELD> NE SPACE.
   UPDATE QALS SET ATWRT <F_FIELD> WHERE PRUEFLOS LV_PRUEFLOS AND ATWRT EQ SPACE.


IF SY-SUBRC EQ 0.
COMMIT WORK.
WAIT UP TO SECONDS.
ENDIF.
ENDIF.

ENDIF.


* To get the Sourcing Approach for MPN material

IF LV_OBJKEY NE LV_OBJKEY1 AND LV_OBJKEY1 NE SPACE.
*IF LV_OBJKEY1 NE SPACE.
CALL FUNCTION 'BAPI_OBJCL_GETDETAIL'
  EXPORTING
    OBJECTKEY       LV_OBJKEY1
    OBJECTTABLE     LV_OBJTABLE
    CLASSNUM        LV_CLASSNUM1
    CLASSTYPE       LV_CLASSTYPE
    KEYDATE         SY-DATUM
  TABLES
    ALLOCVALUESNUM  LT_VALUENUM
    ALLOCVALUESCHAR LT_VALUECHAR
    ALLOCVALUESCURR LT_VALUECURR
    RETURN          LT_RETURN.

ASSIGN LT_VALUECHAR[ CHARACT LC_FUNC1 ] TO FIELD-SYMBOL(<LFS_CHAR1>).

* GET THE PURCHASING SOURCE
IF SY-SUBRC EQ 0.

   <F_FIELD1> <LFS_CHAR1>-VALUE_CHAR.

IF  <F_FIELD1> NE SPACE.
   UPDATE QALS SET ZPURSOURCE <F_FIELD1> WHERE PRUEFLOS LV_PRUEFLOS AND ZPURSOURCE EQ SPACE.

IF SY-SUBRC EQ 0.
COMMIT WORK.
WAIT UP TO SECONDS.
ENDIF.

ENDIF.

ENDIF.
CLEAR LV_OBJKEY.
CLEAR LV_OBJKEY1.
ENDIF.

ENDLOOP.
ENDENHANCEMENT.

No comments:

Post a Comment