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

Material Inventory download

Former Member
0 Likes
1,632

Hi Experts,

Please provide some sample code for Material inventory download.

Thanks in advance .

Regards

Praveen k

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
1,153

Hi,

Please find the sample code to download Inventory data for a material. This code related to download the following fields. The fields are Material number, material group, Plant, Storage location, Stock, value of the stock, Invoice cal date, currency...

tables:marc,msku,mslb.

TYPES:BEGIN OF TY_S031,

SSOUR TYPE S031-SSOUR,

VRSIO TYPE S031-VRSIO,

SPMON TYPE S031-SPMON,

WERKS TYPE S031-WERKS,

MATNR TYPE S031-MATNR,

LGORT TYPE S031-LGORT,

MZUBB TYPE S031-MZUBB,

MAGBB TYPE S031-MZUBB,

END OF TY_S031.

TYPES:BEGIN OF TY_S032,

SPART TYPE S032-SPART,

MATKL TYPE S032-MATKL,

MATNR TYPE S032-MATNR,

WERKS TYPE S032-WERKS,

LGORT TYPE S032-LGORT,

MBWBEST TYPE S032-MBWBEST,

WBWBEST TYPE S032-WBWBEST,

HWAER TYPE S032-HWAER,

MKOBEST TYPE S032-MKOBEST,

LETZTBEW TYPE S032-LETZTBEW,

END OF TY_S032.

TYPES: BEGIN OF TY_INVFINAL,

SPMON TYPE S031-SPMON,

SPART(2) TYPE C,

MATKL(9) TYPE C,

MATNR(18) TYPE C,

WERKS(4) TYPE C,

LGORT(8) TYPE C,

MBWBEST(22) TYPE C,

WBWBEST(22) TYPE C,

HWAER(8) TYPE C,

MKOBEST(22) TYPE C,

IDATE TYPE SY-DATUM,

prdha like mara-prdha,

kunnr like kna1-kunnr,

lifnr like lfa1-lifnr,

END OF TY_INVFINAL.

DATA: BEGIN OF T_MBEWH OCCURS 0,

MATNR LIKE MBEWH-MATNR,

BWKEY LIKE MBEWH-BWKEY,

BWTAR LIKE MBEWH-BWTAR,

LFGJA LIKE MBEWH-LFGJA,

LFMON LIKE MBEWH-LFMON,

LBKUM LIKE MBEWH-LBKUM,

SALK3 LIKE MBEWH-SALK3,

END OF T_MBEWH.

DATA: T_FISCALPERIOD TYPE TABLE OF TY_FISCALPERIOD WITH HEADER LINE.

RANGES: V_SPMON FOR S031-SPMON.

DATA: BEGIN OF T_MBEW OCCURS 0,

MATNR LIKE MBEW-MATNR,

BWKEY LIKE MBEW-BWKEY,

BWTAR LIKE MBEW-BWTAR,

LBKUM LIKE MBEW-LBKUM,

SALK3 LIKE MBEW-SALK3,

END OF T_MBEW.

DATA : BEGIN OF IT_DOWN OCCURS 0,

EBELN LIKE EKKO-EBELN, "purchase order number

EBELP LIKE EKPO-EBELP, "purchase order item

MATNR LIKE EKPO-MATNR, "material

ETENR LIKE EKET-ETENR, "Schedule Line No

MENGE(17), "ordered quantity

SLFDT LIKE EKET-SLFDT, "Request Date

ODATE LIKE ZPOORIGCMT-ODATE, "Original Commit Date

EINDT LIKE EKET-EINDT, "Commit Date

VBELN LIKE LIKP-VBELN, "shipping notification

POSNR LIKE LIPS-POSNR, "shipping notification item

EINDT1 LIKE EKES-EINDT, "Ship Note Date

LFIMG LIKE LIPS-LFIMG, "shipping notification quantity

WEMNG LIKE EKBE-MENGE, "Goods Receipt Quantity 16th Oct

BUDAT LIKE EKBE-BUDAT, "Goods Reciept Date

DABMS LIKE EKES-DABMG, "open quantity

VERUR LIKE LIKP-VERUR, "vendor shipping note number

BOLNR LIKE LIKP-BOLNR, "bill of lading

MATKL LIKE MARA-MATKL,

PRDHA LIKE MARA-PRDHA,

NEWPO LIKE ZPODROPAUTO-NEWPO, "New PO Add 003

NEWPOLIN LIKE ZPODROPAUTO-NEWPOLIN, "New Po Line Add 003

OLDPO LIKE ZPODROPAUTO-OLDPO, "New PO Add 003

OLDPOLIN LIKE ZPODROPAUTO-OLDPOLIN, "New Po Line Add 003

ANGNR LIKE EKKO-ANGNR, "SO no Add 003

SUBMI LIKE EKKO-SUBMI, "SO line Add 003

KDMAT LIKE LIPS-KDMAT, " Vendor Material No Add 004

VENDI(30), " Vendor Invoice No Add 004

WERKS LIKE EKPO-WERKS,

LGORT LIKE EKPO-LGORT,

VKORG LIKE KNVV-VKORG,

VKBUR LIKE KNVV-VKBUR,

VBELN_SO LIKE VBAK-VBELN,

END OF IT_DOWN.

DATA:BEGIN OF T_ASC OCCURS 0,

LINE(255),

END OF T_ASC.

DATA W_FIELDS(35) OCCURS 0 WITH HEADER LINE.

DATA W_FIELDS1(25) OCCURS 0 WITH HEADER LINE."BATHI on 15th Sept 2008

"download data column headings

*data:w_Text like w_fields.

DATA:BEGIN OF T_FIELDS OCCURS 10,

ID(1) TYPE C,

TEXT(255) TYPE C,

END OF T_FIELDS.

DATA:T_S031 TYPE STANDARD TABLE OF TY_S031 WITH HEADER LINE,

