Components of SAP Communication Technology
Technical Basis
Application Examples: Synchronous Communication
Application Examples: Asynchronous Communication
Application Examples: Communication with Non-ABAP Technologies
Classical SAP Technologies (ABAP)
RFC
RFC Programming in ABAP
RFC Basics
The RFC Interface
RFC in SAP Systems
RFC Destination
RFC Performance Profile
RFC Context
RFC Exceptions
RFC System Fields
RFC Authorization
RFC Trusted/Trusting Systems
RFC Restrictions
Technical Requirements
External Systems
SAP Systems
Code Pages
Calling RFC Function Modules in ABAP
Introduction
Parameter Handling in Remote Calls
Characteristics Using Unicode
Calling Remote Functions Locally
Calling Remote Functions Back
CALL FUNCTION - RFC (RFC Variants)
Synchronous RFC (CALL FUNCTION-DESTINATION)
Using Pre-Defined Exceptions for RFC
Using Transactional Remote Function Calls
CALL FUNCTION - IN BACKGROUND TASK
Transactional Integrity of tRFCs
The qRFC Communication Model
Using Asynchronous Remote Function Calls
Calling Requirements for Asynchronous RFCs
Receiving Results from an Asynchronous RFC
Keeping the Remote Context
Parallel Processing with Asynchronous RFC
CALL FUNCTION - STARTING NEW TASK
RECEIVE
WAIT UNTIL
RFC Example
Writing Remote Function Modules in ABAP
Steps for Implementing Remote Function Modules
Characteristics of the Programmng
Debugging Remote Function Modules
Maintaining Remote Destinations
Displaying, Maintaining, and Testing Destinations
Entering Destination Parameters
Destination Types
Maintaining Group Destinations
Settings for Special Code Pages
Trusted System: Trust Relationships Between SAP Systems
Trusted/Trusting Relationships Between SAP Systems
Configuring System Resources for Parallel RFC, tRFC, and qRFC
RFC Resources on the Application Server
Monitoring RFC Resources on the Application Server
System Configuration for Parallel RFCs
Dynamically Configuring RFC Quotas
rdisp/rfc_check
rdisp/rfc_use_quotas
rdisp/rfc_max_queue
rdisp/rfc_max_login
rdisp/tm_max_no
rdisp/rfc_max_own_login
rdisp/rfc_min_wait_dia_wp
rdisp/rfc_max_own_used_wp
rdisp/rfc_max_comm_entries
rdisp/max_comm_entries
rdisp/max_arq
rdisp/rfc_max_wait_time
Calculating Resources for Asynchronous and Transactional RFC
Local Check
Detailed Check
Triggering the RFC Client Resource Check
Problems with RFC Resource Allocation
Limit Values for Resource Allocation for Asynchronous RFC
Checking Authorizations for RFC
The RFC API
Introduction to the RFC API
RFC with External Systems
Technical Requirements
Contents of the RFC SDK
Compiling and Linking RFC Programs
Programming with the RFC API
Technical Description
Supported Data and Transfer
Basic Functionality
Components of the RFC API
RFC Client Programs
Introduction to RFC Client Programs
Establishing an RFC Connection to R/2 Systems
Programming Example of Working With Local sideinfo
Programming Example of Working Without Local sidei
Programming Example of Working With saprfc.ini Fil
Establishing an RFC Connection to SAP Systems
Programming Example of Working With Local sideinfo file
Programming Example of Working Without Local sideinfo File
Programming Example of Working With saprfc.ini File
Load Balancing
Programming Examples
Remote Function Calls Using SAPGUI
RFC Using the ABAP Debugger
RFC Server Programs
Introduction to RFC Server Programs
Registering Server Programs with the SAP Gateway
Programming Examples
RFC Server Program Working With RfcDispatch
RFC Server Program Working With RfcDispatch and Rf
RFC Server Programs Sending/Receiving Internal Tab
Establishing an RFC Connection from an R/2 System
Establishing an RFC Connection from an SAP System
Passing Parameters
Writing an RFC Function in C
Using Multiple-Client Server Programs
The SAPRFC.INI File
Introduction
Possible Parameters
Examples
Call-Back Feature with SAP and External Systems
Introduction
Call-Back from an ABAP Function Module
Call-Back from an RFC Server Program
Transactional RFCs and External Systems
Introduction
tRFC between SAP and External Systems
Transactional RFC Client Programs
Transactional RFC Server Programs
Function Interface: Summary
Administration
Calling and Accepting RFC Functions
RFC Calls for Manipulating Internal Tables
Transactional Remote Function Calls
Extended Remote Function Calls
Special Functions
ABAP Data Types
RFC_CHAR
RFC_HANDLE
RFC_FUNCTIONNAME
RFC_TID
RFC_NUM
RFC_INT
RFC_INT1
RFC_INT2
RFC_BYTE
RFC_BCD
RFC_DATE
RFC_TIME
RFC_FLOAT
Function Reference
Administration Function Reference
RfcAbort
RfcAccept
RfcClose
RfcConnArgv
RfcConnArgv3
RfcEnvironment
RfcConnect
RfcLastError
RfcOpen
RFC Client Function Reference
RfcCall
RfcCallReceive
RfcReceive
RFC Server Function Reference
RfcDispatch
RfcGetAttributes
RfcGetData
RfcGetName
RfcInstallFunction
RfcInstallStructure
RfcRaise
RfcRaiseTables
RfcSendData
RfcWinInstallFunction
Table-Handling Function Reference
ItAppLine
ItCpyLine
ItCreate
ITAB_H
ItDelete
ItDelLine
ItFill
ItFree
ItGetLine
ItGupLine
ItInsLine
ItLeng
ItPutLine
Transactional Function Reference
RfcCreateTransID
RfcIndirectCall
RfcInstallTransactionControl
RFC_ON_CHECK_TID
RFC_ON_COMMIT
RFC_ON_CONFIRM_TID
RFC_ON_ROLLBACK
RFC_ONCALL
Extended Function Reference
RfcAddExportParam
RfcAddImportParam
RfcAddTable
RfcAllocParamSpace
RfcCallExt
RfcCallReceiveExt
RfcOpenExt
RfcOpenExtV3
RfcFreeParamSpace
RfcGetDataExt
RfcReceiveExt
RfcSendDataExt
RfcInstallFunctionExt
Special Function Reference
RfcListen
RfcWaitForRequest
Structures and Enumerations
RFC_CONNOPT_CPIC
RFC_CONNOPT_R3ONLY
RFC_CONNOPT_VERSION_3
RFC_ERROR_INFO
RFC_ITMODE
RFC_MODE
RFC_OPTIONS
RFC_PARAMETER
RFC_RC
RFC_TABLE
RFC_ATTRIBUTES
Platform-Specific Features of the RFC API
OS/2
Windows 3.x
Windows NT/95
SAP-Based UNIX Platforms
Sample Programs
Error Handling
Debugging
Error Handling in ABAP
Error Handling in RFC Server Programs
More Information in Error Cases
RFC and SAProuter
Introduction to SAProuter
RFC Client Program and SAProuter
Starting an RFC Server Program Via SAProuter
Using the Registering Feature
Program Start by Application Server
Program Start by SAP Gateway
Program Start by SAPGUI
RFC Between External Programs
Using A Local sideinfo File
Using the saprfc.ini File
Queued Remote Function Call (qRFC)
The qRFC Communication Model
qRFC with Outbound Queue
qRFC with Inbound Queue
qRFC Administration
qRFC Administration: Introductory Example
Specifying the Connection Type
Specifying the Host Name and Service Number
Logon/Security
SMQS: Registering a Destination
SMQR: Registering a Queue Name
SMQ1 and SMQ2
Executing a qRFC Example Program
Outbound Queue Administration
The QOUT Scheduler
Using the QOUT Scheduler
Registering a Destination
Deregistering a Destination
The Status of the QOUT Scheduler
Displaying all Registered/Deregistered Destinations
Menu Options in SMQS
Extension in the QOUT Scheduler (Transaction SMQS)
Transaction SMQE
When is a QOUT Scheduler Activated?
Restarting Blocked Queues
Configuring the Resources of the QOUT Scheduler
QOUT Scheduler Administration: Improving tRFC/qRFC Performance
Problems with "Crashing" and "Overloading"
Automatic Restart of Crashed qRFC LUWs
Exception Handling in qRFC
Queue Status in SMQ1 and Table ARFCRSTATE
qRFC: Modifying the Queue Status "Waiting for Update"
User Switch in the Inbound and Outbound Schedulers
LUW in Update Records in SM58/SMQ1
Setting RFC Bit Options in SM59
Inbound Queue Administration
The QIN Scheduler
Monitor for the QIN Scheduler (SMQR)
Queue Status in SMQ2 and Table ARFCRSTATE
Displaying the “Last Changed By” User in SMQR and SMQS
Authorization Check in the qRFC Monitors
Monitoring the Inbound Queue
Registering an Inbound Queue
Displaying all Registered and Deregistered Queues
Destinations NONE and SPACE
qRFC Programming
qRFC Programming: Introductory Example
qRFC with Outbound Queue
qRFC with Inbound Queue
Function Builder and ABAP Editor
Registering and Deregistering a Queue
Outbound Queue Programming
Different TIDs for Different Destinations in qRFC LUWs
Serialization Using the Queue Counter
Mixed Mode
Transferring Queue Names
Calling a Function Module in “Module in Background Task”
The User Context of a qRFC LUW
Saving LUWs in the Outbound Queue Without Processing
tRFC/qRFC in Dialog Task and Update Task
qRFC and the Use of the RFC Library
Inbound Queue Programming
Working with qRFC with Inbound Queue
Queue Name, Queue Identifier
Serialization
Handling of CPIC Errors
Registering a Queue
Deregistering a Queue
Displaying all Registered and Deregistered Queues
Resources
The “Re-Use” Feature of qRFC with Inbound Queue
qRFC API
qRFC API for the Outbound Queue
qRFC API for the Inbound Queue
bgRFC (Background RFC)
bgRFC Administration
Exceptions
Examples for Inbound and Outbound Processing
Locking a tRFC Unit
Locking a Queue
No-Send qRFC Units with Multiple Receiving Systems
Filling Multiple Units in Parallel
General Outbound Tables
Outbound qRFC
Outbound tRFC
No-Send qRFC
General Inbound Tables
Inbound qRFC
Inbound tRFC
Customizing Tables
Outbound Scenario for qRFC and tRFC
Saving New Units at COMMIT WORK Time
Executing Units
Confirmation of Units
Locking Units
Locking Destinations
Unit State Management
Throughput Optimization
Optimizing the Sending Systems
Optimizing the Destination
Dynamic Optimization
Outbound Scheduler
High Availability
Distribution and Processing of the Worklist
Troubleshooting
Errors During the Application LUW
Errors During Updates
Errors in the Outbound Scheduler (RFC Client)
Database Inconsistencies
Processing Problems
Communication Problems
Errors on the RFC Server
Scheduler Monitor
Database Inconsistencies and Errors
NOSEND Scenario
Inbound Scenario
Optimizing Throughput for the Inbound Scheduler
Mapping the Inbound Schedulers to Inbound Destinations
Optimization of the Inbound Schedulers
Dynamic Optimization
Inbound Scheduler
Serializing and Deserializing Function calls
Streamlining Classic qRFC
API Functions
NOSEND Scenarios (for Outbound Queues Only)
Mixing tRFC and qRFC
Destinations NONE and SPACE
Inbound Linking to the Update Task
Fixed Destination with API
bgRFC Monitoring
bgRFC Monitor: Transactions SBGRFCMON1 and SBGRFCMON2 (for qRFC
Customizing
Creating Inbound Destinations
Mapping Queue Prefixes to Inbound Destinations
Setting a qRFC Type in Transaction SM59
Creating a Supervisor Destination
System-Specific Settings (Outbound)
System-Specific Settings (Inbound)
Application Server-Specific Settings (Outbound)
Application Server-Specific Settings (Inbound)
Destination-Specific Settings (Outbound)
Destination-Specific Settings (Inbound)
Migration
Outbound Scenarios
Inbound Scenarios
NOSEND Scenarios (Mobile Client, etc.)
bgRFC Programming
bgRFC API
Function Module Call
Creating Destination Objects and Unit Objects
Manipulating a Background Unit
Using Queues to Lock and Unlock Units
Follow-Up Actions for Units with Errors
Determining the Unit ID
Processing no_send Units
Special Solution for Mobile Client
New Data Types
Database Model
IDoc Interface/ALE
BAPI
General Introduction to BAPIs (CA-BFA)
BAPI User Guide CA-BFA)
BAPI Programming Guide (CA-BFA)
Communication Between ABAP and Non-ABAP Technologies
SAP Business Connector
SAP BC Functions
SAP BC Architecture
SAP BC Routing
SAP Java Connector
SAP JCo Functions
SAP JCo Architecture (Standalone Version)
SAP JCo Application Scenarios
SAP JCo Scenario: Java/ABAP Communication in SAP Web AS
SAP JCo and the VM Container
Administration of Work Processes in the VM Container
In-Process and Out-of-Process Communication
Logging and Tracing for Using SAP JCo with VMC
Profile Parameters for Logging and Tracing
SAP JCo Scenario: SAP BC
SAP JCo Scenario: Online Invoice
SAP JCo Installation
SAP JCo Client Programming
Establishing a Connection to an SAP Server
Direct Connections
Opening a Connection
Calling a Function and Closing a Connection
Result of the Function Call
Example Program Connect1
Connection Pools
Creating a Connection Pool
Utility Class OrderedProperties
Acquiring and Releasing a Connection
Example Program Connect2
The SAP JCo Repository
Creating a Repository
Creating a JCO.Function Object
Executing a Function
Mapping of Java and ABAP Data Types
Type-Specific Getter Methods
Access to Tables
Setting Scalar Import Parameters
Example Program Bapi1
Table Manipulation
Example Program Bapi2
The Class JCO.Field
Deactivating Parameters
Exception Handling
Synchronization
Debugging
SAP JCo Server Programming
Inbound RFC Connection (from the SAP System)
Java Program for Establishing a Server Connection
Server Connection to a Unicode Backend System
Exception Listener
Server State Change Listener
Processing an ABAP Call
Processing a tRFC Call
SAP Java Resource Adapter
SAP JRA for Client Applications
SAP JRA Architecture
SAP JRA Configuration
SAP JRA Development Guidelines
SAP JRA Configuration on the SAP J2EE Application Server
Client Programming Model
Transactions for the Client Programming Model
LocalTransaction
UserTransaction
User Managed Transaction
Security for the Client Programming Model
BasicPassword
Kerbv5 (SSO)
DefaultAuthentication
Application Managed Authentication
Secure Network Connection (SNC)
Handling Records
SAP .NET Connector
SAP .NET Connector Architecture
SAP .NET Connector Installation
Creating ASP .NET Web Applications Using the SAP .NET Connector
SAP .NET Client
SAP .NET Server
SAP .Net Connector Programmer’s Reference
Overview of Classes
SAP .Net Client Programming
SAP RFC Server Programming
Data Type Reference
Samples
Internet Communication Framework
Architecture
Server Architecture
Client Architecture
Classes and Interfaces for the Server Role
IF_HTTP_SERVER
Attributes
Constants
Methods
IF_HTTP_RESPONSE and IF_HTTP_REQUEST
Methods for IF_HTTP_RESPONSE and IF_HTTP_REQUEST
IF_HTTP_ENTITY
Attributes for IF_HTTP_ENTITY
IF_HTTP_EXTENSION
Attributes
Constants for Describing the Control Flow
Constants for Describing Lifetime Control
Methods
IF_HTTP_UTILITY
Methods for the Interface IF_HTTP_UTILITY
Classes and Interfaces for the Client Role
Interface IF_HTTP_CLIENT
Attributes
Constants
Methods
Administration: HTTP Communication Using the SAP System
Administration of Server Functions
Authorizations
Authorization Object S_ICF
Authorization Object S_ICF_ADM
Authorization Object S_ICFREC
Restricting Authorizations for Transaction SICF
Determining Authorizations in the Target System
Administration of Client Functions
Establishing a Connection Using a Destination (SM59)
Parallel Processing Requests
Configuring Proxies
Troubleshooting and Monitoring
Troubleshooting: Procedure
External Debugging
External Debugging under Load Distribution
Traces
Parsing URL
ICF Recorder
Activating Recording
Displaying and Processing Entries
Authorization Object S_ICFREC
Maintaining the ICF Profile Parameters
Logging Error Information
Performance Measurements
Error Handling Using Central Monitoring Functions
Statistical Data for RFC and ICF
Development
Server-Side Development
The HTTP Request Handler
Developing a HTTP Request Handler
Creating a HTTP Request Handler
Accessing Header Fields
List of the Pseudo Header Fields
Accessing Form Fields
Accessing Cookies
Accessing HTTP Body Data
Accessing HTTP Multipart Data
Stateless/Stateful Communication
Terminating a Session
Code Page in ICF
Compression Techniques
Creating and Configuring an ICF Service
Creating a Service
Defining the Logon Procedure
Logon Checks: Overview
Standard Logon Order
Alternative Logon Order
Logon Using Service Data
Logon with Client Certificate
Logon Using Basic Authentication.
Determining the Client
Determining the Logon Language
Defining Service Data
HTTP Load Distribution
Security Requirements
Setting Up Error Pages
Format and Parameters of the Error Document
Inserting an HTTP Request Handler
Activating and Deactivating ICF Services
Creating Virtual Hosts
Virtual Hosts: Application Example
Internal Aliases
External Aliases
Testing an HTTP Request Handler
Transporting ICF Services
Client-Side Developments
Example Program: Executing an HTTP Request
Parallel Requests
Redirecting Requests
SOAP Framework
Web Service Technologies in the SAP Web AS
Example: SOAP Message
Example: WSDL File