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

REALLY URGENT

Former Member
0 Likes
973

Hi,

i making a report on Block stock in which i have to display the quantity values from 2 tables MCHB and MSKA. but i am not able to display both the values .plzz help me out i am really dipressed .plzz help me out.

&----


*& Report Z_BLOCK_STOCK_COPY

*&

&----


*&

*&

&----


REPORT Z_BLOCK_STOCK_COPY no standard page heading LINE-SIZE 350.

TABLES: MCHB,MARA,MSKA.

DATA: BEGIN OF ITAB OCCURS 0,

ITEMID LIKE MCHB-MATNR,

CHARG LIKE MCHB-CHARG,

WERKS LIKE MCHB-WERKS,

CSPEM LIKE MCHB-CSPEM,

NTGEW LIKE MARA-NTGEW,

MEINS LIKE MARA-MEINS,

GEWEI LIKE MARA-GEWEI,

WTKG LIKE MARA-NTGEW,

STOCK TYPE P LENGTH 10 DECIMALS 3,

KASPE LIKE MSKA-KASPE,

DESC LIKE MAKT-MAKTX,

TOTWT LIKE MCHB-CSPEM,

WT TYPE P LENGTH 12 DECIMALS 3,

END OF ITAB.

DATA: BEGIN OF ITMSKA OCCURS 0,

MATNR LIKE MSKA-MATNR,

CHARG LIKE MSKA-CHARG,

WERKS LIKE MSKA-WERKS,

KASPE LIKE MSKA-KASPE,

SOBKZ LIKE MSKA-SOBKZ, "special stock indicator 'E'

NTGEW LIKE MARA-NTGEW,

MEINS LIKE MARA-MEINS,

GEWEI LIKE MARA-GEWEI,

END OF ITMSKA.

DATA: DESC LIKE MAKT-MAKTX.

WRITE: / 'ITEMID DESCRIPTION STOCK.QTY BATCH NO. NETWT TOTAL.WEIGHT '.

ULINE.

PARAMETERS : PLANT LIKE MSKA-WERKS OBLIGATORY.

SELECT AMATNR ACHARG AWERKS ACSPEM BNTGEW BMEINS B~GEWEI FROM MCHB AS A

INNER JOIN MARA AS B ON BMATNR = AMATNR

INTO TABLE ITAB WHERE AWERKS = PLANT AND ACSPEM > 0 .

  • READ TABLE ITMSKA WITH KEY MATNR = ITAB-ITEMID.

SELECT AMATNR ACHARG AWERKS AKASPE BNTGEW BMEINS B~GEWEI FROM MSKA AS A

INNER JOIN MARA AS B ON BMATNR = AMATNR

INTO TABLE ITMSKA WHERE AWERKS = PLANT AND AKASPE > 0 AND ASOBKZ = 'E' AND AMATNR = ITAB-ITEMID.

*LOOP AT ITMSKA.

  • READ TABLE ITMSKA INTO ITAB.

LOOP AT ITAB.

ITMSKA-MATNR = ITAB-ITEMID .

ITMSKA-CHARG = ITAB-CHARG .

ITMSKA-WERKS = ITAB-WERKS .

ITMSKA-KASPE = ITAB-CSPEM.

ITMSKA-NTGEW = ITAB-NTGEW.

ITMSKA-MEINS = ITAB-MEINS.

ITMSKA-GEWEI = ITAB-GEWEI.

SORT ITAB BY ITEMID.

IF ITAB-NTGEW <> 0 .

CALL FUNCTION 'ZGET_ITEM_WEIGHT'

EXPORTING

P_BUID = ITAB-WERKS

P_ITEMID = ITAB-ITEMID

P_QTY = ITAB-NTGEW

P_UOM = ITAB-GEWEI

P_UOM1 = 'KG'

IMPORTING

P_RETVAL = ITAB-WTKG.

ENDIF.

  • CONVERTING ITEM QTY IN KG

ITAB-WT = ITAB-STOCK.

IF ITAB-MEINS = 'G'.

ITAB-WT = ITAB-STOCK / 1000000.

ELSEIF ITAB-MEINS = 'KG'.

ITAB-WT = ITAB-STOCK / 1000.

ELSEIF ITAB-MEINS = 'TO'.

ITAB-WT = ITAB-STOCK * ITAB-WTKG / 1000.

ENDIF.

ITAB-TOTWT = ITAB-WTKG * ITAB-CSPEM.

APPEND ITAB.

SELECT SINGLE MAKTX FROM MAKT INTO DESC WHERE MATNR = ITAB-ITEMID.

WRITE:/ ITAB-ITEMID,15 DESC,50 ITAB-CSPEM,ITMSKA-KASPE ,ITAB-CHARG,ITAB-WTKG,ITab-TOTWT.

ENDLOOP.

Hi,

i making a report on Block stock in which i have to display the quantity values from 2 tables MCHB and MSKA. but i am not able to display both the values .plzz help me out i am really dipressed .plzz help me out.

&----


*& Report Z_BLOCK_STOCK_COPY

*&

&----


*&

*&

&----


REPORT Z_BLOCK_STOCK_COPY no standard page heading LINE-SIZE 350.

TABLES: MCHB,MARA,MSKA.

DATA: BEGIN OF ITAB OCCURS 0,

ITEMID LIKE MCHB-MATNR,

CHARG LIKE MCHB-CHARG,

WERKS LIKE MCHB-WERKS,

CSPEM LIKE MCHB-CSPEM,

NTGEW LIKE MARA-NTGEW,

MEINS LIKE MARA-MEINS,

GEWEI LIKE MARA-GEWEI,

WTKG LIKE MARA-NTGEW,

STOCK TYPE P LENGTH 10 DECIMALS 3,

KASPE LIKE MSKA-KASPE,

DESC LIKE MAKT-MAKTX,

TOTWT LIKE MCHB-CSPEM,

WT TYPE P LENGTH 12 DECIMALS 3,

END OF ITAB.

DATA: BEGIN OF ITMSKA OCCURS 0,

MATNR LIKE MSKA-MATNR,

CHARG LIKE MSKA-CHARG,

WERKS LIKE MSKA-WERKS,

KASPE LIKE MSKA-KASPE,

SOBKZ LIKE MSKA-SOBKZ, "special stock indicator 'E'

NTGEW LIKE MARA-NTGEW,

MEINS LIKE MARA-MEINS,

GEWEI LIKE MARA-GEWEI,

END OF ITMSKA.

DATA: DESC LIKE MAKT-MAKTX.

WRITE: / 'ITEMID DESCRIPTION STOCK.QTY BATCH NO. NETWT TOTAL.WEIGHT '.

ULINE.

PARAMETERS : PLANT LIKE MSKA-WERKS OBLIGATORY.

SELECT AMATNR ACHARG AWERKS ACSPEM BNTGEW BMEINS B~GEWEI FROM MCHB AS A

INNER JOIN MARA AS B ON BMATNR = AMATNR

INTO TABLE ITAB WHERE AWERKS = PLANT AND ACSPEM > 0 .

  • READ TABLE ITMSKA WITH KEY MATNR = ITAB-ITEMID.

SELECT AMATNR ACHARG AWERKS AKASPE BNTGEW BMEINS B~GEWEI FROM MSKA AS A

INNER JOIN MARA AS B ON BMATNR = AMATNR

INTO TABLE ITMSKA WHERE AWERKS = PLANT AND AKASPE > 0 AND ASOBKZ = 'E' AND AMATNR = ITAB-ITEMID.

*LOOP AT ITMSKA.

  • READ TABLE ITMSKA INTO ITAB.

LOOP AT ITAB.

ITMSKA-MATNR = ITAB-ITEMID .

ITMSKA-CHARG = ITAB-CHARG .

ITMSKA-WERKS = ITAB-WERKS .

ITMSKA-KASPE = ITAB-CSPEM.

ITMSKA-NTGEW = ITAB-NTGEW.

ITMSKA-MEINS = ITAB-MEINS.

ITMSKA-GEWEI = ITAB-GEWEI.

SORT ITAB BY ITEMID.

IF ITAB-NTGEW <> 0 .

CALL FUNCTION 'ZGET_ITEM_WEIGHT'

EXPORTING

P_BUID = ITAB-WERKS

P_ITEMID = ITAB-ITEMID

P_QTY = ITAB-NTGEW

P_UOM = ITAB-GEWEI

P_UOM1 = 'KG'

IMPORTING

P_RETVAL = ITAB-WTKG.

ENDIF.

  • CONVERTING ITEM QTY IN KG

ITAB-WT = ITAB-STOCK.

IF ITAB-MEINS = 'G'.

ITAB-WT = ITAB-STOCK / 1000000.

ELSEIF ITAB-MEINS = 'KG'.

ITAB-WT = ITAB-STOCK / 1000.

ELSEIF ITAB-MEINS = 'TO'.

ITAB-WT = ITAB-STOCK * ITAB-WTKG / 1000.

ENDIF.

ITAB-TOTWT = ITAB-WTKG * ITAB-CSPEM.

APPEND ITAB.

SELECT SINGLE MAKTX FROM MAKT INTO DESC WHERE MATNR = ITAB-ITEMID.

WRITE:/ ITAB-ITEMID,15 DESC,50 ITAB-CSPEM,ITMSKA-KASPE ,ITAB-CHARG,ITAB-WTKG,ITab-TOTWT.

ENDLOOP.

7 REPLIES 7
Read only

Former Member
0 Likes
909

Hai.

check the link .

http://www.saptechnical.com/index.html

Regards.

Sowjanya.B

Read only

Former Member
0 Likes
909

Hello

Add INTO CORRESPONDING FIELDS OF TABLE in your SELECT statements.

try this once.

&----


*& Report Z_BLOCK_STOCK_COPY

*&

&----


*&

*&

&----


REPORT Z_BLOCK_STOCK_COPY no standard page heading LINE-SIZE 350.

TABLES: mchb,mara,mska.

DATA: BEGIN OF itab OCCURS 0,

itemid LIKE mchb-matnr,

charg LIKE mchb-charg,

werks LIKE mchb-werks,

cspem LIKE mchb-cspem,

ntgew LIKE mara-ntgew,

meins LIKE mara-meins,

gewei LIKE mara-gewei,

wtkg LIKE mara-ntgew,

stock TYPE p LENGTH 10 DECIMALS 3,

kaspe LIKE mska-kaspe,

desc LIKE makt-maktx,

totwt LIKE mchb-cspem,

wt TYPE p LENGTH 12 DECIMALS 3,

END OF itab.

DATA: BEGIN OF itmska OCCURS 0,

matnr LIKE mska-matnr,

charg LIKE mska-charg,

werks LIKE mska-werks,

kaspe LIKE mska-kaspe,

sobkz LIKE mska-sobkz, "special stock indicator 'E'

ntgew LIKE mara-ntgew,

meins LIKE mara-meins,

gewei LIKE mara-gewei,

END OF itmska.

DATA: desc LIKE makt-maktx.

WRITE: / 'ITEMID DESCRIPTION STOCK.QTY BATCH NO. NETWT TOTAL.WEIGHT '.

ULINE.

PARAMETERS : plant LIKE mska-werks OBLIGATORY.

SELECT a~matnr

a~charg

a~werks

a~cspem

b~ntgew

b~meins

b~gewei

FROM mchb AS a

INNER JOIN mara AS b ON bmatnr = amatnr

INTO CORRESPONDING FIELDS OF TABLE itab

WHERE a~werks = plant

AND a~cspem > 0 .

  • read table itmska with key matnr = itab-itemid.

SELECT a~matnr

a~charg

a~werks

a~kaspe

b~ntgew

b~meins

b~gewei

FROM mska AS a

INNER JOIN mara AS b ON bmatnr = amatnr

INTO CORRESPONDING FIELDS OF TABLE itmska

WHERE a~werks = plant

AND a~kaspe > 0

AND a~sobkz = 'E'

AND a~matnr = itab-itemid.

*LOOP AT ITMSKA.

  • read table itmska into itab.

LOOP AT itab.

itmska-matnr = itab-itemid .

itmska-charg = itab-charg .

itmska-werks = itab-werks .

itmska-kaspe = itab-cspem.

itmska-ntgew = itab-ntgew.

itmska-meins = itab-meins.

itmska-gewei = itab-gewei.

SORT itab BY itemid.

IF itab-ntgew EQ 0.

CALL FUNCTION 'ZGET_ITEM_WEIGHT'

EXPORTING

p_buid = itab-werks

p_itemid = itab-itemid

p_qty = itab-ntgew

p_uom = itab-gewei

p_uom1 = 'KG'

IMPORTING

p_retval = itab-wtkg.

ENDIF.

  • converting item qty in kg

itab-wt = itab-stock.

IF itab-meins = 'G'.

itab-wt = itab-stock / 1000000.

ELSEIF itab-meins = 'KG'.

itab-wt = itab-stock / 1000.

ELSEIF itab-meins = 'TO'.

itab-wt = itab-stock * itab-wtkg / 1000.

ENDIF.

itab-totwt = itab-wtkg * itab-cspem.

APPEND itab.

SELECT SINGLE maktx FROM makt INTO desc WHERE matnr = itab-itemid.

WRITE:/ itab-itemid,15 desc,50 itab-cspem,itmska-kaspe ,itab-charg,itab-wtkg,itab-totwt.

ENDLOOP.

Hope its Useful..

Kota

Read only

Former Member
0 Likes
909

Hi

first comment READ TABLE ITMSKA INTO ITAB.

Why u put append ITAB statemnt inside loop . it will create problem , since u r adding wt value for each record of ITAB so make it modify itab, first of all

append itab. replace it with modify itab.

,and check r u printing quanity field in write statement.

2. use corresponding fields of table whereever join is used for getting correct value in all fields .

rewards point if helpful.

Edited by: neetu chhabra on Mar 7, 2008 6:55 AM

Read only

Former Member
0 Likes
909

Hi,

SELECT AMATNR ACHARG A~WERKS

ACSPEM BNTGEW B~MEINS

B~GEWEI

FROM MCHB AS A

INNER JOIN MARA AS B

ON AMATNR EQ BMATNR

INTO CORRESPONDING FIELDS OF TABLE ITAB

WHERE A~WERKS EQ PLANT AND

A~CSPEM > 0 .

SELECT AMATNR ACHARG A~WERKS

AKASPE BNTGEW B~MEINS

B~GEWEI

FROM MSKA AS A

INNER JOIN MARA AS B ON AMATNR = BMATNR

INTO CORRESPONDING FIELDS OF TABLE ITMSKA

FOR ALL ENTRIES IN ITAB

WHERE A~WERKS = PLANT AND

A~KASPE > 0 AND

A~SOBKZ = 'E' AND

A~MATNR = ITAB-ITEMID.

SORT ITAB BY ITEMID.

LOOP AT ITAB.

ITMSKA-MATNR = ITAB-ITEMID .

ITMSKA-CHARG = ITAB-CHARG .

ITMSKA-WERKS = ITAB-WERKS .

ITMSKA-KASPE = ITAB-CSPEM.

ITMSKA-NTGEW = ITAB-NTGEW.

ITMSKA-MEINS = ITAB-MEINS.

ITMSKA-GEWEI = ITAB-GEWEI.

IF ITAB-NTGEW EQ 0 .

CALL FUNCTION 'ZGET_ITEM_WEIGHT'

EXPORTING

P_BUID = ITAB-WERKS

P_ITEMID = ITAB-ITEMID

P_QTY = ITAB-NTGEW

P_UOM = ITAB-GEWEI

P_UOM1 = 'KG'

IMPORTING

P_RETVAL = ITAB-WTKG.

ENDIF.

CONVERTING ITEM QTY IN KG

ITAB-WT = ITAB-STOCK.

IF ITAB-MEINS = 'G'.

ITAB-WT = ITAB-STOCK / 1000000.

ELSEIF ITAB-MEINS = 'KG'.

ITAB-WT = ITAB-STOCK / 1000.

ELSEIF ITAB-MEINS = 'TO'.

ITAB-WT = ITAB-STOCK * ITAB-WTKG / 1000.

ENDIF.

ITAB-TOTWT = ITAB-WTKG * ITAB-CSPEM.

APPEND ITAB.

SELECT SINGLE MAKTX FROM MAKT INTO DESC WHERE MATNR = ITAB-ITEMID.

WRITE:/ ITAB-ITEMID,15 DESC,50 ITAB-CSPEM,ITMSKA-KASPE ,ITAB-CHARG,ITAB-WTKG,ITab-TOTWT.

ENDLOOP.

check all the code carefully and do the changes .

