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

rerarding selection screen

Former Member
0 Likes
697

in selection screen i have the 3 screen fields plant, matnr and material group.

if i input plant how do i get the material number and material group based on palnt dynamically??????

explaing with example..........

3 REPLIES 3
Read only

Former Member
0 Likes
630

Hi,

U can display matnr and material group corresponding to the plant entered by selecting the matnr and material group for entered plant in AT SELECTION SCREEN ON VALUE REQUEST EVENT.

Check below program...

REPORT Z_PURMATERIAL_ANALYSIS .

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

  • Report : Z_PURMATERIAL_ANALYSIS *

  • Author : AREEVES *

  • Date Written : 16.07.2007 *

  • Requested by : Jeanette *

  • Description : This report to pick up required data of materials to *

  • analyze purchasing performance and monitoring of stock and spend *

  • levels of the materials in the given date range for the invoice type*

  • 'ZF2' *

----


  • Program Specifications: *

  • Mod date Programmer Reference Description *

----


----


  • 16/07/2007 AREEVES EPUK903024 Initial Development *

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

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

  • Tables statement *

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

TABLES:

KNVH, " Customer Hierarchy

MARA, " Material Master

SSCRFIELDS. " Fields on selection screens

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

  • Structure declarations *

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

  • Structure for Corporate

DATA:

BEGIN OF FS_CORP,

KUNNR TYPE KNA1-KUNNR, " Corporate

END OF FS_CORP,

  • Structure for Soldto

BEGIN OF FS_SOLDTO,

SOLDTO TYPE KNA1-KUNNR, " Sold To Party

HKUNNR TYPE KNVH-HKUNNR, " Higher level customer

END OF FS_SOLDTO,

  • Billing Document header

BEGIN OF FS_VBRK,

VBELN TYPE VBRK-VBELN, " Billing Document

WAERK TYPE VBRK-WAERK, " Doc Currency

FKDAT TYPE VBRK-FKDAT, " Billing Document date

END OF FS_VBRK,

  • Invoice list orders

BEGIN OF FS_VBFA,

VBELN TYPE VBFA-VBELN, " Billing Document

END OF FS_VBFA,

  • Item data

BEGIN OF FS_ITEM,

MATNR TYPE VBRP-MATNR, " Material

MATKL TYPE VBRP-MATKL, " Material Group

FKDAT TYPE VBRK-FKDAT, " Billing date

FKIMG TYPE VBRP-FKIMG, " Usage

WAVWR TYPE VBRP-NETWR, " Cost

NETWR TYPE VBRP-NETWR, " Sell value

END OF FS_ITEM,

  • Material Data

BEGIN OF FS_MARA,

MATNR TYPE MARA-MATNR, " Material

LVORM TYPE MARA-LVORM, " Deletion Flag

MEINS TYPE MARA-MEINS, " UOM

BSTME TYPE MARA-BSTME, " Other Unit

PRDHA TYPE MARA-PRDHA, " Prodh Hierarchy

KZUMW TYPE MARA-KZUMW, " Environment

END OF FS_MARA,

  • Material Description

BEGIN OF FS_MAKT,

MATNR TYPE MARA-MATNR, " Material

MAKTX TYPE MAKT-MAKTX, " Material Description

END OF FS_MAKT,

  • Sales Data for Material

BEGIN OF FS_MVKE,

MATNR TYPE MVKE-MATNR, " Material

MTPOS TYPE MVKE-MTPOS, " Category

MVGR1 TYPE MVKE-MVGR1, " Material Grp1

MVGR2 TYPE MVKE-MVGR2, " Material Grp2

END OF FS_MVKE,

  • MRP Controller

BEGIN OF FS_MARC,

MATNR TYPE MARC-MATNR, " Material

DISPO TYPE MARC-DISPO, " Category

END OF FS_MARC,

  • Moving AVG price

BEGIN OF FS_MBEW,

MATNR TYPE MARA-MATNR, " Material

VERPR TYPE MBEW-VERPR, " Moving AVG Price

END OF FS_MBEW,

  • Product Supercession code

BEGIN OF FS_SCODE,

MATNR TYPE MARA-MATNR, " Substitute Material

MATWA TYPE MARA-MATNR, " Material

END OF FS_SCODE,

  • Purchase Order data

BEGIN OF FS_PODAT,

MATNR TYPE EINA-MATNR, " Material

DATLB TYPE EINE-DATLB, " Purchase Order date

POOUT TYPE EKPO-MENGE, " Out standing qty

POQTY TYPE EKBE-MENGE, " PO qty

POCOST TYPE EKPO-NETWR, " PO cost

END OF FS_PODAT,

  • Info record

BEGIN OF FS_KONP,

MATNR TYPE A017-MATNR, " Material

LIFNR TYPE A017-LIFNR, " Vendor

KBETR TYPE KONP-KBETR, " Rate

KONWA TYPE KONP-KONWA, " Currency

END OF FS_KONP,

  • Min and Max values

BEGIN OF FS_MARD,

MATNR TYPE MARD-MATNR, " Material

MINQTY TYPE MARD-LABST, " Minimum val

MAXQTY TYPE MARD-LABST, " Maximum val

END OF FS_MARD,

  • Six months used stock

BEGIN OF FS_FUSTOCK,

MATNR TYPE MARA-MATNR, " Material

MATKL TYPE VBRP-MATKL, " Material Group

MON1 TYPE VBRP-FKIMG, " First Month

MON2 TYPE VBRP-FKIMG, " Second Month

MON3 TYPE VBRP-FKIMG, " Third Month

MON4 TYPE VBRP-FKIMG, " Fourth Month

MON5 TYPE VBRP-FKIMG, " Fifth Month

MON6 TYPE VBRP-FKIMG, " Sixth Month

SFKIMG TYPE VBRP-FKIMG, " Six Months

YFKIMG TYPE VBRP-FKIMG, " Year Total

SNETWR TYPE VBRP-NETWR, " Six Months

YNETWR TYPE VBRP-NETWR, " Year Total

SWAVWR TYPE VBRP-NETWR, " Six Months

YWAVWR TYPE VBRP-NETWR, " Year Total

END OF FS_FUSTOCK,

  • Months

BEGIN OF FS_MONTH,

MONTH(2) TYPE N, " Month

YEAR(4) TYPE C, " Year

END OF FS_MONTH,

  • Month names

BEGIN OF FS_MNAME,

MONTH(2) TYPE N, " Month

TXT(3) TYPE C, " Text

END OF FS_MNAME,

  • Final Table

BEGIN OF FS_FINAL,

MATNR TYPE MARA-MATNR, " Material

MAKTX TYPE MAKT-MAKTX, " Desc

MTPOS TYPE MVKE-MTPOS, " Category

MATKL TYPE MARA-MATKL, " Material group

PRDHA1 TYPE MARA-PRDHA, " Product Heirarchy1

PRDHA2 TYPE MARA-PRDHA, " Product Heirarchy2

KZUMW TYPE MARA-KZUMW, " Environment

MVGR1 TYPE MVKE-MVGR1, " Material Group1

MVGR2 TYPE MVKE-MVGR2, " Material Group2

DISPO TYPE MARC-DISPO, " MRP Controller

BSTME TYPE MARA-BSTME, " Purchase Unit

KBETR TYPE KONP-KBETR, " Cost Info

KONWA TYPE KONP-KONWA, " Currency

VERPR TYPE MBEW-VERPR, " Moving Avg Price

LIFNR TYPE A017-LIFNR, " Current Vendor

MON1 TYPE VBRP-FKIMG, " Sixth Mon

MON2 TYPE VBRP-FKIMG, " Fifth Mon

MON3 TYPE VBRP-FKIMG, " Fourth Mon

MON4 TYPE VBRP-FKIMG, " Third Mon

MON5 TYPE VBRP-FKIMG, " Second Mon

MON6 TYPE VBRP-FKIMG, " Current Mon

SFKIMG TYPE VBRP-FKIMG, " Total 6 Mons

YFKIMG TYPE VBRP-FKIMG, " Year

SNETWR TYPE VBRP-NETWR, " Total 6 Mons

YNETWR TYPE VBRP-NETWR, " Year

SWAVWR TYPE VBRP-NETWR, " Total 6 Mons

YWAVWR TYPE VBRP-NETWR, " Year

MINQTY TYPE MARD-LABST, " Min Stock

MAXQTY TYPE MARD-LABST, " Max Stock

MATWA TYPE VBAP-MATWA, " Material Entered

DATLB TYPE EINE-DATLB, " PO date

POQTY TYPE EKPO-MENGE, " PO qty

POCOST TYPE EKPO-NETWR, " PO cost

POOUT TYPE EKPO-MENGE, " PO out standing

LVORM TYPE MARA-LVORM, " Deletion flag

END OF FS_FINAL,

  • Filed catalog

FS_FLDCAT TYPE LVC_S_FCAT,

  • Layout in Grid

FS_LAYOUT TYPE LVC_S_LAYO.

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

  • Internal tables *

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

DATA:

  • Corporates under division

T_CORP LIKE STANDARD TABLE OF FS_CORP,

  • Sold to parties

T_SOLDTO LIKE STANDARD TABLE OF FS_SOLDTO,

  • Billing Document header

T_VBRK LIKE STANDARD TABLE OF FS_VBRK,

  • Invoice list orders

T_VBFA LIKE STANDARD TABLE OF FS_VBFA,

  • Item data

T_ITEM LIKE STANDARD TABLE OF FS_ITEM,

  • Temp Item Data

T_TITEM LIKE STANDARD TABLE OF FS_ITEM,

  • Material Data

T_MARA LIKE STANDARD TABLE OF FS_MARA,

  • Material descriptions

T_MAKT LIKE STANDARD TABLE OF FS_MAKT,

  • Sales Data for Material

T_MVKE LIKE STANDARD TABLE OF FS_MVKE,

  • MRP Controller

T_MARC LIKE STANDARD TABLE OF FS_MARC,

  • Moving AVG price

T_MBEW LIKE STANDARD TABLE OF FS_MBEW,

  • Supercession code

T_SCODE LIKE STANDARD TABLE OF FS_SCODE,

  • Purchase Order data

T_PODAT LIKE STANDARD TABLE OF FS_PODAT,

  • Info Record

T_KONP LIKE STANDARD TABLE OF FS_KONP,

  • Min and Max stock values

T_MARD LIKE STANDARD TABLE OF FS_MARD,

  • Used Stock

T_FUSTOCK LIKE STANDARD TABLE OF FS_FUSTOCK,

  • Months tables

T_MONTH LIKE STANDARD TABLE OF FS_MONTH,

  • Month names

T_MNAME LIKE STANDARD TABLE OF FS_MNAME,

  • Final table

T_FINAL LIKE STANDARD TABLE OF FS_FINAL,

  • Field Catalog table

T_FLDCAT TYPE LVC_T_FCAT.

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

  • Data declarations and constants *

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

DATA:

W_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,

  • " Container class

W_GRID TYPE REF TO CL_GUI_ALV_GRID,

  • " Grid class

W_MYCONTAINER TYPE SCRFNAME " Container Name

VALUE 'CONTAINER',

W_OKCODE TYPE SY-UCOMM, " Ok Code

W_DATE TYPE SY-DATUM, " Date

W_VARIANT TYPE DISVARIANT. " Variant

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

  • Constants *

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

  • Constants

CONSTANTS:

C_HITYP TYPE KNVH-HITYP " Customer hierarchy type

VALUE 'E',

C_VKORG TYPE KNVH-VKORG " Sales Organization

VALUE '1000',

C_VTWEG TYPE KNVH-VTWEG " Distribution channel

VALUE '01',

C_NOSYS TYPE C VALUE 'X', " Non System generated

C_WERKS TYPE WERKS VALUE '1000', " Plant

C_A TYPE C VALUE 'A'. " Constant 'A'

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

  • Selection screen *

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

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.

  • Parameters

PARAMETERS:

P_DIV TYPE SPART OBLIGATORY, " Division

P_CORP TYPE KNVH-KUNNR OBLIGATORY. " Corporate

  • Select options

