‎2008 Jul 29 12:44 PM
hi friends ,
i am trying to make a report on daily plant performance but unfortunately i got an run time error (time out) it stuck on MSEG table and take very long time to process . what should i use to remove the error.
SELECT MATKL SPART MATNR MTART NTGEW FROM MARA
INTO TABLE T_MARA WHERE MTART = 'FERT'
AND SPART = DIVISION.
SELECT MATNR FROM MARA
INTO TABLE T_MAR WHERE MTART = 'FERT'
AND SPART = DIVISION.
loop at t_mar.
SELECT AMATNR AWERKS AMENGE ABWART AMBLNR BMBLNR B~BUDAT
FROM MSEG AS A INNER JOIN MKPF AS B ON AMBLNR = BMBLNR
INTO CORRESPONDING FIELDS OF TABLE t_mseg
WHERE MATNR = W_MARA-MATNR AND ( BWART = '101' OR BWART = '102')
AND BUDAT BETWEEN DATE AND DATE1.
endloop.
‎2008 Jul 29 12:52 PM
Hi,
Bhupi Kaler wrote:
hi friends ,
i am trying to make a report on daily plant performance but unfortunately i got an run time error (time out) it stuck on MSEG table and take very long time to process . what should i use to remove the error.
SELECT MATKL SPART MATNR MTART NTGEW FROM MARA
INTO TABLE T_MARA WHERE MTART = 'FERT'
AND SPART = DIVISION.
SELECT MATNR FROM MARA
INTO TABLE T_MAR WHERE MTART = 'FERT'
AND SPART = DIVISION.
loop at t_mar.
SELECT A~MATNR A~WERKS A~MENGE A~BWART A~MBLNR B~MBLNR B~BUDAT
FROM MSEG AS A INNER JOIN MKPF AS B ON A~MBLNR = B~MBLNR
INTO CORRESPONDING FIELDS OF TABLE t_mseg
WHERE MATNR = W_MARA-MATNR AND ( BWART = '101' OR BWART = '102')
AND BUDAT BETWEEN DATE AND DATE1.
endloop.Bhupi,
Never put select statement in loop....endloop.Why do you want to select data from mara 2 times.Rather do like this:
SELECT MATKL SPART MATNR MTART NTGEW FROM MARA
INTO TABLE T_MARA WHERE MTART = 'FERT'
AND SPART = DIVISION.
if not t_mara[] is initial.
SELECT A~MATNR A~WERKS A~MENGE A~BWART A~MBLNR B~MBLNR B~BUDAT
FROM MSEG AS A INNER JOIN MKPF AS B ON A~MBLNR = B~MBLNR
INTO CORRESPONDING FIELDS OF TABLE t_mseg
for all entries in t_mara
WHERE MATNR = T_MARA-MATNR AND ( BWART = '101' OR BWART = '102')
AND BUDAT BETWEEN DATE AND DATE1.
Endif.
‎2008 Jul 29 12:52 PM
Hi,
Bhupi Kaler wrote:
hi friends ,
i am trying to make a report on daily plant performance but unfortunately i got an run time error (time out) it stuck on MSEG table and take very long time to process . what should i use to remove the error.
SELECT MATKL SPART MATNR MTART NTGEW FROM MARA
INTO TABLE T_MARA WHERE MTART = 'FERT'
AND SPART = DIVISION.
SELECT MATNR FROM MARA
INTO TABLE T_MAR WHERE MTART = 'FERT'
AND SPART = DIVISION.
loop at t_mar.
SELECT A~MATNR A~WERKS A~MENGE A~BWART A~MBLNR B~MBLNR B~BUDAT
FROM MSEG AS A INNER JOIN MKPF AS B ON A~MBLNR = B~MBLNR
INTO CORRESPONDING FIELDS OF TABLE t_mseg
WHERE MATNR = W_MARA-MATNR AND ( BWART = '101' OR BWART = '102')
AND BUDAT BETWEEN DATE AND DATE1.
endloop.Bhupi,
Never put select statement in loop....endloop.Why do you want to select data from mara 2 times.Rather do like this:
SELECT MATKL SPART MATNR MTART NTGEW FROM MARA
INTO TABLE T_MARA WHERE MTART = 'FERT'
AND SPART = DIVISION.
if not t_mara[] is initial.
SELECT A~MATNR A~WERKS A~MENGE A~BWART A~MBLNR B~MBLNR B~BUDAT
FROM MSEG AS A INNER JOIN MKPF AS B ON A~MBLNR = B~MBLNR
INTO CORRESPONDING FIELDS OF TABLE t_mseg
for all entries in t_mara
WHERE MATNR = T_MARA-MATNR AND ( BWART = '101' OR BWART = '102')
AND BUDAT BETWEEN DATE AND DATE1.
Endif.
‎2008 Jul 29 1:00 PM
hi,
Use for all entries statement instead of loop endloop and use ranges ...
ranges : r_bwart for mseg-bwart,
r_budat for bseg-budat.
initialization.
r_bwart-low = '101'.
r_bwart-sign = 'I'.
r_bwart-option = 'EQ'.
append r_bwart.
r_bwart-low = '102'.
r_bwart-sign = 'I'.
r_bwart-option = 'EQ'.
append r_bwart.
r_budat-low = DATE .
r_budat-high = DATE1.
r_bwart-sign = 'I'.
r_bwart-option = 'BT'.
append r_budat.
if not t_mara[] is initial.
SELECT A~MATNR A~WERKS A~MENGE A~BWART A~MBLNR B~MBLNR B~BUDAT
FROM MSEG AS A INNER JOIN MKPF AS B ON A~MBLNR = B~MBLNR
INTO CORRESPONDING FIELDS OF TABLE t_mseg
for all entries in t_mara
WHERE MATNR = t_mara-MATNR AND
BWART in r_bwart AND
BUDAT in r_budat.
endif.
‎2008 Jul 29 1:05 PM
Bhupi,
SELECT MATKL SPART MATNR MTART NTGEW FROM MARA
INTO TABLE T_MARA WHERE MTART = 'FERT'
AND SPART = DIVISION.
SELECT MATNR FROM MARA
INTO TABLE T_MAR WHERE MTART = 'FERT'
AND SPART = DIVISION.
loop at t_mar.
SELECT A~MATNR A~WERKS A~MENGE A~BWART A~MBLNR B~MBLNR B~BUDAT
FROM MSEG AS A INNER JOIN MKPF AS B ON A~MBLNR = B~MBLNR
INTO CORRESPONDING FIELDS OF TABLE t_mseg
WHERE MATNR = W_MARA-MATNR AND ( BWART = '101' OR BWART = '102')
AND BUDAT BETWEEN DATE AND DATE1oopss ;-( even joins are not suggested and you are using join in LOOP.
please use for all entries at T_MAR and avoid the loop.
Amit.
‎2008 Jul 29 1:07 PM
Hi,
Change your logic then run program.
To check the maximum time limit set for a time out error in our system?
goto rz10 transaction code you will find there
minimum is 300 sec.
Regards
Adil