Read only

Former Member
0 Likes
909

Hi,

Please use the inner join with the two tables,

equating the common field in the table

Read only

Former Member
0 Likes
909

Hi,

DATA: DESC LIKE MAKT-MAKTX.

WRITE: / 'ITEMID DESCRIPTION STOCK.QTY BATCH NO. NETWT TOTAL.WEIGHT '.

ULINE.

PARAMETERS : PLANT LIKE MSKA-WERKS OBLIGATORY.

SELECT AMATNR ACHARG AWERKS ACSPEM BNTGEW BMEINS B~GEWEI FROM MCHB AS A

INNER JOIN MARA AS B ON BMATNR = AMATNR

INTO TABLE ITAB WHERE AWERKS = PLANT AND ACSPEM > 0 .

*READ TABLE ITMSKA WITH KEY MATNR = ITAB-ITEMID.

SELECT AMATNR ACHARG AWERKS AKASPE BNTGEW BMEINS B~GEWEI FROM MSKA AS A

INNER JOIN MARA AS B ON BMATNR = AMATNR

INTO TABLE ITMSKA for all entries in itab

WHERE AWERKS = PLANT AND AKASPE > 0 AND ASOBKZ = 'E' AND AMATNR = ITAB-ITEMID.

*LOOP AT ITMSKA.

READ TABLE ITMSKA INTO ITAB.

LOOP AT ITAB.

ITMSKA-MATNR = ITAB-ITEMID .

ITMSKA-CHARG = ITAB-CHARG .

ITMSKA-WERKS = ITAB-WERKS .

ITMSKA-KASPE = ITAB-CSPEM.

ITMSKA-NTGEW = ITAB-NTGEW.

ITMSKA-MEINS = ITAB-MEINS.

ITMSKA-GEWEI = ITAB-GEWEI.

SORT ITAB BY ITEMID.

IF ITAB-NTGEW 0 .

CALL FUNCTION 'ZGET_ITEM_WEIGHT'

EXPORTING

P_BUID = ITAB-WERKS

P_ITEMID = ITAB-ITEMID

P_QTY = ITAB-NTGEW

P_UOM = ITAB-GEWEI

P_UOM1 = 'KG'

IMPORTING

P_RETVAL = ITAB-WTKG.

ENDIF.

CONVERTING ITEM QTY IN KG

ITAB-WT = ITAB-STOCK.

IF ITAB-MEINS = 'G'.

ITAB-WT = ITAB-STOCK / 1000000.

ELSEIF ITAB-MEINS = 'KG'.

ITAB-WT = ITAB-STOCK / 1000.

ELSEIF ITAB-MEINS = 'TO'.

ITAB-WT = ITAB-STOCK * ITAB-WTKG / 1000.

ENDIF.

ITAB-TOTWT = ITAB-WTKG * ITAB-CSPEM.

APPEND ITAB.

SELECT SINGLE MAKTX FROM MAKT INTO DESC WHERE MATNR = ITAB-ITEMID.

WRITE:/ ITAB-ITEMID,15 DESC,50 ITAB-CSPEM,ITMSKA-KASPE ,ITAB-CHARG,ITAB-WTKG,ITab-TOTWT.

ENDLOOP.

Hope this will work

Regards

Shibin

Read only

dhruv_shah3
Active Contributor
0 Likes
909

Hi,

Use below program as the Reference......and you will find out abt Blocked Stock




REPORT  ZPA_SD_STOCK.

PARAMETERS:WERKS TYPE T001W-WERKS,
           LGORT TYPE T001L-LGORT,
           DATE TYPE SY-DATUM.