SELECT-OPTIONS:

S_MATGR FOR MARA-MATKL " Material group

NO INTERVALS NO-EXTENSION,

S_DATE FOR SY-DATUM, " Date

S_MATNR FOR MARA-MATNR NO-DISPLAY. " Material

SELECTION-SCREEN SKIP 1.

  • Optional Buttons

  • Materials

SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-002.

PARAMETERS:

P_SYS RADIOBUTTON GROUP RAD " System generated materials

USER-COMMAND SYS DEFAULT 'X',

P_NOSYS RADIOBUTTON GROUP RAD, " Non-System generated materials

P_SPR RADIOBUTTON GROUP RAD, " Spicer materials

P_ALL RADIOBUTTON GROUP RAD. " All

SELECTION-SCREEN END OF BLOCK B2.

SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME TITLE TEXT-037.

PARAMETERS:

P_VARI TYPE LTDX-VARIANT. " Variant

SELECTION-SCREEN END OF BLOCK B3.

SELECTION-SCREEN END OF BLOCK B1.

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

  • Initialization *

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

INITIALIZATION.

S_DATE-HIGH = SY-DATUM.

S_DATE-LOW = SY-DATUM.

S_DATE-LOW0(4) = SY-DATUM0(4) - 1.

S_DATE-SIGN = 'I'.

S_DATE-OPTION = 'BT'.

APPEND S_DATE.

  • Get Alpha numeric materials

PERFORM APPEND_MATNR.

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

  • At Selection Screen events *

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

AT SELECTION-SCREEN ON P_DIV.

  • Validate the Division

PERFORM VALIDATE_DIV.

AT SELECTION-SCREEN ON P_CORP.

  • Validate the Corporate

PERFORM VALIDATE_CORP.

AT SELECTION-SCREEN ON S_MATGR.

IF S_MATGR IS NOT INITIAL.

  • Validate the Material Group

PERFORM VALIDATE_MATGR.

ENDIF. " IF S_MATGR

AT SELECTION-SCREEN ON P_VARI.

  • Validates the display variant

IF P_VARI IS NOT INITIAL.

PERFORM VALIDATE_VARIANT.

ENDIF. " IF P_VARI IS NOT INITIAL

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

  • At Selection Screen on value request *

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

  • F4 help for Corporate

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_CORP.

  • Get Corporates for selected division

PERFORM GET_CORP.

PERFORM F4HELP_CORP.

  • F4 help for variant

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_VARI.

  • To get the existing values for the display variant

PERFORM F4_ON_DISPLAY_VARIANT CHANGING P_VARI.

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

  • Start of Selection *

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

START-OF-SELECTION.

  • Get the required data

PERFORM FETCH_REQUIREDDATA.

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

  • End of Selection *

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

END-OF-SELECTION.

IF T_FUSTOCK[] IS NOT INITIAL.

  • Prepare Final data

PERFORM PREPARE_FINALDATA.

  • Build field catalog

PERFORM PREPARE_FIELDCAT.

  • Display Data on grid

CALL SCREEN 100.

ENDIF. " IF T_FUSTOCK[] IS..

&----


*& Form APPEND_MATNR

&----


  • Fill select-option to get alpha numeric materials

----


  • There are no interface parameters to be passed to this routine

----


FORM APPEND_MATNR .

S_MATNR-OPTION = 'CP'.

S_MATNR-SIGN = 'I'.

S_MATNR-LOW = 'A'.

APPEND S_MATNR.

S_MATNR-LOW = 'B'.

APPEND S_MATNR.

S_MATNR-LOW = 'C'.

APPEND S_MATNR.

S_MATNR-LOW = 'D'.

APPEND S_MATNR.

S_MATNR-LOW = 'E'.

APPEND S_MATNR.

S_MATNR-LOW = 'F'.

APPEND S_MATNR.

S_MATNR-LOW = 'G'.

APPEND S_MATNR.

S_MATNR-LOW = 'H'.

APPEND S_MATNR.

S_MATNR-LOW = 'I'.

APPEND S_MATNR.

S_MATNR-LOW = 'J'.

APPEND S_MATNR.

S_MATNR-LOW = 'K'.

APPEND S_MATNR.

S_MATNR-LOW = 'L'.

APPEND S_MATNR.

S_MATNR-LOW = 'M'.

APPEND S_MATNR.

S_MATNR-LOW = 'N'.

APPEND S_MATNR.

S_MATNR-LOW = 'O'.

APPEND S_MATNR.

S_MATNR-LOW = 'P'.

APPEND S_MATNR.

S_MATNR-LOW = 'Q'.

APPEND S_MATNR.

S_MATNR-LOW = 'R'.

APPEND S_MATNR.

S_MATNR-LOW = 'S'.

APPEND S_MATNR.

S_MATNR-LOW = 'T'.

APPEND S_MATNR.

S_MATNR-LOW = 'U'.

APPEND S_MATNR.

S_MATNR-LOW = 'V'.

APPEND S_MATNR.

S_MATNR-LOW = 'W'.

APPEND S_MATNR.

S_MATNR-LOW = 'X'.

APPEND S_MATNR.

S_MATNR-LOW = 'Y'.

APPEND S_MATNR.

S_MATNR-LOW = 'Z'.

APPEND S_MATNR.

ENDFORM. " APPEND_MATNR

&----


*& Form VALIDATE_DIV

&----


  • Validate the division

----


  • There are no interface parameters to be passed to this routine

----


FORM VALIDATE_DIV .

DATA:

LV_SPART TYPE SPART. " Division

MOVE SY-UCOMM TO SSCRFIELDS-UCOMM.

SELECT SINGLE SPART " Division

FROM TSPA

INTO LV_SPART

WHERE SPART EQ P_DIV.

IF SY-SUBRC NE 0.

CLEAR: SSCRFIELDS.

MESSAGE E127(/ISDFPS/MM).

ENDIF. " IF SY-SUBRC EQ 0

ENDFORM. " FORM VALIDATE_DIV

&----


*& Form VALIDATE_CORP

&----


  • Validate the corporate

----


  • There are no interface parameters to be passed to this routine

----


FORM VALIDATE_CORP .

DATA:

LV_KUNNR TYPE KNA1-KUNNR. " Corporate

CONSTANTS:

LV_KTOKD LIKE KNA1-KTOKD " Corporate Acc

VALUE 'Z012'.

SELECT SINGLE KUNNR " Customer Number

FROM KNA1

INTO LV_KUNNR

WHERE KUNNR EQ P_CORP

AND KTOKD EQ LV_KTOKD.

IF SY-SUBRC NE 0.

CLEAR: SSCRFIELDS,LV_KUNNR.

MESSAGE E100(RA) WITH TEXT-038.

ELSE.

CLEAR LV_KUNNR.

SELECT KUNNR " Customer Number

UP TO 1 ROWS

FROM KNVH

INTO LV_KUNNR

WHERE HITYP EQ C_HITYP

AND KUNNR EQ P_CORP

AND VKORG EQ C_VKORG

AND VTWEG EQ C_VTWEG

AND SPART EQ P_DIV

AND DATAB LE SY-DATUM

AND DATBI GE SY-DATUM.

ENDSELECT. " SELECT KUNNR

IF SY-SUBRC NE 0.

CLEAR: SSCRFIELDS.

MESSAGE E531(0U) WITH TEXT-003.

ENDIF. " IF SY-SUBRC NE 0

ENDIF. " IF SY-SUBRC NE 0

ENDFORM. " VALIDATE_CORP

&----


*& Form VALIDATE_MATGR

&----


  • Validate the Material Group

----


  • There are no interface parameters to be passed to this routine

----


FORM VALIDATE_MATGR .

DATA:

LV_MATGR TYPE MARA-MATKL. " Material group

MOVE SY-UCOMM TO SSCRFIELDS-UCOMM.

SELECT MATKL " Material group

FROM T023

UP TO 1 ROWS

INTO LV_MATGR

WHERE MATKL IN S_MATGR.

ENDSELECT.

IF SY-SUBRC NE 0.

CLEAR: SSCRFIELDS.

MESSAGE E292(MW).

ENDIF. " IF SY-SUBRC EQ 0

ENDFORM. " VALIDATE_MATGR

&----


*& Form GET_CORP

&----


  • Get the corporates for the selected division

----


  • There are no interface parameters to be passed to this routine

----


FORM GET_CORP .

  • Table for conglomerate

DATA:

LT_CONG LIKE STANDARD TABLE OF FS_CORP,

  • Fields of current screen

LFS_DYNPREAD TYPE DYNPREAD,

  • Table for current Screen fields

LT_DYNPREAD LIKE STANDARD TABLE OF LFS_DYNPREAD.

LFS_DYNPREAD-FIELDNAME = 'P_DIV'.

APPEND LFS_DYNPREAD TO LT_DYNPREAD.

  • Get selection screen value for division

CALL FUNCTION 'DYNP_VALUES_READ'

EXPORTING

DYNAME = SY-REPID

DYNUMB = SY-DYNNR

TABLES

DYNPFIELDS = LT_DYNPREAD

EXCEPTIONS

INVALID_ABAPWORKAREA = 1

INVALID_DYNPROFIELD = 2

INVALID_DYNPRONAME = 3

INVALID_DYNPRONUMMER = 4

INVALID_REQUEST = 5

NO_FIELDDESCRIPTION = 6

INVALID_PARAMETER = 7

UNDEFIND_ERROR = 8

DOUBLE_CONVERSION = 9

STEPL_NOT_FOUND = 10

OTHERS = 11.

IF SY-SUBRC EQ 0.

READ TABLE LT_DYNPREAD INTO LFS_DYNPREAD INDEX 1.

IF SY-SUBRC EQ 0.

P_DIV = LFS_DYNPREAD-FIELDVALUE.

ENDIF. " IF SY-SUBRC EQ 0

ENDIF. " IF SY-SUBRC EQ 0

REFRESH T_CORP.

  • Get the conglomerate for the selected division

SELECT KUNNR " Conglomerate

FROM KNVH

INTO TABLE LT_CONG

WHERE HITYP EQ C_HITYP

AND VKORG EQ C_VKORG

AND VTWEG EQ C_VTWEG

AND SPART EQ P_DIV

AND DATAB LE SY-DATUM

AND DATBI GE SY-DATUM

AND HKUNNR EQ SPACE.

IF SY-SUBRC EQ 0.

SORT LT_CONG BY KUNNR.

DELETE ADJACENT DUPLICATES FROM LT_CONG

COMPARING KUNNR.

  • Get the corporates for the selected conglomerates

SELECT KUNNR " Customer Number

FROM KNVH

INTO TABLE T_CORP

FOR ALL ENTRIES IN LT_CONG

WHERE HITYP EQ C_HITYP

AND VKORG EQ C_VKORG

AND VTWEG EQ C_VTWEG

AND SPART EQ P_DIV

AND DATAB LE SY-DATUM

AND DATBI GE SY-DATUM

AND HKUNNR EQ LT_CONG-KUNNR.

IF SY-SUBRC NE 0.

CLEAR: SSCRFIELDS.

MESSAGE I531(0U) WITH TEXT-005.

STOP.

ENDIF. " IF SY-SUBRC NE 0

ELSE.

CLEAR: SSCRFIELDS.

MESSAGE I531(0U) WITH TEXT-004.

STOP.

ENDIF. " IF SY-SUBRC EQ 0

ENDFORM. " GET_CORP

&----


*& Form F4HELP_CORP

&----


  • F4 help for corporate

----


  • There are no interface parameters to be passed to this routine

----


FORM F4HELP_CORP .

  • F4 help for corporate

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

EXPORTING

RETFIELD = 'KUNNR'

DYNPPROG = 'Z_EXCESS_USAGE'

DYNPNR = '1000'

DYNPROFIELD = 'P_CORP'

VALUE_ORG = 'S'

TABLES

VALUE_TAB = T_CORP

EXCEPTIONS

PARAMETER_ERROR = 1

NO_VALUES_FOUND = 2

OTHERS = 3.

IF SY-SUBRC EQ 0.

  • Do nothing

ENDIF. " IF SY-SUBRC EQ 0

ENDFORM. " F4HELP_CORP

&----


*& Form FETCH_REQUIREDDATA

&----


  • Get the required details like invoice details, material details, stock

  • and cost details, minimum and maximum stock, purchase order details,

  • moving avg price

----


  • There are no interface parameters to be passed to this routine

----


FORM FETCH_REQUIREDDATA .

  • Constants

CONSTANTS:

LC_FKART TYPE VBRK-FKART " Document type

VALUE 'ZF2',

LC_VBTYP TYPE VBFA-VBTYP_N " Doc Category of subseq doc

VALUE '3'.

  • Fetch required data

  • Get the sold-to party details

SELECT KUNNR " Sold-to

HKUNNR " Higher level customer

FROM KNVH

INTO TABLE T_SOLDTO

WHERE HITYP EQ C_HITYP

AND DATAB LE SY-DATUM

AND DATBI GE SY-DATUM

AND HKUNNR EQ P_CORP.

IF SY-SUBRC EQ 0.

SORT T_SOLDTO BY SOLDTO.

DELETE ADJACENT DUPLICATES FROM T_SOLDTO.

  • Get Billing documents

SELECT VBELN " Billing Document

WAERK " Doc currency

FKDAT " Billing date

FROM VBRK

INTO TABLE T_VBRK

FOR ALL ENTRIES IN T_SOLDTO

WHERE FKART EQ LC_FKART

AND FKDAT IN S_DATE

AND KUNAG EQ T_SOLDTO-SOLDTO.

IF SY-SUBRC EQ 0.

SORT T_VBRK BY VBELN.

SELECT VBELV " Sales document

FROM VBFA

INTO TABLE T_VBFA

FOR ALL ENTRIES IN T_VBRK

WHERE VBELV EQ T_VBRK-VBELN

AND VBTYP_N EQ LC_VBTYP.

IF SY-SUBRC EQ 0.

SORT T_VBFA BY VBELN.

  • Get Last Six month date

PERFORM GOBACK_MONTH CHANGING W_DATE.

  • Get Item Data

PERFORM FETCH_ITEMDATA.

  • Get Used stock

PERFORM FETCH_USEDSTOCK.

  • Get Material Data

PERFORM FETCH_MATDATA.

  • Get Moving Avg Price

PERFORM FETCH_AVGPRICE.

  • Get Supersession code

PERFORM FETCH_SOCDE.

  • Get Purchase order data

PERFORM FETCH_PODATA.

  • Get Current Vendor

PERFORM FETCH_VENDOR.

  • Get Min and Max Stock level

PERFORM FETCH_STOCK.

  • Prepare dates

PERFORM FETCH_MONTHS.

ELSE.

MESSAGE I026(8I).

STOP.

ENDIF. " IF SY-SUBRC EQ 0

ELSE.

MESSAGE I026(8I).

STOP.

ENDIF. " IF SY-SUBRC EQ 0

ELSE.

MESSAGE I531(0U) WITH TEXT-006.

STOP.

ENDIF. " IF SY-SUBRC EQ 0

ENDFORM. " FORM FETCH_REQUIREDDATA

&----


*& Form FETCH_ITEMDATA

&----


  • Get the item details for the selected order and radio button chosen

----


  • There are no interface parameters to be passed to this routine

----


FORM FETCH_ITEMDATA .

DATA:

  • Item details

BEGIN OF LFS_VBRP,

VBELN TYPE VBRP-VBELN, " Sales Doc

POSNR TYPE VBRP-POSNR, " Item Number

FKIMG TYPE VBRP-FKIMG, " Actual Invoiced Quantity

VRKME TYPE VBRP-VRKME, " Sales Unit

MEINS TYPE VBRP-MEINS, " Base Unit of measure

NETWR TYPE VBRP-NETWR, " Net value

MATNR TYPE VBRP-MATNR, " Material

MATKL TYPE VBRP-MATKL, " Material Group

WAVWR TYPE VBRP-NETWR, " Cost in document currency

END OF LFS_VBRP,

  • Table Item details

LT_VBRP LIKE STANDARD TABLE OF LFS_VBRP,

LT_TVBRP LIKE STANDARD TABLE OF LFS_VBRP.

  • Constants

CONSTANTS:

LC_SP TYPE MARA-MATNR " Material

VALUE 'SP%',

LC_GBP TYPE VBRK-WAERK " Currency

VALUE 'GBP'.

  • Get Item data for Non-System generated materials

IF P_NOSYS EQ C_NOSYS.

SELECT VBELN " Sales Doc

POSNR " Item Number

FKIMG " Actual Invoiced Quantity

VRKME " Sales Unit

MEINS " Base Unit of measure

NETWR " Net value

MATNR " Material

MATKL " Material Group

WAVWR " Cost in document currency

FROM VBRP

INTO TABLE LT_VBRP

FOR ALL ENTRIES IN T_VBFA

WHERE VBELN EQ T_VBFA-VBELN

AND MATNR IN S_MATNR

AND MATKL IN S_MATGR.

IF SY-SUBRC EQ 0.

SORT LT_VBRP BY VBELN POSNR.

  • Remove Spicer materials

LOOP AT LT_VBRP INTO LFS_VBRP.

IF NOT ( LFS_VBRP-MATNR CP 'SP*' ).

APPEND LFS_VBRP TO LT_TVBRP.

CLEAR LFS_VBRP.

ENDIF. " IF NOT LFS_VBRP_MATNR

ENDLOOP. " LOOP AT LT_VBRP

REFRESH LT_VBRP.

LT_VBRP[] = LT_TVBRP[].

FREE LT_TVBRP.

SORT LT_VBRP BY VBELN POSNR.

ENDIF. " IF SY-SUBRC EQ 0

  • Get Item data for System generated materials

ELSEIF P_SYS EQ C_NOSYS.

SELECT VBELN " Sales Doc

POSNR " Item Number

FKIMG " Actual Invoiced Quantity

VRKME " Sales Unit

MEINS " Base Unit of measure

NETWR " Net value

MATNR " Material

MATKL " Material Group

WAVWR " Cost in document currency

FROM VBRP

INTO TABLE LT_VBRP

FOR ALL ENTRIES IN T_VBFA

WHERE VBELN EQ T_VBFA-VBELN

AND MATNR NOT IN S_MATNR

AND MATKL IN S_MATGR.

IF SY-SUBRC EQ 0.

SORT LT_VBRP BY VBELN POSNR.

ENDIF. " IF SY-SUBRC EQ 0

  • Get Item data for Spicer materials

ELSEIF P_SPR EQ C_NOSYS.

SELECT VBELN " Sales Doc

POSNR " Item Number

FKIMG " Actual Invoiced Quantity

VRKME " Sales Unit

MEINS " Base Unit of measure

NETWR " Net value

MATNR " Material

MATKL " Material Group

WAVWR " Cost in document currency

FROM VBRP

INTO TABLE LT_VBRP

FOR ALL ENTRIES IN T_VBFA

WHERE VBELN EQ T_VBFA-VBELN

AND MATNR LIKE LC_SP

AND MATKL IN S_MATGR.

IF SY-SUBRC EQ 0.

SORT LT_VBRP BY VBELN POSNR.

ENDIF. " IF SY-SUBRC EQ 0

  • Get Item data for All materials

ELSEIF P_ALL EQ C_NOSYS .

SELECT VBELN " Sales Doc

POSNR " Item Number

FKIMG " Actual Invoiced Quantity

VRKME " Sales Unit

MEINS " Base Unit of measure

NETWR " Net value

MATNR " Material

MATKL " Material Group

WAVWR " Cost in document currency

FROM VBRP

INTO TABLE LT_VBRP

FOR ALL ENTRIES IN T_VBFA

WHERE VBELN EQ T_VBFA-VBELN

AND MATKL IN S_MATGR.

IF SY-SUBRC EQ 0.

SORT LT_VBRP BY VBELN POSNR.

ENDIF. " IF SY-SUBRC EQ 0

ENDIF. " P_NOSYS EQ C_NOSYS

  • Segregate the item data

IF LT_VBRP[] IS INITIAL.

MESSAGE I109(WP).

STOP.

ELSE.

LOOP AT LT_VBRP INTO LFS_VBRP.

READ TABLE T_VBFA INTO FS_VBFA WITH KEY

VBELN = LFS_VBRP-VBELN BINARY SEARCH.

IF SY-SUBRC EQ 0.

READ TABLE T_VBRK INTO FS_VBRK WITH KEY

VBELN = FS_VBFA-VBELN BINARY SEARCH.

IF SY-SUBRC EQ 0.

MOVE:

FS_VBRK-FKDAT TO FS_ITEM-FKDAT,

LFS_VBRP-MATNR TO FS_ITEM-MATNR,

LFS_VBRP-MATKL TO FS_ITEM-MATKL.

IF FS_VBRK-WAERK NE LC_GBP.

  • Convert Cost and Cell value to Local Currency

PERFORM CURRENCY_CONVERSION USING LFS_VBRP-NETWR

FS_VBRK-WAERK

LC_GBP

FS_VBRK-FKDAT

CHANGING FS_ITEM-NETWR.

PERFORM CURRENCY_CONVERSION USING LFS_VBRP-WAVWR

FS_VBRK-WAERK

LC_GBP

FS_VBRK-FKDAT

CHANGING FS_ITEM-WAVWR.

ELSE.

MOVE: LFS_VBRP-NETWR TO FS_ITEM-NETWR,

LFS_VBRP-WAVWR TO FS_ITEM-WAVWR.

ENDIF. " IF FS_VBRK-WAERK

IF LFS_VBRP-VRKME NE LFS_VBRP-MEINS.

  • Convert Usage to Base Unit

PERFORM UNIT_CONVERSION USING LFS_VBRP-MATNR

LFS_VBRP-FKIMG

LFS_VBRP-VRKME

LFS_VBRP-MEINS

CHANGING FS_ITEM-FKIMG.

ELSE.

MOVE LFS_VBRP-FKIMG TO FS_ITEM-FKIMG.

ENDIF. " IF FS_VBRP-VRKME..

APPEND FS_ITEM TO T_ITEM.

CLEAR: FS_ITEM,LFS_VBRP,FS_VBRK,FS_VBFA.

ENDIF. " IF SY-SUBRC EQ 0

ENDIF. " IF SY-SUBRC EQ 0

ENDLOOP. " LOOP AT T_VBRP[]

T_TITEM[] = T_ITEM[].

ENDIF. " IF LT_VBRP[] IS INITIAL

ENDFORM. " FETCH_ITEMDATA

&----


*& Form UNIT_CONVERSION

&----


  • Convert free stock of the material into pallets

----


  • -->P_LFS_VBRP_MATNR Material

  • -->P_LFS_VBRP_FKIMG Usage

  • -->P_LFS_VBRP_VRKME Sales Unit

  • -->P_LFS_VBRP-MEINS Base Unit of measure

  • <--P_LFS_VBRP-FKIMG Usage

----


FORM UNIT_CONVERSION USING P_LFS_VBRP_MATNR TYPE VBRP-MATNR

P_LFS_VBRP_FKIMG TYPE VBRP-FKIMG

P_LFS_VBRP_VRKME TYPE VBRP-VRKME

P_LFS_VBRP_MEINS TYPE VBRP-MEINS

CHANGING P_LFS_VBRP_CFKIMG TYPE VBRP-FKIMG.

CALL FUNCTION 'MD_CONVERT_MATERIAL_UNIT'

EXPORTING

I_MATNR = P_LFS_VBRP_MATNR

I_IN_ME = P_LFS_VBRP_VRKME

I_OUT_ME = P_LFS_VBRP_MEINS

I_MENGE = P_LFS_VBRP_FKIMG

IMPORTING

E_MENGE = P_LFS_VBRP_CFKIMG

EXCEPTIONS

ERROR_IN_APPLICATION = 1

ERROR = 2

OTHERS = 3.

IF SY-SUBRC NE 0.

CLEAR P_LFS_VBRP_CFKIMG.

