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

Fn module

Former Member
0 Likes
816

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

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
766

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

5 REPLIES 5
Read only

Former Member
0 Likes
766

no need to pass anything to this FM...

also, if u want u can pass date to low vaue of the P_DATETAB data.

Read only

Former Member
0 Likes
767

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

Read only

RaymondGiuseppi
Active Contributor
0 Likes
766

The tables are exported by the function module (in fact only P_DATETAB in my system)

The first action of the module is to refresh the table...

Just read the first (and only) record of the table after call.

Regards

Read only

0 Likes
766

The concern of this module is to fill parameter or select-option of "selection variable" in program variant. to help schedule job.

Regards

Read only

Former Member
0 Likes
766

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>