DATA: BEGIN OF IT_MCHB OCCURS 0,
         MATNR TYPE MCHB-MATNR,
         CHARG TYPE MCHB-CHARG,
         CLABS TYPE MCHB-CLABS,
         CSPEM TYPE MCHB-CSPEM,
      END OF IT_MCHB,

      BEGIN OF IT_MAKT OCCURS 0,
         MATNR TYPE MAKT-MATNR,
         MAKTX TYPE MAKT-MAKTX,
      END OF IT_MAKT,

      BEGIN OF IT_MARA OCCURS 0,
         MATNR TYPE MARA-MATNR,
         MTART TYPE MARA-MTART,
      END OF IT_MARA,

      BEGIN OF IT_MARM OCCURS 0,
         MATNR TYPE MARM-MATNR,
         UMREZ TYPE MARM-UMREZ,
         UMREN TYPE MARM-UMREN,
      END OF IT_MARM,

      BEGIN OF IT_QFINAL OCCURS 0,
         MATNR TYPE MCHB-MATNR,
         MAKTX TYPE MAKT-MAKTX,
         MTART TYPE MARA-MTART,
         CHARG TYPE MCHB-CHARG,
         CLABS TYPE MCHB-CLABS,
         CSPEM TYPE MCHB-CSPEM,
     END OF IT_QFINAL,

     BEGIN OF IT_SFINAL OCCURS 0,
         MATNR TYPE MCHB-MATNR,
         CFC1 TYPE MCHB-CLABS,
         CFC2 TYPE MCHB-CSPEM,
     END OF IT_SFINAL,

     BEGIN OF IT_FINAL OCCURS 0,
         MATNR TYPE MCHB-MATNR,
         MAKTX TYPE MAKT-MAKTX,
         MTART TYPE MARA-MTART,
         CHARG TYPE MCHB-CHARG,
         CLABS TYPE MCHB-CLABS,
         CFC1 TYPE MCHB-CLABS,
         CSPEM TYPE MCHB-CSPEM,
         CFC2 TYPE MCHB-CSPEM,
         TOT_QUN1 TYPE I,
         TOT_QUN2 TYPE I,
     END OF IT_FINAL.


****************************************************************************************************************
TYPE-POOLS: SLIS.
INCLUDE <ICON>.
*DATA: G_REPID LIKE SY-REPID.
DATA: GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
DATA: GT_HEADER TYPE SLIS_T_LISTHEADER.
DATA: GS_LAYOUT TYPE SLIS_LAYOUT_ALV.
DATA: GT_EVENTS TYPE SLIS_T_EVENT.

CONSTANTS:
FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE',
FORMNAME_END_OF_PAGE TYPE SLIS_FORMNAME VALUE 'END_OF_PAGE'.
*****************************************************************************************************************
INITIALIZATION.
*****************************************************************************************************************
  PERFORM BUILD_LAYOUT USING GS_LAYOUT.
  PERFORM BUILD_HEADER USING GT_HEADER[].
  PERFORM BUILD_COMMENTRY.
  PERFORM BUILD_EVENTTAB USING GT_EVENTS[].
  PERFORM FIELDCAT_INIT USING GT_FIELDCAT[].
******************************************************************************************************************
FORM BUILD_LAYOUT  USING RS_LAYOUT TYPE SLIS_LAYOUT_ALV.
  RS_LAYOUT-NO_INPUT = 'X'.
  RS_LAYOUT-ZEBRA = 'X'.
  RS_LAYOUT-COLWIDTH_OPTIMIZE = ' '.
  RS_LAYOUT-NO_COLHEAD = ' '.
  RS_LAYOUT-NO_VLINE = ' '.
  RS_LAYOUT-INFO_FIELDNAME = 'WS_COLOR'.
ENDFORM.
FORM BUILD_HEADER USING RT_HEADER TYPE SLIS_T_LISTHEADER.

  DATA: TP TYPE SLIS_LISTHEADER.
  DATA: TEXT(20) TYPE C,
        DT TYPE SY-DATUM.


  TP-TYP = 'H'.
  TP-INFO = 'Stock Report '.
  APPEND TP TO RT_HEADER.
  CLEAR TP.

  WRITE SY-DATUM TO DT DD/MM/YYYY.

  CONCATENATE 'DATE :' DT INTO TEXT.
  TP-TYP = 'S'.
  TP-INFO = TEXT.
  APPEND TP TO RT_HEADER.
  CLEAR TP.


ENDFORM.
FORM BUILD_COMMENTRY.

    CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
      IT_LIST_COMMENTARY = GT_HEADER[]
      I_LOGO             = 'VC-ERP'.