T_S032 TYPE STANDARD TABLE OF TY_S032 WITH HEADER LINE,

T_INVFINAL TYPE STANDARD TABLE OF TY_INVFINAL WITH HEADER LINE,

T_CE11000 TYPE STANDARD TABLE OF TY_CE11000 WITH HEADER LINE.

DATA:T_INVUNIX TYPE STANDARD TABLE OF TY_INVUNIX WITH HEADER LINE,

T_INVFINAL1 TYPE STANDARD TABLE OF TY_INVFINAL WITH HEADER LINE.

TYPES:BEGIN OF TY_MARA,

MATNR LIKE MARA-MATNR,

MATKL LIKE MARA-MATKL,

ERSDA LIKE MARA-ERSDA,

IND(1) TYPE C,

END OF TY_MARA..

DATA:IT_MARA TYPE STANDARD TABLE OF TY_MARA WITH HEADER LINE,

IT_MARA2 TYPE STANDARD TABLE OF TY_MARA WITH HEADER LINE,

data:begin of t_invunix3 occurs 0.

include structure t_invunix.

data:SORT11(1),

prdha like mara-prdha,

SORT12(1),

kunnr like kna1-kunnr,

SORT13(1),

lifnr like lfa1-lifnr,

end of t_invunix3.

SELECTION-SCREEN BEGIN OF SCREEN 103 AS SUBSCREEN.

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

SELECT-OPTIONS: SL_WERKS FOR S031-WERKS MODIF ID MD3.

SELECT-OPTIONS: SL_LGORT FOR S031-LGORT.

SELECT-OPTIONS: SL_MATNR FOR S031-MATNR,

SL_MATKL FOR S032-MATKL,

SL_SPMON FOR S031-SPMON.

PARAMETER: P_IWAERK TYPE S032-HWAER

DEFAULT 'GBP' MODIF ID MD3.

PARAMETER: P_INVFL(128) TYPE C

DEFAULT 'c:\temp\Inventory_file.xls' LOWER CASE MODIF ID

MD3.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 01(31) TEXT-P01 FOR FIELD P_PRHIE.

PARAMETERS: P_PRHIE AS CHECKBOX DEFAULT ' '.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 01(31) TEXT-S01 FOR FIELD P_SPVAL.

PARAMETERS: P_SPVAL AS CHECKBOX DEFAULT ' '.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 01(31) TEXT-C01 FOR FIELD P_DOWN3.

PARAMETERS: P_DOWN3 AS CHECKBOX USER-COMMAND CHK3.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN END OF BLOCK B3.

SELECTION-SCREEN END OF SCREEN 103.

START-OF-SELECTION.

PERFORM CALC_DATES.

PERFORM INV_DOWNLOAD.

IMPORT IT_DOWN TO IT_DOWN FROM MEMORY ID 'IT_DOWN'.

IF P_POR+0(1) <> '/'.

PERFORM MOVE_HEADER_TEXT.

PERFORM EXTRACT_PORS.

ELSE.

PERFORM UNIX_PORS.

ENDIF.

ENDIF.

FORM INV_DOWNLOAD .

PERFORM GET_REQ_DATA.

PERFORM GET_MAVG_PRICE.

SORT T_MBEWH BY MATNR BWKEY LFGJA ASCENDING LFMON ASCENDING." 007

IF NOT T_S032[] IS INITIAL.

LOOP AT T_S032.

CLEAR: V_TABIX, V_CUR_QTY.

V_TABIX = SY-TABIX.

LOOP AT T_S031 WHERE WERKS = T_S032-WERKS

AND MATNR = T_S032-MATNR

AND LGORT = T_S032-LGORT

AND SPMON IN V_SPMON.

IF T_S032-LETZTBEW+0(6) IN V_SPMON.

V_CUR_QTY = T_S031-MZUBB - T_S031-MAGBB.

T_S032-MBWBEST = T_S032-MBWBEST - V_CUR_QTY.

MODIFY T_S032 INDEX V_TABIX.

ENDIF.

ENDLOOP.

READ TABLE T_MBEWH WITH KEY MATNR = T_S032-MATNR

BWKEY = T_S032-WERKS.

IF SY-SUBRC = 0.

CLEAR V_VALUE.

IF T_MBEWH-LBKUM <> 0.

V_VALUE = ( T_MBEWH-SALK3 / T_MBEWH-LBKUM ).

ENDIF.

T_S032-WBWBEST = T_S032-MBWBEST * V_VALUE. "+009

MODIFY T_S032 INDEX V_TABIX.

ELSE.

READ TABLE T_MBEW WITH KEY MATNR = T_S032-MATNR

BWKEY = T_S032-WERKS.

IF SY-SUBRC = 0.

CLEAR V_VALUE.

IF T_MBEW-LBKUM <> 0.

V_VALUE = ( T_MBEW-SALK3 / T_MBEW-LBKUM ).

ENDIF.

T_S032-WBWBEST = T_S032-MBWBEST * V_VALUE. "+009

MODIFY T_S032 INDEX V_TABIX.

ENDIF.

ENDIF.

ENDLOOP.

DELETE T_S032 WHERE MBWBEST = 0. "+009

ENDIF.

SORT T_S032 BY SPART MATKL WERKS MATNR.

select matnr prdha into table t_prdha

from mara

for all entries in t_s032

where matnr = t_s032-matnr.

IF NOT SL_SPMON-HIGH IS INITIAL.

CONCATENATE SL_SPMON-HIGH0(4) SL_SPMON-HIGH4(2) '01'

INTO V_LAST_DATE.

ELSE.

CONCATENATE SL_SPMON-LOW0(4) SL_SPMON-LOW4(2) '01'

INTO V_LAST_DATE.

ENDIF.

CALL FUNCTION 'LAST_DAY_OF_MONTHS'

EXPORTING

DAY_IN = V_LAST_DATE

IMPORTING

LAST_DAY_OF_MONTH = V_LAST_DATE

