2009 Jun 02 10:37 AM
Hi Experts,
Please provide some sample code for Material inventory download.
Thanks in advance .
Regards
Praveen k
2009 Jun 02 11:09 AM
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
2009 Jun 02 10:53 AM
2009 Jun 02 10:55 AM
2009 Jun 02 11:09 AM
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
2009 Jun 02 11:14 AM
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
| User | Count |
|---|---|
| 4 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |