DATA_BUFFER_EXCEEDED error when calling RFC_READ_TABLE?

18,082

Solution 1

DATA_BUFFER_EXCEEDED only happens if the total width of the fields you want to read exceeds the width of the DATA parameter, which may vary depending on the SAP release - 512 characters for current systems. It has nothing to do with the number of rows, but the size of a single dataset.

So the question is: What are the contents of the FIELDS parameter? If it's empty, this means "read all fields." CDHDR is 192 characters in width, so I'd assume that the problem is CDPOS which is 774 characters wide. The main issue would be the fields VALUE_OLD and VALUE_NEW, both 245 Characters.

Even if you don't get developer access, you should prod someone to get read-only dictionary access to be able to examine the structures in detail.

Shameless plug: RCER contains a wrapper class for RFC_READ_TABLE that takes care of field handling and ensures that the total width of the selected fields is below the limit imposed by the function module.

Also be aware that these tables can be HUGE in production environments - think billions of entries. You can easily bring your database to a grinding halt by performing excessive read operations on these tables.

PS: RFC_READ_TABLE is not released for customer use as per SAP note 382318, and the note 758278 recommends to create your own function module and provides a template with an improved logic.

Solution 2

Use BBP_RFC_READ_TABLE instead

Share:
18,082

Related videos on Youtube

Yi.
Author by

Yi.

I have been doing my Ph.D research on the application of data mining and e-Learning in Software Evaluation and Architecture Group(SEAL), Institute for Informatic(IFI), University of Zurich since Oct. 2006. I also worked as a software developer in Beijing China from 2001 to 2004, and a 50% software developer/architect for CASRA in Zurich, Switzerland from 2006 to 2009.

Updated on September 09, 2020

Comments

  • Yi.
    Yi. over 3 years

    My java/groovy program receives table names and table fields from the user input, it queries the tables in SAP and returns its contents.

    The user input may concern the tables CDPOS and CDHDR. After reading the SAP documentations and googling, I found these are tables storing change document logs. But I did not find any remote call functions that can be used in java to perform this kind of queries.

    Then I used the deprecated RFC Function Module RFC_READ_TABLE and tried to build up customized queries only depending on this RFC. However, I found if the number of desired fields I passed to this RFC are more than 2, I always got the DATA_BUFFER_EXCEEDED error even if I limit the max rows.

    I am not authorized to be an ABAP developer in the SAP system and can not add any FM to existing systems, so I can only write code to accomplish this requirement in JAVA.

    Am I doing something wrong? Could you give me some hints on that issue?

  • Yi.
    Yi. over 13 years
    Many thanks! Your explanation is very clear. I will dig into the RCER and check the wrapper class out. I am wondering whether there are any remote function modules or BAPIS so that we can read the changedocument information, as Transaction "rsscd100" does.
  • vwegert
    vwegert over 13 years
    I don't know any, sorry. It's rather uncommon to access the change documents - what do you need this for?
  • Yi.
    Yi. over 13 years
    Hi vwegert, I checked out the RCER project. Do you have any branch version independent from Eclipse RCP apps?
  • vwegert
    vwegert over 13 years
    No. But the TableReader does not depend on the RCP stuff.
  • vwegert
    vwegert almost 11 years
    …this is exactly what I answered in November last year, just phrased differently?
  • SteveB
    SteveB almost 11 years
    I attempted to clarify your explanation with an example using the "FIELDS" parameter and a Java example.... Rather than just a reference to a “wrapper class”. You did not mention OSS note 382318, which states this function module is not released to customers. This is an unsupported function module by SAP and I wanted to make the community aware of this.
  • Sandra Rossi
    Sandra Rossi over 4 years
    I have merged the link to note 382318 into the main answer. For the rest, I don't see what value it adds (one line of java code maybe, but without the rest of the code it's not really useful and anyway it's not the question).

Related