EXCEPTIONS

DAY_IN_NO_DATE = 1

OTHERS = 2

.

IF SY-SUBRC <> 0.

ENDIF.

LOOP AT T_S032.

IF T_S032-HWAER <> P_IWAERK.

PERFORM CONVERT_AMOUNT USING V_LAST_DATE T_S032-HWAER P_IWAERK

CHANGING T_S032-WBWBEST .

T_S032-HWAER = P_IWAERK.

MODIFY T_S032 INDEX SY-TABIX TRANSPORTING WBWBEST HWAER.

ENDIF.

MOVE-CORRESPONDING T_S032 TO T_INVFINAL.

READ TABLE T_S031 WITH KEY WERKS = T_S032-WERKS

MATNR = T_S032-MATNR

LGORT = T_S032-LGORT.

T_INVFINAL-SPMON = SL_SPMON-LOW. "BATHI-001

PERFORM GET_LAST_DAY USING SL_SPMON-LOW CHANGING T_INVFINAL-IDATE.

"bathi-001

read table t_prdha with key matnr = t_invfinal-matnr.

if sy-subrc = 0.

t_invfinal-prdha = t_prdha-prdha.

endif.

APPEND T_INVFINAL.

ENDLOOP.

L_SEPARATOR = CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB.

SORT T_INVFINAL BY WERKS.

ENDFORM. " INv_download

FORM FILE_DOWNLOAD TABLES T_FILE

W_FIELDS

USING P_FILE.

DATA:LV_FILE TYPE STRING,

L_SEPARATOR TYPE C.

L_SEPARATOR = CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB.

LV_FILE = P_FILE.

CALL FUNCTION 'Z_GUI_DOWNLOAD'

EXPORTING

FILENAME = LV_FILE

FILETYPE = 'DAT'

FILE_POP_UP = ' '

TABLES

DATA_TAB = T_FILE

FIELDNAMES = W_FIELDS

EXCEPTIONS

FILE_WRITE_ERROR = 1

NO_BATCH = 2

GUI_REFUSE_FILETRANSFER = 3

INVALID_TYPE = 4

NO_AUTHORITY = 5

UNKNOWN_ERROR = 6

HEADER_NOT_ALLOWED = 7

SEPARATOR_NOT_ALLOWED = 8

FILESIZE_NOT_ALLOWED = 9

HEADER_TOO_LONG = 10

DP_ERROR_CREATE = 11

DP_ERROR_SEND = 12

DP_ERROR_WRITE = 13

UNKNOWN_DP_ERROR = 14

ACCESS_DENIED = 15

DP_OUT_OF_MEMORY = 16

DISK_FULL = 17

DP_TIMEOUT = 18

FILE_NOT_FOUND = 19

DATAPROVIDER_EXCEPTION = 20

CONTROL_FLUSH_ERROR = 21

OTHERS = 22.

IF SY-SUBRC <> 0.

WRITE : / 'Error in downloading file: ',P_FILE.

ELSE.

WRITE : / 'Successfully downloaded file: ',P_FILE.

ENDIF.

ENDFORM. " file_download

FORM CONVERT_DATE USING P_PERIV CHANGING P_BUPER

P_GJAHR.

CALL FUNCTION 'DATE_TO_PERIOD_CONVERT'

EXPORTING

I_DATE = SY-DATUM

  • I_MONMIT = 00

I_PERIV = P_PERIV

IMPORTING

E_BUPER = P_BUPER

E_GJAHR = P_GJAHR

ENDFORM. " convert_date

FORM GET_PREV_PERIOD CHANGING P_PER

P_YR.

CALL FUNCTION 'CKML_F_GET_PREVIOUS_PERIOD'

EXPORTING

INPUT_PERIOD = P_PER

INPUT_YEAR = P_YR

INPUT_PERIV = 'K0'

IMPORTING

PREVIOUS_PERIOD = P_PER

PREVIOUS_YEAR = P_YR.

ENDFORM. " GET_PREV_PERIOD

FORM GET_REQ_DATA .

SELECT SSOUR

VRSIO

SPMON

WERKS

MATNR

LGORT

MZUBB

MAGBB

FROM S031

INTO TABLE T_S031

WHERE SPMON IN V_SPMON

AND WERKS IN SL_WERKS

AND MATNR IN SL_MATNR

AND LGORT IN SL_LGORT.

IF SY-SUBRC NE 0.

ENDIF.

SELECT SPART

MATKL

MATNR

WERKS

LGORT

MBWBEST

WBWBEST

HWAER

MKOBEST

LETZTBEW "BATHI

FROM S032

INTO TABLE T_S032

WHERE WERKS IN SL_WERKS

AND MATNR IN SL_MATNR

AND LGORT IN SL_LGORT

AND MATKL IN SL_MATKL.

IF SY-SUBRC NE 0.

ENDIF.

ENDFORM. " GET_CURR_DATA

FORM GET_MAVG_PRICE .

CLEAR: V_DATE,V_PERIOD1,V_FISCALYEAR.

CONCATENATE SL_SPMON-LOW0(4) SL_SPMON-LOW4(2) '01' INTO V_DATE.

CALL FUNCTION 'DATE_TO_PERIOD_CONVERT'

EXPORTING

I_DATE = V_DATE

I_PERIV = 'V3'

IMPORTING

E_BUPER = V_PERIOD1

E_GJAHR = V_FISCALYEAR

IF NOT T_S032[] IS INITIAL.

SELECT MATNR

BWKEY

BWTAR

LFGJA

LFMON

LBKUM

SALK3

INTO TABLE T_MBEWH

FROM MBEWH FOR ALL ENTRIES IN T_S032

WHERE MATNR = T_S032-MATNR

AND BWKEY = T_S032-WERKS

AND BWTAR = SPACE

AND ( LFGJA > V_FISCALYEAR

or ( LFGJA = V_FISCALYEAR

and LFMON >= V_PERIOD1+1(2) ) ).

IF SY-SUBRC = 0.

  • DELETE T_MBEWH WHERE VERPR = 0. "-009

DELETE T_MBEWH WHERE LBKUM = 0 AND SALK3 = 0. "+009

ENDIF.

  • GET MOVING AVERAGE PRICE PER UNIT FROM MBEW

SELECT MATNR

BWKEY

BWTAR

LBKUM

SALK3

INTO TABLE T_MBEW

FROM MBEW FOR ALL ENTRIES IN T_S032

WHERE MATNR = T_S032-MATNR

AND BWKEY = T_S032-WERKS

AND BWTAR = SPACE.

IF SY-SUBRC = 0.

  • DELETE T_MBEW WHERE VERPR = 0. "-009

DELETE T_MBEW WHERE LBKUM = 0 AND SALK3 = 0. "+009

ENDIF.

ENDIF.

ENDFORM. " GET_MAVG_PRICE

FORM GET_RANGE.

READ TABLE SL_SPMON INDEX 1.

IF NOT SL_SPMON-LOW IS INITIAL.

V_SPMON-LOW = SL_SPMON-LOW.

V_SPMON-OPTION = SL_SPMON-OPTION.

V_SPMON-SIGN = SL_SPMON-SIGN.

V_SPMON-HIGH = SY-DATUM(6).

  • IF V_SPMON-LOW LT V_SPMON-HIGH. " 007

IF V_SPMON-LOW LE V_SPMON-HIGH. " 007

V_SPMON-LOW4(2) = V_SPMON-LOW4(2) + 1.

IF V_SPMON-LOW+4(2) = '13'.

V_SPMON-LOW+4(2) = '01'.

V_SPMON-LOW(4) = V_SPMON-LOW(4) + 1.

ENDIF.

APPEND V_SPMON.

ENDIF.

ENDIF.

ENDFORM. " get_range

Thanks

Hi Experts,

Please provide some sample code for Material inventory download.

Thanks in advance .

Regards

Praveen k

4 REPLIES 4
Read only

Former Member
Read only

Former Member
0 Likes
1,153

Hi Praveen,

use this bapi "BAPI_MATERIAL_GET_DETAIL"

Read only

Former Member
0 Likes
1,154

Hi,

Please find the sample code to download Inventory data for a material. This code related to download the following fields. The fields are Material number, material group, Plant, Storage location, Stock, value of the stock, Invoice cal date, currency...

tables:marc,msku,mslb.

TYPES:BEGIN OF TY_S031,

SSOUR TYPE S031-SSOUR,

VRSIO TYPE S031-VRSIO,

SPMON TYPE S031-SPMON,

WERKS TYPE S031-WERKS,

MATNR TYPE S031-MATNR,

LGORT TYPE S031-LGORT,

MZUBB TYPE S031-MZUBB,

MAGBB TYPE S031-MZUBB,

END OF TY_S031.

TYPES:BEGIN OF TY_S032,

SPART TYPE S032-SPART,

MATKL TYPE S032-MATKL,

MATNR TYPE S032-MATNR,

WERKS TYPE S032-WERKS,

LGORT TYPE S032-LGORT,

MBWBEST TYPE S032-MBWBEST,

WBWBEST TYPE S032-WBWBEST,

HWAER TYPE S032-HWAER,

MKOBEST TYPE S032-MKOBEST,

LETZTBEW TYPE S032-LETZTBEW,

END OF TY_S032.

TYPES: BEGIN OF TY_INVFINAL,

SPMON TYPE S031-SPMON,

SPART(2) TYPE C,

MATKL(9) TYPE C,

MATNR(18) TYPE C,

WERKS(4) TYPE C,

LGORT(8) TYPE C,

MBWBEST(22) TYPE C,

WBWBEST(22) TYPE C,

HWAER(8) TYPE C,

MKOBEST(22) TYPE C,

IDATE TYPE SY-DATUM,

prdha like mara-prdha,

kunnr like kna1-kunnr,

lifnr like lfa1-lifnr,

END OF TY_INVFINAL.

DATA: BEGIN OF T_MBEWH OCCURS 0,

MATNR LIKE MBEWH-MATNR,

BWKEY LIKE MBEWH-BWKEY,

BWTAR LIKE MBEWH-BWTAR,

LFGJA LIKE MBEWH-LFGJA,

LFMON LIKE MBEWH-LFMON,

LBKUM LIKE MBEWH-LBKUM,

SALK3 LIKE MBEWH-SALK3,

END OF T_MBEWH.

DATA: T_FISCALPERIOD TYPE TABLE OF TY_FISCALPERIOD WITH HEADER LINE.

RANGES: V_SPMON FOR S031-SPMON.

DATA: BEGIN OF T_MBEW OCCURS 0,

MATNR LIKE MBEW-MATNR,

BWKEY LIKE MBEW-BWKEY,

BWTAR LIKE MBEW-BWTAR,

LBKUM LIKE MBEW-LBKUM,

SALK3 LIKE MBEW-SALK3,

END OF T_MBEW.

DATA : BEGIN OF IT_DOWN OCCURS 0,

EBELN LIKE EKKO-EBELN, "purchase order number

EBELP LIKE EKPO-EBELP, "purchase order item

MATNR LIKE EKPO-MATNR, "material

ETENR LIKE EKET-ETENR, "Schedule Line No

MENGE(17), "ordered quantity

SLFDT LIKE EKET-SLFDT, "Request Date

ODATE LIKE ZPOORIGCMT-ODATE, "Original Commit Date

EINDT LIKE EKET-EINDT, "Commit Date

VBELN LIKE LIKP-VBELN, "shipping notification

POSNR LIKE LIPS-POSNR, "shipping notification item

EINDT1 LIKE EKES-EINDT, "Ship Note Date

LFIMG LIKE LIPS-LFIMG, "shipping notification quantity

WEMNG LIKE EKBE-MENGE, "Goods Receipt Quantity 16th Oct

BUDAT LIKE EKBE-BUDAT, "Goods Reciept Date

DABMS LIKE EKES-DABMG, "open quantity

VERUR LIKE LIKP-VERUR, "vendor shipping note number

BOLNR LIKE LIKP-BOLNR, "bill of lading

MATKL LIKE MARA-MATKL,

PRDHA LIKE MARA-PRDHA,

NEWPO LIKE ZPODROPAUTO-NEWPO, "New PO Add 003

NEWPOLIN LIKE ZPODROPAUTO-NEWPOLIN, "New Po Line Add 003

OLDPO LIKE ZPODROPAUTO-OLDPO, "New PO Add 003

OLDPOLIN LIKE ZPODROPAUTO-OLDPOLIN, "New Po Line Add 003

ANGNR LIKE EKKO-ANGNR, "SO no Add 003

SUBMI LIKE EKKO-SUBMI, "SO line Add 003

KDMAT LIKE LIPS-KDMAT, " Vendor Material No Add 004

VENDI(30), " Vendor Invoice No Add 004

WERKS LIKE EKPO-WERKS,

LGORT LIKE EKPO-LGORT,

VKORG LIKE KNVV-VKORG,

VKBUR LIKE KNVV-VKBUR,

VBELN_SO LIKE VBAK-VBELN,

END OF IT_DOWN.

DATA:BEGIN OF T_ASC OCCURS 0,

LINE(255),

END OF T_ASC.

DATA W_FIELDS(35) OCCURS 0 WITH HEADER LINE.

DATA W_FIELDS1(25) OCCURS 0 WITH HEADER LINE."BATHI on 15th Sept 2008

"download data column headings

*data:w_Text like w_fields.

DATA:BEGIN OF T_FIELDS OCCURS 10,

ID(1) TYPE C,

TEXT(255) TYPE C,

END OF T_FIELDS.

DATA:T_S031 TYPE STANDARD TABLE OF TY_S031 WITH HEADER LINE,

T_S032 TYPE STANDARD TABLE OF TY_S032 WITH HEADER LINE,

T_INVFINAL TYPE STANDARD TABLE OF TY_INVFINAL WITH HEADER LINE,

T_CE11000 TYPE STANDARD TABLE OF TY_CE11000 WITH HEADER LINE.

DATA:T_INVUNIX TYPE STANDARD TABLE OF TY_INVUNIX WITH HEADER LINE,

T_INVFINAL1 TYPE STANDARD TABLE OF TY_INVFINAL WITH HEADER LINE.

TYPES:BEGIN OF TY_MARA,

MATNR LIKE MARA-MATNR,

MATKL LIKE MARA-MATKL,

ERSDA LIKE MARA-ERSDA,

IND(1) TYPE C,

END OF TY_MARA..

DATA:IT_MARA TYPE STANDARD TABLE OF TY_MARA WITH HEADER LINE,

IT_MARA2 TYPE STANDARD TABLE OF TY_MARA WITH HEADER LINE,

data:begin of t_invunix3 occurs 0.

include structure t_invunix.

data:SORT11(1),

prdha like mara-prdha,

SORT12(1),

kunnr like kna1-kunnr,

SORT13(1),

lifnr like lfa1-lifnr,

end of t_invunix3.

SELECTION-SCREEN BEGIN OF SCREEN 103 AS SUBSCREEN.

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

SELECT-OPTIONS: SL_WERKS FOR S031-WERKS MODIF ID MD3.

SELECT-OPTIONS: SL_LGORT FOR S031-LGORT.

SELECT-OPTIONS: SL_MATNR FOR S031-MATNR,

SL_MATKL FOR S032-MATKL,

SL_SPMON FOR S031-SPMON.

PARAMETER: P_IWAERK TYPE S032-HWAER

DEFAULT 'GBP' MODIF ID MD3.

PARAMETER: P_INVFL(128) TYPE C

DEFAULT 'c:\temp\Inventory_file.xls' LOWER CASE MODIF ID

MD3.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 01(31) TEXT-P01 FOR FIELD P_PRHIE.

PARAMETERS: P_PRHIE AS CHECKBOX DEFAULT ' '.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 01(31) TEXT-S01 FOR FIELD P_SPVAL.

PARAMETERS: P_SPVAL AS CHECKBOX DEFAULT ' '.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 01(31) TEXT-C01 FOR FIELD P_DOWN3.

PARAMETERS: P_DOWN3 AS CHECKBOX USER-COMMAND CHK3.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN END OF BLOCK B3.

SELECTION-SCREEN END OF SCREEN 103.

START-OF-SELECTION.

PERFORM CALC_DATES.

PERFORM INV_DOWNLOAD.

IMPORT IT_DOWN TO IT_DOWN FROM MEMORY ID 'IT_DOWN'.

IF P_POR+0(1) <> '/'.

PERFORM MOVE_HEADER_TEXT.

PERFORM EXTRACT_PORS.

ELSE.

PERFORM UNIX_PORS.

ENDIF.

ENDIF.

FORM INV_DOWNLOAD .

PERFORM GET_REQ_DATA.

PERFORM GET_MAVG_PRICE.

SORT T_MBEWH BY MATNR BWKEY LFGJA ASCENDING LFMON ASCENDING." 007

IF NOT T_S032[] IS INITIAL.

LOOP AT T_S032.

CLEAR: V_TABIX, V_CUR_QTY.

V_TABIX = SY-TABIX.

LOOP AT T_S031 WHERE WERKS = T_S032-WERKS

AND MATNR = T_S032-MATNR

AND LGORT = T_S032-LGORT

AND SPMON IN V_SPMON.

IF T_S032-LETZTBEW+0(6) IN V_SPMON.

V_CUR_QTY = T_S031-MZUBB - T_S031-MAGBB.