ENDFORM.
FORM BUILD_EVENTTAB USING LT_EVENTS TYPE SLIS_T_EVENT.
  DATA: LS_EVENT TYPE SLIS_ALV_EVENT.

  CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
       EXPORTING
            I_LIST_TYPE = 0
       IMPORTING
            ET_EVENTS   = LT_EVENTS.

  READ TABLE LT_EVENTS WITH KEY NAME =  SLIS_EV_TOP_OF_PAGE INTO LS_EVENT.
  IF SY-SUBRC = 0.
    LS_EVENT-FORM = FORMNAME_TOP_OF_PAGE.
    APPEND LS_EVENT TO LT_EVENTS.
  ENDIF.

  READ TABLE LT_EVENTS WITH KEY NAME =  SLIS_EV_END_OF_PAGE INTO LS_EVENT.
  IF SY-SUBRC = 0.
    LS_EVENT-FORM = FORMNAME_END_OF_PAGE.
    APPEND LS_EVENT TO LT_EVENTS.
  ENDIF.
ENDFORM.
FORM FIELDCAT_INIT USING RT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.

  DATA: LS_FIELDCAT TYPE SLIS_FIELDCAT_ALV.

  LS_FIELDCAT-FIELDNAME       =  'MATNR'.
  LS_FIELDCAT-SELTEXT_L       =  'Mterial no'.
  LS_FIELDCAT-KEY        =  'X'.
  LS_FIELDCAT-JUST = 'L'.
  APPEND LS_FIELDCAT TO RT_FIELDCAT.
  CLEAR LS_FIELDCAT.

  LS_FIELDCAT-FIELDNAME       =  'MAKTX'.
  LS_FIELDCAT-SELTEXT_L      =  'Material Description'.
  LS_FIELDCAT-KEY        =  'X'.
  LS_FIELDCAT-JUST = 'L'.
  APPEND LS_FIELDCAT TO RT_FIELDCAT.
  CLEAR LS_FIELDCAT.

  LS_FIELDCAT-FIELDNAME       =  'MTART'.
  LS_FIELDCAT-SELTEXT_L      =  'Material type'.
  APPEND LS_FIELDCAT TO RT_FIELDCAT.
  CLEAR LS_FIELDCAT.

  LS_FIELDCAT-FIELDNAME       =  'CHARG'.
  LS_FIELDCAT-SELTEXT_L      =  'Batch no'.
  APPEND LS_FIELDCAT TO RT_FIELDCAT.
  CLEAR LS_FIELDCAT.

  LS_FIELDCAT-FIELDNAME       =  'CLABS'.
  LS_FIELDCAT-SELTEXT_L      =  'Unrestricted-Use Stock'.
  APPEND LS_FIELDCAT TO RT_FIELDCAT.
  CLEAR LS_FIELDCAT.

  LS_FIELDCAT-FIELDNAME       =  'CFC1'.
  LS_FIELDCAT-SELTEXT_L      =  'CFC'.
  APPEND LS_FIELDCAT TO RT_FIELDCAT.
  CLEAR LS_FIELDCAT.

  LS_FIELDCAT-FIELDNAME       =  'CSPEM'.
  LS_FIELDCAT-SELTEXT_L      =  'Blocked Stock'.
  APPEND LS_FIELDCAT TO RT_FIELDCAT.
  CLEAR LS_FIELDCAT.

  LS_FIELDCAT-FIELDNAME       =  'CFC2'.
  LS_FIELDCAT-SELTEXT_L      =  'CFC'.
  APPEND LS_FIELDCAT TO RT_FIELDCAT.
  CLEAR LS_FIELDCAT.

  LS_FIELDCAT-FIELDNAME       =  'TOT_QUN1'.
  LS_FIELDCAT-SELTEXT_L      =  'Total Unrestricted-Use Stock'.
  APPEND LS_FIELDCAT TO RT_FIELDCAT.
  CLEAR LS_FIELDCAT.

  LS_FIELDCAT-FIELDNAME       =  'TOT_QUN2'.
  LS_FIELDCAT-SELTEXT_L      =  'Total Blocked Stock'.
  APPEND LS_FIELDCAT TO RT_FIELDCAT.

ENDFORM.

****************************************************************************************************************

START-OF-SELECTION.

  PERFORM DATA_SELECTION.
  PERFORM DATA_PROCESSING.
  PERFORM DATA_DISPLAY.

****************************************************************************************************************
FORM DATA_SELECTION.