ENDIF. " IF SY-SUBRC NE 0

ENDFORM. " UNIT_CONVERSION

&----


*& Form CURRENCY_CONVERSION

&----


  • Convert free stock of the material into pallets

----


  • -->P_LFS_VBRP_NETWR Sell value/Cost

  • -->P_LFS_VBRK_WAERS Currency

  • -->P_LC_GBP Local Currency

  • -->P_LFS_VBRK_FKDAT Billing Date

  • <--P_LFS_VBRP_CNETWR Sell value/Cost

----


FORM CURRENCY_CONVERSION USING P_LFS_VBRP_NETWR TYPE VBRP-NETWR

P_LFS_VBRK_WAERK TYPE VBRK-WAERK

P_LC_GBP TYPE VBRK-WAERK

P_FS_VBRK_FKDAT TYPE SY-DATUM

CHANGING P_LFS_VBRP_CNETWR TYPE VBRP-NETWR.

CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY'

EXPORTING

DATE = P_FS_VBRK_FKDAT

FOREIGN_AMOUNT = P_LFS_VBRP_NETWR

FOREIGN_CURRENCY = P_LFS_VBRK_WAERK

LOCAL_CURRENCY = P_LC_GBP

IMPORTING

LOCAL_AMOUNT = P_LFS_VBRP_CNETWR

EXCEPTIONS

NO_RATE_FOUND = 1

OVERFLOW = 2

NO_FACTORS_FOUND = 3

NO_SPREAD_FOUND = 4

DERIVED_2_TIMES = 5

OTHERS = 6.

IF SY-SUBRC NE 0.

CLEAR P_LFS_VBRP_CNETWR.

ENDIF. " IF SY-SUBRC NE 0

ENDFORM. " FORM CURRENCY_CONVERSION

&----


*& Form FETCH_MATDATA

&----


  • Get the materials details and description for the selected materials

----


  • There are no interface parameters to be passed to this routine

----


FORM FETCH_MATDATA .

SORT T_TITEM BY MATNR.

DELETE ADJACENT DUPLICATES FROM T_TITEM COMPARING MATNR.

IF T_TITEM[] IS NOT INITIAL.

  • Material Details

SELECT MATNR " Material

LVORM " Deletion Flag

MEINS " UOM

BSTME " Order Unit

PRDHA " Prdh Hier

KZUMW " Environment

FROM MARA

INTO TABLE T_MARA

FOR ALL ENTRIES IN T_TITEM

WHERE MATNR EQ T_TITEM-MATNR.

IF SY-SUBRC EQ 0.

SORT T_MARA BY MATNR.

ENDIF. " IF SY-SUBRC EQ 0

  • Material Description

SELECT MATNR " Material

MAKTX " Material Desc

FROM MAKT

INTO TABLE T_MAKT

FOR ALL ENTRIES IN T_TITEM

WHERE MATNR EQ T_TITEM-MATNR

AND SPRAS EQ SY-LANGU.

IF SY-SUBRC EQ 0.

SORT T_MAKT BY MATNR.

ENDIF. " IF SY-SUBRC EQ 0

  • Sales Data for Material

SELECT MATNR " Material

MTPOS " Category

MVGR1 " Material Grp1

MVGR2 " Material Grp2

FROM MVKE

INTO TABLE T_MVKE

FOR ALL ENTRIES IN T_TITEM

WHERE MATNR EQ T_TITEM-MATNR.

IF SY-SUBRC EQ 0.

SORT T_MVKE BY MATNR.

ENDIF. " IF SY-SUBRC EQ 0

  • MRP Controller

SELECT MATNR " Material

DISPO " MRP Controller

FROM MARC

INTO TABLE T_MARC

FOR ALL ENTRIES IN T_TITEM

WHERE MATNR EQ T_TITEM-MATNR

AND WERKS EQ C_WERKS.

IF SY-SUBRC EQ 0.

SORT T_MARC BY MATNR.

ENDIF. " IF SY-SUBRC EQ 0

ENDIF. " IF T_TITEM[]..

ENDFORM. " FETCH_MATDESC

&----


*& Form FETCH_AVGPRICE

&----


  • Get the Moving Average Price of the material

----


  • There are no interface parameters to be passed to this routine

----


FORM FETCH_AVGPRICE .

CONSTANTS:

LC_BWKEY TYPE MBEW-BWKEY " Valuation area

VALUE '1000'.

  • Moving Avg Price

SELECT MATNR " Material Number

VERPR " Moving Average Price

FROM MBEW

INTO TABLE T_MBEW

FOR ALL ENTRIES IN T_TITEM

WHERE MATNR EQ T_TITEM-MATNR

AND BWKEY EQ LC_BWKEY.

IF SY-SUBRC EQ 0.

SORT T_MBEW BY MATNR.

ENDIF. " IF SY-SUBRC EQ 0

ENDFORM. " FETCH_AVGPRICE

&----


*& Form FETCH_SOCDE

&----


  • Fetch Supercession code for the selected materials

----


  • There are no interface parameters to be passed to this routine

----


FORM FETCH_SOCDE .

  • Structure for Material substitution

DATA:

BEGIN OF LFS_KONDD,

KNUMH TYPE KONDD-KNUMH, " Condition Record

MATNR TYPE KONDD-SMATN, " Substitute Material

END OF LFS_KONDD,

  • Structure for Conditions

BEGIN OF LFS_KOTD001,

MATWA TYPE KOTD001-MATWA, " Material Entered

KNUMH TYPE KONDD-KNUMH, " Condition Record

END OF LFS_KOTD001,

  • Structure for Material

BEGIN OF LFS_SMATN,

MATNR TYPE KONDD-SMATN, " Substitute Material

MATWA TYPE KOTD001-MATWA, " Material Entered

END OF LFS_SMATN,

LT_KONDD LIKE STANDARD TABLE OF LFS_KONDD,

LT_KOTD001 LIKE STANDARD TABLE OF LFS_KOTD001,

LT_SMATN LIKE STANDARD TABLE OF LFS_SMATN,

LV_CNT TYPE I. " Counter

  • Constants

CONSTANTS:

LC_KAPPL TYPE KOTD001-KAPPL " Application

VALUE 'V',

LC_KSCHL TYPE KOTD001-KSCHL " Material det type

VALUE 'A001',

LC_ONE TYPE C VALUE '1'. " One

  • Get substitute materials

SELECT KNUMH " Condition record

SMATN " Material

FROM KONDD

INTO TABLE LT_KONDD

FOR ALL ENTRIES IN T_TITEM

WHERE SMATN EQ T_TITEM-MATNR.

IF SY-SUBRC EQ 0.

  • Get Condition records

SORT LT_KONDD BY KNUMH.

SELECT MATWA " Material Entered

KNUMH " Condition record

FROM KOTD001

INTO TABLE LT_KOTD001

FOR ALL ENTRIES IN LT_KONDD

WHERE KAPPL EQ LC_KAPPL

AND KSCHL EQ LC_KSCHL

AND DATBI GE SY-DATUM

AND DATAB LE SY-DATUM

AND KNUMH EQ LT_KONDD-KNUMH.

IF SY-SUBRC EQ 0.

SORT LT_KOTD001 BY KNUMH.

LOOP AT LT_KOTD001 INTO LFS_KOTD001.

READ TABLE LT_KONDD INTO LFS_KONDD WITH KEY

KNUMH = LFS_KOTD001-KNUMH BINARY SEARCH.

IF SY-SUBRC EQ 0.

MOVE: LFS_KONDD-MATNR TO LFS_SMATN-MATNR,

LFS_KOTD001-MATWA TO LFS_SMATN-MATWA.

APPEND LFS_SMATN TO LT_SMATN.

CLEAR:LFS_SMATN,LFS_KONDD.

ENDIF. " IF SY-SUBRC EQ 0

ENDLOOP. " LOOP AT LT_KTODD01

ENDIF. " IF SY-SUBRC EQ 0

ENDIF. " IF SY-SUBRC EQ 0

SORT LT_SMATN BY MATNR MATWA.

DELETE ADJACENT DUPLICATES FROM LT_SMATN

COMPARING MATNR MATWA.

LOOP AT LT_SMATN INTO LFS_SMATN.

LV_CNT = LV_CNT + 1.

MOVE LFS_SMATN-MATWA TO FS_SCODE-MATWA.

AT END OF MATNR.

IF LV_CNT EQ LC_ONE.

MOVE LFS_SMATN-MATNR TO FS_SCODE-MATNR.

APPEND FS_SCODE TO T_SCODE.

CLEAR: FS_SCODE,LV_CNT.

ENDIF. " IF LC_CNT EQ 1

ENDAT. " AT END OF MATNR

ENDLOOP. " LOOP AT LT_SMATN

ENDFORM. " FETCH_SOCDE

&----


*& Form FETCH_PODATA

&----


  • Get the purchase order data for selected materials

----


  • There are no interface parameters to be passed to this routine

----


FORM FETCH_PODATA .

DATA:

  • Info records for materials

BEGIN OF LFS_EINA,

INFNR TYPE EINA-INFNR, " Info record

MATNR TYPE EINA-MATNR, " Material

END OF LFS_EINA,

  • Purchase orders for inforecords

BEGIN OF LFS_EINE,

INFNR TYPE EINE-INFNR, " Info record

EBELN TYPE EINE-EBELN, " Purchase order

DATLB TYPE EINE-DATLB, " Purchase Order date

END OF LFS_EINE,

  • Purchase Order item details

BEGIN OF LFS_EKPO,

EBELN TYPE EKPO-EBELN, " PO Doc

EBELP TYPE EKPO-EBELP, " Item

MATNR TYPE EKPO-MATNR, " Material

MENGE TYPE EKPO-MENGE, " Quantity

NETWR TYPE EKPO-NETWR, " Cost

END OF LFS_EKPO,

  • Purchase and material data

BEGIN OF LFS_PODAT,

MATNR TYPE EINA-MATNR, " Material

DATLB TYPE EINE-DATLB, " Purchase Order date

EBELN TYPE EINE-EBELN, " Purchase order

END OF LFS_PODAT,

  • PGI data for Purchase orders

BEGIN OF LFS_EKBE,

EBELN TYPE EKBE-EBELN, " PO Doc

EBELP TYPE EKBE-EBELP, " Item

ZEKKN TYPE EKBE-ZEKKN, " Seq Num

VGABE TYPE EKBE-VGABE, " Transaction/event type

GJAHR TYPE EKBE-GJAHR, " Mat Doc Year

BELNR TYPE EKBE-BELNR, " Num of Mat Doc

BUZEI TYPE EKBE-BUZEI, " Item of Mat Doc

MENGE TYPE EKBE-MENGE, " Quantity

END OF LFS_EKBE,

  • Purchase Order item details

BEGIN OF LFS_FEKPO,

EBELN TYPE EKPO-EBELN, " PO Doc

MATNR TYPE EKPO-MATNR, " Material

MENGE TYPE EKPO-MENGE, " Quantity

NETWR TYPE EKPO-NETWR, " Cost

END OF LFS_FEKPO,

  • Purchase Order item details

BEGIN OF LFS_FEKBE,

EBELN TYPE EKBE-EBELN, " PO Doc

MATNR TYPE EKPO-MATNR, " Material

MENGE TYPE EKBE-MENGE, " Quantity

END OF LFS_FEKBE,

LT_EINA LIKE STANDARD TABLE OF LFS_EINA,

LT_EINE LIKE STANDARD TABLE OF LFS_EINE,

LT_EKPO LIKE STANDARD TABLE OF LFS_EKPO,

LT_PODAT LIKE STANDARD TABLE OF LFS_PODAT,

LT_EKBE LIKE STANDARD TABLE OF LFS_EKBE,

LT_FEKBE LIKE STANDARD TABLE OF LFS_FEKBE,

LT_FEKPO LIKE STANDARD TABLE OF LFS_FEKPO.

  • Constants:

CONSTANTS:

LC_BWART TYPE EKBE-BWART " Movement Type

VALUE '101',

LC_LOEKZ TYPE EKPO-LOEKZ " Deletion Flag

VALUE 'L'.

  • Get Info records for the selected materials

SELECT INFNR " Info record

MATNR " Material

FROM EINA

INTO TABLE LT_EINA

FOR ALL ENTRIES IN T_TITEM

WHERE MATNR EQ T_TITEM-MATNR.

IF SY-SUBRC EQ 0.

  • Get Last purchase orders for the selected info records

SORT LT_EINA BY INFNR.

SELECT INFNR " Info record

EBELN " Purchase order

DATLB " Purchase Order date

FROM EINE

INTO TABLE LT_EINE

FOR ALL ENTRIES IN LT_EINA

WHERE INFNR EQ LT_EINA-INFNR

AND EBELN NE SPACE.

IF SY-SUBRC EQ 0.

LOOP AT LT_EINA INTO LFS_EINA.

READ TABLE LT_EINE INTO LFS_EINE WITH KEY

INFNR = LFS_EINA-INFNR BINARY SEARCH.

IF SY-SUBRC EQ 0.

MOVE: LFS_EINA-MATNR TO LFS_PODAT-MATNR,

LFS_EINE-EBELN TO LFS_PODAT-EBELN,

LFS_EINE-DATLB TO LFS_PODAT-DATLB.

APPEND LFS_PODAT TO LT_PODAT.

CLEAR: LFS_PODAT,LFS_EINE.

ENDIF. " IF SY-SUBRC EQ 0

ENDLOOP. " LOOP AT LT_EINA

SORT LT_PODAT BY MATNR ASCENDING DATLB DESCENDING.

DELETE ADJACENT DUPLICATES FROM LT_PODAT

COMPARING MATNR.

  • Get Purchase order details

SELECT EBELN " PO Doc

EBELP " Item

MATNR " Material

MENGE " Quantity

NETWR " Cost

FROM EKPO

INTO TABLE LT_EKPO

FOR ALL ENTRIES IN LT_PODAT

WHERE EBELN EQ LT_PODAT-EBELN

AND LOEKZ NE LC_LOEKZ

AND MATNR EQ LT_PODAT-MATNR.

IF SY-SUBRC EQ 0.

SORT: LT_EKPO BY EBELN EBELP.

  • Get PGI Qty of PO

SELECT EBELN " PO doc

EBELP " Item

ZEKKN " Seq Num

VGABE " Transaction/event type

GJAHR " Mat Doc Year

BELNR " Num of Mat Doc

BUZEI " Item of Mat Doc

MENGE " Quantity

FROM EKBE

INTO TABLE LT_EKBE

FOR ALL ENTRIES IN LT_EKPO

WHERE EBELN EQ LT_EKPO-EBELN

AND EBELP EQ LT_EKPO-EBELP

AND BWART EQ LC_BWART.

IF SY-SUBRC EQ 0.

SORT LT_EKBE BY EBELN EBELP.

LOOP AT LT_EKBE INTO LFS_EKBE.

READ TABLE LT_EKPO INTO LFS_EKPO WITH KEY

EBELN = LFS_EKBE-EBELN

EBELP = LFS_EKBE-EBELP

BINARY SEARCH.

IF SY-SUBRC EQ 0.

MOVE: LFS_EKBE-EBELN TO LFS_FEKBE-EBELN,

LFS_EKPO-MATNR TO LFS_FEKBE-MATNR,

LFS_EKBE-MENGE TO LFS_FEKBE-MENGE .

COLLECT LFS_FEKBE INTO LT_FEKBE.

CLEAR LFS_FEKBE.

ENDIF. " IF SY-SUBRC EQ 0

ENDLOOP. " LOOP AT LT_EKBE

ENDIF. " IF SY-SUBRC EQ 0

ENDIF. " IF SY-SUBRC EQ 0

ENDIF. " IF SY-SUBRC EQ 0

ENDIF. " IF SY-SUBRC EQ 0

LOOP AT LT_EKPO INTO LFS_EKPO.

MOVE: LFS_EKPO-EBELN TO LFS_FEKPO-EBELN,

LFS_EKPO-MATNR TO LFS_FEKPO-MATNR,

LFS_EKPO-MENGE TO LFS_FEKPO-MENGE,

LFS_EKPO-NETWR TO LFS_FEKPO-NETWR.

COLLECT LFS_FEKPO INTO LT_FEKPO.

CLEAR LFS_FEKPO.

ENDLOOP. " LOOP AT LT_EKPO

  • Final PO data

SORT: LT_FEKPO BY MATNR,

LT_FEKBE BY MATNR.

LOOP AT LT_PODAT INTO LFS_PODAT.

MOVE: LFS_PODAT-MATNR TO FS_PODAT-MATNR,

LFS_PODAT-DATLB TO FS_PODAT-DATLB.

READ TABLE LT_FEKPO INTO LFS_FEKPO WITH KEY

MATNR = LFS_PODAT-MATNR BINARY SEARCH.

IF SY-SUBRC EQ 0.

READ TABLE LT_FEKBE INTO LFS_FEKBE WITH KEY

MATNR = LFS_PODAT-MATNR BINARY SEARCH.

IF SY-SUBRC EQ 0.

MOVE LFS_FEKBE-MENGE TO FS_PODAT-POOUT.

CLEAR LFS_FEKBE.

ENDIF. " IF SY-SYBRC EQ 0

MOVE: LFS_FEKPO-MENGE TO FS_PODAT-POQTY,

LFS_FEKPO-NETWR TO FS_PODAT-POCOST.

FS_PODAT-POOUT = FS_PODAT-POQTY - FS_PODAT-POOUT.

APPEND FS_PODAT TO T_PODAT.

CLEAR: LFS_FEKPO,FS_PODAT.

ENDIF. " IF SY-SYBRC EQ 0

ENDLOOP. " LOOP AT LT_PODAT

ENDFORM. " FETCH_PODATA

&----


*& Form FETCH_VENDOR

&----


  • Get the Current Vendor,Purchase info record and conditional

  • value(Rate)

----


  • There are no interface parameters to be passed to this routine

----


FORM FETCH_VENDOR .

  • Purchasing Source List

DATA:

BEGIN OF LFS_EORD,

MATNR TYPE MARA-MATNR, " Material

LIFNR TYPE EORD-LIFNR, " Vendor

END OF LFS_EORD,

  • Material Info Record (Plant-Specific)

BEGIN OF LFS_A017,

LIFNR TYPE EORD-LIFNR, " Vendor

MATNR TYPE MARA-MATNR, " Material

DATAB TYPE A017-DATAB, " Validity Start date

KNUMH TYPE A017-KNUMH, " Condition Record

END OF LFS_A017,

  • Materials

BEGIN OF LFS_MATNR,

MATNR TYPE MARA-MATNR, " Material

END OF LFS_MATNR,

  • Info Records

BEGIN OF LFS_KONP,

KNUMH TYPE KONP-KNUMH, " Condition record

KBETR TYPE KONP-KBETR, " Price

KONWA TYPE KONP-KONWA, " Currency

END OF LFS_KONP,

LT_EORD LIKE STANDARD TABLE OF LFS_EORD,

LT_A017 LIKE STANDARD TABLE OF LFS_A017,

LT_MATNR LIKE STANDARD TABLE OF LFS_MATNR,

LT_KONP LIKE STANDARD TABLE OF LFS_KONP.

  • Constants

CONSTANTS:

LC_KAPPL TYPE A017-KAPPL " Application

VALUE 'M',

LC_KSCHL TYPE A017-KSCHL " Condition Type

VALUE 'PB00',

LC_EKORG TYPE A017-EKORG " Sales Org

VALUE '1000'.

  • Get Purchase Info records

SELECT MATNR " Material Number

LIFNR " Vendor Number

FROM EORD

INTO TABLE LT_EORD

FOR ALL ENTRIES IN T_TITEM

WHERE MATNR EQ T_TITEM-MATNR

AND WERKS EQ C_WERKS

AND FLIFN EQ C_NOSYS.

IF SY-SUBRC EQ 0.

  • Fetch the info records for the material

SELECT LIFNR " Vendor

MATNR " Material

DATAB " Validity Start date

KNUMH " Condition Record

FROM A017

INTO TABLE LT_A017

FOR ALL ENTRIES IN LT_EORD

WHERE KAPPL EQ LC_KAPPL

AND KSCHL EQ LC_KSCHL

AND LIFNR EQ LT_EORD-LIFNR

AND MATNR EQ LT_EORD-MATNR

AND EKORG EQ LC_EKORG

AND WERKS EQ C_WERKS

AND DATBI GE SY-DATUM

AND DATAB LE SY-DATUM.

ENDIF. " IF SY-SUBRC EQ 0

SORT LT_A017 BY MATNR.

LOOP AT T_TITEM INTO FS_ITEM.

READ TABLE LT_A017 INTO LFS_A017 WITH KEY

MATNR = FS_ITEM-MATNR BINARY SEARCH.

IF SY-SUBRC NE 0.

MOVE FS_ITEM-MATNR TO LFS_MATNR-MATNR.

APPEND LFS_MATNR TO LT_MATNR.

CLEAR: LFS_MATNR,LFS_A017.

ENDIF. " IF SY-SUBRC NE 0

ENDLOOP. " LOOP AT T_TITEM

  • Fetch the info records for the material

IF LT_MATNR[] IS NOT INITIAL.

SORT LT_MATNR BY MATNR.

SELECT LIFNR " Vendor

MATNR " Material

DATAB " Validate Start Date

KNUMH " Condition Record

FROM A017

APPENDING TABLE LT_A017

FOR ALL ENTRIES IN LT_MATNR

WHERE KAPPL EQ LC_KAPPL

AND KSCHL EQ LC_KSCHL

AND MATNR EQ LT_MATNR-MATNR

AND EKORG EQ LC_EKORG

AND WERKS EQ C_WERKS

AND DATBI GE SY-DATUM

AND DATAB LE SY-DATUM.

ENDIF. " IF LT_MATNR[] IS ..

  • Get Cost from Info record

IF LT_A017[] IS NOT INITIAL.

SORT LT_A017 BY LIFNR MATNR ASCENDING

DATAB DESCENDING.

DELETE ADJACENT DUPLICATES FROM LT_A017

COMPARING LIFNR MATNR DATAB.

SORT LT_A017 BY KNUMH.

SELECT KNUMH " Condition record

KBETR " Price

KONWA " Currency

FROM KONP

INTO TABLE LT_KONP

FOR ALL ENTRIES IN LT_A017

WHERE KNUMH EQ LT_A017-KNUMH

AND KAPPL EQ LC_KAPPL

AND LOEVM_KO NE C_NOSYS.

IF SY-SUBRC EQ 0.

SORT: LT_A017 BY MATNR,

LT_KONP BY KNUMH.

LOOP AT LT_A017 INTO LFS_A017.

READ TABLE LT_KONP INTO LFS_KONP WITH KEY

KNUMH = LFS_A017-KNUMH BINARY SEARCH.

IF SY-SUBRC EQ 0.

MOVE:LFS_A017-MATNR TO FS_KONP-MATNR,

LFS_A017-LIFNR TO FS_KONP-LIFNR,

LFS_KONP-KBETR TO FS_KONP-KBETR,

LFS_KONP-KONWA TO FS_KONP-KONWA.

APPEND FS_KONP TO T_KONP.

CLEAR:FS_KONP,LFS_A017.

ENDIF. " IF SY-SUBRC EQ 0

ENDLOOP. " LOOP AT LT_A017

ENDIF. " IF SY-SUBRC EQ 0

ENDIF. " IF SY-SUBRC EQ 0

ENDFORM. " FETCH_VENDOR

&----


*& Form FETCH_STOCK

&----


  • Get Minimum and Maximum stock values for the selected Materials

----


  • There are no interface parameters to be passed to this routine

----


FORM FETCH_STOCK .

  • Material Stock data

DATA:

BEGIN OF LFS_MARD,

MATNR TYPE MARD-MATNR, " Material

LFGJA TYPE MARD-LFGJA, " Year

LFMON TYPE MARD-LFMON, " Period

