2007 Jul 19 3:00 PM
hi,
my question is :
create report which will give the existing stock for a material.the report should have a subtotal for stock for each storage location and grand total of the stock at the end of the plant.
plant data should start a newpage.
input : selection screen which will allow to select a range of materials.
table and fields:
mara-matnr,
makt-matkx(description),
marc-werks(plant),
mard-lgort,
output:
plant storage location material number description stock(unrestricted)
pls send start -of selection logic
if usefull pls send it urgently
thanx and regrads,
priya
2007 Jul 19 3:30 PM
see if this code helps you
REPORT YSG_MATSTK_REP LINE-SIZE 220
LINE-COUNT 50(5).
&----
*& DATA DECLARATION *
&----
TABLES: MARA, "GENERAL MASTER DATA
MARC, "PLANT DATA FOR MATERIAL
MARD, "STORAGE LOCATION DATA FOR MATERIAL
MBEW, "MATERIAL VALUATION
MVKE, "SALES DATA FOR MATERIAL
MAKT. "MATERIAL DESCRIPTION
DATA: BEGIN OF I_MARA OCCURS 0,
MATNR LIKE MARA-MATNR,"MATERIAL NUMBER
MBRSH LIKE MARA-MBRSH,"INDUSTRY SECTOR
MEINS LIKE MARA-MEINS,"BASE UNIT OF MEASURE
END OF I_MARA.
DATA: BEGIN OF I_MARC OCCURS 0,
MATNR LIKE MARC-MATNR,"MATERIAL NUMBER
WERKS LIKE MARC-WERKS,"PLANT
LVORM LIKE MARC-LVORM,"FLAG MATERIAL FOR DELETION AT PLANT
"LEVEL
PSTAT LIKE MARC-PSTAT,"MAINTENANCE STATUS
DISPO LIKE MARC-DISPO,"MRP CONTROLLER
END OF I_MARC.
DATA: BEGIN OF I_MAKT OCCURS 0,
MATNR LIKE MAKT-MATNR,"MATERIAL NUMBER
MAKTX LIKE MAKT-MAKTX,"MATERIAL DESCRIPTION
END OF I_MAKT.
DATA: BEGIN OF I_MVKE OCCURS 0,
MATNR LIKE MVKE-MATNR,"MATERIAL NUMBER
VKORG LIKE MVKE-VKORG,"SALES ORGANIZATION
VTWEG LIKE MVKE-VTWEG,"DISTRIBUTION CHANNEL
END OF I_MVKE.
DATA: BEGIN OF I_MARD OCCURS 0,
MATNR LIKE MARD-MATNR,"MATERIAL NUMBER
LGORT LIKE MARD-LGORT,"STORAGE LOCATION
LABST LIKE MARD-LABST,"VALUATED STOCK WITH UNRESTRICTED USE
END OF I_MARD.
DATA: BEGIN OF I_OUT OCCURS 0,
MATNR LIKE MARC-MATNR,
WERKS LIKE MARC-WERKS,
LVORM LIKE MARC-LVORM,
PSTAT LIKE MARC-PSTAT,
DISPO LIKE MARC-DISPO,
MBRSH LIKE MARA-MBRSH,
MEINS LIKE MARA-MEINS,
MAKTX LIKE MAKT-MAKTX,
VKORG LIKE MVKE-VKORG,
VTWEG LIKE MVKE-VTWEG,
LGORT LIKE MARD-LGORT,
LABST LIKE MARD-LABST,
END OF I_OUT.
DATA : TOT TYPE I. " TOT - TOTAL TO PRINT STOCK
&----
*& S E L E C T I O N - S C R E E N *
&----
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-100.
SELECT-OPTIONS: S_MATNR FOR MARA-MATNR OBLIGATORY.
PARAMETERS: P_WERKS LIKE MARC-WERKS OBLIGATORY.
SELECT-OPTIONS: S_LGORT FOR MARD-LGORT,
S_DISPO FOR MARC-DISPO.
SELECTION-SCREEN END OF BLOCK B1.
&----
*& I N I T I A L I Z A T I O N *
&----
INITIALIZATION.
S_MATNR-SIGN = 'I'.
S_MATNR-OPTION = 'EQ'.
S_MATNR-LOW = 'M-14'.
S_MATNR-HIGH = 'M-18'.
P_WERKS = '3000'.
S_LGORT-SIGN = 'I'.
S_LGORT-OPTION = 'EQ'.
S_LGORT-LOW = '0001'.
S_LGORT-HIGH = '0004'.
S_DISPO-SIGN = 'I'.
S_DISPO-OPTION = 'EQ'.
S_DISPO-LOW = '001'.
S_DISPO-HIGH = '002'.
APPEND S_DISPO.
APPEND S_LGORT.
APPEND S_MATNR.
CLEAR S_DISPO.
CLEAR S_LGORT.
CLEAR S_MATNR.
&----
*& S T A R T - O F - S E L E C T I O N *
&----
START-OF-SELECTION.
SELECT MATNR WERKS LVORM DISPO FROM MARC
INTO CORRESPONDING FIELDS OF TABLE I_MARC
WHERE WERKS EQ P_WERKS
AND MATNR IN S_MATNR
AND DISPO IN S_DISPO
AND WERKS = P_WERKS.
IF I_MARC[] IS INITIAL.
WRITE:/ 'NO MATCHING DATA AVAILABLE FROM MARC'.
EXIT.
ENDIF.
SELECT MATNR LGORT LABST FROM MARD INTO TABLE I_MARD
FOR ALL ENTRIES IN I_MARC
WHERE MATNR = I_MARC-MATNR
AND WERKS EQ P_WERKS
AND LGORT IN S_LGORT.
IF I_MARD[] IS INITIAL.
WRITE:/ 'NO MATCHING DATA AVAILABLE FROM MARD'.
EXIT.
ENDIF.
SELECT MATNR VKORG VTWEG FROM MVKE INTO TABLE I_MVKE
FOR ALL ENTRIES IN I_MARC
WHERE MATNR = I_MARC-MATNR.
IF I_MVKE[] IS INITIAL.
WRITE:/ 'NO MATCHING DATA AVAILABLE FROM MVKE'.
EXIT.
ENDIF.
LOOP AT I_MARC.
MOVE-CORRESPONDING I_MARC TO I_OUT.
CLEAR MARC.
SELECT SINGLE MATNR MBRSH MEINS FROM MARA
INTO CORRESPONDING FIELDS OF MARA
WHERE MATNR = I_OUT-MATNR.
IF SY-SUBRC = 0.
MOVE: MARA-MBRSH TO I_OUT-MBRSH,
MARA-MEINS TO I_OUT-MEINS.
ELSE.
CONTINUE.
ENDIF.
SELECT SINGLE MATNR MAKTX FROM MAKT
INTO CORRESPONDING FIELDS OF MAKT
WHERE MATNR = I_OUT-MATNR.
IF SY-SUBRC = 0.
MOVE: MAKT-MAKTX TO I_OUT-MAKTX.
ELSE.
CONTINUE.
ENDIF.
LOOP AT I_MARD WHERE MATNR = I_MARC-MATNR.
MOVE: I_MARD-LABST TO I_OUT-LABST,
I_MARD-LGORT TO I_OUT-LGORT.
APPEND I_OUT.
ENDLOOP.
LOOP AT I_MVKE WHERE MATNR = I_MARC-MATNR.
MOVE: I_MVKE-VKORG TO I_OUT-VKORG,
I_MVKE-VTWEG TO I_OUT-VTWEG.
APPEND I_OUT.
ENDLOOP.
CLEAR I_OUT.
ENDLOOP.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
FILENAME = 'C:\matstk.TXT'
FILETYPE = 'ASC'
TABLES
DATA_TAB = I_OUT.
&----
*& T O P - O F - P A G E *
&----
TOP-OF-PAGE.
WRITE:/ 'DATE:' ,SY-DATUM.
&----
*& E N D - O F - P A G E *
&----
END-OF-PAGE.
WRITE: / SY-ULINE,
/100 'PAGNO: ',SY-PAGNO,
SY-ULINE.
&----
*& E N D -- O F -- S E L E C T I O N *
&----
END-OF-SELECTION.
LOOP AT I_OUT.
AT FIRST.
WRITE 😕 'MATERIAL EXTRACTION REPORT',
SY-ULINE.
ENDAT.
WRITE:/ SY-VLINE,
I_OUT-MATNR,SY-VLINE,
I_OUT-MEINS,SY-VLINE,
I_OUT-WERKS,SY-VLINE,
I_OUT-LVORM,SY-VLINE,
I_OUT-PSTAT,SY-VLINE,
I_OUT-DISPO,SY-VLINE,
I_OUT-MBRSH,SY-VLINE,
I_OUT-MAKTX,SY-VLINE,
I_OUT-VKORG,SY-VLINE,
I_OUT-VTWEG,SY-VLINE,
I_OUT-LGORT,SY-VLINE,
I_OUT-LABST,SY-VLINE.
TOT = TOT + I_OUT-LABST.
AT NEW MATNR.
WRITE : 'NEW RECORD',
SY-VLINE.
ENDAT.
AT END OF LABST.
WRITE : 'STOCK = ',
TOT,
SY-VLINE,
SY-ULINE.
ENDAT.
AT LAST.
FORMAT COLOR 7 INTENSIFIED OFF.
WRITE : /159 'TOTAL STOCK = ',
TOT.
ENDAT.
ENDLOOP.
WRITE : /159 'TOTAL STOCK = ',
TOT.
regards,
srinivas
<b>*reward for useful answers*</b>
2007 Jul 19 3:10 PM
select-options: s_matnr for mara-matnr.
data: begin of itab occurs 0,
matnr type mard-matnr,
werks type mard-werks,
lgort type mard-lgort,
labst type mard-labst,
end of itab.
select matnr werks lgort labst from mard into table itAb
where matnr in s_matnr.
Regards,
Ravi
2007 Jul 19 3:24 PM
Hi Priya,
Make the Selection Criteria based on MATNR,WERKS,LGORT.
Make the Plant as Mandatory field if needed make the material no also mandatory.
<b>Selection:</b>
**Fetching Valuated stock
SELECT matnr werks lgort labst
FROM mard
INTO CORRESPONDING FIELDS OF TABLE i_mard
WHERE matnr IN s_matnr
AND werks EQ p_werks.
**Fetching Special stock from MKOL.
SELECT matnr werks lgort charg sobkz lifnr slabs
FROM mkol
INTO CORRESPONDING FIELDS OF TABLE i_mkol
FOR ALL ENTRIES IN i_mard
WHERE matnr EQ i_mard-matnr
AND werks EQ i_mard-werks
AND lgort EQ i_mard-lgort.
Loop through i_mard to sum up the valuated stock.
Loop through i_mkol to get the special stock.
If you want to get the stock, requirements of material plant wise use the Function module <b>MD_STOCK_REQUIREMENTS_LIST_API</b>.
Let me know if u need further clarification.
<b>Reward points.</b>
2007 Jul 19 3:28 PM
Hi Priya
I have written a report chk whether it is according to ur requirement....
REPORT ZSAMPLE message-id (zmessage).
*table declaration
tables : mara,marc,makt.
type-pool declaration
type-pools : slis,icon.
*table type specification
types : begin of ty_mara,
matnr type matnr,
end of ty_mara.
types : begin of ty_marc,
matnr type matnr,
werks type werks_d,
end of ty_marc.
types : begin of ty_makt,
matnr type matnr,
maktx type maktx,
end of ty_makt.
types : begin of ty_mard,
matnr type matnr,
lgort type lgort,
end of ty_mard.
types : begin of ty_final,
matnr type matnr,
werks type werks_d,
maktx type maktx,
lgort ty[e lgort,
end of ty_final.
*table type specification.
types : tt_mara type standard table of ty_mara,
tt_marc type standard table of ty_marc,
tt_makt type standard table of ty_makt,
tt_mard type standard table of ty_mard,
tt_final type standard table of ty_final.
*work area declaration.
data : wa_mara type ty_mara,
wa_marc type ty_marc,
wa_makt type ty_makt,
wa_mard type ty_mard,
wa_final type ty_final.
*internal table creation.
data : itab_mara type tt_mara,
itab_marc type tt_marc,
itab_makt type tt_makt,
itab_mard type tt_mard,
itab_final type tt_final.
*selection-screen
selection-screen : begin of block blk1 with frame title text-005.
parameters : p_matnr like mara-matnr .
select-options : s_werks for marc-werks .
data : gd_repid like sy-repid.
data : d_fieldcat type slis_t_fieldcat_alv,
d_fieldcat_wa type slis_fieldcat_alv.
data : t_header type slis_t_listheader,
wa_header type slis_listheader,
linecount(10) type c,
line(10) type c.
data : gd_layout type slis_layout_alv.
selection-screen : end of block blk1.
at selection-screen on s_werks.
select single * from marc where matnr = p_matnr and werks in s_werks.
if sy-subrc <> 0.
message e000(zmessage).
endif.
*begin of selection.
start-of-selection.
select matnr from mara into table itab_mara where matnr = p_matnr.
if not itab_mara is initial.
select matnr werks from marc into table itab_marc where werks in s_werks
and matnr = p_matnr.
if not itab_marc is initial.
select matnr maktx from makt into table itab_makt where matnr = p_matnr.
if not itab_mard is initial.
select matnr lgort from mard into table itab_mard where matnr = p_matnr.
endif.
endif.
endif.
end-of-selection.
end of selection.
*assigning current program name.
gd_repid = sy-repid.
*declaration of fields using fieldcatalog.
d_fieldcat_wa-fieldname = 'MATNR'.
d_fieldcat_wa-seltext_l = 'material number'.
d_fieldcat_wa-col_pos = 1.
d_fieldcat_wa-symbol = .
d_fieldcat_wa-emphasize = 'X'.
append d_fieldcat_wa to d_fieldcat.
clear d_fieldcat_wa.
d_fieldcat_wa-fieldname = 'MAKTX'.
d_fieldcat_wa-seltext_l = 'Description'.
d_fieldcat_wa-col_pos = 2.
append d_fieldcat_wa to d_fieldcat.
clear d_fieldcat_wa.
d_fieldcat_wa-fieldname = 'WERKS'.
d_fieldcat_wa-seltext_l = 'plant number'.
d_fieldcat_wa-col_pos = 3.
append d_fieldcat_wa to d_fieldcat.
clear d_fieldcat_wa.
d_fieldcat_wa-fieldname = 'QUANTITY'.
d_fieldcat_wa-seltext_l = 'quantity'.
d_fieldcat_wa-do_sum = 'X'.
d_fieldcat_wa-col_pos = 4.
append d_fieldcat_wa to d_fieldcat.
clear d_fieldcat_wa.
d_fieldcat_wa-fieldname = 'LGORT'.
d_fieldcat_wa-seltext_l = 'STORAGE LOCATION'.
d_fieldcat_wa-do_sum = 'X'.
d_fieldcat_wa-col_pos = 5.
append d_fieldcat_wa to d_fieldcat.
clear d_fieldcat_wa.
*call function module for display.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = ' '
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = gd_repid
I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'
I_CALLBACK_USER_COMMAND = ' '
I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE '
I_CALLBACK_HTML_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME =
I_BACKGROUND_ID = ' '
I_GRID_TITLE =
I_GRID_SETTINGS =
IS_LAYOUT = gd_layout
IT_FIELDCAT = d_fieldcat
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = 'X'
IS_VARIANT =
IT_EVENTS =
IT_EVENT_EXIT =
IS_PRINT =
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
I_HTML_HEIGHT_TOP = 0
I_HTML_HEIGHT_END = 0
IT_ALV_GRAPHICS =
IT_HYPERLINK =
IT_ADD_FIELDCAT =
IT_EXCEPT_QINFO =
IR_SALV_FULLSCREEN_ADAPTER =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = itab_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.
*LAYOUT SPECIFICATION
&----
*& Form set_pf_status
&----
text
----
-->RT_EXTAB text
----
form set_pf_status using rt_extab type slis_t_extab.
set pf-status 'NEW'.
endform. "set_pf_status
&----
*& Form top_of_page
&----
text
----
form top_of_page.
wa_header-typ = 'H'.
wa_header-info = 'ALV Report'.
append wa_header to t_header.
clear wa_header.
wa_header-typ = 'S'.
wa_header-key = 'Date :'.
concatenate Sy-datum+6(2) '.'
sy-datum+4(2) '.'
sy-datum(4) into wa_header-info.
append wa_header to t_header.
clear wa_header.
wa_header-typ = 'S'.
wa_header-key = 'Time :'.
concatenate Sy-uzeit(2) ':'
sy-uzeit+2(2) ':'
sy-uzeit+4(2) into wa_header-info.
append wa_header to t_header.
clear wa_header.
describe table itab_final lines line.
wa_header-typ ='A'.
linecount = line.
concatenate 'THe total no of records are:' linecount into wa_header-info separated by space.
append wa_header to t_header.
clear wa_header.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = t_header
I_LOGO = 'ZPICTURES'
I_END_OF_LIST_GRID =
I_ALV_FORM =
.
endform. "top_of_page
form gd_layout.
gd_layout-edit = 'X'.
gd_layout-zebra = 'X'.
*gd_layout-no_hotspot = 'X'.
*gd_layout-f2code = 'DISP'.
*gd_layout-colwidth_optimize = 'X'.
endform. "gd_layout
REWARD IF USEFUL....!!
2007 Jul 19 3:30 PM
see if this code helps you
REPORT YSG_MATSTK_REP LINE-SIZE 220
LINE-COUNT 50(5).
&----
*& DATA DECLARATION *
&----
TABLES: MARA, "GENERAL MASTER DATA
MARC, "PLANT DATA FOR MATERIAL
MARD, "STORAGE LOCATION DATA FOR MATERIAL
MBEW, "MATERIAL VALUATION
MVKE, "SALES DATA FOR MATERIAL
MAKT. "MATERIAL DESCRIPTION
DATA: BEGIN OF I_MARA OCCURS 0,
MATNR LIKE MARA-MATNR,"MATERIAL NUMBER
MBRSH LIKE MARA-MBRSH,"INDUSTRY SECTOR
MEINS LIKE MARA-MEINS,"BASE UNIT OF MEASURE
END OF I_MARA.
DATA: BEGIN OF I_MARC OCCURS 0,
MATNR LIKE MARC-MATNR,"MATERIAL NUMBER
WERKS LIKE MARC-WERKS,"PLANT
LVORM LIKE MARC-LVORM,"FLAG MATERIAL FOR DELETION AT PLANT
"LEVEL
PSTAT LIKE MARC-PSTAT,"MAINTENANCE STATUS
DISPO LIKE MARC-DISPO,"MRP CONTROLLER
END OF I_MARC.
DATA: BEGIN OF I_MAKT OCCURS 0,
MATNR LIKE MAKT-MATNR,"MATERIAL NUMBER
MAKTX LIKE MAKT-MAKTX,"MATERIAL DESCRIPTION
END OF I_MAKT.
DATA: BEGIN OF I_MVKE OCCURS 0,
MATNR LIKE MVKE-MATNR,"MATERIAL NUMBER
VKORG LIKE MVKE-VKORG,"SALES ORGANIZATION
VTWEG LIKE MVKE-VTWEG,"DISTRIBUTION CHANNEL
END OF I_MVKE.
DATA: BEGIN OF I_MARD OCCURS 0,
MATNR LIKE MARD-MATNR,"MATERIAL NUMBER
LGORT LIKE MARD-LGORT,"STORAGE LOCATION
LABST LIKE MARD-LABST,"VALUATED STOCK WITH UNRESTRICTED USE
END OF I_MARD.
DATA: BEGIN OF I_OUT OCCURS 0,
MATNR LIKE MARC-MATNR,
WERKS LIKE MARC-WERKS,
LVORM LIKE MARC-LVORM,
PSTAT LIKE MARC-PSTAT,
DISPO LIKE MARC-DISPO,
MBRSH LIKE MARA-MBRSH,
MEINS LIKE MARA-MEINS,
MAKTX LIKE MAKT-MAKTX,
VKORG LIKE MVKE-VKORG,
VTWEG LIKE MVKE-VTWEG,
LGORT LIKE MARD-LGORT,
LABST LIKE MARD-LABST,
END OF I_OUT.
DATA : TOT TYPE I. " TOT - TOTAL TO PRINT STOCK
&----
*& S E L E C T I O N - S C R E E N *
&----
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-100.
SELECT-OPTIONS: S_MATNR FOR MARA-MATNR OBLIGATORY.
PARAMETERS: P_WERKS LIKE MARC-WERKS OBLIGATORY.
SELECT-OPTIONS: S_LGORT FOR MARD-LGORT,
S_DISPO FOR MARC-DISPO.
SELECTION-SCREEN END OF BLOCK B1.
&----
*& I N I T I A L I Z A T I O N *
&----
INITIALIZATION.
S_MATNR-SIGN = 'I'.
S_MATNR-OPTION = 'EQ'.
S_MATNR-LOW = 'M-14'.
S_MATNR-HIGH = 'M-18'.
P_WERKS = '3000'.
S_LGORT-SIGN = 'I'.
S_LGORT-OPTION = 'EQ'.
S_LGORT-LOW = '0001'.
S_LGORT-HIGH = '0004'.
S_DISPO-SIGN = 'I'.
S_DISPO-OPTION = 'EQ'.
S_DISPO-LOW = '001'.
S_DISPO-HIGH = '002'.
APPEND S_DISPO.
APPEND S_LGORT.
APPEND S_MATNR.
CLEAR S_DISPO.
CLEAR S_LGORT.
CLEAR S_MATNR.
&----
*& S T A R T - O F - S E L E C T I O N *
&----
START-OF-SELECTION.
SELECT MATNR WERKS LVORM DISPO FROM MARC
INTO CORRESPONDING FIELDS OF TABLE I_MARC
WHERE WERKS EQ P_WERKS
AND MATNR IN S_MATNR
AND DISPO IN S_DISPO
AND WERKS = P_WERKS.
IF I_MARC[] IS INITIAL.
WRITE:/ 'NO MATCHING DATA AVAILABLE FROM MARC'.
EXIT.
ENDIF.
SELECT MATNR LGORT LABST FROM MARD INTO TABLE I_MARD
FOR ALL ENTRIES IN I_MARC
WHERE MATNR = I_MARC-MATNR
AND WERKS EQ P_WERKS
AND LGORT IN S_LGORT.
IF I_MARD[] IS INITIAL.
WRITE:/ 'NO MATCHING DATA AVAILABLE FROM MARD'.
EXIT.
ENDIF.
SELECT MATNR VKORG VTWEG FROM MVKE INTO TABLE I_MVKE
FOR ALL ENTRIES IN I_MARC
WHERE MATNR = I_MARC-MATNR.
IF I_MVKE[] IS INITIAL.
WRITE:/ 'NO MATCHING DATA AVAILABLE FROM MVKE'.
EXIT.
ENDIF.
LOOP AT I_MARC.
MOVE-CORRESPONDING I_MARC TO I_OUT.
CLEAR MARC.
SELECT SINGLE MATNR MBRSH MEINS FROM MARA
INTO CORRESPONDING FIELDS OF MARA
WHERE MATNR = I_OUT-MATNR.
IF SY-SUBRC = 0.
MOVE: MARA-MBRSH TO I_OUT-MBRSH,
MARA-MEINS TO I_OUT-MEINS.
ELSE.
CONTINUE.
ENDIF.
SELECT SINGLE MATNR MAKTX FROM MAKT
INTO CORRESPONDING FIELDS OF MAKT
WHERE MATNR = I_OUT-MATNR.
IF SY-SUBRC = 0.
MOVE: MAKT-MAKTX TO I_OUT-MAKTX.
ELSE.
CONTINUE.
ENDIF.
LOOP AT I_MARD WHERE MATNR = I_MARC-MATNR.
MOVE: I_MARD-LABST TO I_OUT-LABST,
I_MARD-LGORT TO I_OUT-LGORT.
APPEND I_OUT.
ENDLOOP.
LOOP AT I_MVKE WHERE MATNR = I_MARC-MATNR.
MOVE: I_MVKE-VKORG TO I_OUT-VKORG,
I_MVKE-VTWEG TO I_OUT-VTWEG.
APPEND I_OUT.
ENDLOOP.
CLEAR I_OUT.
ENDLOOP.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
FILENAME = 'C:\matstk.TXT'
FILETYPE = 'ASC'
TABLES
DATA_TAB = I_OUT.
&----
*& T O P - O F - P A G E *
&----
TOP-OF-PAGE.
WRITE:/ 'DATE:' ,SY-DATUM.
&----
*& E N D - O F - P A G E *
&----
END-OF-PAGE.
WRITE: / SY-ULINE,
/100 'PAGNO: ',SY-PAGNO,
SY-ULINE.
&----
*& E N D -- O F -- S E L E C T I O N *
&----
END-OF-SELECTION.
LOOP AT I_OUT.
AT FIRST.
WRITE 😕 'MATERIAL EXTRACTION REPORT',
SY-ULINE.
ENDAT.
WRITE:/ SY-VLINE,
I_OUT-MATNR,SY-VLINE,
I_OUT-MEINS,SY-VLINE,
I_OUT-WERKS,SY-VLINE,
I_OUT-LVORM,SY-VLINE,
I_OUT-PSTAT,SY-VLINE,
I_OUT-DISPO,SY-VLINE,
I_OUT-MBRSH,SY-VLINE,
I_OUT-MAKTX,SY-VLINE,
I_OUT-VKORG,SY-VLINE,
I_OUT-VTWEG,SY-VLINE,
I_OUT-LGORT,SY-VLINE,
I_OUT-LABST,SY-VLINE.
TOT = TOT + I_OUT-LABST.
AT NEW MATNR.
WRITE : 'NEW RECORD',
SY-VLINE.
ENDAT.
AT END OF LABST.
WRITE : 'STOCK = ',
TOT,
SY-VLINE,
SY-ULINE.
ENDAT.
AT LAST.
FORMAT COLOR 7 INTENSIFIED OFF.
WRITE : /159 'TOTAL STOCK = ',
TOT.
ENDAT.
ENDLOOP.
WRITE : /159 'TOTAL STOCK = ',
TOT.
regards,
srinivas
<b>*reward for useful answers*</b>