How to correct an SAP ABAP dump with an oversize condition

How to correct an SAP ABAP dump with an oversize condition

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

SELECT ryear
rbukrs
rprctr
racct
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.

    Requires Free Membership to View

    When you register, you will start receiving targeted emails from my award-winning team of editorial writers. Our goal is to keep you informed on the hottest topics and biggest challenges faced by SAP professionals today.

    Hannah Smalltree, Editorial Director

    By submitting your registration information to SearchSAP.com you agree to receive email communications from TechTarget and TechTarget partners. We encourage you to read our Privacy Policy which contains important disclosures about how we collect and use your registration and other information. If you reside outside of the United States, by submitting this registration information you consent to having your personal data transferred to and processed in the United States. Your use of SearchSAP.com is governed by our Terms of Use. You may contact us at webmaster@TechTarget.com.

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.

This was first published in June 2009