LABST TYPE MARD-LABST, " Unrestricted Stock

END OF LFS_MARD,

LT_MARD LIKE STANDARD TABLE OF LFS_MARD,

LT_MARD1 LIKE STANDARD TABLE OF LFS_MARD.

  • Local Variables

DATA:

LV_FLAG TYPE C. " Flag

  • Get Material Data

SELECT MATNR " Material

LFGJA " Year

LFMON " Period

LABST " Unrestricted Stock

FROM MARD

INTO TABLE LT_MARD

FOR ALL ENTRIES IN T_TITEM

WHERE MATNR EQ T_TITEM-MATNR

AND WERKS EQ C_WERKS

AND LFGJA BETWEEN W_DATE(4) AND SY-DATUM(4)

AND LFMON BETWEEN W_DATE4(2) AND SY-DATUM4(2).

IF SY-SUBRC EQ 0.

LOOP AT LT_MARD INTO LFS_MARD.

COLLECT LFS_MARD INTO LT_MARD1.

CLEAR LFS_MARD.

ENDLOOP. " LOOP AT LT_MARD

REFRESH LT_MARD.

  • Perious Stock data

SELECT MATNR " Material

LFGJA " Year

LFMON " Period

LABST " Unrestricted Stock

FROM MARDH

INTO TABLE LT_MARD

FOR ALL ENTRIES IN T_TITEM

WHERE MATNR EQ T_TITEM-MATNR

AND WERKS EQ C_WERKS

AND LFGJA BETWEEN W_DATE(4) AND SY-DATUM(4)

AND LFMON BETWEEN W_DATE4(2) AND SY-DATUM4(2).

IF SY-SUBRC EQ 0.

LOOP AT LT_MARD INTO LFS_MARD.

COLLECT LFS_MARD INTO LT_MARD1.

CLEAR LFS_MARD.

ENDLOOP. " LOOP AT LT_MARD

ENDIF. " IF SY-SUBRC EQ 0

  • Min and Max values of the material

SORT LT_MARD1 BY MATNR LABST.

LOOP AT LT_MARD1 INTO LFS_MARD.

AT NEW MATNR.

LV_FLAG = C_NOSYS.

ENDAT. " AT NEW MATNR

IF LV_FLAG EQ C_NOSYS.

MOVE LFS_MARD-LABST TO FS_MARD-MINQTY.

CLEAR LV_FLAG.

ENDIF. " IF LV_FLAG..

MOVE LFS_MARD-LABST TO FS_MARD-MAXQTY.

AT END OF MATNR.

MOVE LFS_MARD-MATNR TO FS_MARD-MATNR.

APPEND FS_MARD TO T_MARD.

CLEAR: FS_MARD.

ENDAT. " AT END OF MATNR

ENDLOOP. " LOOP AT LT_MARD1

ENDIF. " IF SY-SUBRC EQ 0

ENDFORM. " FETCH_STOCK

&----


*& Form GOBACK_MONTH

&----


  • Get the last sixth month date

----


  • <--P_W_DATE Date

----


FORM GOBACK_MONTH CHANGING P_W_DATE TYPE SY-DATUM.

CALL FUNCTION 'CCM_GO_BACK_MONTHS'

EXPORTING

CURRDATE = SY-DATUM

BACKMONTHS = 5

IMPORTING

NEWDATE = P_W_DATE.

ENDFORM. " GOBACK_MONTH

&----


*& Form FETCH_USEDSTOCK

&----


  • Segregate the used stock monthly

----


  • There are no interface parameters to be passed to this routine

----


FORM FETCH_USEDSTOCK .

  • Variables

DATA:

LV_MON2(6) TYPE C, " Second month

LV_MON3(6) TYPE C, " Third month

LV_MON4(6) TYPE C, " Fourth month

LV_MON5(6) TYPE C, " Fifth month

LV_MON6(6) TYPE C. " Sixth month

  • Internal tables

DATA:

BEGIN OF LFS_MITEM,

MATNR TYPE VBRP-MATNR, " Material

MATKL TYPE VBRP-MATKL, " Material Group

MONTH(6) TYPE C, " Month

FKIMG TYPE VBRP-FKIMG, " Usage

WAVWR TYPE VBRP-WAVWR, " Cost

NETWR TYPE VBRP-NETWR, " Sell Value

END OF LFS_MITEM,

LT_MITEM LIKE STANDARD TABLE OF LFS_MITEM.

  • Get Monthly stock usage

SORT T_ITEM BY MATNR MATKL FKDAT.

LOOP AT T_ITEM INTO FS_ITEM.

LFS_MITEM-FKIMG = LFS_MITEM-FKIMG + FS_ITEM-FKIMG.

LFS_MITEM-WAVWR = LFS_MITEM-WAVWR + FS_ITEM-WAVWR.

LFS_MITEM-NETWR = LFS_MITEM-NETWR + FS_ITEM-NETWR.

AT END OF FKDAT(6).

MOVE: FS_ITEM-MATNR TO LFS_MITEM-MATNR,

FS_ITEM-MATKL TO LFS_MITEM-MATKL,

FS_ITEM-FKDAT(6) TO LFS_MITEM-MONTH.

APPEND LFS_MITEM TO LT_MITEM.

CLEAR LFS_MITEM.

ENDAT. " AT END OF FKDAT.

ENDLOOP. " LOOP AT T_ITEM

SORT LT_MITEM BY MATNR MATKL MONTH.

  • Get last six months stock

PERFORM CLC_MONTH USING W_DATE

CHANGING LV_MON2

LV_MON3

LV_MON4

LV_MON5

LV_MON6.

  • Prepare Monthly data

LOOP AT LT_MITEM INTO LFS_MITEM.

IF LFS_MITEM-MONTH EQ W_DATE(6).

FS_FUSTOCK-MON1 = FS_FUSTOCK-MON1 + LFS_MITEM-FKIMG.

FS_FUSTOCK-SFKIMG = FS_FUSTOCK-SFKIMG + LFS_MITEM-FKIMG.

FS_FUSTOCK-YFKIMG = FS_FUSTOCK-YFKIMG + LFS_MITEM-FKIMG.

FS_FUSTOCK-SNETWR = FS_FUSTOCK-SNETWR + LFS_MITEM-NETWR.

FS_FUSTOCK-YNETWR = FS_FUSTOCK-YNETWR + LFS_MITEM-NETWR.

FS_FUSTOCK-SWAVWR = FS_FUSTOCK-SWAVWR + LFS_MITEM-WAVWR.

FS_FUSTOCK-YWAVWR = FS_FUSTOCK-YWAVWR + LFS_MITEM-WAVWR.

ELSEIF LFS_MITEM-MONTH EQ LV_MON2.

FS_FUSTOCK-MON2 = FS_FUSTOCK-MON2 + LFS_MITEM-FKIMG.

FS_FUSTOCK-SFKIMG = FS_FUSTOCK-SFKIMG + LFS_MITEM-FKIMG.

FS_FUSTOCK-YFKIMG = FS_FUSTOCK-YFKIMG + LFS_MITEM-FKIMG.

FS_FUSTOCK-SNETWR = FS_FUSTOCK-SNETWR + LFS_MITEM-NETWR.

FS_FUSTOCK-YNETWR = FS_FUSTOCK-YNETWR + LFS_MITEM-NETWR.

FS_FUSTOCK-SWAVWR = FS_FUSTOCK-SWAVWR + LFS_MITEM-WAVWR.

FS_FUSTOCK-YWAVWR = FS_FUSTOCK-YWAVWR + LFS_MITEM-WAVWR.

ELSEIF LFS_MITEM-MONTH EQ LV_MON3.

FS_FUSTOCK-MON3 = FS_FUSTOCK-MON3 + LFS_MITEM-FKIMG.

FS_FUSTOCK-SFKIMG = FS_FUSTOCK-SFKIMG + LFS_MITEM-FKIMG.

FS_FUSTOCK-YFKIMG = FS_FUSTOCK-YFKIMG + LFS_MITEM-FKIMG.

FS_FUSTOCK-SNETWR = FS_FUSTOCK-SNETWR + LFS_MITEM-NETWR.

FS_FUSTOCK-YNETWR = FS_FUSTOCK-YNETWR + LFS_MITEM-NETWR.

FS_FUSTOCK-SWAVWR = FS_FUSTOCK-SWAVWR + LFS_MITEM-WAVWR.

FS_FUSTOCK-YWAVWR = FS_FUSTOCK-YWAVWR + LFS_MITEM-WAVWR.

ELSEIF LFS_MITEM-MONTH EQ LV_MON4.

FS_FUSTOCK-MON4 = FS_FUSTOCK-MON4 + LFS_MITEM-FKIMG.

FS_FUSTOCK-SFKIMG = FS_FUSTOCK-SFKIMG + LFS_MITEM-FKIMG.

FS_FUSTOCK-YFKIMG = FS_FUSTOCK-YFKIMG + LFS_MITEM-FKIMG.

FS_FUSTOCK-SNETWR = FS_FUSTOCK-SNETWR + LFS_MITEM-NETWR.

FS_FUSTOCK-YNETWR = FS_FUSTOCK-YNETWR + LFS_MITEM-NETWR.

FS_FUSTOCK-SWAVWR = FS_FUSTOCK-SWAVWR + LFS_MITEM-WAVWR.

FS_FUSTOCK-YWAVWR = FS_FUSTOCK-YWAVWR + LFS_MITEM-WAVWR.

ELSEIF LFS_MITEM-MONTH EQ LV_MON5.

FS_FUSTOCK-MON5 = FS_FUSTOCK-MON5 + LFS_MITEM-FKIMG.

FS_FUSTOCK-SFKIMG = FS_FUSTOCK-SFKIMG + LFS_MITEM-FKIMG.

FS_FUSTOCK-YFKIMG = FS_FUSTOCK-YFKIMG + LFS_MITEM-FKIMG.

FS_FUSTOCK-SNETWR = FS_FUSTOCK-SNETWR + LFS_MITEM-NETWR.

FS_FUSTOCK-YNETWR = FS_FUSTOCK-YNETWR + LFS_MITEM-NETWR.

FS_FUSTOCK-SWAVWR = FS_FUSTOCK-SWAVWR + LFS_MITEM-WAVWR.

FS_FUSTOCK-YWAVWR = FS_FUSTOCK-YWAVWR + LFS_MITEM-WAVWR.

ELSEIF LFS_MITEM-MONTH EQ LV_MON6.

FS_FUSTOCK-MON6 = FS_FUSTOCK-MON6 + LFS_MITEM-FKIMG.

FS_FUSTOCK-SFKIMG = FS_FUSTOCK-SFKIMG + LFS_MITEM-FKIMG.

FS_FUSTOCK-YFKIMG = FS_FUSTOCK-YFKIMG + LFS_MITEM-FKIMG.

FS_FUSTOCK-SNETWR = FS_FUSTOCK-SNETWR + LFS_MITEM-NETWR.

FS_FUSTOCK-YNETWR = FS_FUSTOCK-YNETWR + LFS_MITEM-NETWR.

FS_FUSTOCK-SWAVWR = FS_FUSTOCK-SWAVWR + LFS_MITEM-WAVWR.

FS_FUSTOCK-YWAVWR = FS_FUSTOCK-YWAVWR + LFS_MITEM-WAVWR.

ELSE.

FS_FUSTOCK-YFKIMG = FS_FUSTOCK-YFKIMG + LFS_MITEM-FKIMG.

FS_FUSTOCK-YNETWR = FS_FUSTOCK-YNETWR + LFS_MITEM-NETWR.

FS_FUSTOCK-YWAVWR = FS_FUSTOCK-YWAVWR + LFS_MITEM-WAVWR.

ENDIF. " IF LFS_MITEM

AT END OF MATKL.

MOVE:LFS_MITEM-MATKL TO FS_FUSTOCK-MATKL,

LFS_MITEM-MATNR TO FS_FUSTOCK-MATNR.

APPEND FS_FUSTOCK TO T_FUSTOCK.

CLEAR FS_FUSTOCK.

ENDAT. " AT END OF MATNR

ENDLOOP. " LOOP AT LT_MITEM

ENDFORM. " FETCH_USEDSTOCK

&----


*& Form CLC_MONTH

&----


  • Calculate month values from last six month to current month

----


  • -->P_LV_DATUM Month

  • <--P_LV_MON2 Fifth month

  • <--P_LV_MON3 Fourth month

  • <--P_LV_MON4 Third month

  • <--P_LV_MON5 Second month

  • <--P_LV_MON6 Current month

----


FORM CLC_MONTH USING P_LV_DATUM TYPE SY-DATUM

CHANGING P_LV_MON2 TYPE C

P_LV_MON3 TYPE C

P_LV_MON4 TYPE C

P_LV_MON5 TYPE C

P_LV_MON6 TYPE C.

  • Local Variables

DATA: LV_MON(2) TYPE N, " Month

LV_YEAR(4) TYPE N. " Year

  • Constants

CONSTANTS:

LC_ONE(2) TYPE C VALUE '01', " One

LC_TWO(2) TYPE C VALUE '02', " Two

LC_THREE(2) TYPE C VALUE '03', " Three

LC_FOUR(2) TYPE C VALUE '04', " Four

LC_FIVE(2) TYPE C VALUE '05', " Five

LC_EONE(2) TYPE C VALUE '13', " Mon val

LC_ETWO(2) TYPE C VALUE '14', " Mon val

LC_ETHREE(2) TYPE C VALUE '15', " Mon val

LC_EFOUR(2) TYPE C VALUE '16', " Mon val

LC_EFIVE(2) TYPE C VALUE '17'. " Mon val

LV_MON = P_LV_DATUM+4(2) + LC_ONE.

LV_YEAR = P_LV_DATUM(4) + 1.

IF LV_MON = LC_EONE.

CONCATENATE LV_YEAR LC_ONE INTO P_LV_MON2.

ELSE.

CONCATENATE P_LV_DATUM(4) LV_MON INTO P_LV_MON2.

ENDIF. " IF LV_MON = 13

LV_MON = P_LV_DATUM+4(2) + LC_TWO.

IF LV_MON = LC_EONE.

CONCATENATE LV_YEAR LC_ONE INTO P_LV_MON3.

ELSEIF LV_MON = LC_ETWO.

CONCATENATE LV_YEAR LC_TWO INTO P_LV_MON3.

ELSE.

CONCATENATE P_LV_DATUM(4) LV_MON INTO P_LV_MON3.

ENDIF. " IF LV_MON = 14

LV_MON = P_LV_DATUM+4(2) + LC_THREE.

IF LV_MON = LC_EONE.

CONCATENATE LV_YEAR LC_ONE INTO P_LV_MON4.

ELSEIF LV_MON = LC_ETWO.

CONCATENATE LV_YEAR LC_TWO INTO P_LV_MON4.

ELSEIF LV_MON = LC_ETHREE.

CONCATENATE LV_YEAR LC_THREE INTO P_LV_MON4.

ELSE.

CONCATENATE P_LV_DATUM(4) LV_MON INTO P_LV_MON4.

ENDIF. " IF LV_MON = 15

LV_MON = P_LV_DATUM+4(2) + LC_FOUR.

IF LV_MON = LC_EONE.

CONCATENATE LV_YEAR LC_ONE INTO P_LV_MON5.

ELSEIF LV_MON = LC_ETWO.

CONCATENATE LV_YEAR LC_TWO INTO P_LV_MON5.

ELSEIF LV_MON = LC_ETHREE.

CONCATENATE LV_YEAR LC_THREE INTO P_LV_MON5.

ELSEIF LV_MON = LC_EFOUR.

CONCATENATE LV_YEAR LC_FOUR INTO P_LV_MON5.

ELSE.

CONCATENATE P_LV_DATUM(4) LV_MON INTO P_LV_MON5.

ENDIF. " IF LV_MON = 16

LV_MON = P_LV_DATUM+4(2) + LC_FIVE.

IF LV_MON = LC_EONE.

CONCATENATE LV_YEAR LC_ONE INTO P_LV_MON6.

ELSEIF LV_MON = LC_ETWO.

CONCATENATE LV_YEAR LC_TWO INTO P_LV_MON6.

ELSEIF LV_MON = LC_ETHREE.

CONCATENATE LV_YEAR LC_THREE INTO P_LV_MON6.

ELSEIF LV_MON = LC_EFOUR.

CONCATENATE LV_YEAR LC_FOUR INTO P_LV_MON6.

ELSEIF LV_MON = LC_EFIVE.

CONCATENATE LV_YEAR LC_FIVE INTO P_LV_MON6.

ELSE.

CONCATENATE P_LV_DATUM(4) LV_MON INTO P_LV_MON6.

ENDIF. " IF LV_MON = 17

ENDFORM. " CLC_MONTH

&----


*& Form FETCH_MONTHS

&----


  • Get the last six months from current date

----


  • There are no interface parameters to be passed to this routine

----


FORM FETCH_MONTHS .

DATA:

LV_MONTH(2) TYPE N, " Month

LV_YEAR(4) TYPE C, " Year

LV_TEMP TYPE I. " Rem

MOVE W_DATE+4(2) TO FS_MONTH-MONTH.

MOVE W_DATE(4) TO FS_MONTH-YEAR.

APPEND FS_MONTH TO T_MONTH.

LV_MONTH = W_DATE+4(2).

LV_YEAR = W_DATE(4).

DO 5 TIMES.

LV_MONTH = LV_MONTH + 1.

LV_TEMP = LV_MONTH MOD 12 .

IF LV_TEMP EQ 1.

MOVE '01' TO LV_MONTH.

LV_YEAR = LV_YEAR + 1.

ENDIF. " IF LV_TEMP EQ 1

MOVE LV_MONTH TO FS_MONTH-MONTH.

MOVE LV_YEAR TO FS_MONTH-YEAR.

APPEND FS_MONTH TO T_MONTH.

CLEAR FS_MONTH.

ENDDO. " DO 5 TIMES

IF T_MONTH[] IS NOT INITIAL.

SELECT MONUM " Month number

MONAM " Month name

FROM T015M

INTO TABLE T_MNAME

FOR ALL ENTRIES IN T_MONTH

WHERE MONUM EQ T_MONTH-MONTH

AND SPRAS EQ SY-LANGU.

IF SY-SUBRC EQ 0.

SORT T_MNAME BY MONTH.

ENDIF. " IF SY-SUBRC EQ 0

ENDIF. " IF T_MONTH[].

ENDFORM. " FETCH_MONTHS

&----


*& Form PREPARE_FINALDATA

&----


  • Prepare final data in the specified order to display on grid

----


  • There are no interface parameters to be passed to this routine

----


FORM PREPARE_FINALDATA .

SORT:T_SCODE BY MATNR,

T_PODAT BY MATNR,

T_KONP BY MATNR,

T_MARD BY MATNR,

T_FUSTOCK BY MATNR.

LOOP AT T_FUSTOCK INTO FS_FUSTOCK.

  • Get Used Stock

MOVE:

FS_FUSTOCK-MATNR TO FS_FINAL-MATNR,

FS_FUSTOCK-MATKL TO FS_FINAL-MATKL,

FS_FUSTOCK-MON1 TO FS_FINAL-MON1,

FS_FUSTOCK-MON2 TO FS_FINAL-MON2,

FS_FUSTOCK-MON3 TO FS_FINAL-MON3,

FS_FUSTOCK-MON4 TO FS_FINAL-MON4,

FS_FUSTOCK-MON5 TO FS_FINAL-MON5,

FS_FUSTOCK-MON6 TO FS_FINAL-MON6,

FS_FUSTOCK-SFKIMG TO FS_FINAL-SFKIMG,

FS_FUSTOCK-YFKIMG TO FS_FINAL-YFKIMG,

FS_FUSTOCK-SNETWR TO FS_FINAL-SNETWR,

FS_FUSTOCK-YNETWR TO FS_FINAL-YNETWR,

FS_FUSTOCK-SWAVWR TO FS_FINAL-SWAVWR,

FS_FUSTOCK-YWAVWR TO FS_FINAL-YWAVWR.

  • Read Material Data

READ TABLE T_MARA INTO FS_MARA WITH KEY

MATNR = FS_FUSTOCK-MATNR BINARY SEARCH.

IF SY-SUBRC EQ 0.

MOVE:FS_MARA-LVORM TO FS_FINAL-LVORM,

FS_MARA-PRDHA(5) TO FS_FINAL-PRDHA1,

FS_MARA-PRDHA+5(5) TO FS_FINAL-PRDHA2,

FS_MARA-KZUMW TO FS_FINAL-KZUMW.

IF FS_MARA-BSTME IS INITIAL.

MOVE FS_MARA-MEINS TO FS_FINAL-BSTME.

ELSE.

MOVE FS_MARA-BSTME TO FS_FINAL-BSTME.

ENDIF. " IF FS_MARA-BSTME

ENDIF. " IF SY_SUBRC EQ 0

  • Read Material Description

READ TABLE T_MAKT INTO FS_MAKT WITH KEY

MATNR = FS_FUSTOCK-MATNR BINARY SEARCH.

IF SY-SUBRC EQ 0.

MOVE FS_MAKT-MAKTX TO FS_FINAL-MAKTX.

ENDIF. " IF SY_SUBRC EQ 0

  • Read Sales data for Material

READ TABLE T_MVKE INTO FS_MVKE WITH KEY

MATNR = FS_FUSTOCK-MATNR BINARY SEARCH.

IF SY-SUBRC EQ 0.

MOVE:FS_MVKE-MTPOS TO FS_FINAL-MTPOS,

FS_MVKE-MVGR1 TO FS_FINAL-MVGR1,

FS_MVKE-MVGR2 TO FS_FINAL-MVGR2.

ENDIF. " IF SY_SUBRC EQ 0

  • Read MRP Controller

READ TABLE T_MARC INTO FS_MARC WITH KEY

MATNR = FS_FUSTOCK-MATNR BINARY SEARCH.

IF SY-SUBRC EQ 0.

MOVE FS_MARC-DISPO TO FS_FINAL-DISPO.

ENDIF. " IF SY_SUBRC EQ 0

  • Read Moving Avg Price

READ TABLE T_MBEW INTO FS_MBEW WITH KEY

MATNR = FS_FUSTOCK-MATNR BINARY SEARCH.

IF SY-SUBRC EQ 0.

MOVE FS_MBEW-VERPR TO FS_FINAL-VERPR.

ENDIF. " IF SY_SUBRC EQ 0

  • Read Product Supercession Code

READ TABLE T_SCODE INTO FS_SCODE WITH KEY

MATNR = FS_FUSTOCK-MATNR BINARY SEARCH.

IF SY-SUBRC EQ 0.

MOVE FS_SCODE-MATWA TO FS_FINAL-MATWA.

ENDIF. " IF SY_SUBRC EQ 0

  • Read Purchase Order Data

READ TABLE T_PODAT INTO FS_PODAT WITH KEY

MATNR = FS_FUSTOCK-MATNR BINARY SEARCH.

IF SY-SUBRC EQ 0.

MOVE: FS_PODAT-DATLB TO FS_FINAL-DATLB,

FS_PODAT-POOUT TO FS_FINAL-POOUT,

FS_PODAT-POQTY TO FS_FINAL-POQTY,

FS_PODAT-POCOST TO FS_FINAL-POCOST.

ENDIF. " IF SY_SUBRC EQ 0

  • Read Info Record

READ TABLE T_KONP INTO FS_KONP WITH KEY

MATNR = FS_FUSTOCK-MATNR BINARY SEARCH.

IF SY-SUBRC EQ 0.

MOVE: FS_KONP-LIFNR TO FS_FINAL-LIFNR,

FS_KONP-KBETR TO FS_FINAL-KBETR,

FS_KONP-KONWA TO FS_FINAL-KONWA.

ENDIF. " IF SY_SUBRC EQ 0

  • Read Min And Max Stocks

READ TABLE T_MARD INTO FS_MARD WITH KEY