SELECT MATNR CHARG CLABS CSPEM
FROM MCHB INTO TABLE IT_MCHB
WHERE WERKS = WERKS AND LGORT = LGORT.

*BREAK-POINT.

SELECT MATNR UMREN UMREZ FROM MARM INTO TABLE IT_MARM
FOR ALL ENTRIES IN IT_MCHB
WHERE MATNR = IT_MCHB-MATNR .

*BREAK-POINT.

SELECT MATNR MTART FROM MARA INTO TABLE IT_MARA
FOR ALL ENTRIES IN IT_MCHB
WHERE MATNR = IT_MCHB-MATNR AND MTART = 'HALB'.


BREAK-POINT.

SELECT MATNR MAKTX FROM MAKT INTO TABLE IT_MAKT
FOR ALL ENTRIES IN IT_MCHB
WHERE MATNR = IT_MCHB-MATNR AND SPRAS = 'EN'.

*BREAK-POINT.

ENDFORM.


FORM DATA_PROCESSING.

LOOP AT IT_MCHB.
  READ TABLE IT_MAKT WITH KEY MATNR = IT_MCHB-MATNR.
  READ TABLE IT_MARA WITH KEY MATNR = IT_MCHB-MATNR.
  IF SY-SUBRC = 0.
  IT_QFINAL-MATNR = IT_MCHB-MATNR.
  IT_QFINAL-MAKTX = IT_MAKT-MAKTX.
  IT_QFINAL-MTART = IT_MARA-MTART.
  IT_QFINAL-CHARG = IT_MCHB-CHARG.
  IT_QFINAL-CLABS = IT_MCHB-CLABS.
  IT_QFINAL-CSPEM = IT_MCHB-CSPEM.
  APPEND IT_QFINAL.
  ENDIF.
  CLEAR IT_QFINAL.

ENDLOOP.

LOOP AT IT_QFINAL.
READ TABLE IT_MARM WITH KEY MATNR = IT_QFINAL-MATNR.
IF SY-SUBRC = 0.
  IT_SFINAL-MATNR = IT_QFINAL-MATNR.
  IT_SFINAL-CFC1 =  ( IT_MARM-UMREN / IT_MARM-UMREZ ) * IT_QFINAL-CLABS.
  IT_SFINAL-CFC2 =  ( IT_MARM-UMREN / IT_MARM-UMREZ ) * IT_QFINAL-CSPEM.
  APPEND IT_SFINAL.
ENDIF.
CLEAR IT_SFINAL.

ENDLOOP.

LOOP AT IT_SFINAL.
  READ TABLE IT_QFINAL WITH KEY MATNR = IT_SFINAL-MATNR.
   IF SY-SUBRC = 0.
   IT_FINAL-MATNR = IT_QFINAL-MATNR.
   IT_FINAL-MAKTX = IT_QFINAL-MAKTX.
   IT_FINAL-MTART = IT_QFINAL-MTART.
   IT_FINAL-CHARG = IT_QFINAL-CHARG.
   IT_FINAL-CLABS = IT_QFINAL-CLABS.
   IT_FINAL-CFC1  = IT_SFINAL-CFC1.
   IT_FINAL-CSPEM = IT_QFINAL-CSPEM.
   IT_FINAL-CFC2  = IT_SFINAL-CFC2.
   IT_FINAL-TOT_QUN1 = IT_QFINAL-CLABS + IT_QFINAL-CSPEM.
   IT_FINAL-TOT_QUN2 = IT_SFINAL-CFC1 + IT_SFINAL-CFC2.
   APPEND IT_FINAL.
   ENDIF.
   CLEAR IT_FINAL.
ENDLOOP.

ENDFORM.

FORM DATA_DISPLAY.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
   EXPORTING
     I_CALLBACK_PROGRAM              = SY-REPID
     I_CALLBACK_TOP_OF_PAGE          = 'BUILD_COMMENTRY'
     IS_LAYOUT                       = GS_LAYOUT
     IT_FIELDCAT                     = GT_FIELDCAT[]
     I_SAVE                          = 'X'
    TABLES
      T_OUTTAB                       = IT_FINAL
   EXCEPTIONS
     PROGRAM_ERROR                   = 1
     OTHERS                          = 2.

  IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

ENDFORM.

HTH

Regards,

Dhruv Shah