‎2007 Aug 03 2:45 PM
Hi all,
The fn mod "RS_VARI_V_LAST_MONTH" when exe in se37 it is giving previous month .
when called in se38 wht do we need to pass to the table parameters there.
Please help it's an urgent requirement.
Regards,
kb
‎2007 Aug 03 2:50 PM
Hi,
Read the first and last date for the previous month
CALL FUNCTION 'RS_VARI_V_LAST_MONTH'
TABLES
p_datetab = t_date1
p_intrange = s_interchange.
Read table for the date range of the previous month
READ TABLE t_date1 INTO s_date2 INDEX 1 .
IF sy-subrc = 0 .
Set the select option value
s_date-sign = c_i .
s_date-option = c_bt.
s_date-low = s_date2-low .
s_date-high = s_date2-high .
APPEND s_date TO rt_date .
CLEAR s_date .
Regards
Sudheer
‎2007 Aug 03 2:49 PM
no need to pass anything to this FM...
also, if u want u can pass date to low vaue of the P_DATETAB data.
‎2007 Aug 03 2:50 PM
Hi,
Read the first and last date for the previous month
CALL FUNCTION 'RS_VARI_V_LAST_MONTH'
TABLES
p_datetab = t_date1
p_intrange = s_interchange.
Read table for the date range of the previous month
READ TABLE t_date1 INTO s_date2 INDEX 1 .
IF sy-subrc = 0 .
Set the select option value
s_date-sign = c_i .
s_date-option = c_bt.
s_date-low = s_date2-low .
s_date-high = s_date2-high .
APPEND s_date TO rt_date .
CLEAR s_date .
Regards
Sudheer
‎2007 Aug 03 2:54 PM
‎2007 Aug 03 2:59 PM
‎2007 Aug 03 3:01 PM
see how the FM is used in this sample code
************************************************************************
Program Name : ZMBTEST009AB
Author :
Date : 08/04/2003
Description : List material movements by date and type
************************************************************************
Modification Log
Author Date Change Request Description
SKM 01/05/2005 DEVK921735 Enable selection by manufacturer.
************************************************************************
REPORT ZMBTEST009 NO STANDARD PAGE HEADING LINE-SIZE 255.
TABLES: MARA, LFA1, MSEG, MKPF, MAKT, MBEW, MVKE, MARD, LQUA.
SELECTION-SCREEN BEGIN OF BLOCK MATT1 WITH FRAME TITLE TEXT-003.
SELECT-OPTIONS: SO_DATE FOR SY-DATUM OBLIGATORY.
SELECT-OPTIONS: SO_MATNR FOR MARA-MATNR.
SELECT-OPTIONS: SO_LABOR FOR MARA-LABOR DEFAULT 'ST'.
SELECT-OPTIONS: SO_MATKL FOR MARA-MATKL. "obligatory.
SELECT-OPTIONS: SO_PRDHA FOR MARA-PRDHA.
SELECT-OPTIONS: SO_MFRNR FOR MARA-MFRNR.
SELECT-OPTIONS: SO_MSTAE FOR MARA-MSTAE.
SELECT-OPTIONS: SO_BWART FOR MSEG-BWART.
SELECT-OPTIONS: SO_BUKRS FOR MSEG-BUKRS DEFAULT '0010'. " obligatory.
SELECT-OPTIONS: SO_MVGR5 FOR MVKE-MVGR5.
PARAMETER: P_WERKS LIKE MSEG-WERKS DEFAULT '1003'. " obligatory.
SELECTION-SCREEN END OF BLOCK MATT1.
SELECTION-SCREEN BEGIN OF BLOCK MATT2 WITH FRAME TITLE TEXT-001.
PARAMETER: P_DEAD AS CHECKBOX.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(79) TEXT-002.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK MATT2.
DATA: W_DEAD(1).
DATA: BEGIN OF ITAB OCCURS 0,
MATNR LIKE MARA-MATNR, "Material number
MATNR2 LIKE MSEG-MATNR, "MSEG material number
MFRNR LIKE MARA-MFRNR, "Vendor
LABOR LIKE MARA-LABOR, "Lab office
MATKL LIKE MARA-MATKL, "Material group
PRDHA LIKE MARA-PRDHA, "Product hierarchy
MSTAE LIKE MARA-MSTAE, "X-Plant status
BWART LIKE MSEG-BWART, "Movement type
BUKRS LIKE MSEG-BUKRS, "Company code
WERKS LIKE MSEG-WERKS, "Plant
MEINS LIKE MARA-MEINS, "Unit of measure
NAME1(26), "Vendor name
MENGE(10), "Quantity
BUDAT LIKE MKPF-BUDAT, "Posting date
MAKTX LIKE MAKT-MAKTX, "Material description
LABST LIKE MARD-LABST, "Quantity On-Hand
VERPR LIKE MBEW-VERPR, "Moving average price
MVGR5 LIKE MVKE-MVGR5, "Material group 5 (salesperson)
LGORT LIKE MSEG-LGORT, "Storage Location
MFRPN LIKE MARA-MFRPN, "Mfr part number
LGPLA LIKE LQUA-LGPLA, "Storage bin
LGTYP LIKE LQUA-LGTYP, "Storage type
BDATU LIKE LQUA-BDATU, "Date of last movement
MBLNR LIKE MSEG-MBLNR, "Document number
W_DEAD(1). "Indicates dead item or not
DATA: END OF ITAB.
DATA: BEGIN OF T_MARA OCCURS 100.
INCLUDE STRUCTURE MARA.
DATA: END OF T_MARA.
*
DATA: BEGIN OF T_MAKT OCCURS 100.
INCLUDE STRUCTURE MAKT.
DATA: END OF T_MAKT.
*
DATA: BEGIN OF T_MARD OCCURS 100.
INCLUDE STRUCTURE MARD.
DATA: END OF T_MARD.
*
DATA: BEGIN OF T_MBEW OCCURS 100.
INCLUDE STRUCTURE MBEW.
DATA: END OF T_MBEW.
*
DATA: BEGIN OF T_MVKE OCCURS 100.
INCLUDE STRUCTURE MVKE.
DATA: END OF T_MVKE.
*
DATA: BEGIN OF T_LFA1 OCCURS 100.
INCLUDE STRUCTURE LFA1.
DATA: END OF T_LFA1.
*
DATA: BEGIN OF T_LQUA OCCURS 100.
INCLUDE STRUCTURE LQUA.
DATA: END OF T_LQUA.
DATA: WA_UU LIKE MARD-LABST. "Stock for all storage locations
DATA: WA_BUDAT LIKE MKPF-BUDAT. "Last material movement date
DATA: WA_BWART LIKE MSEG-BWART.
DATA: WA_BUKRS LIKE MSEG-BUKRS.
DATA: WA_WERKS LIKE MSEG-WERKS.
DATA: WA_MENGE LIKE MSEG-MENGE.
DATA: WA_MBLNR LIKE MSEG-MBLNR.
INITIALIZATION.
Calculate 3 months range.
DATA: BEGIN OF T_DATRANGE OCCURS 0.
INCLUDE STRUCTURE RSDATRANGE.
DATA: END OF T_DATRANGE.
DATA: BEGIN OF T_INTRANGE OCCURS 0.
INCLUDE STRUCTURE RSINTRANGE.
DATA: END OF T_INTRANGE.
<b>CALL FUNCTION 'RS_VARI_V_LAST_MONTH'
TABLES
P_DATETAB = T_DATRANGE
P_INTRANGE = T_INTRANGE
EXCEPTIONS
OTHERS = 1.</b>
DATA: W_DATEXT LIKE SY-DATUM.
DATA: W_DATIMP LIKE T_DATRANGE-HIGH.
DATA: W_MONTH TYPE P.
W_DATEXT = SY-DATUM.
W_MONTH = -3.
CALL FUNCTION 'CALCULATE_DATE'
EXPORTING
days = '0'
MONTHS = W_MONTH
START_DATE = W_DATEXT
IMPORTING
RESULT_DATE = W_DATIMP
EXCEPTIONS
OTHERS = 1.
SO_DATE-LOW = W_DATIMP.
SO_DATE-HIGH = SY-DATUM.
APPEND SO_DATE.
TOP-OF-PAGE.
FORMAT COLOR 5 INTENSIFIED OFF.
if p_dead = space.
WRITE: / 'Material', AT 20 SY-VLINE,
AT 21 'Material Description', AT 60 SY-VLINE,
AT 61 'Vnd #', AT 71 SY-VLINE,
AT 72 'Vnd Name', AT 98 SY-VLINE,
AT 99 'L/O', AT 104 SY-VLINE,
AT 105 'Hier', AT 124 SY-VLINE,
AT 125 'X-Pl', AT 130 SY-VLINE,
AT 131 'Move', AT 136 SY-VLINE,
AT 137 'Code', AT 142 SY-VLINE,
AT 143 'Plnt', AT 148 SY-VLINE,
AT 154 'Qty', AT 161 SY-VLINE,
AT 162 'UOM', AT 166 SY-VLINE,
AT 167 'Date', AT 178 SY-VLINE,
AT 179 'Document ', AT 190 SY-VLINE,
AT 191 'Group', AT 197 SY-VLINE,
AT 204 'On Hand', AT 216 SY-VLINE,
AT 217 'UOM', AT 221 SY-VLINE,
AT 233 'MAP($)', AT 239 SY-VLINE,
AT 240 'MG5', AT 244 SY-VLINE,
AT 245 'Bin #', AT 255 SY-VLINE.
START-OF-SELECTION.
PERFORM GET_DATA.
PERFORM WRITE_ITAB.
&----
*& Form GET_DATA
&----
FORM GET_DATA.
SELECT * FROM MARA INTO TABLE T_MARA
WHERE MATNR IN SO_MATNR "Material
AND LABOR IN SO_LABOR "Lab/Office
AND MFRNR IN SO_MFRNR "Manufacturer number
AND PRDHA IN SO_PRDHA "Product hierarchy
AND MSTAE IN SO_MSTAE "X-Plant status
AND MATKL IN SO_MATKL. "Material group
SORT T_MARA BY MATNR.
SELECT * FROM MAKT INTO TABLE T_MAKT "Material description
FOR ALL ENTRIES IN T_MARA
WHERE MATNR = T_MARA-MATNR.
SELECT * FROM MARD INTO TABLE T_MARD "Unrestricted stock
FOR ALL ENTRIES IN T_MARA
WHERE MATNR = T_MARA-MATNR
AND WERKS = P_WERKS.
SELECT * FROM MVKE INTO TABLE T_MVKE "Vendor (MatGrp 5)
FOR ALL ENTRIES IN T_MARA
WHERE MATNR = T_MARA-MATNR.
SELECT * FROM LQUA INTO TABLE T_LQUA "Date of last movement
FOR ALL ENTRIES IN T_MARA
WHERE MATNR = T_MARA-MATNR.
SELECT * FROM MBEW INTO TABLE T_MBEW "Moving Avg. Price
FOR ALL ENTRIES IN T_MARA
WHERE MATNR = T_MARA-MATNR
AND BWKEY IN SO_BWART.
SELECT * FROM LFA1 INTO TABLE T_LFA1 "Vendor Name
FOR ALL ENTRIES IN T_MARA
WHERE LIFNR = T_MARA-MFRNR.
SORT T_MARA BY MATNR.
SORT T_MAKT BY MATNR.
SORT T_MARD BY MATNR.
SORT T_MVKE BY MATNR.
SORT T_LQUA BY MATNR.
SORT T_MBEW BY MATNR.
SORT T_LFA1 BY LIFNR.
LOOP AT T_MARA.
CLEAR: T_MAKT, T_MARD, T_MVKE, T_LQUA, T_MBEW, T_LFA1, WA_UU.
LOOP AT T_MAKT WHERE MATNR = T_MARA-MATNR.
ENDLOOP.
LOOP AT T_MARD WHERE MATNR = T_MARA-MATNR.
WA_UU = WA_UU + T_MARD-LABST. "Stock for all locations in plant
ENDLOOP.
LOOP AT T_MVKE WHERE MATNR = T_MARA-MATNR.
ENDLOOP.
LOOP AT T_LQUA WHERE MATNR = T_MARA-MATNR.
ENDLOOP.
LOOP AT T_MBEW WHERE MATNR = T_MARA-MATNR.
ENDLOOP.
LOOP AT T_LFA1 WHERE LIFNR = T_MARA-MFRNR.
ENDLOOP.
Determine if a movement exists during the specified time frame.
Retrieve the last movement.
CLEAR: MSEG, MKPF, WA_BUDAT, WA_BWART, WA_BUKRS, WA_WERKS, WA_MENGE,
WA_MBLNR.
SELECT * FROM MSEG "Material # to compare
WHERE MATNR = T_MARA-MATNR "Movement type
AND WERKS = P_WERKS "Plant/Company code
AND BUKRS IN SO_BUKRS "Quantity
AND BWART IN SO_BWART. "Document number
IF SY-SUBRC = 0.
SELECT SINGLE * FROM MKPF "Posting Date
WHERE BUDAT IN SO_DATE
AND MBLNR = MSEG-MBLNR
AND MJAHR = MSEG-MJAHR.
IF SY-SUBRC = 0.
if mkpf-budat >= wa_budat.
WA_BUDAT = MKPF-BUDAT.
WA_BWART = MSEG-BWART.
WA_BUKRS = MSEG-BUKRS.
WA_WERKS = MSEG-WERKS.
WA_MENGE = MSEG-MENGE.
WA_MBLNR = MSEG-MBLNR.
ENDIF.
ENDIF.
endif.
ENDSELECT.
PERFORM APPEND_ITAB.
ENDLOOP.
ENDFORM. " GET_DATA
&----
*& Form APPEND_ITAB
&----
FORM APPEND_ITAB.
CLEAR ITAB.
ITAB-MATNR = T_MARA-MATNR.
ITAB-MFRNR = T_MARA-MFRNR.
ITAB-LABOR = T_MARA-LABOR.
ITAB-PRDHA = T_MARA-PRDHA.
ITAB-MSTAE = T_MARA-MSTAE.
ITAB-BWART = WA_BWART.
ITAB-BUKRS = WA_BUKRS.
ITAB-WERKS = WA_WERKS.
ITAB-MEINS = T_MARA-MEINS.
ITAB-MENGE = WA_MENGE.
ITAB-NAME1 = T_LFA1-NAME1.
ITAB-MBLNR = WA_MBLNR.
ITAB-BUDAT = WA_BUDAT.
ITAB-MAKTX = T_MAKT-MAKTX.
ITAB-MATKL = T_MARA-MATKL.
ITAB-MFRPN = T_MARA-MFRPN.
ITAB-VERPR = T_MBEW-VERPR.
ITAB-MVGR5 = T_MVKE-MVGR5.
ITAB-LGTYP = T_LQUA-LGTYP.
ITAB-LGPLA = T_LQUA-LGPLA.
ITAB-BDATU = T_LQUA-BDATU.
ITAB-LABST = WA_UU.
IF NOT WA_BUDAT IS INITIAL.
ITAB-W_DEAD = ' '.
ELSE.
ITAB-W_DEAD = 'X'.
ENDIF.
APPEND ITAB.
ENDFORM. " APPEND_ITAB
&----
*& Form WRITE_ITAB
&----
FORM WRITE_ITAB.
SORT ITAB BY MATNR BWART BUDAT.
LOOP AT ITAB.
Write all records with movement existance.
IF P_DEAD = SPACE
AND ITAB-W_DEAD IS INITIAL.
FORMAT COLOR 2 INTENSIFIED OFF.
WRITE: / ITAB-MATNR, AT 20 SY-VLINE,
AT 21 ITAB-MAKTX, AT 60 SY-VLINE,
AT 61 ITAB-MFRNR, AT 71 SY-VLINE,
AT 72 ITAB-NAME1, AT 98 SY-VLINE,
AT 99 ITAB-LABOR, AT 104 SY-VLINE,
AT 105 ITAB-PRDHA, AT 124 SY-VLINE,
AT 125 ITAB-MSTAE, AT 130 SY-VLINE,
AT 131 ITAB-BWART, AT 136 SY-VLINE,
AT 137 ITAB-BUKRS, AT 142 SY-VLINE,
AT 143 ITAB-WERKS, AT 148 SY-VLINE,
AT 152 ITAB-MENGE, AT 161 SY-VLINE,
AT 162 ITAB-MEINS, AT 166 SY-VLINE,
AT 167 ITAB-BUDAT, AT 178 SY-VLINE,
AT 179 ITAB-MBLNR, AT 190 SY-VLINE,
AT 193 ITAB-MATKL, AT 197 SY-VLINE,
AT 198 ITAB-LABST, AT 216 SY-VLINE,
AT 217 ITAB-MEINS, AT 221 SY-VLINE,
AT 224 ITAB-VERPR, AT 239 SY-VLINE,
AT 240 ITAB-MVGR5, AT 244 SY-VLINE,
AT 245 ITAB-LGPLA, AT 255 SY-VLINE.
Write only those records without a movement and having stock.
ELSE.
IF ITAB-W_DEAD = 'X'
AND ITAB-LABST <> 0.
FORMAT COLOR 2 INTENSIFIED OFF.
WRITE: / ITAB-MATNR, AT 20 SY-VLINE,
AT 21 ITAB-MAKTX, AT 60 SY-VLINE,
AT 61 ITAB-MFRNR, AT 71 SY-VLINE,
AT 72 ITAB-NAME1, AT 98 SY-VLINE,
AT 99 ITAB-LABOR, AT 104 SY-VLINE,
AT 105 ITAB-PRDHA, AT 124 SY-VLINE,
AT 125 ITAB-MSTAE, AT 130 SY-VLINE,
AT 131 ITAB-BWART, AT 136 SY-VLINE,
AT 137 ITAB-BUKRS, AT 142 SY-VLINE,
AT 143 ITAB-WERKS, AT 148 SY-VLINE,
AT 152 ITAB-MENGE, AT 161 SY-VLINE,
AT 162 ITAB-MEINS, AT 166 SY-VLINE,
AT 167 ITAB-BUDAT, AT 178 SY-VLINE,
AT 179 ITAB-MBLNR, AT 190 SY-VLINE,
AT 193 ITAB-MATKL, AT 197 SY-VLINE,
AT 198 ITAB-LABST, AT 216 SY-VLINE,
AT 217 ITAB-MEINS, AT 221 SY-VLINE,
AT 224 ITAB-VERPR, AT 239 SY-VLINE,
AT 240 ITAB-MVGR5, AT 244 SY-VLINE,
AT 245 ITAB-LGPLA, AT 255 SY-VLINE.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM. " WRITE_ITAB
regards,
srinivas
<b>*reward for useful answers*</b>