Skip to end of metadata
Go to start of metadata

When integrating with SAP ERP, an integration scenario may require direct reading of SAP tables. This page discusses how to perform this in Jitterbit.

In order to read SAP tables or views, SAP provides RFC_READ_TABLE. For many customers, BBP_RFC_READ_TABLE is also available and is somewhat more functional. The differences between these two BAPIs is covered later. The initial steps involved in using this RFC is similar to using any SAP function. 

  • Assuming the endpoint has been built, start by selecting a New SAP Function:

  • Select RFC:

  • Select RFC_READ_TABLE:

  • The Request and Response structures are displayed:

  • Create a request. In this example, (None) is selected, since we will fill in with hard-coded variables:

  • The request is generated:

  • Go back to the wizard and generate the response. Select Text as the output:

  • The response is generated:

  • Go back to the wizard and select Create Operation.
  • Right-click on the Request and select Existing Transformation:

  • Do the same for the Response, and build a Target:

  • The completed Operation:

  • The SAP Table KNA1 will be used. Using SE16n, we get a display of the table and fields. The technical names will be used by the RFC:

  • Checking the number of rows, we see that this table has 11,499 records:

  • Using SE37, we can use this function to model the RFC before trying it in Jitterbit.
  • As an example, assume we want to find all the customer numbers and address information for those customers in Philadelphia.
  • Fill in top level data:

  • The delimiter is needed since the response from this RFC is essentially a blob of data. It does not respond in a structured form. We will show that later on this page.
  • Click on Options. We can enter the conditions of the query. The condition syntax uses SAP's version of SQL. Additional information on the syntax is documented at the end of this page.

  • Note the use of 'ORT01' as the technical name for City.
  • Click on Fields and fill in the desired fields using the technical names:

  • Execute the test:

  • Drilling into the DATA:

  • Go back to Jitterbit and open the request:

  • Enter the delimiter:

  • Add the table:

  • Add the first field name:

  • This is the tricky part. We have more fields, but only one folder. In this example, we will add additional folders by right-clicking and selecting Create extra folder for mappings:

  • Create the rest of the folders and populate with field names:

  • Enter the query option. Note that RFC_READ_TABLE has a limit of 75 characters per Option line, so if your query exceeds that, an additional folder is needed:

  • Go to the response. We need to split the output into individual fields. Right-click on the second folder and select Add condition:

  • Open the condition and enter the Split function:

  • Double-click on the WA field to bring it into the function. Enter the required arguments. Since this is a condition, enter the last line as true:

  • Fill in the response fields with the array positions:

  • Testing the operation, the data is displayed:

  • Checking the temporary file, the values are written out:

  • Notes on using RFC_READ_TABLE
    • Row Limit: RFC_READ_TABLE has a 512 character row limit. That is, each row of data cannot exceed 512 characters. 
    • Float: RFC_READ_TABLE does not return any fields that contain a Float datatype. BPP_RFC_READ_TABLE does not have this limitation.
    • ROWSKIPS and ROWCOUNT: These are used to implement a form of ‘chunking’, where ROWSKIPS is the beginning row number, and ROWCOUNT is the number of rows to fetch. For example, ROWSKIPS = 0, ROWCOUNT = 500 fetches the first 500 records, then ROWSKIPS = 501, ROWCOUNT = 500 gets the next 500 records, and so on. If left at 0, then no chunking is implemented. The maximum value for either of these fields is 999999.
    • OPTION holds the query condition. There is a 75 character limit to the length of the query, so if the query exceeds that limit, additional folders must be made to hold the entire query string.
    • Error handling: Unlike BAPIs, the RFC does not return a set of error messages. Here are some errors returned by the SAP Connector:
      • If the Table Name is invalid, this error will be generated: (126) TABLE_NOT_AVAILABLE: TABLE_NOT_AVAILABLE Message 029 of class SV type E, Par[1]: DD5T.
      • If Invalid Condition, the error is: JCO_ERROR_SYSTEM_FAILURE: A condition specified dynamically has an unexpected format.

      • If Field Name is invalid, the error is: (126) FIELD_NOT_VALID: FIELD_NOT_VALID.

  • SAP Query Language uses these operators:

Operator

Description

EQ

equal to

NE

not equal to

LT

less than

LE

less than or equal to

GT

greater than

GE

greater than or equal to

LIKE

as in LIKE ‘Emma%’


  • Other Notes
    • SAP Views can be created fairly simply (compared to other steps in SAP). Using views can be very helpful if dealing with joined tables.
    • There is a limit of 999999 records that can be retrieved using this method, so using conditions is a requirement.
    • RFC_READ_TABLE limitations can be overcome if a custom RFC is used.
Related Topics

Last updated:  Jul 12, 2019