T_S032-MBWBEST = T_S032-MBWBEST - V_CUR_QTY.

MODIFY T_S032 INDEX V_TABIX.

ENDIF.

ENDLOOP.

READ TABLE T_MBEWH WITH KEY MATNR = T_S032-MATNR

BWKEY = T_S032-WERKS.

IF SY-SUBRC = 0.

CLEAR V_VALUE.

IF T_MBEWH-LBKUM <> 0.

V_VALUE = ( T_MBEWH-SALK3 / T_MBEWH-LBKUM ).

ENDIF.

T_S032-WBWBEST = T_S032-MBWBEST * V_VALUE. "+009

MODIFY T_S032 INDEX V_TABIX.

ELSE.

READ TABLE T_MBEW WITH KEY MATNR = T_S032-MATNR

BWKEY = T_S032-WERKS.

IF SY-SUBRC = 0.

CLEAR V_VALUE.

IF T_MBEW-LBKUM <> 0.

V_VALUE = ( T_MBEW-SALK3 / T_MBEW-LBKUM ).

ENDIF.

T_S032-WBWBEST = T_S032-MBWBEST * V_VALUE. "+009

MODIFY T_S032 INDEX V_TABIX.

ENDIF.

ENDIF.

ENDLOOP.

DELETE T_S032 WHERE MBWBEST = 0. "+009

ENDIF.

SORT T_S032 BY SPART MATKL WERKS MATNR.

select matnr prdha into table t_prdha

from mara

for all entries in t_s032

where matnr = t_s032-matnr.

IF NOT SL_SPMON-HIGH IS INITIAL.

CONCATENATE SL_SPMON-HIGH0(4) SL_SPMON-HIGH4(2) '01'

INTO V_LAST_DATE.

ELSE.

CONCATENATE SL_SPMON-LOW0(4) SL_SPMON-LOW4(2) '01'

INTO V_LAST_DATE.

ENDIF.

CALL FUNCTION 'LAST_DAY_OF_MONTHS'

EXPORTING

DAY_IN = V_LAST_DATE

IMPORTING

LAST_DAY_OF_MONTH = V_LAST_DATE

EXCEPTIONS

DAY_IN_NO_DATE = 1

OTHERS = 2

.

IF SY-SUBRC <> 0.

ENDIF.

LOOP AT T_S032.

IF T_S032-HWAER <> P_IWAERK.

PERFORM CONVERT_AMOUNT USING V_LAST_DATE T_S032-HWAER P_IWAERK

CHANGING T_S032-WBWBEST .

T_S032-HWAER = P_IWAERK.

MODIFY T_S032 INDEX SY-TABIX TRANSPORTING WBWBEST HWAER.

ENDIF.

MOVE-CORRESPONDING T_S032 TO T_INVFINAL.

READ TABLE T_S031 WITH KEY WERKS = T_S032-WERKS

MATNR = T_S032-MATNR

LGORT = T_S032-LGORT.

T_INVFINAL-SPMON = SL_SPMON-LOW. "BATHI-001

PERFORM GET_LAST_DAY USING SL_SPMON-LOW CHANGING T_INVFINAL-IDATE.

"bathi-001

read table t_prdha with key matnr = t_invfinal-matnr.

if sy-subrc = 0.

t_invfinal-prdha = t_prdha-prdha.

endif.

APPEND T_INVFINAL.

ENDLOOP.

L_SEPARATOR = CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB.

SORT T_INVFINAL BY WERKS.

ENDFORM. " INv_download

FORM FILE_DOWNLOAD TABLES T_FILE

W_FIELDS

USING P_FILE.

DATA:LV_FILE TYPE STRING,

L_SEPARATOR TYPE C.

L_SEPARATOR = CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB.

LV_FILE = P_FILE.

CALL FUNCTION 'Z_GUI_DOWNLOAD'

EXPORTING

FILENAME = LV_FILE

FILETYPE = 'DAT'

FILE_POP_UP = ' '

TABLES

DATA_TAB = T_FILE

FIELDNAMES = W_FIELDS

EXCEPTIONS

FILE_WRITE_ERROR = 1

NO_BATCH = 2

GUI_REFUSE_FILETRANSFER = 3

INVALID_TYPE = 4

NO_AUTHORITY = 5

UNKNOWN_ERROR = 6

HEADER_NOT_ALLOWED = 7

SEPARATOR_NOT_ALLOWED = 8

FILESIZE_NOT_ALLOWED = 9

HEADER_TOO_LONG = 10

DP_ERROR_CREATE = 11

DP_ERROR_SEND = 12

DP_ERROR_WRITE = 13

UNKNOWN_DP_ERROR = 14

ACCESS_DENIED = 15

DP_OUT_OF_MEMORY = 16

DISK_FULL = 17

DP_TIMEOUT = 18

FILE_NOT_FOUND = 19

DATAPROVIDER_EXCEPTION = 20

CONTROL_FLUSH_ERROR = 21

OTHERS = 22.

IF SY-SUBRC <> 0.

WRITE : / 'Error in downloading file: ',P_FILE.

ELSE.

WRITE : / 'Successfully downloaded file: ',P_FILE.

ENDIF.

ENDFORM. " file_download

FORM CONVERT_DATE USING P_PERIV CHANGING P_BUPER

P_GJAHR.

CALL FUNCTION 'DATE_TO_PERIOD_CONVERT'

EXPORTING

I_DATE = SY-DATUM

  • I_MONMIT = 00

I_PERIV = P_PERIV

IMPORTING

E_BUPER = P_BUPER

E_GJAHR = P_GJAHR

ENDFORM. " convert_date

FORM GET_PREV_PERIOD CHANGING P_PER

P_YR.

CALL FUNCTION 'CKML_F_GET_PREVIOUS_PERIOD'

EXPORTING

INPUT_PERIOD = P_PER

INPUT_YEAR = P_YR

INPUT_PERIV = 'K0'

IMPORTING

