2007 Jul 19 11:11 AM
Hi,
I'm having a problem, i have a program that selects data from a join of the table mkpf with the table mseg. what appens is that when i select a material with more data it gives a short dump, and i don't know how to solve it. Any ideas? Next i'm going to put the code where the short dump is called:
SELECT mkpfmblnr mkpfmjahr mkpf~budat
mkpfcputm mkpfxblnr mkpf~xabln
mkpfbktxt mkpffrbnr
msegmatnr msegwerks mseg~mblnr
msegzeile msegmjahr mseg~bwart
mseglgort msegmeins mseg~shkzg
msegmenge msegkunnr
INTO CORRESPONDING FIELDS OF TABLE t_aux_pt
FROM mkpf JOIN mseg ON
( msegmblnr = mkpfmblnr ) AND
( msegmjahr = mkpfmjahr )
WHERE budat < datamv-low
AND matnr IN mat
AND werks = centro
AND lgort IN depos
AND bwart IN tpomov
AND sobkz IN stkesp
AND shkzg = 'H'.
and the short dump is:
DBIF_RSQL_INVALID_RSQL
CX_SY_OPEN_SQL_DB
Hi,
I'm having a problem, i have a program that selects data from a join of the table mkpf with the table mseg. what appens is that when i select a material with more data it gives a short dump, and i don't know how to solve it. Any ideas? Next i'm going to put the code where the short dump is called:
SELECT mkpfmblnr mkpfmjahr mkpf~budat
mkpfcputm mkpfxblnr mkpf~xabln
mkpfbktxt mkpffrbnr
msegmatnr msegwerks mseg~mblnr
msegzeile msegmjahr mseg~bwart
mseglgort msegmeins mseg~shkzg
msegmenge msegkunnr
INTO CORRESPONDING FIELDS OF TABLE t_aux_pt
FROM mkpf JOIN mseg ON
( msegmblnr = mkpfmblnr ) AND
( msegmjahr = mkpfmjahr )
WHERE budat < datamv-low
AND matnr IN mat
AND werks = centro
AND lgort IN depos
AND bwart IN tpomov
AND sobkz IN stkesp
AND shkzg = 'H'.
and the short dump is:
DBIF_RSQL_INVALID_RSQL
CX_SY_OPEN_SQL_DB
2007 Jul 19 11:15 AM
Hi,
Use SELECT ENDSELCT and use PACKAGE SIZE option to retrive the data in packets.
SELECT mkpfmblnr mkpfmjahr mkpf~budat
mkpfcputm mkpfxblnr mkpf~xabln
mkpfbktxt mkpffrbnr
msegmatnr msegwerks mseg~mblnr
msegzeile msegmjahr mseg~bwart
mseglgort msegmeins mseg~shkzg
msegmenge msegkunnr
<b>APPENDING</b> CORRESPONDING FIELDS OF TABLE t_aux_pt <b>PACKAGE SIZE 500</b>
FROM mkpf JOIN mseg ON
( msegmblnr = mkpfmblnr ) AND
( msegmjahr = mkpfmjahr )
WHERE budat < datamv-low
AND matnr IN mat
AND werks = centro
AND lgort IN depos
AND bwart IN tpomov
AND sobkz IN stkesp
AND shkzg = 'H'.
ENDSELECT.
Regards,
Sesh
2007 Jul 19 11:15 AM
Hallo,
This can be due to too many entries in a range table or select option.
select * from table where field in MAT.
If MAT has too many entries the DB will choke on it.
So try with Select .. Appending ..
Regards,
Vasanth
2007 Jul 19 11:15 AM
check the declarations in the internal table t_aux_pt if they are compatible with those fields used in the SELECT statement
2007 Jul 19 11:17 AM
Hi!
I think the date format, you give can be a problem in the WHERE condition.
Try comment out (with *) the some part of the code to see is it working now?
You can find the problem quickly.
Regards
Tamá
2007 Jul 19 11:33 AM
2007 Aug 16 10:43 AM
Hi Ricardo,
Try replacing the code:
<b>WHERE matnr IN Mat</b>
with the following:
<b>FOR ALL ENTRIES IN mat
WHERE matnr EQ mat-low.</b>
| User | Count |
|---|---|
| 6 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |