How to correct an SAP ABAP dump with an oversize condition

Find out how to correct an SAP ABAP dump with an oversize condition to avoid an SAP ABAP dump giving an DBIF_RSQL_ INVALID_RSQL error at the SQL statement.

The ABAP program gives a short dump due to an "DBIF_RSQL _INVALID_RSQL" error at the SQL statement below.

SELECT ryear
kslvt ksl01 ksl02 ksl03 ksl04
ksl05 ksl06 ksl07 ksl08 ksl09
ksl10 ksl11 ksl12
FROM glpct
INTO TABLE i_glpct2
WHERE rldnr = '8A'
AND rvers = '000'
AND ryear = p_gjahr
AND rrcty = '0'
AND rbukrs IN s_bukrs
AND rprctr IN r_prctr
AND racct IN s_hkont
AND (racct IN r_profloss OR racct IN r_balsheet).

In the above select query in the where condition, the range of r_prctr contains about 24,500 entries. When commented on, this particular condition is not going to dump.

In the dump, it is being suggested that the maximum size of the SQL statement was exceeded. The statement contains too many input variables and the input data requires more space than is available. I tried to fix this by putting in all entries for that particular range (i.e., r_prctr), but to no avail.

You need to make r_prctr smaller. R_prctr is a table of structure SIGN, OPTION, LOW and HIGH. I assume that all your SIGN fields are 'I' and your OPTION fields are 'EQ'. If the LOW fields are all in sequence, then you could simply change all of those to 'I', 'BT' and set the LOW and HIGH field accordingly.

If there's no exploitable pattern in the contents of r_prctr, create another range object of the same structure (i.e., r_tmp). In a loop pass, on each iteration, the next few thousand records of r_prctr to r_tmp. (Look the ABAP keyword: APPEND LINES OF). Change your select to use r_tmp instead of r_prctr, and APPENDING TABLE instead of INTO TABLE.

Dig Deeper on SAP development and programming languages

Data Management
Business Analytics
Content Management