SAP Global Properties
Global properties apply to all instances of an SAP data source. You can edit the properties to control how TDV works with SAP. Global properties are stored in the file:
<TDV_install_dir>\apps\dlm\app_ds_sap\conf\product.properties
Edit the properties using a text editor such as Notepad on Windows. TDV must be restarted for property changes to take effect.
The global properties are described below in alphabetical order.
sap.annotations.enabled
Default Value: true
Description:
If set to false, introspection of functions (BAPIs and RFCs) will not include their annotations.
sap.aq.introspectDbAccesses
Default Value: 1
Description:
ABAP Query database access limit to be used during introspection.
During introspection of ABAP queries, each introspected query is executed with no parameters to obtain a list of its output fields. (If this is not possible, other metadata query methods are used). Because the goal is to gather metadata only, the number of database accesses should be set to the smallest value that still results in at least one row.
If the database access limit is set too low, no data is selected from the ABAP query and the fallback method of metadata access is used, which may not include some calculated fields.
If problems are encountered with ABAP query metadata, test the ABAP query using transaction SQ01 until it returns rows, then increase this property value to match.
sap.debug
Default Value: false
Description:
If set to true, all data returned from SAP requests is logged to CSV files in the SAP driver folder. Each request becomes a separate CSV file. This can be helpful in debugging joins and performing data validation.
sap.feature.key
Default Value: BRT
Description:
Do not change this. TDV uses it internally for SAP certification.
sap.handle.erroneous.date
Default Value: USE_DEFAULT
Description:
Commented out by default. If enabled, specifies how to handle erroneous dates returned from the SAP server. USE_DEFAULT tells the connector not to throw an exception, but instead to use the default date specified by sap.handle.erroneous.date.default (the SAP default property for handling erroneous dates).
sap.handle.erroneous.date.default
Default Value: 19000101
Description:
— | Commented out by default. If sap.handle.erroneous.date.default is not set, the default date 19000101 (min date) is used. |
— | If sap.handle.erroneous.date.default is set and follows the pattern yyyyMMdd, that value is used. |
— | If sap.handle.erroneous.date.default is set, and if an erroneous date is returned by the SAP server. (For example if the date (erroneous) returned is 99991231), then the default date 19000101 will be used. You can change this default value by editing the product.properties file. |
sap.introspect.tableFolders
Default Value: T5,T7,V_,/B,/BI,/BIC,/BI0,/BIC/,/BI0/,/BIC/B,/BIC/D,/BI0/D
Description:
Comma-separated list of table folder name patterns to contain subfolders.
During introspection, SAP tables are split by default into two levels of folders by name. For example, folder A contains AA, AB, AC, and so forth.
Some table name patterns may contain so many tables that SAP throws an exception when opening them. This property allows such name patterns to be expanded into an additional level of subfolders. For example, expanding T5 results in further folders T5A, T5B, etc.
sap.jco.traceLevel
Default Value: 2
Description:
Turns on the SAP JCo trace. Allowed levels are 0 through 10. The commonly used ones are:
0 - nothing
1 - errors
2 - errors and warnings
3 - info messages, errors and warnings
4 - execution path, info messages, errors and warnings
5 - verbose execution path, info messages, errors and warnings
6 - verbose execution path, limited data dumps, info messages, errors and warnings
7 - full execution path, data dumps with metadata, verbose info messages, errors and warnings
8 - full execution path, full data dumps with metadata, verbose info messages, errors and warnings
sap.table.decimalFix
Default Value: false
Description:
If true, SAP Note 758278 or equivalent has been applied to SAP so that the table read function encodes decimal values properly.
sap.table.functionName
Default Value: RFC_READ_TABLE
Description:
An SAP function to be used for accessing table resources.
sap.table.maxOptions
Default Value: 500
Description:
This property should never be changed.
sap.table.memoryAvailable
Default Value: 50
Description:
Memory available for SAP table queries, in megabytes. This is a critical property for performance tuning of SAP table access.
This property determines how many table rows can be requested from SAP in one round-trip, and thus how many round-trips to SAP are required to satisfy a user query. Each round-trip can only fetch the permitted number of rows, based on this memory constraint.
To calculate the number of rows per request, take available memory after applying sap.table.requestFactor and divide by two times the table row length. To examine requests and the number of rows in each, enable SAP driver. The ROWCOUNT parameter is the number of rows TDV is requesting from SAP.
If this property is set too high, the JVM hosting TDV can terminate abruptly when SAP’s client connectivity library (JCo) attempts to allocate too much memory from its native code. The main purpose of this property is to guard TDV against these low memory conditions.
If this property is set too low, queries are split into many small requests to SAP, resulting in poor performance. With many concurrent requests, the amount of memory available may fall so low that the rows requested fall below the property sap.table.minimumSize. In that case, queries will block until requests are finished and memory is freed. If memory is still not available after a period of time (property sap.table.memoryMaxWait), the query is terminated with an exception.
The maximum heap size of the JVM (-Xmx setting) must be considered when changing this property value. If this value is increased without a corresponding reduction in the Java heap size, JVM crashes could result.
For example, a machine with 2 GB of RAM, a Java heap size of 600 MB permits a sap.table.memoryAvailable setting of up to 200 MB. Reducing the Java heap size to 500 MB enables an increase to 300 MB.
sap.table.memoryMaxWait
Default Value: 60
Description:
Amount of time to wait (in seconds) for memory to become available for an SAP request. If there is insufficient memory available for greater than this time period, an exception is thrown and the query is terminated.
The exception text is:
Could not reserve memory for request {0}: lowerBound = {1}, upper bound = {2}, reserved = {3}, total {4}.
The five variables in the message (in order from 0 to 4) are: number of concurrent requests, minimum size of query (bytes), maximum query size (bytes), amount of memory reserved (bytes) globally for SAP table access, and amount of memory available (bytes) globally for SAP table access.
If queries are being terminated with this error message, decrease Java heap size and increase sap.table.memoryAvailable, or optimize SAP queries to avoid table scans.
sap.table.minimumSize
Default Value: 500
Description:
Minimum number of rows allowed for SAP table requests. When the system is in a low memory state, requests become fragmented, resulting in more round-trips to SAP to fetch data. Splitting a query into too many small requests typically degrades performance more than waiting for enough available memory to make fewer, larger requests.
This property forces queries to block until other queries release memory. If a query blocks for longer than sap.table.memoryMaxWait (seconds), an exception is thrown.
sap.table.profiler.enabled
Default Value: false
Description:
TDV does not use this.
sap.table.requestFactor
Default Value: 0.8, 0.25, 0.15, 0.1
Description:
Comma-separated list of values used to determine how much memory is available for reading SAP tables based on the number of concurrent requests. The number of concurrent requests is used as an index into this list. If this number is greater than the number of values, the last value is used.
For example (using the default value): The first request receives 90% of the available memory. If a second request is made before the first completes, it receives 50% of the remaining memory.
sap.table.rowLength
Default Value: 512
Description:
Length of data field returned by table read function, in bytes.
sap.table.safetyFactor
Default Value: 0.9
Description:
TDV does not use this.
sap.use.logon.lang.introspection
Default Value: false
Description:
If false, the SAP connection uses the language configured in the data source. If true, the SAP connection uses the language set in the SAP connection attributes, which originate from SAP’s configuration of the SAP user.