How does ABAP (Advanced Business Application Programming) work?
Unlike other programming languages, ABAP code is stored in the database. When it’s time to execute an ABAP function, the system pulls the code from the database, compiles it, and runs it.
Since the code is tucked away within the database, it’s been more difficult in the past to understand the root cause of performance issues. The code itself is also highly dependent on the database and other SAP application components.
How is the ABAP Agent different than traces on SAP?
Traditionally, an SAP admin would manually start a trace to capture data. They would leave that trace (along with the associated overhead) running for some amount of time.
AppDynamics effectively automates that functionality and correlates that data to the Business Transaction. With AppDynamics, traces are only started for isolated transactions, not globally. The data that is returned from an individual trace on SAP is presented in a silo, without business context and visibility end-to-end.
How does the AppDynamics Setting screen get into SAPGUI in order to configure the ABAP agent?
When you start the transfer request, all programs and screens are imported. You will place the files in the transport queue on the SAP system.
The import needs to be done once per SAP system, not per application server.
Where do I configure the ABAP agent in SAPGUI?
Instrumentation is completed through the AppDynamics Settings in SAPGUI, which is located under the /DVD/APPD_CUST transaction code. From here, you will connect to your AppDynamics Controller and configure the SDK settings. For detailed instructions and screenshots to guide you, review the following resources:
Does the ABAP language support dynamic bytecode instrumentation?
No, the ABAP language doesn’t support dynamic bytecode instrumentation, so you won't be able to intercept arbitrary ABAP commands during runtime.
However, you can still make manual code adjustments, like custom actions and RFC exit calls. For instructions, see Instrument Custom ABAP Code.
How does the ABAP Agent decide when to enable a trace?
An ABAP trace is initiated when requested by the SDK. A SQL trace is started at the same time.
What is the performance overhead of the ABAP Agent?
The performance overhead varies. If you look at the traces, we capture the overhead that we introduce. When we instrument a really fast transaction, the overhead will be a higher percentage than when we instrument a slow transaction.
A lot of the data collection is done out-of-band, so has minimal impact on the actual performance of the transaction. Much of the trace correlation is done asynchronously.