2008 Mar 07 5:34 AM
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.
2008 Mar 07 5:40 AM
2008 Mar 07 5:47 AM
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
2008 Mar 07 5:50 AM
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
2008 Mar 07 5:52 AM
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 .
2008 Mar 07 5:54 AM
Hi,
Please use the inner join with the two tables,
equating the common field in the table
2008 Mar 07 5:56 AM
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
2008 Mar 07 5:58 AM
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