PREVIOUS_PERIOD = P_PER

PREVIOUS_YEAR = P_YR.

ENDFORM. " GET_PREV_PERIOD

FORM GET_REQ_DATA .

SELECT SSOUR

VRSIO

SPMON

WERKS

MATNR

LGORT

MZUBB

MAGBB

FROM S031

INTO TABLE T_S031

WHERE SPMON IN V_SPMON

AND WERKS IN SL_WERKS

AND MATNR IN SL_MATNR

AND LGORT IN SL_LGORT.

IF SY-SUBRC NE 0.

ENDIF.

SELECT SPART

MATKL

MATNR

WERKS

LGORT

MBWBEST

WBWBEST

HWAER

MKOBEST

LETZTBEW "BATHI

FROM S032

INTO TABLE T_S032

WHERE WERKS IN SL_WERKS

AND MATNR IN SL_MATNR

AND LGORT IN SL_LGORT

AND MATKL IN SL_MATKL.

IF SY-SUBRC NE 0.

ENDIF.

ENDFORM. " GET_CURR_DATA

FORM GET_MAVG_PRICE .

CLEAR: V_DATE,V_PERIOD1,V_FISCALYEAR.

CONCATENATE SL_SPMON-LOW0(4) SL_SPMON-LOW4(2) '01' INTO V_DATE.

CALL FUNCTION 'DATE_TO_PERIOD_CONVERT'

EXPORTING

I_DATE = V_DATE

I_PERIV = 'V3'

IMPORTING

E_BUPER = V_PERIOD1

E_GJAHR = V_FISCALYEAR

IF NOT T_S032[] IS INITIAL.

SELECT MATNR

BWKEY

BWTAR

LFGJA

LFMON

LBKUM

SALK3

INTO TABLE T_MBEWH

FROM MBEWH FOR ALL ENTRIES IN T_S032

WHERE MATNR = T_S032-MATNR

AND BWKEY = T_S032-WERKS

AND BWTAR = SPACE

AND ( LFGJA > V_FISCALYEAR

or ( LFGJA = V_FISCALYEAR

and LFMON >= V_PERIOD1+1(2) ) ).

IF SY-SUBRC = 0.

  • DELETE T_MBEWH WHERE VERPR = 0. "-009

DELETE T_MBEWH WHERE LBKUM = 0 AND SALK3 = 0. "+009

ENDIF.

  • GET MOVING AVERAGE PRICE PER UNIT FROM MBEW

SELECT MATNR

BWKEY

BWTAR

LBKUM

SALK3

INTO TABLE T_MBEW

FROM MBEW FOR ALL ENTRIES IN T_S032

WHERE MATNR = T_S032-MATNR

AND BWKEY = T_S032-WERKS

AND BWTAR = SPACE.

IF SY-SUBRC = 0.

  • DELETE T_MBEW WHERE VERPR = 0. "-009

DELETE T_MBEW WHERE LBKUM = 0 AND SALK3 = 0. "+009

ENDIF.

ENDIF.

ENDFORM. " GET_MAVG_PRICE

FORM GET_RANGE.

READ TABLE SL_SPMON INDEX 1.

IF NOT SL_SPMON-LOW IS INITIAL.

V_SPMON-LOW = SL_SPMON-LOW.

V_SPMON-OPTION = SL_SPMON-OPTION.

V_SPMON-SIGN = SL_SPMON-SIGN.

V_SPMON-HIGH = SY-DATUM(6).

  • IF V_SPMON-LOW LT V_SPMON-HIGH. " 007

IF V_SPMON-LOW LE V_SPMON-HIGH. " 007

V_SPMON-LOW4(2) = V_SPMON-LOW4(2) + 1.

IF V_SPMON-LOW+4(2) = '13'.

V_SPMON-LOW+4(2) = '01'.

V_SPMON-LOW(4) = V_SPMON-LOW(4) + 1.

ENDIF.

APPEND V_SPMON.

ENDIF.

ENDIF.

ENDFORM. " get_range

Thanks

Read only

Former Member
0 Likes
1,153

Hi

Please find the main tables related code.

FORM INV_DOWNLOAD .

  • Create date range from selection.

PERFORM GET_RANGE.

  • GET CURRENT MONTH GOODS RECEIPTS AND GOODS ISSUES

PERFORM GET_REQ_DATA.

  • Get Moving Average Price per Unit.

PERFORM GET_MAVG_PRICE.

DATA: V_CUR_QTY LIKE S031-MAGBB,

V_TABIX LIKE SY-INDEX.

SORT T_MBEWH BY MATNR BWKEY LFGJA ASCENDING LFMON ASCENDING." 007

IF NOT T_S032[] IS INITIAL.

LOOP AT T_S032.

CLEAR: V_TABIX, V_CUR_QTY.

V_TABIX = SY-TABIX.

LOOP AT T_S031 WHERE WERKS = T_S032-WERKS

AND MATNR = T_S032-MATNR

AND LGORT = T_S032-LGORT

AND SPMON IN V_SPMON.

  • Update the Vaulted Stock Quantity in case of any movements in the

  • current period

IF T_S032-LETZTBEW+0(6) IN V_SPMON.

V_CUR_QTY = T_S031-MZUBB - T_S031-MAGBB.

T_S032-MBWBEST = T_S032-MBWBEST - V_CUR_QTY.

MODIFY T_S032 INDEX V_TABIX.

ENDIF.

ENDLOOP.

  • Update the Vaulted Stock Value

READ TABLE T_MBEWH WITH KEY MATNR = T_S032-MATNR

BWKEY = T_S032-WERKS.

IF SY-SUBRC = 0.

CLEAR V_VALUE.

IF T_MBEWH-LBKUM <> 0.

V_VALUE = ( T_MBEWH-SALK3 / T_MBEWH-LBKUM ).

ENDIF.

T_S032-WBWBEST = T_S032-MBWBEST * V_VALUE. "+009

MODIFY T_S032 INDEX V_TABIX.

ELSE.

READ TABLE T_MBEW WITH KEY MATNR = T_S032-MATNR

BWKEY = T_S032-WERKS.

IF SY-SUBRC = 0.

CLEAR V_VALUE.

IF T_MBEW-LBKUM <> 0.

V_VALUE = ( T_MBEW-SALK3 / T_MBEW-LBKUM ).

ENDIF.

T_S032-WBWBEST = T_S032-MBWBEST * V_VALUE. "+009

MODIFY T_S032 INDEX V_TABIX.

ENDIF.

ENDIF.

ENDLOOP.

DELETE T_S032 WHERE MBWBEST = 0. "+009

ENDIF.

SORT T_S032 BY SPART MATKL WERKS MATNR.

select matnr prdha into table t_prdha

from mara

for all entries in t_s032

where matnr = t_s032-matnr.

IF NOT SL_SPMON-HIGH IS INITIAL.

CONCATENATE SL_SPMON-HIGH0(4) SL_SPMON-HIGH4(2) '01'

INTO V_LAST_DATE.

ELSE.

CONCATENATE SL_SPMON-LOW0(4) SL_SPMON-LOW4(2) '01'

INTO V_LAST_DATE.

ENDIF.

CALL FUNCTION 'LAST_DAY_OF_MONTHS'

EXPORTING

DAY_IN = V_LAST_DATE

IMPORTING

LAST_DAY_OF_MONTH = V_LAST_DATE

EXCEPTIONS

DAY_IN_NO_DATE = 1

OTHERS = 2

.

IF SY-SUBRC <> 0.

ENDIF.

LOOP AT T_S032.

IF T_S032-HWAER <> P_IWAERK.

PERFORM CONVERT_AMOUNT USING V_LAST_DATE T_S032-HWAER P_IWAERK

CHANGING T_S032-WBWBEST .

T_S032-HWAER = P_IWAERK.

MODIFY T_S032 INDEX SY-TABIX TRANSPORTING WBWBEST HWAER.

ENDIF.

MOVE-CORRESPONDING T_S032 TO T_INVFINAL.

READ TABLE T_S031 WITH KEY WERKS = T_S032-WERKS

MATNR = T_S032-MATNR

LGORT = T_S032-LGORT.

  • T_INVFINAL-SPMON = T_S031-SPMON. "BATHI

T_INVFINAL-SPMON = SL_SPMON-LOW. "BATHI-001

PERFORM GET_LAST_DAY USING SL_SPMON-LOW CHANGING T_INVFINAL-IDATE.

"bathi-001

read table t_prdha with key matnr = t_invfinal-matnr.

if sy-subrc = 0.

t_invfinal-prdha = t_prdha-prdha.

endif.

APPEND T_INVFINAL.

ENDLOOP.

L_SEPARATOR = CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB.

SORT T_INVFINAL BY WERKS.

FORM GET_REQ_DATA .

SELECT SSOUR

VRSIO

SPMON

WERKS

MATNR

LGORT

MZUBB

MAGBB

FROM S031

INTO TABLE T_S031

WHERE SPMON IN V_SPMON

AND WERKS IN SL_WERKS

AND MATNR IN SL_MATNR

AND LGORT IN SL_LGORT.

IF SY-SUBRC NE 0.

ENDIF.

SELECT SPART

MATKL

MATNR

WERKS

LGORT

MBWBEST

WBWBEST

HWAER

MKOBEST

LETZTBEW "BATHI

FROM S032

INTO TABLE T_S032

WHERE WERKS IN SL_WERKS

AND MATNR IN SL_MATNR

AND LGORT IN SL_LGORT

AND MATKL IN SL_MATKL.

IF SY-SUBRC NE 0.

  • DELETE T_S032 WHERE MBWBEST = 0 AND

  • WBWBEST = 0. " BATHI

ENDIF.

ENDFORM. " GET_CURR_DATA

FORM GET_MAVG_PRICE .

CLEAR: V_DATE,V_PERIOD1,V_FISCALYEAR.

CONCATENATE SL_SPMON-LOW0(4) SL_SPMON-LOW4(2) '01' INTO V_DATE.

CALL FUNCTION 'DATE_TO_PERIOD_CONVERT'

EXPORTING

I_DATE = V_DATE

I_PERIV = 'V3'

IMPORTING

E_BUPER = V_PERIOD1

E_GJAHR = V_FISCALYEAR

IF NOT T_S032[] IS INITIAL.

SELECT MATNR

BWKEY

BWTAR

LFGJA

LFMON

LBKUM

SALK3

INTO TABLE T_MBEWH

FROM MBEWH FOR ALL ENTRIES IN T_S032

WHERE MATNR = T_S032-MATNR

AND BWKEY = T_S032-WERKS

AND BWTAR = SPACE

AND ( LFGJA > V_FISCALYEAR

or ( LFGJA = V_FISCALYEAR

and LFMON >= V_PERIOD1+1(2) ) ).

IF SY-SUBRC = 0.

  • DELETE T_MBEWH WHERE VERPR = 0. "-009

DELETE T_MBEWH WHERE LBKUM = 0 AND SALK3 = 0. "+009

ENDIF.

  • GET MOVING AVERAGE PRICE PER UNIT FROM MBEW

SELECT MATNR

BWKEY

BWTAR

LBKUM

SALK3

INTO TABLE T_MBEW

FROM MBEW FOR ALL ENTRIES IN T_S032

WHERE MATNR = T_S032-MATNR

AND BWKEY = T_S032-WERKS

AND BWTAR = SPACE.

IF SY-SUBRC = 0.

  • DELETE T_MBEW WHERE VERPR = 0. "-009

DELETE T_MBEW WHERE LBKUM = 0 AND SALK3 = 0. "+009

ENDIF.

ENDIF.

ENDFORM. " GET_MAVG_PRICE

thanks