MATNR = FS_FUSTOCK-MATNR BINARY SEARCH.

IF SY-SUBRC EQ 0.

MOVE: FS_MARD-MINQTY TO FS_FINAL-MINQTY,

FS_MARD-MAXQTY TO FS_FINAL-MAXQTY.

ENDIF. " IF SY_SUBRC EQ 0

APPEND FS_FINAL TO T_FINAL.

CLEAR:FS_FINAL,FS_MARD,FS_KONP,FS_PODAT,FS_SCODE,

FS_MBEW,FS_MARC,FS_MVKE,FS_MARA,FS_MAKT.

ENDLOOP. " LOOP AT T_FUSTOCK

REFRESH: T_CORP,T_SOLDTO,T_VBRK,T_VBFA,T_ITEM,T_TITEM,

T_MARA,T_MAKT,T_MVKE,T_MARC,T_SCODE,T_PODAT,T_KONP,

T_MARD,T_FUSTOCK.

ENDFORM. " PREPARE_FINALDATA

&----


*& Form PREPARE_FIELDCAT

&----


  • Prepare field catalog data for final table

----


  • There are no interface parameters to be passed to this routine

----


FORM PREPARE_FIELDCAT .

CONSTANTS:

LC_SEP(1) TYPE C VALUE '-'. " Separator

DATA:

LV_TEXT(7) TYPE C. " Text

  • Material

PERFORM BUILD_FIELD_CATALOG USING

'MATNR' TEXT-007 'T_FINAL' '' 'X' 'X'.

  • Desc

PERFORM BUILD_FIELD_CATALOG USING

'MAKTX' TEXT-008 'T_FINAL' '' '' ''.

  • Category

PERFORM BUILD_FIELD_CATALOG USING

'MTPOS' TEXT-009 'T_FINAL' '' '' ''.

  • Material Group

PERFORM BUILD_FIELD_CATALOG USING

'MATKL' TEXT-010 'T_FINAL' '' '' ''.

  • Product Heirarchy1

PERFORM BUILD_FIELD_CATALOG USING

'PRDHA1' TEXT-011 'T_FINAL' '' '' ''.

  • Product Heirarchy2

PERFORM BUILD_FIELD_CATALOG USING

'PRDHA2' TEXT-012 'T_FINAL' '' '' ''.

  • Environment

PERFORM BUILD_FIELD_CATALOG USING

'KZUMW' TEXT-013 'T_FINAL' '' '' ''.

  • Material Group1

PERFORM BUILD_FIELD_CATALOG USING

'MVGR1' TEXT-014 'T_FINAL' '' '' ''.

  • Material Group2

PERFORM BUILD_FIELD_CATALOG USING

'MVGR2' TEXT-015 'T_FINAL' '' '' ''.

  • MRP Controller

PERFORM BUILD_FIELD_CATALOG USING

'DISPO' TEXT-016 'T_FINAL' '' '' ''.

  • Purchase Unit

PERFORM BUILD_FIELD_CATALOG USING

'BSTME' TEXT-017 'T_FINAL' '' '' ''.

  • Cost Info

PERFORM BUILD_FIELD_CATALOG USING

'KBETR' TEXT-018 'T_FINAL' 'R' 'X' ''.

  • Currency

PERFORM BUILD_FIELD_CATALOG USING

'KONWA' TEXT-034 'T_FINAL' '' '' ''.

  • Moving Avg price

PERFORM BUILD_FIELD_CATALOG USING

'VERPR' TEXT-019 'T_FINAL' 'R' 'X' ''.

  • Current Vendor

PERFORM BUILD_FIELD_CATALOG USING

'LIFNR' TEXT-020 'T_FINAL' '' 'X' ''.

  • Months Data

LOOP AT T_MONTH INTO FS_MONTH.

CASE SY-TABIX.

WHEN 1.

READ TABLE T_MNAME INTO FS_MNAME WITH KEY

MONTH = FS_MONTH-MONTH.

  • Sixth Mon

IF SY-SUBRC EQ 0.

CONCATENATE FS_MNAME-TXT FS_MONTH-YEAR+2(2)

INTO LV_TEXT SEPARATED BY LC_SEP.

CLEAR FS_FLDCAT.

FS_FLDCAT-FIELDNAME = 'MON1'.

FS_FLDCAT-COLTEXT = LV_TEXT.

FS_FLDCAT-TABNAME = 'T_FINAL' .

FS_FLDCAT-JUST = 'R'.

FS_FLDCAT-NO_ZERO = 'X'.

FS_FLDCAT-KEY = SPACE.

APPEND FS_FLDCAT TO T_FLDCAT.

ENDIF. " IF SY-SUBRC EQ 0

WHEN 2.

READ TABLE T_MNAME INTO FS_MNAME WITH KEY

MONTH = FS_MONTH-MONTH.

  • Fifth Mon

IF SY-SUBRC EQ 0.

CONCATENATE FS_MNAME-TXT FS_MONTH-YEAR+2(2)

INTO LV_TEXT SEPARATED BY LC_SEP.

CLEAR FS_FLDCAT.

FS_FLDCAT-FIELDNAME = 'MON2'.

FS_FLDCAT-COLTEXT = LV_TEXT.

FS_FLDCAT-TABNAME = 'T_FINAL' .

FS_FLDCAT-JUST = 'R'.

FS_FLDCAT-NO_ZERO = 'X'.

FS_FLDCAT-KEY = SPACE.

APPEND FS_FLDCAT TO T_FLDCAT.

ENDIF. " IF SY-SUBRC EQ 0

WHEN 3.

READ TABLE T_MNAME INTO FS_MNAME WITH KEY

MONTH = FS_MONTH-MONTH.

  • Fourth Mon

IF SY-SUBRC EQ 0.

CONCATENATE FS_MNAME-TXT FS_MONTH-YEAR+2(2)

INTO LV_TEXT SEPARATED BY LC_SEP.

CLEAR FS_FLDCAT.

FS_FLDCAT-FIELDNAME = 'MON3'.

FS_FLDCAT-COLTEXT = LV_TEXT.

FS_FLDCAT-TABNAME = 'T_FINAL' .

FS_FLDCAT-JUST = 'R'.

FS_FLDCAT-NO_ZERO = 'X'.

FS_FLDCAT-KEY = SPACE.

APPEND FS_FLDCAT TO T_FLDCAT.

ENDIF. " IF SY-SUBRC EQ 0

WHEN 4.

READ TABLE T_MNAME INTO FS_MNAME WITH KEY

MONTH = FS_MONTH-MONTH.

  • Third Month

IF SY-SUBRC EQ 0.

CONCATENATE FS_MNAME-TXT FS_MONTH-YEAR+2(2)

INTO LV_TEXT SEPARATED BY LC_SEP.

CLEAR FS_FLDCAT.

FS_FLDCAT-FIELDNAME = 'MON4'.

FS_FLDCAT-COLTEXT = LV_TEXT.

FS_FLDCAT-TABNAME = 'T_FINAL' .

FS_FLDCAT-JUST = 'R'.

FS_FLDCAT-NO_ZERO = 'X'.

FS_FLDCAT-KEY = SPACE.

APPEND FS_FLDCAT TO T_FLDCAT.

ENDIF. " IF SY-SUBRC EQ 0

WHEN 5.

READ TABLE T_MNAME INTO FS_MNAME WITH KEY

MONTH = FS_MONTH-MONTH.

  • Second Mon

IF SY-SUBRC EQ 0.

CONCATENATE FS_MNAME-TXT FS_MONTH-YEAR+2(2)

INTO LV_TEXT SEPARATED BY LC_SEP.

CLEAR FS_FLDCAT.

FS_FLDCAT-FIELDNAME = 'MON5'.

FS_FLDCAT-COLTEXT = LV_TEXT.

FS_FLDCAT-TABNAME = 'T_FINAL' .

FS_FLDCAT-JUST = 'R'.

FS_FLDCAT-NO_ZERO = 'X'.

FS_FLDCAT-KEY = SPACE.

APPEND FS_FLDCAT TO T_FLDCAT.

ENDIF. " IF SY-SUBRC EQ 0

WHEN 6.

READ TABLE T_MNAME INTO FS_MNAME WITH KEY

MONTH = FS_MONTH-MONTH.

  • First Mon

IF SY-SUBRC EQ 0.

CONCATENATE FS_MNAME-TXT FS_MONTH-YEAR+2(2)

INTO LV_TEXT SEPARATED BY LC_SEP.

CLEAR FS_FLDCAT.

FS_FLDCAT-FIELDNAME = 'MON6'.

FS_FLDCAT-COLTEXT = LV_TEXT.

FS_FLDCAT-TABNAME = 'T_FINAL' .

FS_FLDCAT-JUST = 'R'.

FS_FLDCAT-NO_ZERO = 'X'.

FS_FLDCAT-KEY = SPACE.

APPEND FS_FLDCAT TO T_FLDCAT.

ENDIF. " IF SY-SUBRC EQ 0

ENDCASE. " CASE SY-TABIX

ENDLOOP. " LOOP AT T_MONTH

  • Six Months Usage

PERFORM BUILD_FIELD_CATALOG USING

'SFKIMG' TEXT-021 'T_FINAL' 'R' 'X' ''.

  • Six Months Cost

PERFORM BUILD_FIELD_CATALOG USING

'SWAVWR' TEXT-022 'T_FINAL' 'R' 'X' ''.

  • Six Months Net Value

PERFORM BUILD_FIELD_CATALOG USING

'SNETWR' TEXT-023 'T_FINAL' 'R' 'X' ''.

  • One Year Usage

PERFORM BUILD_FIELD_CATALOG USING

'YFKIMG' TEXT-024 'T_FINAL' 'R' 'X' ''.

  • One Year Cost

PERFORM BUILD_FIELD_CATALOG USING

'YWAVWR' TEXT-025 'T_FINAL' 'R' 'X' ''.

  • One Year Net Value

PERFORM BUILD_FIELD_CATALOG USING

'YNETWR' TEXT-026 'T_FINAL' 'R' 'X' ''.

  • Min Stock

PERFORM BUILD_FIELD_CATALOG USING

'MINQTY' TEXT-027 'T_FINAL' 'R' 'X' ''.

  • Max Stock

PERFORM BUILD_FIELD_CATALOG USING

'MAXQTY' TEXT-028 'T_FINAL' 'R' 'X' ''.

  • Product Supercession code

PERFORM BUILD_FIELD_CATALOG USING

'MATWA' TEXT-029 'T_FINAL' '' 'X' ''.

  • PO Date

PERFORM BUILD_FIELD_CATALOG USING

'DATLB' TEXT-030 'T_FINAL' '' '' ''.

  • PO Qty

PERFORM BUILD_FIELD_CATALOG USING

'POQTY' TEXT-031 'T_FINAL' 'R' 'X' ''.

  • PO Cost

PERFORM BUILD_FIELD_CATALOG USING

'POCOST' TEXT-032 'T_FINAL' 'R' 'X' ''.

  • PO Outstand

PERFORM BUILD_FIELD_CATALOG USING

'POOUT' TEXT-033 'T_FINAL' 'R' 'X' ''.

  • Deletion Flag

PERFORM BUILD_FIELD_CATALOG USING

'LVORM' TEXT-035 'T_FINAL' '' '' ''.

REFRESH: T_MONTH,T_MNAME.

ENDFORM. " PREPARE_FIELDCAT

" STATUS_0100

Regards,

Sankar

Read only

seshatalpasai_madala
Product and Topic Expert
Product and Topic Expert
0 Likes
630

Hi,

You need to write the code at the event block

AT SELECTION-SCREEN ON VALUE REQUEST FOR plant_num.

Here you get the value for other fields and then assing them the data using SELECT query.

Or you can do this in AT SELECTION-SCREEN ON plant_num.

Or you can create search help which exports all these three fields and use this search help.

Regards,

Sesh

Read only

Former Member
0 Likes
630

u can create search help option for the remaining fields for which u want data to be entered dynamically at ddic level giving base table name and

use this statement

selection screen on value request

if u want u can give f4 help for these fields also by calling function in at selection screen event.