SAP PI architecture uses both an ABAP stack and Java stack. The ABAP stack contains the integration engine and business process engine and handles major tasks like pipeline processing. The Java stack contains the advanced adapter engine and supports most adapters as well as frontend administration. SAP PI initially used a dual stack of ABAP and Java but is moving toward a single Java stack. The system landscape directory (SLD) acts as a central repository of information about systems in the IT landscape. It defines technical systems, products, and components and facilitates installations and upgrades.
SAP PI architecture uses both an ABAP stack and Java stack. The ABAP stack contains the integration engine and business process engine and handles major tasks like pipeline processing. The Java stack contains the advanced adapter engine and supports most adapters as well as frontend administration. SAP PI initially used a dual stack of ABAP and Java but is moving toward a single Java stack. The system landscape directory (SLD) acts as a central repository of information about systems in the IT landscape. It defines technical systems, products, and components and facilitates installations and upgrades.
SAP PI architecture uses both an ABAP stack and Java stack. The ABAP stack contains the integration engine and business process engine and handles major tasks like pipeline processing. The Java stack contains the advanced adapter engine and supports most adapters as well as frontend administration. SAP PI initially used a dual stack of ABAP and Java but is moving toward a single Java stack. The system landscape directory (SLD) acts as a central repository of information about systems in the IT landscape. It defines technical systems, products, and components and facilitates installations and upgrades.
SAP PI architecture uses both an ABAP stack and Java stack. The ABAP stack contains the integration engine and business process engine and handles major tasks like pipeline processing. The Java stack contains the advanced adapter engine and supports most adapters as well as frontend administration. SAP PI initially used a dual stack of ABAP and Java but is moving toward a single Java stack. The system landscape directory (SLD) acts as a central repository of information about systems in the IT landscape. It defines technical systems, products, and components and facilitates installations and upgrades.
Download as DOCX, PDF, TXT or read online from Scribd
Download as docx, pdf, or txt
You are on page 1of 185
SAP PI architecture (Dual Stack)
SAP PI works on 2 Engines
ABAP stack ABAP stack has IE and BPE, basically this stack takes care of major tasks like pipeline processing, BPM processing etc. This is the Integration Server and supports multiple administrative tasks and act as core component. Overall flow and objects are finally saved in ABAP stack. ABAP Stack Adapters - IDOC, HTTP and PI. Java Stack Java Stack contains adapter engine which has almost all adapters Java Stack Adapters - File, JDBC, JMS, SOAP, RFC, Mail etc. It supports frontend administrative tasks, SLD, Runtime Workbench and more Graphical and Java Mapping, Client tools ESR, ID, RWB, NWA
Understanding the Architecture
Enterprise Services Repository Used for the design and development of Integration Scenarios. Integration Directory Used Configure the scenarios using the interfaces defined in Enterprise Service Repository. At design time to implement the routing logic and define the communication parameters. Integration Engine It is used at runtime to process the messages responsible for message queuing and delivering. System Landscape Directory This is used at design time to define various systems in the landscape. Advanced Adapter Engine This runs on the java stack and provides an environment for running different adapters. Business Process Engine Provides runtime environment for executing complex business processes defined in BPM (Business Process Management).
From Dual Stack to Single Stack The message processing capabilities of SAP PI started off with the use of dual stack functionalities of the ABAP and Java installations. An attempt towards single stack (Java only) integration was first made with the NetWeaver release of 7.1. This was in an attempt to reduce the hardware resources needed, the internal communication as well as the DB access points and increase message processing performance by by-passing the integration engine on the ABAP stack to aid local message processing on the adapter engine. These new capabilities could only support specific scenarios that do not need any capabilities that purely reside on the ABAP stack such as certain adapters (i.e. IDoc- and HTTP-adapter) and ccBPM. This changed the name of the Adapter Engine in the earlier releases to Advanced Adapter Engine (AAE), and now to Advanced Adapter Engine Extended (AEX). With the introduction of the AEX, almost all the capabilities that could not be supported initially when the single stack initiative began are now supported or have been enhanced. This has also paved the way towards process orchestration, in which the single stack of PI NetWeaver AEX can be co-installed with BPM/BRM. This invariably supports all the features of dual stack installation in a more flexible and agile way. Nevertheless, SAP affirmed that further releases of PI NetWeaver will continue to support the dual stack until 2020 when there will be an extended maintenance of NetWeaver 7.3.
System Landscape Directory
What is SLD? SLD is the central repository of information about the software and systems in the data center expressed in a standard schema called the CIM (Common Information Model). CIM was developed by DMTF (Distributed Management Task Force), an industry consortium whose aim is to enable management of IT systems in distributed environments using web standards. SLD acts as the central information provider for NetWeaver system Landscapes. Manages platform dependencies and software components. Facilitates Installations, upgrades as well as transports. Information provider for SAP XI/PI. Reasons /Motivation for SLD implementations Where can I get a consistent and up-to-date overview of SAP software installed in my landscape? Where can I get technical information about SAP products regularly updated? How can I make sure that my central administration tools use the same, up-to date landscape information? How can I make sure that the names of Java development objects are unique internally + externally although I have several development teams? Configuration of software development should be maintained centrally including interdependencies! Infrastructure data like hosts and ports of back-end systems should be stored centrally!
Approach: Provide one central provider of landscape information:
a) Catalog of installable software All components that can theoretically be installed b) Component information repository List of installed software (including technical details) c) Landscape description
Result: a) Landscape data is gathered + updated automatically No manual gathering (from SAP Service Marketplace + every system) Data stored centrally + consistently (not in Excel sheets, for example) b) Stored information can act as basis for different tools and services
SLD is a component of SAP NetWeaver and completely implemented with Java technology. Based on proven industry standards of DMTF (Distributed Management Task Force): Object-oriented Extensible Open: 3rd-party software as SLD data provider 3rd-party software as SLD data consumer
SLD path: configuration of SLD and data suppliers Access it at http://<hostname>:<HTTP port>/sld
Information Stored in Software Catalog
Provides information about all available SAP software: a) Available releases b) Available support package levels c) Dependencies d) Provided by SAP e) Basis for landscape description
Information Stored in SLD: Landscape Description
Provides information about installed systems: a) Products and components b) Installed versions and patch levels c) Timestamp(last update) d) Can be enriched individually(admin contact, description, )
How Does SLD get Landscape Description: Data?
SAP systems contain data suppliers that collect and send data to SLD: a) Must be configured once per landscape element b) After that, they send reliable and up-to-date data automatically: At system startup Periodically (batch job)
Information in SLD as foundation for SAP Application
The 3 dimensions of SLD
System Landscapes have three dimensions: Solution Dimension what software processes are installed Transport Dimension DEV, QA, PROD Technical Dimension Tells us what products are installed on which hosts on particular networks SLD should capture all three dimensions of the System Landscape.
Catalogs
Two main areas of SLD are: The software catalog and the systems catalog. The Software Catalog describes the installed products and also their constituent components. The software catalog is delivered with content about all SAP products. Customers and Partners can extend this catalog with information about software from other vendors. It describes the component information, possible combinations and dependencies. The Systems Catalog describes the systems in the data center from two perspectives: a logical view (business systems) and a physical view (technical systems). It describes the concrete implementation of the customer landscape. Information from the software catalog is used in the ESR to organize development efforts and Information from the systems catalog is used in the ID to drive the specific configuration of Integration Scenarios. SLD Functions
Importing/synchronizing PPMS data as XML file into Master Component Repository at the SAP site. The Master Component Repository contains the up-to-date information about all SAP products. This will be published on the Service Market Place and Customers can update their individual component information. They can also add additional information about the 3 rd party products which are in operation into their individual component information. The Landscape description contains information about all installed products/components at the Customer site. Applications and Tools can use information from the SLD as the central information provider.
Products and Software Components
Software products and their versions, SWC and their versions are the basis for the component information. Software Component: A SWC is a unit of software delivery that has its own support package track. (Ex: SAP_HR, SAP_BASIS, etc.) Product: A software product is composed of one or more software components. (Ex: SAP R/3) Product Version: Specifies a particular version of a product. (Ex: SAP R/3 4.6c, 4.6d, 4.7) Software Component Version: Represents a particular version of a SWC. The relationship between a software product and its constituent components is described in the SLD by an association called a software feature.
A product version consists of multiple software features. These features are implemented by various SWC or SWC versions The product SAP R/3 Enterprise has a product version SAP R/3 4.7 Various software components (or versions) fill the features of this software product. These software components (or versions) are SAP Basis 6.20, SAP HR 4.70, and SAP Enterprise Retail 1.10. The data for SWC and software products for SAP products is provided by the internal PPMS (SAP Product and Production Management System). SAP provides this master data for updating the local component information. The current data can be added to the SLD using data import. Defining third party products and software components is easy in SLD, because there are wizards to guide you through the process. Technical & Business Systems
Technical Systems are defined in the Systems catalog. Technical System corresponds to the physical details of the system in which the software is installed. Types of Technical System Web AS ABAP Web AS Java Standalone Java Third-Party A Technical System may have multiple products installed on it. Business systems are logical senders/receivers that exchange messages by using SAP XI and these are entered in the SLD (System Landscape Directory) Technical Systems are the basis for defining Business systems. SLD defines the association between Technical and Business Systems. The association between the Technical and Business systems depends upon the type of the TS (Technical System). For TS of type Web AS ABAP, each client is a Business System. This is similar to depicting each client as a Logical system in ALE Configuration. There are wizards to guide you through the process of creating technical and business systems. You can launch these wizards from the main screen of the SLD. SLD and ESR
All design/development work in the ESR (Enterprise Service Repository) is organized by SWC version. This makes us understand the interfaces logically belong to a SWC and to a particular version. Before developments can begin, the SWCVs must be imported from the SLD to the Enterprise Service Repository. Additionally when we define integration scenarios in the ESR, the application components that we assign in the scenario editor are assigned from product versions in the SLD. Dependencies between SWCVs can be created in the SLD and these dependencies will automatically be reflected in ESR. SLD and ID
At configuration time a collaborative process is set up for a specific system landscape. The configuration data is organized, structured, and saved in the ID (Integration Directory) in the form of configuration objects. A Service is used to address a sender/receiver of messages during the configuration time. It is possible to address a particular Business System as a service. A business system (BS) is an actual application system in a system landscape. A business system (service) has information about the inbound/outbound interfaces and the SWC versions of the business system. Business system services are used when configuring internal company processes.
Routing Relations Business System Sender Service Integration Directory
Technical System System Landscape Directory Business System Receiver Service Business System Routing Relations in the ID point to the BS which are maintained in the systems catalog in the SLD, and through appropriate association, to the technical systems. Transport dependency also can be created in the SLD for the Business Systems defined.
Cache Refresh
The Enterprise Services Repository needs to communicate with the Integration Directory (for the cache refresh mechanism) and the System Landscape Directory (to obtain physical channel data). The Business Systems create in SLD can be imported to ID before configuring the scenarios. Any changes made to the Business system can leads to re-import the business systems into ID along with SLD cache refresh. Configuration data maintained in Integration Directory is replicated to the involved runtime engines by a cache refresh mechanism. SXI_CACHE transaction is used to update the runtime cache in the Integration Server. The update of SLD cache in ESR and ID results to maintain the runtime data like Business systems, SWCVs, etc. to improve the performance. SAP NetWeaver Process Integration as SLD Client
Main SLD use cases for SAP NetWeaver PI: 1. SLD provides business system names: Business systems are logical systems that function as sender or receiver within PI SLD maps business system name to technical system so that PI can determine the receiver of a message
2. SLD provides transport targets for content transports of PI: For each business system, define which business system corresponds to it in other environment (DEV, TEST, QA, PROD) If you transport configuration objects, business systems from source environment will be mapped to target environment during import
3. SLD provides information about software component versions. 4. SLD provides data of PI topology: Systems and adapter engines for PI end-to-end monitoring Addresses for transfer of adapter configuration data inside of PI
SAP PI Rely on SLD for following a) PI caches SLD data b) SLD access required if you develop or deploy PI transport c) SLD access required during PI startup: At startup, PI loads SLD data into caches d) SLD access might also be required during runtime: Such as for unexpected restart of PI system
Topology of SLD
Central Organization: One single SLD for entire customer enterprise network which entails into Easy setup + low operation effort, No redundancy, consistent foundation but suffers few drawbacks like High demand on SLD regarding availability and stability, Different user groups(developers, administrators,) are working within the production SLD, Data of all systems visible/accessible.
Distributed Organization: Several distributed SLDs which have advantages like Availability improved, Restricted views possible, Environments can be isolated but again this topology also suffers some Drawbacks Higher operation effort may be Several CIM model updates required or Possible synchronization Enterprise Services Repository (ESR)
SAP PI is a middleware used to configure the data transmission from one system to another system. During these data transformation and transmission process a set of object are created to map source data to target data and further a set of configuration are done in order to route data from source system to target system. ESR is workplace where in all objects created for data transformation from source system to target system and ID is workplace where routing configuration of these data are done.
The Enterprise Services Repository stores the definitions and metadata of enterprise services and provides an integrated modeling environment for defining enterprise services, data types, and other design objects for SOA-based business processes in a standards-compliant manner. Using the ES Repository, you can store all the necessary information for the integration of applications, for example interfaces, data types, and mapping programs, in a central location.
Enterprise Service Builder ES Builder offers a modeling environment to create various models in the Enterprise Services Repository (ES Repository). It provides a java based user interface for designing and developing the data structures and mappings between structures
ESR Objects Data Type: Data Types are the field element structure of a message .The Data Type is the most basic entity to define the structure of XML elements. Data Types are based on XSD data types Message Type: A Message Type is identified by a name and namespace. This becomes a root element tag in the XML of the message payload. Service Interface: A Service Interface represents the metadata description of the messages and operations to be used at runtime. The Service Interface is the highest level representation of XML metadata. SAP PI- Mapping Types of Mapping: Message Mapping Represents the mapping of messages Supported by a graphical mapping editor Structure and Value Mapping possible Extensible via Java- User defined functions XSLT Mapping Interface descriptions are in XML Portable Extensible via Java enhancements Java Mapping Can import java archives for complex mapping logic Uses JAXP for processing XML documents Java and XSLT mapping runs on J2EE engine of WEB AS ABAP Mapping Mapping programs written in ABAP objects Uses IXML functions to process the XML messages
Operation Mapping Operation Mappings associate a Message Mapping to an outbound and inbound Service Interface. This now begins to create the association needed for the Integration Builder to ultimately route an incoming message to the correct mapping and target system.
Services Registry Services Registry represents a registry for Web services. Located centrally within a SOA landscape, it contains information about services provided in that landscape, with references to the services relevant WSDL metadata and to the locations of the callable service endpoints. Services Registry enables to discover and retrieve services and to use them in composite applications. That means applications make use of data and functions provided as services by underlying applications and combine these into coherent business scenarios. Integration Directory (ID)
In the Integration Directory -configure a business process that are modeled and specified in the ES Repository. This means the following: set up the business process for a specific system landscape. Here specify the components that communicate with each other (usually business systems) and other details of the communication. These other details can include, For example, routing rules, which determine the receiver a message in a process is to be forwarded to, or the configuration settings of the adapter used for the connection of non-SAP protocols or systems Business Component Used in cross-company processes where the Party cannot be fully defined. They represent business or technical sub-units Integration Process As a Business Process defined in the Repository are recipients of messages (for process step triggering) or can send them, they are considered a Service and modeled here Business System Business Systems as defined in the SLD (specific application system in the system landscape) are represented here in the Directory Business Service - We are created in Integration Directory. Collaboration Agreements Collaboration Agreements define the technical details for message processing (ex. Adapter configuration) and security settings for sender / receiver partners. The primary building blocks are Sender Agreements and Receiver Agreements Sender Agreement: A Sender Agreement is used to transform an incoming message so it can be processed by the Integration Engine. This allows the Integration to understand the protocol of the incoming message (via the associated Channel) to processes it as needed Receiver Agreement: A Receiver Agreement is used to transform an outgoing message so it can be processed by the receiver. It is here the sender service is linked to a unique receiver Communication Component / inbound Service Interface via communication channel Logical Routing Logical Routing relates the previously defined Service Interfaces in the Repository to potential receivers and ultimately which Service Interfaces are specifically shared between partners. As seen in the Roadmap, the primary building blocks are Interface Determination and Receiver Determination Interface Determination: An Interface Determination allows the association of an outbound Service Interface from a sender to one or more inbound Service Interfaces of a single receiver (and the related Operation Mapping). Receiver Determination: Receiver Determination will link all available recipients of an outbound Service Interface from a unique sender Service, the Interface Determination focuses on a single sender / receiver pair for that same outbound Service Interface and all the related inbound
Interface Flow in SAP PI
Runtime Workbench (RWB)
The central monitoring of SAP Exchange Infrastructure (XI) offers you the option of executing various monitoring activities. Primarily, you use the Runtime Workbench, the central tool for accessing XI monitoring. The Runtime Workbench gives you the option of navigating to the monitoring functions of the Integration Engine, as well as integration with the Computing Center Management System (CCMS), and the Process Monitoring Infrastructure (PMI) of SAP
Component Monitoring In component monitoring the following engines will be displayed Integration Engine Business process engine Mapping Program Adapter Engine Testing an interface using Runtime Workbench in PI (Integration engine) Runtime Workbench (RWB) is used as a quick test tool for sending the payload directly to Integration Engine in SAP PI. Step 1. Get the payload in XML format as expected by Integration Engine. This can be the payload from SXMB_MONI for an already tested scenario. Step 2. Log on to PI Runtime Workbench (RWB) Click on Display button under Component Monitoring as shown below.
Step 3. Click on Integration Engine.
Step 4. Click on Test Message as shown below.
Step 5. Provide Sender Service Name, Interface Name and Interface Namespace. Select the Quality of Service (QoS) as applicable. Paste the Payload to be sent. Provide User Details and Click on Send.
And you can see the status as shown below.
Communication Channel Monitoring (Adapter Engine) Go to Component Monitoring and click on Adapter Engine
Now click on Communication channel monitoring as shown in below
Now filter the existing channel s using the status of the channels by selecting the status type present the status option
By selecting any of the option we can get the list of channels as follows
Message Monitoring Go to Message monitoring tab and select the engine i.e. Adapter engine or Integration engine
Filter the messages according to the requirement and based on the sender / receiver components
Filter the message based on the status
Message details in message monitoring To see the detailed information about the message, select the radio button for the message and choose details To view the individual versions of the message (as in transaction SXI_MONITOR ) choose message content
PIPELINE Steps
Pipeline is the term used to refer to all steps that are performed during the processing of an XML message. A pipeline represents a fixed processing run for particular XML messages and differs from other pipelines depending on the configuration of the Integration Engine. There are pipelines for a local Integration Engine in the sender or receiver system, or for a central Integration Engine that is configured as the Integration Server, for example. The individual processing steps that an XML message must pass through when it is processed are called pipeline elements. Each pipeline element calls exactly one pipeline service. Pipeline services provide functions for processing XML messages. They read and can change inbound XML messages, for example, the mapping or routing. They can also call processing processes, for example functions to create business data in an SAP component. The service type, number, and sequence are specified for each pipeline and cannot be changed. The pipeline services are either part of the Integration Engine itself or originate from other areas of the SAP Exchange Infrastructure. A pipeline service can be used by more than one pipeline element.
The pipeline consists of 6 steps (for a asynchronous message) that are executed for each new message arriving
1. Receiver identification
2. Interface determination
(1 and 2 together means logical routing)
3. Message split, only takes place if there are more than one receiver)
4. Message mapping
5. Technical routing through the communication channel
6. Calling the appropriate adapter
Receiver Identification: Determine which systems should participate in an exchange with the incoming message.
Interface Determination: For each receiver system determine which interfaces should receive a message.
Message Branch If multiple receivers are found, XI will instantiate a new message for each receiver.
Message Mapping Call the mapping program to transform the me Message structure to the receiver format.
Technical Routing: Bind a specific destination and protocol to the message.
Call Adapter: Send the transformed message to the adapter or proxy Mapping Messages to Each Other Using Mapping Objects Purpose In the Enterprise Services Repository (ES Repository), interface descriptions of function calls (interfaces) are saved in XML format. The parameters of these interfaces determine the contents of the messages that are exchanged between systems (see also: Interface-Based Message Processing). A mapping refers to the mapping of operations or messages to other operations or messages. You often need to work with mappings if you need to call functions whose interface at the receiver cannot or must not be changed, or if the sender and receiver expect data in different ways in their message format. You can define one or more mappings for an interface pair at design time, and save the mappings in the ES Repository. At configuration time, you can then select the mapping that corresponds to a given collaborative scenario. The Integration Engine transforms the message at runtime, in accordance with the saved mapping. Ideally, no mapping is required. In other words, the sender and receiver interface parameters are identical. Implementation Considerations Mappings are an essential part of A2A and B2B scenarios. At design time mappings can be saved in the ES Repository and then selected for a business process at configuration time (see: Defining Interface Determinations). The Integration Engine executes the mappings configured in the Integration Directory at runtime after receiver identification has taken place. If no mapping is required for a connection then the Integration Engine skips the mapping step. Features At design time, you differentiate between the following: Mapping Programs: Used to implement the mapping. Operation Mappings: Used to register mapping programs for an interface pair (or a pair of operations for a service interface). You can also enter multiple mapping-programs that are executed in succession. Mapping Programs The Enterprise Services Builder (ES Builder) supports the following: The development of message mappings using a graphical editor integrated in the ES Builder. Java classes are generated for use at runtime from a graphical description. You also have the option of enhancing the standard functions with user-defined functions. The import of XSLT or Java mappings as an archive: XSLT (eXtensible Stylesheet Language Transformations) You use XSLT to convert an XML document to another document. This is achieved by using XSLT commands to search for tags in the source document and replacing them with other tags or values in the target document. You can also call a Java method in an XSLT program. Java program The message is transferred to a Java program as an inbound stream and can be imported using any parser (for example, SAX or DOM). The modified message is then transferred to an outbound stream. A Java program can also be a help program that in turn is used in another Java program or in self-defined functions of a message mapping. If, for example, XSLT mappings already exist or are to be developed using third-party tools, you can import the mapping programs for use in your A2A or B2B scenario.
Overview You can define mappings for a source and target operation based on operations from service interfaces and message types in the ES Repository:
You can also define the corresponding mappings when the source or target operation is an IDoc, an RFC, or another interface connected by an adapter.
The figure shows that you can reference message types for three different application cases for each operation. Request (asynchronous and synchronous communication) The request is the message that the consumer sends - using an operation in the outbound-service- interface - to a corresponding operation in the inbound-service-interface. Response (synchronous communication only) The response is the direct response that the consumer waits for after the request message has been sent. The message is sent from the provider (inbound-service-interface) to the consumer (outbound- service-interface). Fault (asynchronous and synchronous communication) Message that is either sent to the consumer (synchronous) or persisted for monitoring (asynchronous) if an error occurs at the provider. The arrows in the figure indicate the direction of message exchange at runtime: In the context of mappings, the operation that sends a message is also referred to as a source operation, and the operation that receives a message as a target operation. You can define mapping programs for mapping the message type of a source operation to the message type of a target operation (depending on the type of operation for the request, response, and fault message). The Enterprise Services Builder supports the following mapping programs for this purpose: Message mappings that you define using a graphical editor in the ES Builder. This is used to create a Java source code for the runtime. XSLT and Java mappings that you can import into the ES Repository as an archive. XSLT and ABAP mappings that customers can implement using the ABAP Workbench (see Mapping Development with the ABAP Workbench). Essentially it is possible to create or import multiple mapping programs in the ES Repository for the same message type pair (or the corresponding part of an imported or external interface). Comparing Mapping Program Types SAP recommends that you use message mappings. However, in exceptional cases it may be advisable to use different mapping programs, for example, because you can apply XSLT or Java mapping programs from a previous integration project. Note the following regarding the speed at which the mapping program types are executed: Handwritten Java programs by experienced Java developers are usually quicker than generated Java source code from message mappings. Message mappings can cope with significantly larger messages than XSLT. Whether an XSLT program or a message mapping is quicker depends on the complexity of the mapping. Tests have shown that even message mappings for larger messages are quicker than the equivalent XSLT mapping programs. Experience has also shown that Java-based mapping programs are quicker than ABAP-based mapping programs. Operation Mappings When defining mapping programs for request, response, or fault messages, the definition is first separated from the operations that reference the corresponding message types. You can use the same message type for multiple operations. The definition of a mapping program therefore remains decoupled from a specific interface pair that you use later to implement the communication between the sender and receiver. Furthermore, depending on the type of operation, there can be multiple mapping programs that can be applied for a specific interface pair. The operation mapping establishes the connection between operations by means of mapping programs: An operation mapping specifies the corresponding mapping programs for request, response, or fault messages for a selected pair of operations. You register mapping programs at design time by using an operation mapping. In this respect, an RFC or IDoc is on the same level as an operation (more information: Interfaces, Operations, and Message Types). You can also specify multiple mapping programs to be executed one after the other in the case of requests and responses for an operation mapping. You can also define multiple operation mappings for the same pair of operations, to provide multiple variants in the ES Repository. At configuration time, the customer or the consultant only accesses the operation mappings and not the individual mapping programs. This reduces the configuration effort for an interface determination in the Integration Directory. Structure and Value Mapping There are two types of mappings, regardless of the mapping technology that you use: Structure mappings where the structure of an XML document is mapped to the structure of another XML document. Value mappings where the values of an XML document are mapped to the values of another XML document. Example In the example below, data about a flight booking is exchanged using XML documents. The XML schema of the source document provides more hierarchy nodes than the XML schema of the target document. Furthermore, the target document schema does not use all the information that is provided by the source document schema. Both structures can be mapped to each other by using a structure mapping. An example of when a value mapping is required is for the passenger class on a flight. In the source document, this information is coded by using a string, while in the target document, a decimal value is used. Another example of a value mapping would be the date format.
Using the ES Builder graphical mapping editor, you can define structure mappings easily using Drag & Drop. You can then use a function to assign fields to each other from source and target structures that require a value mapping.
General Functions in the Source and Target Structures Filter To increase overall clarity, you have the option of reducing the number of fields displayed in the source structure, target structure, and test environment to a specified subset. The following table gives you an overview of the possible filter settings. Filter Setting Source Structure Target Structure Test Environment Display Fields with Mapping Only X X Display Fields Without Mapping Only X X Display Directly Assigned Fields Only X Display Indirectly Assigned Fields Only X Display Selected Fields Only X Display Used Fields Only X Filter for Selected Fields in Target Structure To display any number of target fields in the target structure, in the menu bar for the target structure, choose Display Selection Column ( ). The mapping editor displays an additional column in which you can select the fields you require. By using the where- used list (see below), the mapping editor can also select any fields that the where-used list contains. Differentiating Field Names on the Same Hierarchy Level The field names of the source and target structure must be unique. The mapping editor supports identical field names on the same hierarchy level in the following way: Fields of the source and target structure can be qualified by namespaces Attributes are differentiated from elements by a proceeding at sign (@) in the mapping editor. Access Paths for Fields For fields in the structure overview (on both the Definition and Test tab pages) you can copy the path for a field to the clipboard by choosing the context menu option Copy Path. This also applies to fields in the data-flow editor. Recursive Structures The mapping editor does not fully support the mapping of recursive structures (data types that reference themselves). In the structure overview, elements of this type are indicated by means of an icon ( ). Due to their recursive nature, the substructures of these elements can theoretically be infinitely long. It is possible to map these elements in the mapping editor in a rudimentary fashion by using the context menu to expand a specific number of subnodes and then use them in target-field mappings. Where-Used List (Source Structure Fields and Functions) You can display the fields of the source structure or functions in a where-used list: Position the cursor on a field to display a quick info that contains information about the target fields this particular field is assigned to by means of a target-field mapping. To display a where-used list for a particular field or function, choose Where-Used List in the context menu. You can navigate directly to the target fields that a particular field or function is assigned to. If a field or function is used for multiple target fields, you can easily filter it out of the target structure: 1. ... 1. 1. In the menu bar of the target structure, choose Display Selection Column ( ). 2. 2. Call the context menu for a source field or function. 3. 3. In the menu for the where-used list, choose Select All Fields (<Number of Usages>) in Target Structure. Special Functions: Target Structure Navigating to Target-Field Mappings If a field in the target structure is green or yellow, this indicates that an incomplete target-field mapping already exists. Double-click a field to display it in the data-flow editor. Target-Field Mappings for Particular Positions To define target-field mappings for different positions of a target element that occurs frequently, the context menu for the target structure has the function Duplicate Subtree (see: Duplicating Subtrees). You have the option of deleting any duplicates that you create. Disabling Fields A mapping is complete when there is a target-field mapping for all obligatory target fields. In cross-system scenarios where the values for such fields are not entered during mapping, but at a later point in time, this specification is too restrictive. To disable a target field and all its subnodes, choose Disable Field in the context menu in the structure overview. The mapping editor shows disabled fields crossed out. The check and the mapping runtime ignore disabled fields.
Displaying the Status Icon Types Icon Meaning
Attribute
Element
Element with maxOccurs = unbounded
Variable More information: Variables in the Target Structure Icon Colors Color Meaning White Attribute or element not assigned red Attribute or element must be assigned to complete the mapping yellow Attribute or element has already been assigned but the corresponding mapping in the data-flow editor is not complete green Mapping to target field complete Furthermore, collapsed target field names in the mapping editor are displayed in red if target field mappings for subnodes of the marked field name are still missing.
Runtime Procedure The mapping editor generates Java source code from the graphical description of the message mapping. This section gives you an overview of how the generated Java source code processes an XML source structure at runtime. Basics In the mapping editor you assign the fields of two XML structures to each other. Note that at runtime no target structure exists prior to the mapping. The target structure is only generated when the mapping is executed. The message mapping must therefore generate the target structure at runtime. Two things determine how the target structure looks after it has been generated: The number and type of tags which exist in the source structure instance How often the target fields are specified to occur in the target structure Occurrence In both cases, this in turn depends on the value for Occurrence that you specified in the type definition in the XSD editor. The values for are mapped to the XSD attributes minOccursand maxOccurs. You can display these attributes in the tabular tree view. minOccursspecifies the minimum number of times a tag must occur, while maxOccurs specifies the maximum number of times a tag may occur. The root node occurrence is minOccurs=maxOccurs=1 in both the source structure and target structure.
If the occurrence of a tag in the source or target structure is not explicitly specified, the mapping editor makes this visible to the user. These default values correspond to the XSD specification (minOccurs=1, maxOccurs=unbounded). Contexts XML structures are ordered hierarchically. Therefore, in an XML instance a field is always in a context of the higher-level field. For example, in the following XML instance the <flat> fields are in the <street> context and the <city> fields are in the <root> context. <root> <city> <street> <flat /> </street> </city> </root> Processing Message Mappings The message mapping processes the source structure and generates the target structure according to the target field restrictions and according to the target field mappings linked to the target fields. The processing procedure is intuitive for simple occurring fields. To understand the processing, you need to differentiate between two levels: Mapping Fields Within a Context Structure Mappings by Setting the Context
Mapping Fields Within a Context The way in which a message mapping field maps within a context depends on whether it is a structure field or a value field. Structure fields are elements with sub-elements that cannot have their own value. Attributes and elements with a type (leaf nodes in the hierarchy) are value fields. Mapping Structure Fields The question of whether or not to generate structure fields depends on how often they occur in the target structure and whether a target field mapping has been defined for the structure field. The following table provides an overview of when you have to define target field mappings for structure fields according to the schema definition of the target structure. The mapping editor shows these fields in red. Target Field Mappings Required for Structure Fields in the Target Structure Occurrence Conditions for Generation n = minOccurs = maxOccurs > 0 Message mapping generates these structure fields automatically because they have to occur n times in the target structure independently of the target field mapping. You can nevertheless assign a target field mapping to such structure fields (for example, by using the standard function createIf() to select the correct source structure field from a selection of several). minOccurs = 0 The structure field is optional. Whether or not it is generated depends on whether you have assigned a target field mapping to it (for example a structure field of the source structure). Note the following: If you assign a target field mapping to the structure field, you have to do the same for obligatory sub-elements/attributes. If you do not, the message mapping is incomplete (the mapping editor indicates this by showing it in red). If you want to generate optional structure fields it is not sufficient to generate a target field mapping for sub- elements/attributes. The message mapping suppresses optional structure fields (including sub-nodes) without a target field mapping. The number of times that optional structure fields are generated is bounded by maxOccurs and the target field mapping. The same rules apply here as to value fields (see below). 0 < minOccurs < maxOccurs You have to define a target field mapping for these structure fields. The number of times that these structure fields are generated depends on minOccurs, maxOccurs and the target field mapping. The same rules apply here as to value fields (see below). For information on how to transfer structures from the source structure into other structures, see Structure Mapping by Setting the Context. Occurrence of Value Fields and Structure Fields Even if a source field in accordance with an XML schema definition is not limited in how often it can occur, it only actually occurs in the XML document for which the message mapping was executed. The target field attributes minOccurs and maxOccurs then determine how often it occurs in the target structure. For the purpose of the statements below, sourceElem is a source structure field and targetElem is a target structure field that is assigned to this field in the mapping editor (without using functions): The targetElem tag with minOccurs=<n> occurs a minimum of <n> times in the target structure. If sourceElem does not occur a sufficient number of times in the source structure, the mapping runtime throws an exception. The targetElem tag with maxOccurs=<n> occurs a maximum of <n> times in the target structure. If sourceElem occurs more frequently in the source structure, values are lost. If it occurs less frequently, then an equal number of target and source fields are generated.
The mapping runtime ignores default values that are contained in the XSD schema for fields. Generating Functions The standard functions of the Constants function category do not have an input value. Therefore, they generate a value for a target field instead of taking it from a source field. In addition to these functions, all functions (regardless of whether they are standard or user-defined functions) that do not have input values are referred to as Generating Functions. If generating functions are assigned to a target field, the attributes minOccurs and maxOccurs determine how frequently a value is generated: If minOccurs = 0 the value of the function is generated once. Otherwise, the value of the function is generated as often as is specified by minOccurs.
This applies regardless of the value set in maxOccurs. Even if maxOccurs = unbounded, the mapping runtime will still only generate the value as often as is specified by minOccurs. If generating functions are assigned to a function, it is the input queue with the most values for the current context that determines how often the generating function generates a value (see also: Processing an Input Queue).
Structure Mapping by Setting the Context In the default setting, each field is in the context of the higher-level field.
Fix and Foxy are in the first flat context, Jolly Jumper and Lucky Luke are in the second, and all four are in the first street context. The first <street> field is in the first city context and so on. Let us assume that you want to map this structure to the following list to include all those people from the first city and the first street: <personList minOccurs=1 maxOccurs=1> <person minOccurs=0 maxOccurs=unbounded>
The root node (in this case <personList>) always appears exactly once. This is displayed explicitly in the target structure. You want to list all four people from the first street context (Fix, Foxy, Lucky Luke, and Jolly Jumper). Define a target field mapping for <person>: \personList\person=\root\city\street\flat\person This XML instance produces the following result: <personList> <person> Fix </person> <person> Foxy </person> </personList> It only generates Fix and Foxy from the first flat context. To understand why this is the case, we can look at the processing: 2. ... 4. 1. The root node <personList> is generated because it is obligatory. 5. 2. The message mapping checks in the <personList> context whether there is a target field mapping for \personList\personand whether there are values for this in the XML instance. The mapped \root\city\street\flat\person field is in the first flat context. 6. 3. The message mapping generates fields in the target structure for Fix and Foxy in the first flat context. Once the first flat context has been processed it is closed along with the <personList>context in the target structure. The transformation is completed with the last step because all target structure fields have been processed. The example shows the following: The <flat> structure node is implicitly assigned to the <personList> root node during mapping. <personList> is generated as often as is predefined in the schema, therefore once (see also: Mapping Fields Within a Context). The list only includes Fix and Foxy because they are in a different context to Jolly Jumper and Lucky Luke. You can set the context individually for each field in the source structure in the Data-Flow Editor context menu. If you set the <street> context for \root\city\street\flat\person, then prior to the mapping, all <person> fields are appended to the next highest field, which is <street>. Depending on how you set the context in the source structure, you will get the following results: Structure Mappings Using Different Contexts of the <Person> Source Field Context of \root\city\street\flat\person Results list flat (default setting) <personList> <person> Fix </person> <person> Foxy </person> </personList> street <personList> <person> Fix </person> <person> Foxy </person> <person> Jolly Jumper </person> <person> Lucky Luke </person> </personList> city <personList> <person> Fix </person> <person> Foxy </person> <person> Jolly Jumper </person> <person> Lucky Luke </person> <person> Asterix </person> <person> Obelix </person> </personList> root <personList> <person> Fix </person> <person> Foxy </person> <person> Jolly Jumper </person> <person> Lucky Luke </person> <person> Asterix </person> <person> Obelix </person> <person> Valerian </person> </personList>
The removeContexts() standard function assigns the fields assigned to it to the root node. You will get the same effect if you assign the root context to this type of field.
The higher-level context of an attribute is the element to which it is assigned. The above statements relating to fields also apply to attributes. Technically speaking, the XML instance is imported into the queues before the target field mappings are processed. The contexts are separated in the queue by a context change. You can address these queues directly in advanced user- defined functions.
Processing an Input Queue The message mapping runtime uses queues (see also: Advanced User-Defined Functions): There is a queue for each field in the source structure. Standard and user-defined functions process the input queues. The result of a calculation is written to a results queue. The results queue for a function can in turn be an input queue for further functions. Finally, there is also a queue for the target field. The restrictions for the target fields determine which of the values for the target field queue are written to the target structure. If you have created an XML instance in the test environment editor, you can display the various queues in the data-flow editor. Input Queues of Varying Lengths If the source structure contains elements with an occurrence value greater than 1, then one context in a queue may contain multiple values. Provided that the input queues have the same number of values for each context, it is clear how the function processes the values:
However, in the following example, the input queues for the concat function have a different number of values in the contexts that belong together. If, as in this case, an input value is missing in a queue, the message mapping runtime simply uses the last value that it read from the queue in question.
The same applies for generating functions (constants, for example) that only generate one value if they are connected with a function: If another input queue has more than one value in a context, the mapping runtime simply uses the value generated by the generating function again.
Standard Functions General Values of elements or attributes of the XML message (the payload ) are technically speaking a string. Therefore, all standard functions that operate on field values expect string arguments and return a string value. Nevertheless, the transferred value can of course have a different semantic data type, namely, the one that you specified when you defined the schema for the payload for the field. Standard functions exhibit the following standard behavior: Depending on the standard function, data type conversions are used to ensure that the values are transferred in a format suitable for the function (using a cast). If the value cannot be interpreted, the mapping runtime triggers a Java exception. If-clauses evaluate conditions that return Boolean values. Standard functions that return Boolean values return the string true or false. Standard functions that expect Boolean values interpret the values 1 and true (not case-sensitive) as true and all other values as false.
See also: Runtime Behavior Overview of Functions Data-flow objects for standard functions are structured as follows: Most data-flow objects have two or three inbound channels on the left-hand side, and one outbound channel on the right-hand side. If-functions are shaped as rhombuses or triangles. There are also conversion functions with one inbound and outbound channel and functions that return a value without any input. Standard functions that require additional specifications are indicated with a star ( ). To call the dialog for Function Parameters, double-click the data-flow object. The following figure provides an overview of all the different forms of data-flow objects:
To illustrate how the individual functions are used, the input boxes in the figure above have the variables X, Y, Z or I, and the result variable is either R or O. All standard functions in the tables below are described using these input and output variables. In the data-flow editor, other data-flow objects that are connected to the functions using the connecting boxes either return the input values or receive the result of the operation. You can combine the functions in any way you require (provided that the values transferred to a function can be interpreted). Function Category: Arithmetic You can only enter numerical values for this category (this includes values with digits after the decimal point). If the value cannot be interpreted as a digit, then the system triggers a Java exception. Otherwise, all calculations are executed with the precision of the Java data type float. The format of the result value depends on the result: If the result is a value with digits after the decimal point, these remain unchanged. Exception: If a zero follows the decimal point, then this is cut off. This means that the result of the calculation 4.2 0.2 is 4 and not 4.0. Also note that Java values of type float are converted to the second system before the calculation. The result is calculated there and then this result is converted back to decimal format. The conversion may result in decimal places in the dyadic format that are periodically repeated and then automatically cut off. In the decimal system, this can result in inaccurate results (example: 2.11 + 22.11 = 24.220001). If the number of positions after the decimal point is to be restricted to two, for example, in the case of values for a currency, you can format the values after the calculation by using the standard function FormatNum.
If the particular usage case requires more detailed results, you can also select the decimal system as the basis for the calculations. The Java class BigDecimal is used for internal purposes. For more details see SAP Note 958486. Function Name Function add R = X + Y subtract R = X - Y equalsA R = true, if value X equals value Y, otherwise R = false. The values are interpreted numerically, therefore the value 1.5 is the same as 1.50. abs O = Absolute value of I sqrt R is the square root of X sqr R is the square of X sign R = 1, when X is a positive number R = 0, when X equals 0 R = 1, when X is a negative number neg R = -X 1/x R is the reciprocal of X power R = X Y
less true, when X < Y, otherwise false greater true, when X > Y, otherwise false multiply R = X * Y divide R = X / Y max R = Maximum of values X and Y min R = Minimum of values X and Y ceil O = The smallest possible integer value (up to minus 'infinite) that is not smaller than the argument I. Corresponds to the Java function java.lang.Math.ceil(). floor O = The largest possible integer value that is not larger than the argument I. Corresponds to the Java function java.lang.Math.floor(). round O = Integer value that is closest to the value of argument I. Corresponds to the Java function java.lang.Math.round(). counter O = Number of calls for this target-field mapping where you specify the initial value and the increment of the counter in the function parameters. FormatNum Converts I according to a pattern that you define using the function parameters. The possible patterns are the same as in the Java class java.text.DecimalFormat. Function Category: Boolean All functions in this category expect Boolean input values (see above). Function Name Function And R is true if X and Y have the value true. Otherwise, R is false. Or R is true if X or Y have the value true. Otherwise, R is false. Not O is false if I has the value true O is true if I has the value false Equals Compares both Boolean values X and Y and returns true if both are equal, otherwise false. Non-Boolean values are interpreted as false (see above). Use the functions equalsS or compare from the Text category to compare strings. notEquals R = Not(Equals(X,Y)) if If condition X is fulfilled (returns true): R = Y If condition X is not fulfilled (returns false): R = Z ifWithoutElse If condition X is satisfied (returns true): R = Y. Which Else value the function should return depends on various different factors (see detailed documentation). Function Category: Constants Since these functions do not have any input values, they are generating functions. Function Use Constant O gets any string constant that you can enter in the dialog for the function parameters. CopyValue For a frequently occurring element, copies the value at a defined position in the source structure to the assigned target field. sender O gets the name of the sender business system. Test_Sender_System is output when you test the message mapping in the Integration Builder. receiver O returns the name of the receiver business system. Test_Receiver_System is output when you test the message mapping in the Integration Builder. Function Category: Conversions Function Use FixValues Executes a value mapping using a fixed value table that you complete using the function parameters. The table is saved together with the most current message mapping and can only be used once. Value mapping Executes a value mapping for the value I entered. In the function parameters, assign the both input value I and source value O to a representation in the value- mapping table. In this way, you can assign source and target structure fields to a representation. You complete the value-mapping table on the configuration maintenance screen in the Integration Builder. Since these entries are not available at design time, the mapping result is just an estimate when you test the message mapping. See also Value Mapping
The runtime interface for value mappings has changed for XI 3.0. However, XI 2.0 message mappings that call the Value Mapping function still function using the old runtime interface. To use the function parameters in the new runtime interface, choose XI 3.0 Interface. In the function properties for the standard function Value mapping, in the fields Agency and Schema, enter the key for the source or target value. These values can have any values. However, you can also refer to the fields SenderParty, SenderService, ReceiverParty or ReceiverService. The mapping runtime replaces these values at runtime with the values from the corresponding fields in the message header of the message for which a value mapping is being executed.
In the field Agency you can also enter the name of a business system. When transporting value mappings from one Integration Directory to another, the Integration Builder sees if you have entered a business system as the agency and converts it during the transport (see also: Configuring Groups and Transport Targets). Function Category: Date The following functions enable you to define the date format for the source or target format using the dialog for the function parameters.
The format adheres to the convention as defined in the standard Java class java.util.SimpleDateFormat. The function parameters dialog provides you with a wizard that you can use to enter the most frequently used date formats. Function Use currentDate Returns the current date using O. This function is a generating function. DateTrans Converts date format I to another date format O. DateBefore R = true, when date X comes before date Y, otherwise false DateAfter R = true, when date X comes after date Y, otherwise false CompareDates R = 1, when date X is after date Y R = 0, when date X is the same as date Y R = -1, when date X is before date Y Extended Settings It is not only date formats that are country-specific; the count for weekdays and calendar weeks is also country-specific. You can specify the relevant conventions for these in the function parameters: First Weekday Specifies which day of the week is recorded as the first weekday. In the United States, for example, the first weekday is Sunday, while in France, it is Monday. The count begins at 1. The mapping runtime sets this attribute using the Java method setFirstDayOfWeek(). For more information, see the Java documentation under http://java.sun.com/j2se/1.4.2/docs/api/java/util/Calendar.html#setFirstDayOfWeek(int). Minimum Number of Days Required in First Week Specifies how many days the first week of the year must have for it to be considered the first calendar week. The mapping runtime sets this attribute using the Java method setMinimalDaysInFirstWeek(). For more information, see the Java documentation under http://java.sun.com/j2se/1.4.2/docs/api/java/util/Calendar.html#setMinimalDaysInFirstWeek(int). Using the checkbox Calendar Is Lenient, you can control whether invalid dates trigger exceptions or not. If the checkbox is checked, the mapping runtime permits a date such as February 942, 1996, which is then interpreted as the 941st day after February 1, 1996. An exception is not triggered. The mapping runtime sets this attribute using the Java method setLenient(). For more information, see the Java documentation under http://java.sun.com/j2se/1.4.2/docs/api/java/util/Calendar.html#setLenient(boolean). Function Category: Node Functions Function Use createIf If there are structuring elements in your target structure that do not exist in the source structure, insert them using this function. Using condition I you can control whether the element is inserted or not. You connect the element in the target structure using O. removeContexts Removes all higher-level contexts of a source field. In this way, you can delete all hierarchy levels and generate a list. replaceValue Replaces the value I with a value that you can define in the dialog for the function parameters. exists O = true, if the source field assigned to inbound channel I exists in the XML instance. Otherwise, false. SplitByValue Inserts a context change for an element. collapseContexts Deletes all values from all contexts from the inbound queue except for the first value. Empty contexts (= ResultList.SUPPRESS) are replaced by empty strings. Only one queue remains, which consists of contexts that contain just one value each. Finally, all internal context changes are deleted, so that all values belong to one and the same context. useOneAsMany Replicates a value of a field occurring once to pair it as a record with the values of a field occurring more than once. sort Sorts all values of the multiply-occurring inbound field I within the existing or set context. The sorting process is stable (the order of elements that are the same is not switched) and it sorts the values in O(n*log(n)) steps. Using the function parameters, you can specify whether values are to be sorted numerically or lexicographically (case-sensitive or non case-sensitive) and in ascending or descending order. sortByKey Like sort, but with two inbound parameters to sort (key/value) pairs. The sort process can be compared to that of a table with two columns. Using the first parameter, you pass key values from the first column, which are used to sort the table. If you have classified the key values as numeric in the function parameters, they must not be equal to the constant ResultList.SUPPRESS. See also: The ResultList Object Using the second parameter, you pass the values from the second column of the table. If there is a discrepancy between the number of keys and values, the mapping runtime triggers an exception. The function returns a queue with the values sorted according to the keys. mapWithDefault Replaces empty contexts in the inbound queue with a default value, which you specify in the function parameters. Example: If Default is the default value and A|B1,B2| |C| |D is the inbound queue, mapWithDefault returns the following outbound queue: A | B1,B2 | Default | C | Default |D. The function corresponds to the following combination of standard functions: If( []field, exists([]field), Constant([value=default])) formatByExample This function has two inbound queues, which must both have the same number of values. To generate the result queue, the function takes the values from the first queue and combines them with the context changes from the second queue. Function Category: Statistics The functions of this function category are designed for source fields that occur more than once in the source structure (maxOccurs = i > 1). Function Use sum R = Sum of values X 1 to X i of a context. average R = Average of values X 1 to X i of a context count R = Number of fields in a context (i) index R = Index i of X i . In the function parameters, you specify the following: the initial value of i, the increment, and whether the index value is to be reinitialized at the beginning of every new context, or whether it is to have the same value for the entire source structure. Function Category: Text
In position specifications, the 0 position corresponds to the first character in the string. Function Use substring Returns a substring O for a string I. Use the dialog for the function properties to specify the position of the substring. Example: substring(Hello, 0,1) = H, means that the substring from Startindex 0 to Endindex 1 (not including position 1) is shown. concat R = Linking of strings X and Y (without blanks). Example: X = Mrs.; Y = Miller; R = Mrs.Miller. Use the dialog for the function properties to insert a separator in the string. equalsS R = true, if string X equals string Y, otherwise R = false. indexOf (2 input parameters) R = first position at which string Y is found in X and 1 if Y does not occur at all. indexOf (3 input parameters) R = first position from position Z at which string Y is found in X and 1 if Y does not occur at all. lastIndexOf (2 input parameters) R = last position at which string Y is found in X and 1 if Y does not occur at all. lastIndexOf (3 input parameters) R = last position from position z at which string Y is found in X and 1 if Y does not occur at all. compare Compares string X with string Y: R = 0, when the strings are equal R = positive number i, when X is lexicographically larger than Y R = negative number i, when X is lexicographically smaller than Y i specifies the difference between the two strings lexicographically. The function acts in the same way as the compareTo() method of the JDK class java.lang.String. replaceString X: String in which something is to be replaced Y: String to be replaced in X Z: String to replace Y R = String in which each occurrence of Y in X is replaced by Z.
X = "sparring with a purple porpoise" Y = p Z = t R = "starring with a turtle tortoise"
length O = Length of string endsWith R = true when Y is the last string in X; otherwise false. startsWith (2 input parameters) R = true when Y is the first string in X; otherwise false. startWith (3 input parameters) R = true when Y matches X from position Z; otherwise false. toUpperCase Converts all lower case letters in I to upper case letters. trim Removes all white space characters (spaces, tabs, returns) at the start and end of a string. Acts the same as the trim() method of the JDK class java.lang.String. toLowerCase Converts all upper case letters in I to lower case letters.
Repairing Target-Field Mappings After Structure Changes Use For each target-field mapping, the mapping editor remembers the XPath expression that can be used to find a field in the source or target structure. If the source or target structure changes, existing target-field mappings may become invalid because the mapping editor can no longer find fields in target-field mappings created prior to the structure change. This may be the case for the following reasons, for example: The name of an element has changed A new hierarchy level has been added to the structure of a data type A message mapping for a 1:1 transformation is to be enhanced for a m:n transformation (more information: Multi-Mappings)
A message-mapping target structure looked as follows in a previous release: <PersonData> <name> <familyName> <gender> <street> <city> <zip> In the current release, the elements street, city and zip are to be reassigned to a new element address. The element name was also renamed: <PersonData> <firstName> <familyName> <gender> <address> <street> <city> <zip> The mapping editor only recognizes the old structure for the target-field mappings of street, city, zip and name that were defined in the previous release. If you do not want to have to define these target-field mappings again, you must replace the XPath expressions they contain. In this case, the mapping editor displays a warning for all fields that it can no longer find. To replace the XPath expressions in the affected target-field mappings, in the mapping editor, choose Reload with Improvements ( ). Prerequisites The Reload with Improvements ( ) function is only visible in the mapping editor if at least field used in a target-field mapping could not be found when the message mapping was opened. Procedure 3. ... 7. 1. In the ES Builder, open the message mapping that references a changed source or target message. The mapping editor displays a warning for any fields in target-field mappings that can no longer be found. 8. 2. Choose Reload with Improvements ( ). The mapping editor opens a dialog box in which you can replace the XPath expressions in the target-field mappings. 9. 3. The mapping editor displays two XPath expressions in the upper part of the dialog box: The XPath expression for the field that could not be found The XPath expression of the next higher-level field If the new structure has an additional hierarchy level, it may be easier to reset the path of the next higher-level field in all target-field mappings. By doing so, the path for the lower-level fields will be automatically correct and you do not then need to replace each one individually.
The following target structure was previously used for a 1:1 transformation: <PersonName> <firstName> <familyName> Now it is to be used for a 1:n transformation. Consequently, you have changed the occurrence value for the target message on the Signature tab page from 1 to 0..unbounded. The structure of the target message now looks as follows: <messages> <message1> <PersonName> <firstName> <familyName> In this case, you simply need to replace the XPath expression /PersonName with /messages/message1/PersonName in each case. These expressions are then automatically correct for the lower-level fields firstName and familyName. Proceed as follows: If you want to replace the XPath expressions at a later date, choose Skip All. If none of the XPath expressions displayed can be replaced by an XPath expression in the new structure, choose Skip. To reassign one of the XPath expressions displayed, first select it. In the structure that is displayed, select the field that you want to belong to the XPath expression selected above and choose Move. 10. 4. If in the last step you have replaced numerous XPath expressions that use the same prefix, the XPath expressions that have already been replaced are displayed in the lower part of the mapping editor window. Result The target-field mappings for fields whose XPath expressions you successfully reassigned are available again in the mapping editor. Check that the message mapping still functions with the new assignments.
Mapping Templates Use Just like you can reuse data types in different message types, you can also save parts of message mappings as Mapping Templates and reuse them elsewhere. Once you have saved a mapping template it serves as a copy template that you can then load into other message mappings and modify to fit your requirements. The same applies to the mapping templates themselves: You can save parts of mapping templates as mapping templates and reuse them in mapping templates or message mappings. To simplify the documentation, the text below does not mention explicitly that the statements made for message mappings are equally valid for mapping templates. However, you can replace message mapping with mapping template anywhere in this section, and the respective statement is still valid. Features You can define mapping templates for structure mappings of the following structures: Data Types Complex types in IDocs and RFCs Complex types in external definitions The types that you reference from mapping templates can be located in any software component version. Activities Defining Mapping Templates You can create mapping templates again and load the structures as usual by using input help in the mapping editor. You can save mapping templates in a message mapping: ... 1. a. Select a type element in the source and target structure (the element must reference a non-built-in XSD data type). 2. b. Choose Save Mapping Template from either the target structure context menu or from the object toolbar. 3. c. Enter a name for the new mapping template and then create it.
Just saving the sub-structures of a message mapping as a mapping template in this way is not sufficient for the mapping editor to be able reference it (you would normally use the template in another message mapping). After you have saved the template you then need to load it into the message mapping (see below). Apart from multi-mappings, you have all the functions of a normal message mapping available to you for a mapping template. Using Mapping Templates You can use mapping templates in message mappings from any software component version: 4. ... 11. 1. In the mapping editor, select a type element in the source and target structure (the element must reference a non-built-in XSD data type). 12. 2. Choose Load Mapping Template from either the target structure context menu or from the object toolbar. 13. 3. If mapping templates are available for the types in the source and target fields, you can select them in the dialog window that is then displayed. Displaying Mapping Templates Used To display all the mapping templates used in a particular message mapping, choose Message Mapping Mapping Templates Used.
User-Defined Functions What is UDF? User Define Function is a Java source code which is generated for the message mapping as a Java method.
When do we use UDFs If the standard functions for a target-field mapping do not fulfill your requirements, or if the graphical representation becomes unclear due to the complexity of the mapping, you have the option of creating your own user-defined functions. A user-defined function is only visible in the message mapping in which you created it. You can insert the function in the data-flow editor by using the function category User-Defined, just like a standard function.
Prerequisites You have created a message mapping and have loaded an XML structure for both the source and the target structure.
Types of UDFs
Simple functions, which can process individual field input values for each function call. Simple functions therefore expect strings as input values and return a string.
Advanced functions, which can process several field input values for each function call. You can import either all field values of a context or the whole queue for the field in an array before calling the function.
Advanced User-Defined Functions
Advanced user-defined functions can access more than just individual field values. Instead, you can import a complete context or an entire queue for a field as an array before your function is called. This enables you, for example, to perform calculations on all field values of a context as well as to divide up the contexts themselves further by inserting context changes.
Integration When the instance for a source structure is parsed, a message mapping works by using queues.
There is a queue for each hierarchy level. A queue can have the following entries: Possible Queue Entries Value Meaning (empty string) This is a queue for a structure field. In the queue there is an entry with an empty string each time the field appears in the XML instance. In the example above there is such a queue for <A /> and <root />. (string) Value of a value field ResultList.CC Constant that shows a context change ResultList.SUPPRESS Constant that causes a field and its sub node to be ignored during processing You can create special structure mappings by adding or removing context changes. The standard functions SplitByValue and removeContexts() work by this principle. See also: Structure Mappings by Setting the Context. Features Advanced user-defined functions can import either just one context into the input arrays, or complete queues. Make your selection by selecting or deselecting the Save Entire Queue in Cache checkbox in the function editor. Working with Contexts or Queues Information in Cache Implications Context Advanced functions that only import one context do not have an identifiable context change. You can of course insert a context change into the results list. Queue Since one or more entire queues are imported in this case, this option is more memory-intensive and is not suitable for very large messages. The input arrays do not contain the context change at the start and end of the context (or of the queue). These context changes are implicitly always available and cannot be identified or deleted from the user-defined function.
Activities
... 1. Create an advanced user-defined function, see User-Defined Functions. 2. Process the values from the input arrays in the Java source text and create a results list by using the ResultList object.
Sample Examples
UDF Execution Type - Context and Queue. Many a time when we try to write the UDF in mapping, main question arises is, which execution type we can use? This blog will try to solve this question. When we create any UDF we can see, three cache execution methods, 1) Value 2) Context 3) Queue. Value is used to process individual input values of a field for each function call. Context and Queue are used to process multiple input values of a field for each function call. Let's see how the concept of Context and Queue is differing from each other. Following is Source and Target structure.
Fig.1 Following data is used to test the mapping. <?xml version="1.0" encoding="UTF-8"?> <ns0:MT_SendData xmlns:ns0="urn:ltil:firstPI7Job"> <Employee> <Data> <Id>10</Id> <Name>SAP</Name> </Data> <Data> <Id>20</Id> <Name>SAP</Name> </Data> <Data> <Id>30</Id> <Name>PI</Name> </Data> <Data> <Id>40</Id> <Name>XI</Name> </Data> <Data> <Id>50</Id> <Name>XI</Name> </Data> </Employee> // (this will lead to context change) <Employee> <Data> <Id>20</Id> <Name>SAP</Name> </Data> <Data> <Id>40</Id> <Name>PI</Name> </Data> <Data> <Id>50</Id> <Name>PI</Name> </Data> </Employee> </ns0:MT_SendData> Following is the UDF, which is identifying Context Change node and instead of that send "DATA" as constant value in a queue.
Fig.2 The UDF having Execution Type Context.
Fig.3 If we use above UDF then according to the udf logic Context Change after value '50' must be converted into value as "DATA".But as we can see in below Figure the Context Change has remained as it is. So above UDF is not worked for type =Context.
Fig.4 As per requirement, Employee nodes should be generated equal to Id nodes in source data. Following is the output with above UDF, in which Employee nodes in target are not generated sufficiently as per our logic.
Now for same UDF we change Execution Type to Queue.
Fig.5 If we use above UDF then according to the udf logic Context Change after value '50' must be converted into value as "DATA".And if we see in below figure it is happening.
Fig.6 All nodes of Employee could display here.
Some more examples: 1. Create a Header Node UDF //Advanced User defined function for setting the header segment on target side. This functions checks for nonempty payload data to the header node on the target side. public void createHeaderNode(String[] Row,ResultList result, Container container) { if ( Row.length > 0 ) result.addValue(""); } 2. Create a Detail Node UDF //Advanced User defined function for setting the detail node on target side. This function loops such that 1 header node and (length-1) detail nodes are created. public void createDetailNode(String[] Row,ResultList result,Container container) { if (Row.length > 1) { for (int i = 0; i < Row.length - 1; i++) result.addValue(""); } } 2. To Get Queue Values: 3. Advanced UDF to output the queue values. a corresponds to the Data in the incoming XML.
public void removeHeaderData(String[] a,ResultList result,Container container) { for (int i = 1; i < a.length; i++) { result.addValue(a[i]); result.addValue(ResultList.CC); } } Filters data using 2 values with OR Condition UDF : UDF which would filter the string array items of a based on a OR condition specified in the IF statement, to populate the target field with the array items of b. a bcorresponds to IDOC Field QUALF. c,d corresponds to constants public void filterValue2(String[] a, String[] c,String[] d,ResultList result,Container container) { boolean flag = false; for ( int i =0; i<a.length;i++) { if (a[i].equals(c[0]) || a[i].equals(d[0])) { result.addValue(b[i]); flag = true; break; } } if (flag == false) result.addValue(""); } Repeating Last Item UDF : Advanced UDF which would repeat the last item in the Queue... public void repeatLast(String[] a,ResultList result,Container container) { int i = 0; for (; i< a.length;i++) { result.addValue(a[i]); } i = i - 1; result.addValue(a[i]); } simple udf UDF for Setting up the Decimal format: Simple udf which would format the input value setting decimal point and padding zeros to the left of the input value upto the required length. UDF for Calculating Current Time: Simple UDF for calculating the current time using the calendar class. [Refer get Timestamp Function to know about calendar class].
get Time Function returns the number of milliseconds since January 1, 1970, 00:00:00 GMT represented by the Date object..
UDF for Decimal Format Conversion: Simple UDF to format the given input explicit with 2 decimal places... public String decimal Format(String input,String dLength,Container container)
Example Scenario: In the scenario employee details, are collected on the basis of department Id. The Employee Ids were generated on the basis of employee details and department Id. I have taken a simple file- to-file scenario to demonstrate this concept. A file, which consists of department Id and Employee data, is sent to PI and the combination of department Id and Employee details facilitates the generation of Employee Id. Before configuring this scenario, I was not able to understand UDF Execution's type context. I had written a UDF for this scenario and come to know the exact use of UDF Context type. I would like to share my experience with fellow PI consultants. Scenario: - The file is placed on ftp. File adapter picks it up. File contains employee data and department data. Employees are distributed in different departments. Each department has its own ID. Based on the department Id, employee Id can be generated. The Employee Id generation logic is implemented in message mapping of PI. In message mapping I have defined a UDF. It checks the department Id and generates the Id for each Employee that belongs to the department. Below are Source and Target structures.
Fig.1
Following is the sender data file, which contains, Department: Consist of Department records. Employee: Consist of Employees records.
Fig.2
As we can see department Id consist of value 10. Hence, we need to send all the Employees and for each Employee, we have to generate Employee Id as, 1001,1002,1003,1004 etc. depending upon Department Id. Department Id 10 has four Employees, so the Employee Id would be generated as 1001,1002,1003 and 1004. Department Id 20 has three Employees, so the Employee Id would be generated as 2001,2002 and 2003. For IR part create Data type, Message Type, Service Interfaces, Operation Mapping by normal method. Also configure ID part for file-to-file scenario.
When we create any UDF we can see, three cache execution methods, 1) Value. 2) Context. 3) Queue. Value is used to process individual input values (i.e. like a single variable) of a field for each function call. Context and Queue are used to process multiple input values (i.e. like a string array) of a field for each function call. Let's see the concept of Context type in UDF. UDF Logic: Following is the UDF that contains logic to generate Employee Id. UDF logic is mainly dependant on Context Change node. Only by Context Change we can identify how many Employees are there in each Department. As shown in Fig.4, This UDF requires input. 1. employee: Employee records. (Context of this input is on Department Header) 2. departmentId: Department records. Importance of Context Change node for this requirement: There are number of Departments and each Department has number of employees. Therefore employees can be classified on the basis of their department. Context Change node distinguishes employees based on their Department. Working of UDF in case of Context: Context: When Execution type is Context the Context Change node is not considered as data node. But it is considered as a separation layer between two Departments. In the UDF, logic is maintained only for one group of data (e.g. Only Employees under Department Id 10). This logic automatically gets executed to other groups (e.g. for Employees under Department Id 20) also. Comparison between Context and Queue Type: For Context type the function getEmployeeId (UDF name - Class) is called as many times as Context Change node occurs in the data. As shown in fig. 5, Context Change node occurs twice so the function will be call two times. For Queue type the function getEmployeeId is called only once. Context Change is considered data node. For detail explanation refer blog no. 12232 E.g. As we have seen in Fig.2 and Fig.5, Department no. 10 has four Employees. Department no. 20 has three Employees. For this data UDF logic works as follows. At the beginning of code, Counter for Employee Id is initialized to Department Id. When Department Id is 10, then 10 is assigned to counter, after applying arithmetical operation the Counter is initialized to 1000. (10 * 100) When Department Id is 20, then 20 is assigned to counter, after applying arithmetical operation the Counter is initialized to 2000. (20 * 100) Here, only 1 st element of Department Id is considered from each group. Groups are defined depending on separation of Context Change node. See the fig.3 In for loop, Counter is incremented and returns the same value for each Employee. This logic is executed only for 1 st group of data. As soon as Context Change node is encountered, logic gets applied to next group of data from the start of UDF. As we have seen in Fig.2 the first Department, with Dept Id 10, consists of four employees. The UDF logic executes only for four nodes and generates Employee Id as 1001,1002,1003,1004. Once the 4 th Id is generated, context change node is encountered and there is no further generation of Employee Ids for Dept Id 10. If any data node is present after the Context Change node then the UDF logic is executed once again. In our case, data node is there for Department Id 20, so the getEmployeeId function is called again. The counter gets initialized and produces Employee Id as 2001,2002,2003 for three employees from Department Id 20. So the output will look like the one shown in Fig.5 This is possible only if the UDF logic could detect the Context Change node. The context change node is significant only if the UDF execution type is context. Lets see the practical example of this.
Fig.3
Execution Type: Context
Fig.4
As you can see the first cluster have 4 values (i.e. 1001, 1002, 1003, 1004). Then there is a context change and hence the next value is reinitialized to 2001 depending upon Employee Id. This is possible only if the UDF execution type is context.
Fig.5
Output:
Fig.6
Conclusion: The context type of the UDF can be used in case if you want to segregate data of one group to other group. So we can generalize that whenever the context change node has a significant impact on the UDF logic, context type of UDF can be utilized.
IDOC and RFC 1. How can you check the Idoc metadata IDX2 2. Where message type exchange data is defined in ALE process : Distribution model/BD64 3. Without using distribution model its possible to exchange message type between one system to another : True 4. BAPI and Idocs both can be used in case of synchronous scenarios : False 5. these are the main transactions are used in the while creating the idocs.
we30:idoc creation we30:segment creation we81:message type we82:link message with idoc type. we02:to status of idocs.
6. How to reprocess Idocs , transaction codes to be used : We02, BD87 We02 : to edit the errored Idoc Bd87 : Reprocess the edited corrected Idoc
7. Can we attach more than one messages with One IDOC? Ans :yes, we can attach more than one message types to one idoc. For example sendor wants the records on both material and purchase at same time then we need to add two message types to one idoc.
8. Suppose their is one sender and we have three receivers.While generating an IDOC will it generate 3 IDOCs for three receivers? Explain in detail how the flow goes from outbound to inbound systems? Ans : in SALE we maintain the Sendor as well as three Receivers (how many receivers to send the same idoc), and assign the sendor in sendor system as well as assign receivers in receivers system(sale-->assignment) three receivers.
maintain the RFC destination on sendor side and all receiver side also (sm59).
maintain the port for sendor and three receivers.
maintain the sendor and all receivers for a same message type in distribution model.(bd64)
maintain the partner profiles for sendor and all receiver side also (we20).
execute the outbound program(idoc generation)like BD12 for DEBMAS message type .
check out the status using we02 or we05.
9. When to use Idoc adapter in sender agreements / when do we create sender agreement for Idoc communication Ans: Whenever there is multiple Idoc involved in message exchange between two system then the concept of sender agreement comes for Idoc scenarios . 10. Where Idoc packaging size is defined? Ans: Idoc packaging size is defined while defining partner profile
11. Transaction code to monitor Idoc in SAP PI? Ans: We05 12. How do you get output from IDOC? Data in IDOc is stored in segments; the output from Idoc is obtained by reading the data stored in its respective segments. 13. Idoc stands for : Intermediate document 14. Idoc is so called because Ans: a) Message-orientedData is also stored in application, only in other formats (the application documents). b) AsynchronousData can be stored in IDocs before an application document is created. 15. Outbound processing of IDoc includes: Ans : Posting the application document Generating the corresponding outbound IDoc Finding the partner and port Transfer of the IDoc to the external system via the port 16. Inbound processing includes: Ans : Receiving IDoc data from an external system via an inbound port Creating the inbound IDoc Find the correct processing type via the partner profiles. Creating the application document 17. IDoc record types include: Ans: Control record. Data records which store the application data in segment and describe the hierarchy of these segments. Status records which determine the defined processing steps of the IDoc. As a result, the number of status records for an IDoc increases as processing continues. 18. When Idoc can be duplicated at Outbound processes or Inbound processing? : Outbound Processing 19. When the IDocs can be deleted? Ans: When they are achieved. 20. In outbound processing, how Idoc are created? Ans: In outbound processing, Idocs are always generated by the Idoc Interface or by the application 21. In inbound processing, how Idocs are created? Ans: Idocs are always generated by the Idoc interface.
22. What is Process code? Ans: This process code always identifies a function module for idoc processing. 23. What is partner profile? Ans: Partner profiles specify which messages are sent to which users, using which method and how they are processed. Partner must be entered in the partner profile before Idocs can be sent successfully. 24. What is port in Ale configurations? Ans: The port is part of the outbound partner profile. Technical communication parameters are entered in the port definition. Inbound ports do not require such parameterstheir technical parameters are defined by the external sending system.
25. Where all the Idocs get stored after creation? Ans: EDIDC stores control/header record. EDIDD/EDID4 stores data records. EDIDS stores status records.
26. Where to see idoc in inbound side whether it is received in receiver system or not? Ans: BDM2: For viewing Sending system Idoc Number and Corresponding receiving System Idoc number... Status also you can get from this Tcode.
WE02: note down the Corresponding Idoc number and check
27. Why there is need of receiver Idoc adapter while sender is XI to some SAP backend? Ans: Sender Communication Channel and sender agreement not required for IDoc, HTTP adapters. These two adapters reside in ABAP Stack which means in Integration Engine. The reason is that R/3 can directly send Idocs to XI via ALE layer using RFC destination specified in SM59. This IDoc after reaching XI is converted in IDoc-XML. This is done when we specify IDoc metadata IDX2 in XI. It is then used in IR for mapping.
Now for the receiver side, when IDoc-XML is created after mapping program run is sent to R/3. Before that, it has to be converted into IDoc. This conversion is IDoc-XML to IDoc is done by IDoc Receiver adapter.
Both the sender and receiver IDoc transmission is done by the RFC communication channel.
In case of the sender IDoc, partner profile configuration in the sender system will tell for a particular IDoc type which port should be used. This port will have the details of the RFC channel to be used to deliver the IDoc.
However, in case of SAP XI/PI system we don't configure partner profile and hence we need a way to tell which port & RFC destination should be used to deliver the IDoc and hence we define a receiver agreements and adapter. This is just used as a reference at runtime and unlike the other adapter; this receiver IDoc adapter does not process any message over Adapter engine. 28. What is the name space of an IDOC? (choose the correct answer) Ans: a) urn:sap-com:document:sap:idoc:messages b) urn:sap-com:document:idoc:sap:messages c) urn:sap-com:sap.document:idoc:messages d) urn:sap-com:document:idoc:messages 29. Which transaction is used to configure a port to retrieve the Idoc Metadata? Ans: IDX1
30. What adapters dont need Sender Agreement? Ans: HTTP, IDOC. 31. An Idoc has been sent by a sender system to XI, but the idoc is not received at the XI system which of these could be true/false Ans: The destination system from the sender system to XI is not configured correctly. 32. IDOC adapter supports the following QoSs? Ans: EOIO
33. What is the name space of an RFC? (choose the correct answer)
Ans: urn:sap-com:document:sap:rfc:functions 34. Does EOIO is supported by RFC? Ans: NO 35. R/3 systems on or below 4.6C can communicate with PI either through RFC or Idoc but not proxy. Ans: True 36. IDOC adapter resides within the Integration Server (ABAP) Ans: True 37. PCK does not support IDOC & Plain Http adapter Ans: True 38. RFC and IDoc meta data can be modified within XI (True/False) Ans: False
39. How can the RfcAdapter be started and stopped? Ans: The RfcAdapter is implemented as a J2EE Service and thus this service has to be started and stopped. This will affect the whole RfcAdapter and can be done from the J2EE Engines Visual Administrator. When you are connected to the J2EE Engine chooses the tab 'Cluster' and opens the appropriate server node in the tree. Then open the 'Services' node. There you can see the entry 'SAP XI Adapter: RFC'. When you open the context menu on this entry you can start and stop the service
40. Is there a special handling of the '/' character in the names of function modules? Ans: As the '/' character can cause conflicts within XML documents it is escaped with the sequence '_-'. A RFC sender channel will do the escaping of '/' to '_-' and a RFC receiver channel will do the opposite. This only will be done for the RFC-XML document.
41. Can there be multiple function module calls within one transaction for RFC sender channels? Ans: RfcAdapter will only support transactions (sometimes also called LUW) with one call. If an attempt is made to place a second call within one transaction an exception is raised. This is done because within XI there is no transactional context between messages and each RFC call is wrapped into one message.
42. Can the RFC-Metadata-Repository be different from the RFC-sender/-receiver channel in terms of Unicode? Ans: The RFC-Metadata-Repository has to match the sender/receiver channel in terms of Unicode. It is not possible to mix a Unicode sender/receiver channel with a non- Unicode metadata repository (or vice versa).
43. RFC parameters are based on data types that are defined in the Data Dictionary Ans: True
44. RFC adapter provides support for sRFC, tRFC and qRFC Ans: False ( it doesnt support qRFC)
45. Following are the Limitation for the RFC Adapter a) Call-Back, No RFC-GUI-Debug b) Digital Signatures are not supported c) Not released for external systems d) No qRFC e) All of the above
Ans: All of above
46. File, RFC, JMS, JDBC, MarketPlaces are Technical Adapter Ans: True 47. Digital signatures are supported in RFC adapter Ans: False 48. All systems that send an RFC via RFC adapter requires an RFC connection using SM59 Transaction Ans: True 49. Program Id defined in RFC adapter should be same in RFC destination in transaction code SM59 Ans: True 50. You can mix Srfc & Trfc at the application level without BPM in case of RFC adapter Ans: True
51. Why we need to create RFC destination from PI to R/3? Ans: PI (process integration) itself acts as middleware for creating connection between A2A OR B2B scenarios. PI provides single point of integration. Actually we need some interface to send the business documents (data) from SAP to any legacy system and RFC is nothing but a Remote Function Call is a type of interface that can be called from the legacy system itself. So we use RFC in SAP system and we pass the data to RFC that would be called from the Legacy system or PI to get the same data.
PROXY
1. Message Interface is the starting point for proxy generation : True 2. What is created whilst generating an ABAP proxy? Ans: Class 1. Proxy generation uses which development approach Ans: Outside in 3. What all the functionalities of a proxy a) Convert ABAP/Java data structures in to XML messages b) Convert XML messages in to ABAP/Java data structures c) Establish Connectivity with the Integration Server d) All the above Ans: All of the above 4. Which proxy object is generated for outbound interfaces and what are they called as Ans: Classes/Client Proxies 5. Which of the following are true about Proxies and Proxy generation? a) Proxies are created in the system from message types using the proxy generation functions. : False b) Proxies are executable interfaces in the application system. : True c) Java proxies are generated on the application server with transaction SPROXY: False d) ABAP proxies are generated from the web services description language description of the interface in integration repository :True e) Proxy generation converts non-language-specific-interface descriptions in web services description language into executable interfaces: True 6. Which adapter type stands for proxy communication using the integration engine Ans: XI adapter 7. ABAP Proxy can be created with SAP Web AS 6.20 greater than or equal to : True 8. ABAP proxies are created in transaction : SPROXY 9. ABAP Proxy Runtime Communicate using XI or Web Services. : True
Configuring the Sender File/FTP Adapter Use You need to configure the sender file/FTP adapter to be able to send the content of files to the Integration Server or the PCK. This only applies to files that are not read-only. Integration You configure the adapter on the Parameters tab page during the definition of a communication channel in the Integration Server or in the PCK. In addition to the adapter configuration, you can use the Module tab page in the module processor to specify generic modules, which give the adapter additional functions. Condition for Sender Agreement The adapter determines the payload of the XI message according to how it is configured. However, the message header information is determined from the corresponding sender agreement for the communication channel. The following conditions apply to the adapter for the definition of the sender agreement: The communication channel defined here must have exactly one sender agreement. At least the interface name and the sender service must be qualified in the sender agreement. All other fields are optional in accordance with the general rules for defining sender agreements. Accessing File Names If you are developing a module for the sender file/FTP adapter and want to access the file name in the module, see SAP Note 819761. Prerequisites 1. You have created a new communication channel or have opened an existing one. 2. On the Parameters tab page you have selected the adapter type FILE. 3. You have selected the Sender radio button to define the adapter as a sender adapter. Using FTPS (File Transfer Protocol using SSL/TLS) The application of FTPS follows specification RFC 4217. The SAP Java Cryptographic Toolkit is deployed. The CA certificate used to sign the server certificate must be added to the TrustedCAs keystore view. Activities To configure the adapter, specify the following: Transport Protocol The file can be selected from either a file system (File System (NFS)) or from a File Transfer Protocol (FTP) server. Message Protocol To send the file content to the Integration Engine or the PCK unaltered, choose File. If you want to send the Integration Engine or the PCK a text file with complex data structures that are to be converted into an XML document, choose File Content Conversion and make the required entries for conversion under Content Conversion Parameters (see below). Adapter Engine Select the Adapter Engine on the Integration Server, or select a non-centrally installed Adapter Engine. This selection is not available in the PCK. File Access Parameters Source Directory Specify the directory where the files to be processed are located. You can either specify the entire path name or a name relative to the working directory of the Adapter Engine. In all platforms (including Windows), use a forward slash (/) to separate directory names in accordance with Java specification. File Name Specify the name of the file that you want to process. The name can contain placeholders (*, ? (placeholders for exactly one character)) so that you can select a list of files for processing. Advanced Selection for Source File If you want to set an exclusion mask for the File Name specified above, or if you want to specify multiple directories using a file name mask and exclusion mask, set the Advanced Selection for Source File indicator. Specify an Exclusion Mask for the file name specified above.
You want to process all files that have the extension '.txt', but want to exclude all files that begin with the letter 'a'. To do this, enter *.txt for File Name, and a*for Exclusion Mask. You can enter additional specifications for source directories, file names, and exclusion masks in the table. This data is processed in addition to the details specified above. FTP Connection Parameters Use of the file transfer protocol follows the specification RFC 959. If you have selected the transport protocol File Transfer Protocol (FTP), enter the following: Server Enter the host name or IP address of the FTP server. Port Specify the port number of the FTP server. The default is the standard port for the FTP server (21). Data Connection Active In active mode, the server establishes a data connection from its data port, port 20, to an end point chosen by the client. Passive In passive mode, the client establishes a data connection to the port required by the server.
The default setting is a passive data connection. Only change this setting if you have a specific reason. Timeout (secs) If no data is transferred between the client and the FTP server in the time interval specified here, the adapter interprets this as an error and terminates the transfer. Connection Security None The FTP protocol is used without encryption. FTPS (FTP Using SSL/TLS) for Control Connection The FTP control connection is protected using TLS/SSL (Transport Layer Security (BC-SEC)/Secure Sockets Layer (BC-SEC)). File transfer is unencrypted. FTPS (FTP Using SSL/TLS) for Control and Data Connection All communication with the FTP server is encrypted and uses TLS/SSL. If you selected FTPSfor Connection Security, then enter the following details: Command Order Specifies the sequence of commands used to authenticate and secure the connection. Retain the default setting. Only adjust the sequence of commands to match those expected of the FTP server if you encounter problems with the FTP connection. For information about the correct setting, see the documentation for the FTP server. Use X.509 Certificate for Client Authentication Set this indicator if the adapter, in contrast to the FTP server, is to use X.509 certificate and public-key cryptography to authenticate itself. The corresponding key/certificate pair must previously be saved in a keystore view of the J2EE server by using the Visual Administrator. Enter the Keystore and the X.509 Certificate and Private Key. To do this, you can use the input help. To logon with the user name anonymous and the password anonymous, set the Anonymous Login indicator. Otherwise, enter the following: User Name Enter a valid user name for the FTP server. Password with confirmation Connect Mode Permanently An existing connection to the FTP server is used permanently. The connection is reestablished automatically if it is closed by the server. Per File Transfer A new connection to the FTP server is established for each file transfer. Transfer Mode Set the FTP connection transfer mode to Textor to Binary. Processing Parameters Parameter Entry Quality of Service Specifies how the Integration Engine/PCK should process a message. Best Effort (synchronous processing) Exactly Once (asynchronous processing with guaranteed execution exactly once) Exactly Once In Order (asynchronous processing using queues, in other words guaranteed execution exactly once and maintaining the sequence of successive messages). Specify the Queue Name. Poll Interval (secs) Number of seconds that the adapter must wait if no files are found for processing. Poll Interval (msecs) Additional waiting time in milliseconds. If Poll Interval (secs) is set to null, processing times will be short and close to real time. If Poll Interval (secs) and Poll Interval (msecs) are set to null, the adapter is only called once. Retry Interval (secs) Specify the number of seconds that the adapter is to wait before a file processed with errors is processed again. If the value is set to null, then the adapter is canceled if an error occurs, even if a value greater than null is specified for Poll Interval (secs).
If no value is specified, the value from Poll Interval (secs) is used. Processing Mode Archive Files that have been successfully processed are moved to an archive directory. To add a time stamp to a file name, select the Add Time Stamp indicator. The time stamp has the format yyyMMdd-hhMMss-SSS_. The time stamp ensures that the archived files are not overwritten and it enables you to sort them according to the time that they were received. Under Archive Directory enter the name of the archive directory. If you want to archive the files on the FTP server, set the Archive Files on FTP Server indicator. If you do not set the indicator, the files are archived in the Adapter Engine file system. Delete Successfully processed files are deleted. Test Files are not processed. This mode should only be used to test the configurations of file/FTP adapters or the Integration Engine/PCK. It is not suitable for production operation. Set to Read-Only Successfully processed files are given this attribute. Only recordable files are processed. This selection is only available for the File System (NFS) transport protocol. Process Read-Only Files (Transport Protocol File System (NFS)) Set the indicator if you want to also transfer files that are locked by other applications. Only set this indicator if you are sure that no data will be lost. Processing Sequence (Transport Protocol File System (NFS)) If you used placeholders when specifying the file name, define the processing sequence of the files: The default value is By Name. Files are processed alphabetically by file name. If you select By Date, files are processed according to their time stamp in the file system, starting with the oldest file. File Type Specify the document data type. Binary Text Under File Encoding, specify a code page. The default setting is to use the system code page that is specific to the configuration of the installed operating system. The file content is converted to the UTF-8 code page before it is sent. Permitted values for the code page are the existing Charsets of the Java runtime. According to the SUN specification for the Java runtime, at least the following standard character sets must be supported: US-ASCII Seven-bit ASCII, also known as ISO646- US, or Basic Latin block of the Unicode character set ISO-8859-1 ISO character set for Western European languages (Latin Alphabet No. 1), also known as ISO-LATIN-1 UTF-8 8-bit Unicode character format UTF-16BE 16-bit Unicode character format, big- endian byte order UTF-16LE 16-bit Unicode character format, little- endian byte order UTF-16 16-bit Unicode character format, byte order
Check which other character sets are supported in the documentation for your Java runtime implementation.
XML text documents generally contain their own code page description and should be treated as Binary data type. Additional File(s) (Transport Protocol File System (NFS)) Set the Additional File(s) indicator if you want to transfer additional files. For more information, see: Specifying Additional Files. Adapter-Specific Message Attributes To store adapter attributes in the message header of the XI message, set the Set Adapter-Specific Message Attributes indicator. To apply the following attributes in XI message headers, set the corresponding indicators: Name Technical Name File Name FileName Directory Directory File Type FileType File Encoding You can only set this indicator if the File Type is text, and if the File Type indicator above is already set. FileEncoding Source File Size SourceFileSize Source File Timestamp SourceFileTimeStamp Source FTP Host You can only set this indicator if the transport protocol is set to File Transfer Protocol (FTP). SourceFTPHost The attribute namespace for the adapter is http://sap.com/xi/XI/System/File. Run Operating System Command Before/After Message Processing Command Line An operating system command specified here is executed before or after the message processing of a file that was found in a run. The default value is an empty character string (no command).
When the operating system command is called, the file name currently being processed can be specified with the following placeholders: %f (file name) %F (absolute file name including path) Timeout (secs) This specifies the maximum runtime of the executing program in seconds. When this time interval is exceeded, the adapter continues processing. The executing program continues to run in the background. Terminate Program After Timeout Set this indicator if the adapter is to terminate the executing program when the timeout is exceeded. The adapter writes the output (STDOUT and STDERR) for the operating system command in the system trace.
Message processing is independent of any errors that occur during the execution of a configured operating system command. Content Conversion Parameters If you have selected File Content Conversion as the message protocol, you can convert a text file that contains complex structures into an XML source format in this mode. The file contains various row formats in logical structures. For more information, see Converting File Content in the Sender Adapter. Adapter Status Set the adapter to Active to enable messages to be exchanged. Advanced Mode To specify additional parameters in the adapter configuration, set the Advanced Mode indicator. Msecs to Wait Before Modification Check Enter the number of milliseconds that the adapter must wait before it checks whether the files have been changed. This parameter is not available if you have selected File Content Conversion as the Message Protocol and then made an entry under Recordsets per Message that splits an input file into several messages. Table Specify the additional parameter names and parameter values in the table.
Additional parameters are published in SAP Note 801926.
Specifying Additional Files File List If you have selected the transport protocol File System (NFS) and have set the Additional Files(s) indicator, you can enter the additional files that are to be included in the XI message as attachments. Enter a name for each additional file in the File List. You can choose any name. Separate the names of the additional files with a comma (<Additional file1,additional file2, ...,additional fileN>). The specified names are used as the names of the additional attachments in the XI message and as the keys of the parameters. Rules for Additional Files All additional files must be in the source directory. The way that the files to be transported are grouped together is defined by the file names. All file names must be identical except for a defined part (such as the suffix). Additional files can only be transported unaltered without conversion options. Messages with additional attachments require a receiver that can process them. Additional files are located in the message as an attachment under the name assigned in the File List.
Entries in the table fields are only submitted when you leave the field. Therefore, it is particularly important to confirm your last entry in the table by choosing Enter before you save the entries. Parameters for Additional Files Name Value <Additional FileN>.namePart The name of the additional file is determined from the file name that was assigned for the XI message under File Name. Specify which part of the original file name must be replaced to find the additional files .txt=.pdf
If, as a result of the configuration, the file invoice.txt was found, then this specification means that the system searches for the file invoice.pdf. <Additional FileN>.optional YES The entry is ignored and the message is sent to the Integration Server/PCK without the system finding the additional file. NO If the file is not found, then processing is terminated with an error message. <Additional FileN>.type Specifies the file type of the additional file: BIN (Binary file) TXT (Text file) <Additional FileN>.encoding If the file type of the additional file is TXT (text file), you can specify the name of the codepage to be used. The same rules apply as in the File Type section in Configuring the Sender File/FTP Adapter.
Converting File Content in a Sender Adapter If you have selected File Content Conversion as the message protocol, you can convert a text file that contains complex structures into an XML source format in this mode. The file contains various row formats in logical structures. File Structure The system expects a file with one or more logical structures (recordsets). An unlimited number of recordsets (either one, multiple, or all recordsets in the file) can be sent to the Integration Server/PCK as separate messages. A recordset can contain multiple types of substructures identified by logical names. There can be a fixed or variable number of substructures in a recordset. The structure of these substructures must be fixed and corresponds to the description of the row structure logic in the table below. A sub structure must always be shown in exactly one line of the text document. The document has the following structure: <documentName>... <recordset> <NameA> <field-nameA1>field-value</field-nameA1> <field-nameA2>field-value</field-nameA2> <field-nameA3>field-value</field-nameA3> </NameA> <NameB> <field-nameB1>column-value</field-nameB1> <field-nameB2>column-value</field-nameB2> <field-nameB3>column-value</field-nameB3> </NameB> </recordset> ... <recordset> ... </recordset> </documentName>... Enter the following: Document Name Specify the name of the XML document. The document name is inserted in the message as the main XML tag. This is mandatory for the mapping. Document Namespace The namespace is added to the name of the document. This is mandatory for the mapping. Document Offset Specify the number of lines that are to be ignored at the beginning of the document. This enables you to skip comment lines or column names during processing. If you do not make an entry, the default value is zero lines. Recordset Name Specify the name of the structure: It is included in the XML schema. Recordset Namespace The namespace is added to the name of the structure. Recordset Structure Enter the sequence and the number of sub structures as follows: <NameA,nA,NameB,nB,...>. Therefore, nA=1,2,3,... or * (for a variable, unlimited number, including 0). Recordset Sequence The start and end of recordsets containing a variable number and arrangement of structures are determined as follows: Ascending: The sequence of the recordset structures is assumed to be unique. A new recordset is started as soon as an earlier structure occurs. Variable: The sequence of the recordset structures is assumed not to be fixed. A new recordset is only started when another structure occurs that is defined with a fixed number. If all structures are defined as variable the system interprets the entire document as a single recordset. Recordsets per Message Specify the number of recordsets to be grouped together in a message. This specification is optional. The default value is *. In the default setting, all recordsets are included in a message. If the number of recordsets in a document is greater than the number specified, then the adapter creates multiple messages from a document. The last message might then contain fewer recordsets than specified.
If you specify Exactly Once as the quality of service (see below), each of these messages (that is to say, each part of a document from which a message is created) is sent to the Integration Server/PCK exactly once. This is also true if the application is interrupted while creating the messages and restarted again later. Key Field Name If you specified a variable number of substructures for Recordset Structure, in other words, at least one substructure has the value *, then the substructures must be identified by the parser from their content. This means that a key field must be set with different constants for the substructures. In this case, you must specify a key field and the field name must occur in all substructures. Key Field Type Specify the key field type to be used to compare the predefined values. This entry is used if the key field name is defined. Set the parameters for all the specified recordset structures NameA, NameB, and so on in the following table: Parameters for Recordset Structures Parameter Name Description ignoreRecordsetName A <Recordset> element is inserted in the XML structure for each recordset structure. This level is not always required, particularly if the recordset only contains one structure definition. If you set the parameter to true, the <Recordset> element is not inserted. NameA.fieldFixedLengths If you make a specification here, the system expects a character string that contains the lengths of the structure columns as arguments separated by commas. If you also specify a separator for the columns, you must not add its length to the length of the columns.
This entry is mandatory if you have not made an entry for NameA.fieldSeparator.
NameA.fieldFixedLengthType Specifies the form in which the entries under NameA.fieldFixedLengths are counted: char (default value) The number of characters is counted. byte The byte length of the characters is counted. NameA.fieldSeparator If you make a specification here, the system expects that the structure contains the specified character string (one or more characters) as a separator between the individual columns. If you have not made an entry for fieldFixedLengths, this is the only specification to identify the individual columns in a row. If you made a specification for fieldFixedLengths, the extra length of the separator is taken into account, but no further consistency checks are performed. NameA.enclosureSign Specify a string that acts as a text delimiter. Text enclosed by such delimiters is transferred to the target structure unmodified, although the default setting is to remove all text delimiters. Separators within such texts are ignored. This parameter is optional. The default setting is an empty value (no text delimiter). NameA.enclosureSignEnd If the text delimiters for the beginning and end of the text are different, specify the text delimiter for the end of the text here. If you do not make an entry here, then the entry from NameA.enclosureSign is used instead. NameA.enclosureSignEscape Specify a string that replaces the text delimiter if it occurs within a text that it delimits. When the text is transferred the string is replaced by the value specified in NameA.enclosureSign. NameA.enclosureSignEndEscape Specify a string that replaces the text delimiter for the end of the text if it occurs within a text that it delimits. When the text is transferred the string is replaced by the value specified in NameA.enclosureSignEnd. NameA.enclosureConversion Specify YES if the text delimiter is to be removed when the files are transferred or if the escape character is to be replaced. This is the default value. Enter NO if the character is to be transferred unaltered.
If you specify xml.enclosureSign= and xml.enclosureSignEsc=, text enclosed in quotation marks is transferred unchanged and the quotation marks are removed. If the escape character for a quotation mark () occurs in the text itself, it is replaced by the quotation mark during the transfer. NameA.endSeparator If you want to define an additional string as a separator after the last column in a row, then specify it here. The system skips this separator when it processes the last column (otherwise the system would treat it as part of the last column). NameA.beginSeparator If you want to define an additional character string as a separator before the first column in a row, make a specification here. The system skips this separator when it processes this column (otherwise the system would treat it as part of the first column). Special Characters in the String for Separators In all strings for separators (NameA.fieldSeparator, NameA.beginSeparator, NameA.endSeparator), you can specify non- printable ASCII characters. These characters can each be inserted individually in the string in the form 0xHH (including the quotation marks), where HH represents the character encoded as a hexadecimal value. Inserting Strings for Separators in the XML Document: The separators specified with NameA.beginSeparator and NameA.endSeparator can also be inserted as fields in the structure of the generated XML document. To do so, specify field names with the following specifications: NameA.addBeginSeparatorAsField=<fieldname> and/or NameA.addEndSeparatorAsField=<fieldname> The strings, together with the specified field name, are then inserted either at the start or the end of the structure, as they were specified in NameA.beginSeparator and NameA.endSeparator. The definition of special characters also needs to be included. Special characters cannot be converted since characters of this type are not permitted in XML documents. NameA.fieldNames Specify the names of the structure columns: The input format depends on the following: If you have specified a value for NameA.fieldFixedLengths, then a string is expected containing the names of the file columns as arguments separated by commas. This also applies if you have also specified a value for NameA.columnSeparator. If you only specify a value for NameA.fieldSeparator, the system expects a string containing the names of the file columns in the same format as the file rows. This means that the same separator and any additional strings you specify for NameA.endSeparator and/or NameA.beginSeparator are expected. NameA.keyFieldValue Specify the value of the key field for the structure. This specification is mandatory if the key field name is set. Otherwise, the specification is ignored. NameA.fieldContentFormatting Specify trim to remove all the leading and subsequent blanks for a value found. This is the default. Specify nothing to ensure that the value remains unaltered. NameA.keyFieldInStructure If the key field of the substructure is to be added to the XML document, enter add. This is the default. If the key field is to be ignored, enter ignore.
Configuring the Receiver File/FTP Adapter Use You need to configure the receiver file/FTP adapter to save XML messages from the Integration Server/PCK in files. Integration You configure the adapter on the Parameters tab page during the definition of a communication channel in the Integration Server or in the PCK. In addition to the adapter configuration, on the Module tab page in the module processor, you can specify generic modules, which give the adapter additional functions. Prerequisites 1. You have created a new communication channel or have opened an existing one. 2. On the Parameters tab page you have selected the adapter type FILE. 3. You have selected the Receiver radio button to define the adapter as a receiver adapter. Using FTPS (File Transfer Protocol using SSL/TLS) The application of FTPS follows specification RFC 4217. The SAP Java Cryptographic Toolkit is deployed. See also: Deploying the SAP Java Cryptographic Toolkit The CA certificate used to sign the server certificate must be added to the TrustedCAs keystore view. See also: Key Storage Service Activities To configure the adapter, specify the following: Transport Protocol The file can either be put in a file system (File System (NFS)) or on a File Transfer Protocol (FTP) server. Message Protocol File The document sent from the Integration Server/PCK is saved directly as a file. If you want to convert an XML document to a text file, choose File Content Conversion and make the required entries for conversion under Content Conversion Parameters (see below). Adapter Engine Select the Adapter Engine on the Integration Server, or select a non-centrally installed Adapter Engine. This selection is not available in the PCK. File Access Parameters Specify the Target Directory in which the documents are to be saved. You can enter variables for the target directory. The variables must be enclosed by % characters.
/c:/temp/local/%var1% If the adapter is to create the target directory, if it doesn't already exist then set the indicator Create Target Directory. If the indicator is not set and the target directory doesn't already exist the adapter returns an error. Specify the File Name Schemethat the system is to use to save the first incoming document. You can enter variables for the file name scheme. The variables must be enclosed by % characters. See also Variable Substitution below. FTP Connection Parameters Use of the file transfer protocol follows the specification RFC 959. If you have selected the transport protocol File Transfer Protocol (FTP), enter the following: Server Enter the host name or IP address of the FTP server. Port Specify the port number of the FTP server. The default is the standard port for the FTP server (21). Data Connection You can choose from the following settings: Active In active mode, the server establishes a data connection from its data port, port 20, to an end point chosen by the client. Passive In passive mode, the client establishes a data connection to the port required by the server.
The default setting is a passive data connection. Only change this setting if you have a specific reason. Timeout (secs) If no data is transferred between the client and the FTP server in the time interval specified here, the adapter interprets this as an error and terminates the transfer. Connection Security None The FTP protocol is used without encryption. FTPS (FTP Using SSL/TLS) for Control Connection After the connection is established, the FTP control connection is protected using TLS/SSL (Transport Layer Security (BC-SEC)/Secure Sockets Layer (BC-SEC)). Data is transferred unencrypted. FTPS (FTP Using SSL/TLS) for Control and Data Connection All communication with the FTP server is encrypted and uses TLS/SSL. If you selected FTPS for Connection Security, then enter the following details: Command Order Specifies the sequence of commands used to authenticate and secure the connection. Retain the default setting. Only adjust the sequence of commands to match those expected of the FTP server if you encounter problems with the TLS connection. For information about the correct setting, see the documentation for the FTP server. Use the X.509 Certificate for Client Authentication Set this indicator if the adapter, in contrast to the FTP server, is to use X.509 certificate and public-key encryption to authenticate itself. The corresponding key/certificate pair must previously be saved in a keystore view of the J2EE server by using the Visual Administrator. Enter the Keystore and the X.509 Certificate and Private Key. To do this, you can use the input help. To logon with the user name anonymous and the password anonymous, set the Anonymous Login indicator. Otherwise, enter the following: User Name Enter a valid user name for the FTP server. Password with confirmation Connect Mode Permanently An existing connection to the FTP server is used permanently. The connection is reestablished automatically if it is lost on the server side. Per File Transfer A new connection to the FTP server is established for each file transfer. Transfer Mode Set the FTP connection transfer mode to Textor to Binary. Put File If the file is to be created on the server immediately, select Directly. If the content is to be gathered in a temporary file first before the final file is put on the server, choose Use Temporary File. Processing Parameters Various options exist for creating the files: File Construction Mode Mode Selection Create The file is created. The document received last is saved in each case. Set the Overwrite Existing File indicator if you want to overwrite the existing file. If you do not set the indicator, processing is stopped until the created file is processed.
You can only set the indicator if you have selected Use Temporary File under Put File.
Append The file is written when the inbound document is attached. Add Time Stamp A new file is created for each document. Each file is extended with a time stamp with the format yyyyMMdd-HHmmss-SSS. The time stamp is added as the last part of the name before the extension. This mode guarantees that no file is overwritten. In this way, files that originate from the same adapter configuration can be sorted. Add Message ID A new file is created for each document. The file name is extended by the message ID generated by the Integration Server/PCK. The ID has the format: xxxxxxxxxx-xxxx-xxxx-xxxx- xxxxxxxxxxxx. The message ID is added as the last part of the name before the extension. This mode guarantees that no file is overwritten. Add Counter A new file is created for each document. The file name is extended with a counter, which is inserted before the file name extension (for example, default002.file). This selection is only available for the File System (NFS) transport protocol. Make specifications for Counter Definition: Prefix Specify one or more characters that you want to add before the counter in the file name. Format Specify the first counter to be used. It must be a valid integer number. Leading zeros are permitted. Step Specify the counter increment. Mode Specify when the counter is to be added. After First File The counter is added when the file name is used unaltered for the first time. Immediately The counter is added with the first document. Under Write Mode, specify whether the target file is to be written directly in the specified directory. If an additional step is to be added using a temporary file, choose Use Temporary File. You can specify a naming schema for the temporary file under Temporary File Name Schema. This schema is used to determine the prefix and extension of the temporary file; to ensure a unique file name, a time stamp is also added to the name during processing.
The schema xitemp.tmp, for example, results in the file name xitemp<timestamp>.tmp. Specify the document file type. Binary Text Under File Encoding, specify a code page. The default setting is to use the system code page that is specific to the configuration of the installed operating system. The content of the message is then converted to the corresponding code page before the message is saved as a file. Permitted values for the code page are the existing Charsets of the Java runtime. According to the SUN specification for the Java runtime, at least the following standard character sets must be supported: Java Runtime Character Sets Character Set Description US-ASCII Seven-bit ASCII, also known as ISO646-US, or Basic Latin block of the Unicode character set ISO-8859-1 ISO character set for Western European languages (Latin Alphabet No. 1), also known as ISO-LATIN-1 UTF-8 8-bit Unicode character format UTF-16BE 16-bit Unicode character format, big-endian byte order UTF-16LE 16-bit Unicode character format, little-endian byte order UTF-16 16-bit Unicode character format, byte order
Check which other character sets are supported in the documentation for your Java runtime implementation. Variable Substitution (Target Directory/File Name Scheme) If you set the Enable indicator, you can enter variables for the Target Directory and File Name Scheme. Enter the names of the variables and references in the table. Enter each variable that you reference in the Target Directory and File Name Scheme fields without the surrounding percentage sign under Name of Variables in the table. The variables can refer to attributes of the message header or elements of the message payload. If the variables are to refer to an attribute of the message header, add the prefix message: to the name of the variable under Reference. You can specify the following attributes of the message header: sender_party, sender_service, receiver_party, receiver_service, interface_name, interface_namespace, message_id (message ID with hyphens, for example 9fbe1ff1-9a0d-11d9-8665- cbf10a126331) message_id_hex (message ID in hexadecimal format, for example 9fbe1ff19a0d11d98665cbf10a126331) For example, if you want to specify the interface name from the message header in the target directory or in the file name scheme, enter message:interface_name as the reference.
If one of the message attributes contains characters that are not permitted in a file name, for example \, /, :, *, ?, ", <, >, |, then these characters are replaced by an underscore ("_"). If the variable refers to an element in XML schema, add the prefix payload: to the information under Reference. The reference then comprises a pseudo path description in the form of a comma-separated list with the schema namea,na,nameb,nb,.... namea,nameb,... corresponds to the element name and na,nb,... corresponds to the occurrence of the element name at the respective level in the document. The description begins at the root of the document and ends at the respective element.
To reference the element that is in bold in the example, the following expression is used: payload:root,1,e1,1,e2,2 The parser searches for the first occurrence of the root element at the first level. It then searches for the first occurrence of e1 at the second level and for the second occurrence of e2 at the third level. The content of the last element (Example Value) is set as the value for a specified variable.
<?xml version="1.0" encoding="UTF-8" ?> <root> <dummy> <e1> <e2>Data_1</e2> <f/> <g attr="abc">text</g> <e2>Data_2</e2> </e1> </dummy> <e1> <e2>illegal/value</e2> <f/> <g attr="abc">text</g> <e2 attr="fghij">Example Value</e2> </e1> </root> To disable the check the adapter performs for the element data, set the Disable Security Checks indicator. Otherwise, the adapter checks whether the element data contains characters that could lead to security risks in the file system environment. The check includes the characters /, \, and ... Adapter-Specific Message Attributes A configured variable substitution (see above) is performed after the attributes are transferred from the message header. To evaluate adapter attributes in the message header of the XI message, set the Use Adapter- Specific Message Attributes indicator. If you want missing message attributes to trigger error messages, set the Fail If Adapter-Specific Message Attributes Missing indicator. If the indicator is set and the header for adapter-specific message attributes or one of the set attributes is missing from the message, this leads, in asynchronous cases, to a delivery exception in the audit log of the message. In synchronous cases, the sender of the message is notified. If you do not set the indicator, and message attributes are missing, the adapter accesses information from the adapter configuration. To evaluate the following attributes in the XI message header, set the corresponding indicators: Name Technical Name File Name FileName Directory Directory File Type FileType File Coding You can only set this indicator if the file type is text, and if the file type indicator above is already set. FileEncoding Temporary Name Scheme for Target File Name You can only set this indicator if the target file is written using a temporary file. TargetTempFileName The attribute namespace for the adapter is http://sap.com/xi/XI/System/File.
Run Operating System Command Before/After Message Processing Command Line An operating system command specified here is executed before or after a file has been successfully processed. The default value is an empty character string (no command).
When the operating system command is called, the file name currently being processed can be specified with the following placeholders: %f (file name) %F (absolute file name including path) Timeout (secs) This specifies the maximum runtime of the executing program in seconds. When this time interval is exceeded, the adapter continues processing. The executing program continues to run in the background. Terminate Program After Timeout Set this indicator if the adapter is to terminate the executing program when the timeout is exceeded. The adapter writes the output (STDOUT and STDERR) for the operating system command in the system trace.
Message processing is independent of any errors that occur during the execution of a configured operating system command. Content Conversion Parameters If you have selected File Content Conversion as the message protocol, you can create a text file from an XML document in this mode. For more information, see File Content Conversion Specifications in the Receiver Adapter. Adapter Status Set the adapter to Active to enable messages to be exchanged. Advanced Mode To specify additional parameters in the adapter configuration, set the Advanced Mode indicator. Specify the parameter names and parameter values in the table.
Additional parameters are published in SAP Note 801926.
Converting File Content in the Receiver Adapter If you have selected File Content Conversion under Message Protocol, you can convert a table in XML format to pure text format in this mode. The expected XML structure contains the structure as nodes filled with any number of elements without additional subnodes. The expected document structure usually looks like this: <root>... <nameA> <value1>value</value1> <value2>value</value2> <value3>value</value3> </nameA> <nameB> <value4>value</value4> </nameB> ... </root>... You can use any element names you like. There can be any number of different substructures under the root element, which can be mapped to different CSV structures. File Structure The specifications described below are used to construct a text file from the XML document. Recordset Structure Enter the substructures using the pattern NameA,NameB,....
If you want to convert all substructures using the same parameters, you only have to specify one structure. The specifications are automatically applied to all substructures. If you specify more than one structure, the list must contain all the structures occurring in the document. The list must be complete, otherwise a processing error will be triggered at runtime. Set the parameters for all the specified recordset structures NameA, NameB, and so on in the following table: Parameters for the Recordset Structure Parameter Name Meaning NameA.addHeaderLine Specify whether the text file will have a header line with column names. The following values are permitted: 0 No header line 1 Header line with column names from the XML document 2 As for 1, followed by a blank line 3 Header line is stored as NameA.headerLine in the configuration and is applied 4 As for 3, followed by a blank line
This specification is only permitted if exactly one structure is defined. NameA.headerLine Specify the header line that is generated in the text file if NameA.addHeaderLine has the value 3 or 4. This specification is mandatory in this case. NameA.fieldFixedLengths Specify a character string containing a list of fixed column widths that are separated by commas and determine the number and the length of columns generated in the text file. If you do not make any specification for NameA.fieldSeparator, the specification NameA.fieldFixedLengths is mandatory. NameA.fixedLengthTooShortHandling Specify how you want the system to respond when column widths in the actual document exceed those defined in NameA.fieldFixedLengths. The following values are permitted: Error Error means that processing of the document is terminated. Cut Cut means that a value is shortened to the maximum permitted length. Ignore Ignore means that the system applies the value completely, regardless of it being too long. Subsequent columns are moved correspondingly. NameA.fieldSeparator If you specify a character string here, it is added as a separator to all columns except the last. You can also specify this string in addition to NameA.fieldFixedLengths. If you made no specification for NameA.fieldFixedLengths, this is the only specification to identify the individual columns in a row. If you made a specification for NameA.fieldFixedLengths, the length of the separator is not taken into account.
You must specify at least either NameA.fieldFixedLengths or NameA.fieldSeparator. If you have only specified NameA.fieldSeparator, the structures of the XML document can have differing numbers of elements that are added to each other separately in the text file by the value from NameA.fieldSeparator. If you specify NameA.fieldFixedLengths this is not possible since the number of columns is defined when the column widths are given. NameA.endSeparator If you enter a character string here, the system adds it to the last column as a closing character. You can also make this specification in addition to NameA.fieldFixedLengths. To include a line break following the closing character, you must explicitly define it by attaching nl (including the quotation marks) to the string. The default value is a line break (no explicit separator after the last column; instead the structures are arranged line-by- line). NameA.beginSeparator If you specify a character string here, the system places it before the first column. You can also make this specification in addition to NameA.fieldFixedLengths. The default value is an empty character string (no separator before the first column).
Special Characters in the String for Separators: In all strings for separators (NameA.fieldSeparator, NameA.beginSeparator, and NameA.endSeparator), you can specify non-printable ASCII characters. These characters can each be inserted individually in the strings in the form 0xHH (including the quotation marks), where HH represents the character coded as a hexadecimal value. A line break can be entered using the character nl (including the quotation marks); nl stands for new line. The special character 0 is not a separator character.
Fixed Column Width of the Text Document: NameA.absoluteRowWidth=<noOfColumns> If the separators do not contain any line breaks, the text document is generated as a single line of text. To restrict the width of the text, use this parameter. <noOfColumns> represents the maximum number of columns in this case. This parameter also functions together with the specification of a line break for xml.endSeparator. This value requires NameA.addHeaderLine=0 to be specified.
Configuring the Sender JDBC Adapter Use You need to configure the sender JDBC adapter to be able to send content from databases to the Integration Server or to the PCK. Adapter Work Method You must add an indicator that specifies the processing status of each data record in the adapter (data record processed/data record not processed) to the database table. The UPDATE statement must alter exactly those data records that have been selected by the SELECT statement. You can ensure this is the case by using an identical WHERE clause. (See Processing Parameters, SQL Statement for Query, and SQL Statement for Update below). Processing can only be performed correctly when the isolation level for transaction is set to repeatable_read or serializable.
SQL statement for query: SELECT * FROM table WHERE processed = 0; SQL statement for update: UPDATE table SET processed = 1 WHERE processed = 0; processed is the indicator in the database.
Integration You configure the adapter on the Parameters tab page during the definition of a communication channel in the Integration Server or in the PCK. In addition to the adapter configuration, on theModule tab page in the module processor, you can specify generic modules, which give the adapter additional functions. Condition for Sender Agreement The adapter determines the payload of the XI message according to how it is configured. However, the message header information is determined from the corresponding sender agreement for the communication channel. The following conditions apply to the adapter for the definition of the sender agreement: The communication channel defined here must have exactly one sender agreement. At least the interface name and the sender service must be qualified in the sender agreement. All other fields are optional in accordance with the general rules for defining sender agreements. Prerequisites 1. You have created a new communication channel or have opened an existing one. 2. On the Parameterstab page you have selected the adapter type JDBC. 3. You have selected the Sender radio button to define the adapter as a sender adapter. Activities Transport Protocol The transport protocol is JBDC 2.0. Message Protocol JDBC Subsequent versions may permit additional values. Adapter Engine Select the Adapter Engine on the Integration Server, or select a non-centrally installed Adapter Engine. This selection is not available in the PCK. Connection Tab Page Database Connection Specify the following to establish the database connection:
Field Entry JDBC Driver Java class of the JDBC driver that the JDBC adapter must load to be able to access the driver. The specification varies according to the JDBC driver; see documentation from the respective provider. Connection Address with which you can establish a database connection using the JDBC driver. The specification varies according to the JDBC driver; see documentation from the respective provider. User Name User for the database to be read. Password Password for the database to be read, including confirmation. Processing Tab Page Specify the following processing parameters:
Parameter Entry Quality of Service Specifies how the Integration Server/PCK should process a message. Best Effort (synchronous processing) Exactly Once (asynchronous processing) Exactly Once In Order (Asynchronous processing using queues. This means execution exactly once following the sequence of successive messages) Specify the Queue Name. Poll Interval (secs) Number of seconds that the adapter must wait if no files are found for processing. Poll Interval (msecs) Additional waiting time in milliseconds. If Poll Interval (secs) is set to null, processing times will be short and close to real time. If Poll Interval (secs) and Poll Interval (msecs) are set to null, the adapter is only called once. Retry Interval (secs) Number of seconds that the adapter is to wait before a SQL statement processed with errors is processed again.
If no value is specified, the value fromPoll Interval (secs) is taken instead. Query SQL Statement You have the following options: Specify a valid SQL SELECT statement to select the data to be sent from the specified database. Specify an SQL EXECUTE statement to execute a stored procedure, which contains exactly one SELECT statement. The expression must correspond to the SQL variant supported by the relevant JDBC driver. It can also contain table JOINs. Document Name The document name is inserted in the message as the main XML tag. The default value isresultset. Document Namespace The namespace is added to the document name.
See the example below.
Update SQL Statement You have the following options: Enter a valid SQL statement that is to be applied to the database once the data (determined from the Query SQL Statement) has been successfully sent to the Integration Server/PCK. It must be an INSERT, UPDATE, or DELETE statement. In place of the SQL statement, you can also enter <TEST>. Once the data determined from Query SQL Statement has been successfully sent, the data in the database remains unaltered. This is recommended if the data has not only been read, but also changed by a stored procedure entered under Query SQL Statement. Run Operating System Command Command Line Specify an operating system command that is to be executed following successful database operations. Timeout (secs) This specifies the maximum runtime of the executing program in seconds. When this time interval is exceeded, the adapter continues processing. The executing program continues to run in the background. Terminate Program After Timeout Set this indicator if the adapter is to terminate the executing program when the timeout is exceeded. The adapter writes the output (STDOUT and STDERR) for the operating system command in the system trace.
Message processing is independent of any errors that occur during the execution of a configured operating system command. Advanced Tab Page Adapter Status Set the adapter to Active to enable messages to be exchanged. Advanced Mode To specify additional parameters in the adapter configuration, set the Advanced Mode indicator. Transaction Isolation Level There are different levels of database transactions known as isolation levels. The isolation level determines how transactions running in parallel influence each other. The options correspond to the JDBC constants: Default (default setting of the respective database) None read_uncommitted (weakest setting) read_committed repeatable_read serializable (strongest setting)
You must only lower the isolation level where necessary and as far as necessary. To avoid data inconsistencies in the database when the isolation level is lowered, ensure that multiple database transactions cannot access the database simultaneously. Database Auto-Commit-Enabled (No Transaction Handling) Set the indicator if you want to deactivate the logical unit of work, which the JDBC adapter requires to guarantee that the data in the database is consistent. This option is required for JDBC drivers that do not support transactions. To avoid data inconsistencies in the database when the isolation level is lowered, ensure that multiple database transactions cannot access the database simultaneously.
Do not set this indicator if the JDBC driver supports transactions, that is, if a corresponding error message is not displayed in normal operation. Disconnect from Database After Processing Each Message Set this indicator if the database connection is to be released and reestablished before every poll interval. Remove Empty Tags Set this indicator if you want to remove the empty tags from the resultset of the sender adapter and thereby help reduce the size of XML documents.
If this indicator is not set, the resultset looks as follows: <resultset> <row> <column-name1>column-value</ column-name1> <column-name2></column-name2> <column-name3>column-value</ column-name3> <column-name4></column-name4> </row> <row> <column-name1>column-value</ column-name1> <column-name2></ column-name2> </row> </resultset>
If this indicator is set, the resultset looks as follows: <resultset> <row> <column-name1>column-value</ column-name1> <column-name3>column-value</ column-name3> </row> <row> <column-name1>column-value</ column-name1> </row> </resultset> Table Specify the parameter names and parameter values in the table.
Additional parameters are published in SAP Note 801367. Example The system converts the table resulting from the query SQL statement into a valid XML document and sends it to the Integration Engine. The document looks like this: <resultset> <row> <column-name1>column-value</ column-name1> <column-name2>column-value</ column-name2> <column-name3>column-value</ column-name3> </row> <row> <column-name1>column-value</ column-name1> <column-name2>column-value</ column-name2> <column-name3>column-value</ column-name3> </row> </resultset>
Configuring the Receiver JDBC Adapter Use You need to configure the receiver JDBC adapter to convert XML messages from the Integration Server or the PCK into database table content. Integration You configure the adapter on the Parameters tab page during the definition of a communication channel in the Integration Server or in the PCK. In addition to the adapter configuration, on the Module tab page in the module processor, you can specify generic modules, which give the adapter additional functions. Prerequisites ... 1. You have created a new communication channel or have opened an existing one. 2. On the Parameters tab page you have selected the adapter type JDBC. 3. You have selected the Receiver radio button to define the adapter as a receiver adapter. Activities To configure the adapter, specify the following: Transport Protocol JBDC 2.0 Message Protocol XML SQL format Table values can be inserted, updated, or deleted in one or more tables. In the database, stored procedures can be called using transfer parameters. In the case of synchronous queries, results from database queries or return values of stored procedures can also be transferred. Native SQL String An arbitrary SQL statement is expected as the message content. This statement is transferred unaltered to the database for processing. Depending on the message protocol you selected, the adapter expects special XML document formats in the message from the Integration Server or the PCK. For more information about the document formats, see: Document Formats for the Receiver JDBC Adapter. Adapter Engine Select the Adapter Engine on the Integration Server, or select a non-centrally installed Adapter Engine. This selection is not available in the PCK. Connection Tab Page Database Connection Specify the following to establish the database connection:
Field Entry JDBC Driver Java class of the JDBC driver that the JDBC adapter must load to be able to access the driver. The specification varies according to the JDBC driver; see material from the respective provider for exact details. Connection Address with which you can establish a database connection using the JDBC driver. The specification varies according to the JDBC driver; see material from the respective provider for exact details. User Name User name for logging on to the database. Password Password for logging on to the database, including confirmation. Processing Tab Page Maximum Concurrency Enter the number of messages to be processed in parallel by the receiver channel. For example, if you enter the value 2, then two messages are processed in parallel. Default value is 1 and this means only one message can be processed at a time by the receiver channel. XML Schema Interpreter Field Entry Key Tags Mandatory Set the indicator to specify that there must be conditions in the key tag. Interpretation of Empty String Values Specify how empty text fields are to be handled. NULL value In the case of INSERT and UPDATE statements, empty fields are handled like NULL fields (do not exist) and are not inserted in the database. Empty string In the case of INSERT and UPDATE statements, empty texts are inserted in the columns. Exactly-Once Handling Persistence Explanation and Further Entries Local As in the other adapters, Exactly Oncemessages are handled by default using status information in the J2EE server. All adapter error statuses and program terminations initialized externally are also handled in this mode. However, this does not include external program terminations during a database commit. In this case, the status of message processing is unclear since it can only be changed once the database commit has been completed. However, this kind of situation is identified when the application is started and editing of the message terminated during processing can be controlled using Conflict Resolution. This specification is only effective for handling errors that occur when a message is being processed for a second time after initial processing remained in the unclear status described above.
Conflict Resolution Error If an error occurs when processing again, this is reported to the caller system whenError is selected. Redo However, if the error occurs because the message was saved in the database when it was first processed and it is still located there, processing can be completed for the sender system using the value Repeat(note that the database interface normally triggers the error duplicate insert if at least one of the table fields was defined as a primary key). Otherwise the sender system will continue to send the message and the error will continue to occur. Database Nevertheless, there is still a gap in exactly once processing: if there is no primary key field in the database table or if the data is already being processed by another application and it is then deleted, when the first attempt at message processing is interrupted by an irregular termination of the J2EE server immediately after the database commit, a message can be duplicated. This problem can only be solved if message processing and status information management take place in the same database so that the processing steps have the same commit cycle. In the database where the write-to tables are located you must create an additional table with two columns for this purpose. To define the table, specify the following: Database Table Name Specify the name of the table. Key Column Name Enter the key in this table column. Value Column Name Enter the key value in this table column. SQL Syntax Parameter Escape Symbol for Apostrophe The apostrophe character () is a reserved character in SQL syntax and is therefore replaced by an escape character if it occurs within value strings. This replacement character can be database- specific. Typical replacement characters are \ or (default value). If a character occurs that is invalid for the database being used, the adapter triggers an error message (an SQL exception) concerning the SQL syntax that is generated by the database. Column Name Delimiter Depending on the database being used, column names can be enclosed by a special delimiter character, for example, if the names can contain special characters (such as ). This character can be specified at this point. The default setting is no delimiter character. If a character occurs that is invalid for the database being used, the adapter triggers an error message (an SQL exception) concerning the SQL syntax that is generated by the database. Run Operating System Command Command Line Specify an operating system command that is to be executed following successful database operations. Timeout (secs) This specifies the maximum runtime of the executing program in seconds. When this time interval is exceeded, the adapter continues processing. The executing program continues to run in the background. Terminate Program After Timeout Set this indicator if the adapter is to terminate the executing program when the timeout is exceeded. The adapter writes the output (STDOUT and STDERR) for the operating system command in the system trace.
Message processing is independent of any errors that occur during the execution of a configured operating system command. Configuring the Receiver IDoc Adapter Use You need to configure the receiver IDoc adapter to convert Integration Server contents from IDoc-XML to native IDoc format and to forward the IDocs to an SAP system or subsystem by using the standard tRFC IDoc interface. The IDoc control record is completed by the IDoc adapter. If a sender system expects acknowledgment messages from an IDoc adapter, then you also need to define a corresponding receiver agreement and a receiver IDoc adapter for this system. Integration You configure the adapter on the Parameters tab page during the definition of a communication channel. A communication channel with a receiver IDoc adapter can be created automatically for business systems that are defined in the System Landscape Directory. See also: Creating Communication Channels Automatically. Prerequisites 1. You have created a new communication channel or have opened an existing one. 2. On the Parameters tab page you have selected the adapter type IDoc. Activities To configure the adapter, specify the following: Transport Protocol IDoc is already specified. Message Protocol IDoc is already specified. Adapter Engine The Integration Server is already specified. RFC Destination Enter the RFC destination of the receiver system. Segment Version Specify which segments of the IDoc types are to be sent to the receiver system. Enter a three-figure reference for the release. Any incorrect entries here will result in a runtime error. If you leave this field empty, the last version will always be used.
The metadata for Release 6.40 is available. The receiver system must only contain the segments for Release 3.0A. Enter 30A. Interface Version Specify which function module must be called in the receiver system to transfer the data in the relevant format. Function module calls for both interface versions are placed in the tRFC queue. You can choose from the following versions of the technical IDoc interface: SAP Release 3.0/3.1 INBOUND_IDOC_PROCESS This function module is used for IDoc types with short names (for example, eight characters). SAP Release 4.0 or Higher IDOC_INBOUND_ASYNCHRONOUS This function module is used for IDoc types with long names (for example, 30 characters). Port Specify the port that the IDoc adapter uses to receive the IDoc metadata. The port definition uses an RFC destination to receive the IDoc structure by RFC. SAP Release To convert the data from IDoc XML to IDoc format, the receiver IDoc adapter requires the IDoc metadata. If the IDoc metadata is not available, it will be loaded from the receiver system. Specify the current release of the receiver system. Queue Processing If the function module IDOC_INBOUND_IN_QUEUE is to be used, set the relevant indicator. It is used for IDocs that are serialized by queues (quality of service is EOIO). This module is only available in SAP Web AS 6.40 and higher. If it is not available, the function module IDOC_INBOUND_ASYNCHRONOUS is called. The indicator only takes effect in SAP systems Releases 4.0 and higher. Calls for the queue processing function module are placed in the qRFC queue. Apply Control Record Values from Payload If you set the indicator, the conversion of communication parties to the IDoc partner is only possible for systems that are not logical systems. If you do not set the indicator, all combinations of communication parties and services are handled as services without party. If the IDoc XML structure contains a control record during outbound processing on the Integration Server, it is rejected and created again by the IDoc adapter. If you want to include additional values in the control record, set the indicator and provide an appropriate mapping for the values. See also: Fields of the IDoc Control Record Take Sender from Payload If you want to take the sender of the message from the payload and not from the configuration information in the Integration Directory, set this indicator. If you do not set the indicator, the information is taken from the configuration in the Integration Directory. Take Receiver from Payload If you want to take the receiver of the message from the payload and not from the configuration information in the Integration Directory, set this indicator. If you do not set the indicator, the information is taken from the configuration in the Integration Directory.
If you set both of the above indicators, you do not require a heading mapping and do not need to set the alternative identifiers. However, you must ensure that the SNDPRN, SNDPRT, RCVPRN, and RCVPRT fields are set in the IDoc control record. Setting the senders and receivers of a message from the payload simplifies configuration and speeds up processing.
If the sender and receiver are not set correctly in the payload, the resulting error is only visible in the receiving system. Restoring Original Partners for Acknowledgments If you set the relevant indicator, the original partners from the IDoc request message are used for acknowledgments. This means you no longer have to maintain the alternative identifiers (for party conversion) in the Integration Directory.
Configuring the Sender JMS Adapter Use You need to configure the sender JMS adapter to send JMS messages to the Integration Engine or the PCK. Integration You configure the adapter on the Parameters tab page during the definition of a communication channel in the Integration Server or in the PCK. In addition to the adapter configuration, on the Module tab page in themodule processor, you can specify generic modules, which give the adapter additional functions. Condition for Sender Agreement The adapter determines the payload of the XI message according to how it is configured. However, the message header information is determined from the corresponding sender agreement for the communication channel. The following conditions apply to the adapter for the definition of the sender agreement: The communication channel defined here must have exactly one sender agreement. At least the interface name and the sender service must be qualified in the sender agreement. All other fields are optional in accordance with the general rules for defining sender agreements. Prerequisites 1. You have created a new communication channel or have opened an existing one. 2. On the Parameters tab page you have selected the adapter type JMS. 3. You have selected the Sender radio button to define the adapter as a sender adapter. Activities To configure the adapter, specify the following: Transport Protocol SonicMQ JMS Provider WebSphereMQ (non-JMS) Access JMS Provider with JNDI (Read) JMS Provider Administered Objects from File Access JMS Provider Generically Message Protocol JMS 1.x Adapter Engine Select the Adapter Engine on the Integration Server, or select a non-centrally installed Adapter Engine. This selection is not available in the PCK. Source Tab Page Depending on the transport protocol you have selected, you make specifications for the respective JMS provider. See the relevant JMS-provider documentation for details about the individual parameters. See also:JMS-Provider-Specific Settings Processing Tab Page JMS Settings Parameter Entry Transaction al JMS Session If you want to use a transactional JMS session, set the indicator. Following processing of a message, a transactional session ends either with a COMMIT, or in the case of an error, with a ROLLBACK. JMS Queue User User for accessing the JMS queue JMS Queue Password Password (with confirmation) for accessing the JMS queue JMS Message Selector You use the JMS message selector to specify conditions that a JMS message in the specified JMS queue must meet in order to be processed by the sender adapter.
For more information about the JMS message selector, seejava.sun.com/j2ee/sdk_1.3/techdocs/api/index.htmlunder javax.jms an d Message.
Correlation Settings Define which algorithm is to be used to create the message ID of a new XI message. The prerequisite for selecting an ID is that it is a GUID (globally unique identifier) according to ISO-11578.
If the message ID is not a GUID, message processing will fail. This can cause message duplicates if the ID is not unique. Furthermore, if the GUID does not conform to ISO-11578, this can trigger a GUIDFormatException. Set XI Message ID (MessageID) To: GUID (Recommended Value) JMSMessageID (Uniqueness Is JMS-Provider-Dependent) JMSCorrelationID (Uniqueness Is JMS-Sender-Dependent) JMSProperty (Uniqueness Is JMS-Sender-Dependent) Enter the JMS Property Name. This value is set for the XI message ID. If the JMSCorrelationID or JMSProperty are not set in the JMS message, a message ID is generated automatically. If you have selected JMSMessageID, JMSCorrelationID, or JMSProperty and entered a JMS message ID in these fields, you should see the Remove 'ID:' Marker from JMSMessageIDindicator. Set the indicator. This is necessary because the JMS specification stipulates that each JMS message ID starts with 'ID'. However, this conflicts with ISO-11578. Set XI Conversation ID (ConversationID) To: No value If you choose this setting, the XI conversation ID is not set. JMSMessageID (Uniqueness Is JMS-Provider-Dependent) JMSCorrelationID (Uniqueness Is JMS-Sender-Dependent) JMSProperty (Uniqueness Is JMS-Sender-Dependent) Enter the JMS Property Name. This value is set for the XI message ID. Stored JMSCorrelationId of request The saved JMSCorrelationID of the request is used. For more information about the ConversationID, see: Parts of an XI Message, under ConversationID and RefToMessageID. XI Settings Parameter Entry Mapping of Message If you want the JMS payload to contain the entire message, choose Entire Message = JMS Payload. If you only want the JMS payload to contain the payload of the message, choose Message Payload = JMS Payload. Quality of Service Specifies how the Integration Engine/PCK will process a message. Exactly Once (asynchronous processing with guaranteed execution exactly once) Exactly Once In Order (asynchronous processing using queues, in other words guaranteed execution exactly once and maintaining the sequence of successive messages). Specify the Queue ID. Specify the Processing J2EE Cluster Server (Cluster ID). This specification stops queue-jumping in the JMS queue. The valid cluster ID is located on the J2EE server Administrator underServer.
If you do not enter the cluster ID, the EOIO channel is activated automatically on a different working node. This configuration ensures node failover by the adapter in a clustered environment. Time Period for Duplicate Check for EO(IO) (secs) To check for duplicate messages, IDs must be saved in the database. To prevent the database from getting unnecessarily large, these IDs must be deleted after a certain amount of time. Specify in seconds the time period after which you want IDs to be deleted (after one day, for example, if you check message monitoring daily). Error Handling Settings Parameter Entry Wait Time After Message Error (msecs) Enter the number of milliseconds that the adapter must wait when a processing error occurs before further messages are processed. In transactional processing, it can make sense to specify a certain time period, for example, because messages with errors remain in the queue following a ROLLBACK. Wait Before Reconnect (msecs) Specify a period of time after which an attempt will be made to reestablish a connection following a connection error on the JMS side. The time period must be specified in milliseconds. No attempt is made if the value is set to -1.
Your JMS provider must support the registration of an ExceptionListener for this.
Advanced Tab Page Adapter-Specific Message Properties To store adapter attributes in the message header of the XI message, select Set Adapter-Specific Message Properties. To apply the following attributes in XI message headers, set the corresponding indicators: Name Technical Name JMS Message Correlation ID DCJMSCorreleationID JMS Message Delivery Mode DCJMSDeliveryMode JMS Message Destination DCJMSDestination JMS Message Expiration DCJMSExpiration JMS Message ID DCJMSMessageID JMS Message Priority DCJMSPriority JMS Message Redelivered Flag DCJMSRedelivered JMS Message ReplyTo Destination DCJMSReplyTo JMS Message Time Stamp DCJMSTimestamp JMS Message Type DCJMSType Used JMS Message Selector DCJMSMessageSelector Used JMS Message Queue DCJMSMessageQueue JMS User DCJMSUser If you want to set additional JMS message attributes, select Specify Additional JMS Message Properties (10 Maximum). In the table, enter the names of the JMS message properties whose values are to be included in the message header of the XI message. The technical names of the additional attributes are DCJMSMessageProperty0, DCJMSMessageProperty1, ..., DCJMSMessageProperty9. You can enter more than 10 properties in the table, but only the first 10 are taken into account. The attribute namespace for the adapter is http://sap.com/xi/XI/System/JMS. Adapter Status Set the adapter to Active to enable messages to be exchanged. Additional Parameters To make additional settings or replace the default settings, enter the parameters and values in the table. You can set the following parameters, for example: Name Value JMSMessageClass com.ibm.jms.JMSMessage JMS.Message.method.setStringProperty java.lang.String XAppId, java.lang.String myapp You can set additional JMS parameters for all JMS providers.
Configuring the Receiver JMS Adapter Use You need to configure the receiver JMS adapter to be able to convert XI messages from the Integration Server or the PCK into JMS messages. Integration You configure the adapter on the Parameters tab page during the definition of a communication channel in the Integration Server or in the PCK. In addition to the adapter configuration, you can use the Module tab page to specify generic modules in the module processor, which give the adapter additional functions. Prerequisites 1. You have created a new communication channel or have opened an existing one. 2. On the Parameters tab page you have selected the adapter type JMS. 3. You have selected the Receiver radio button to define the adapter as a receiver adapter. Activities To configure the adapter, specify the following: Transport Protocol SonicMQ JMS Provider WebSphereMQ (MQ Series) JMS Provider Access JMS Provider with JNDI (Read) JMS Provider Administered Objects from File Access JMS Provider Generically Message Protocol JMS 1.x Adapter Engine Select the Adapter Engine on the Integration Server, or select a non-centrally installed Adapter Engine. This selection is not available in the PCK. Target Tab Page Depending on the transport protocol you have selected, make specifications for the respective JMS provider. See the relevant JMS-provider documentation for details about the individual parameters. See also: JMS-Provider-Specific Settings Processing Tab Page JMS Settings Parameter Entry Transactional JMS Session If you want to use a transactional JMS session, set the indicator. Following processing of a message, a transactional session ends either with a COMMIT, or in the case of an error, with a ROLLBACK. Delivery Mode of Message Producer Specify the quality of service of the message producer. You have the following options: Persist JMS Messages in the JMS Provider Do Not Persist JMS Messages in the JMS Provider JMS ReplyTo Queue Name Specify the name of the queue to which the responses are to be sent. JMS Message Expiration Period (msecs) Specify the expiry period of the JMS message as a JMS parameter in milliseconds. JMS Message Priority Specify the priority of the JMS message. JMS Queue User User for accessing the JMS queue JMS Queue Password Password (with confirmation) for accessing the JMS queue Correlation Settings Define the correlation settings. Set JMSCorrelationID To: XI Message ID (MessageID) (default value) XI Reference ID (RefToMessageID) XI Conversation ID (ConversationID) No Value Store JMSCorrelationID of Request Set the indicator if you want to save the JMS correlation ID of the request. Set this JMSProperty Enter the JMS Property Name. Specify which value the JMS property is to have: XI Message ID (MessageID) (default value) XI Reference ID (RefToMessageID) XI Conversation ID (ConversationID) No Value XI Settings Parameter Entry Mapping of Message If you want the JMS payload to contain the entire message, choose Entire Message = JMS Payload. If you only want the JMS payload to contain the payload of the message, chooseMessage Payload = JMS Payload. Handling of Pending XI Messages The adapter is able to identify whether the connection has been terminated between the JMS commit and the commit in the database of the Adapter Framework. The adapter identifies the resulting duplicate data record. You can choose from the following settings: Throw Exception (Message Retry Possible Later) (Default) Bypass Pending Warning and Send Message to JMS (Duplicates Possible) A duplicate data record is created if the JMS commit is executed, but not the commit in the database of the Adapter Framework. If you select this option, you must make sure that this message has not yet been received in the JMS environment. Mark Message as Delivered (Message Loss Possible) The message is lost if the JMS commit has not yet been executed. If you select this option, you must make sure that this message has already been received in the JMS environment.
For an example of how this parameter is used, see below underExample. Time Period for Duplicate Check for EO(IO) (secs) To check for duplicate messages, IDs must be saved in the database. To prevent the database from getting unnecessarily large, these IDs must be deleted after a certain amount of time. Specify in seconds the time period after which you want IDs to be deleted (after one day, for example, if you check message monitoring daily). Send XI Delivery Acknowledgment Back (Adapter Is Endpoint) If the JMS receiver is an application, the JMS adapter should send a delivery acknowledgment. Set the indicator. Error Handling Settings Parameter Entry Wait Time After Message Error (msecs) Enter the number of milliseconds that the adapter must wait when a processing error occurs before further messages are processed. In transactional processing, it can make sense to specify a certain time period, for example, because messages with errors remain in the queue following a ROLLBACK. Wait Before Reconnect (msecs) Specify a period of time after which an attempt will be made to reestablish a connection following a connection error on the JMS side. The time period must be specified in milliseconds. No attempt is made if the value is set to -1.
Your JMS provider must support the registration of an ExceptionListener for this. Reconnection if Exception Text Starts with
If the JMS provider does not call the ExceptionListener registered by the JMS adapter when a connection error occurs, you can force the connection to be reestablished by setting this parameter. If a JMS exception is thrown when sending a message, the free text contained here is compared with the specified string and once the period of time specified in Wait Before Reconnect (ms) has passed, an attempt is made to reestablish the connection.
Only set this parameter if your JMS provider does not support the registration of an ExceptionListener. Advanced Tab Page Adapter-Specific Message Properties To evaluate adapter attributes in the message header of the XI message, choose Use Adapter-Specific Message Attributes. To evaluate the following attributes in XI message headers, set the corresponding indicators: If you want missing message attributes to trigger error messages, choose Fail on Missing Adapter Message Properties. If the indicator is set and the header for adapter-specific message attributes or one of the set attributes is missing from the message, this leads to a delivery exception in the audit log of the message. If you do not set the indicator, and message attributes are missing, the adapter accesses information from the adapter configuration. Name Technical Name JMS Message Correlation ID DCJMSCorreleationID JMS Message Expiration DCJMSExpiration JMS Message Priority DCJMSPriority JMS Message ReplyTo Destination DCJMSReplyTo JMS Message Timestamp DCJMSTimestamp If you want to set additional JMS message attributes, select Specify Additional JMS Message Properties (10 Maximum). In the table, enter the Name and Java Type of the JMS message properties whose values are to be included in the message header of the XI message. Under Java Type, you define the JMS Java message type for the attribute in the created JMS message. The following are possible entries: boolean byte short int long float double String The technical names of the additional attributes are DCJMSMessageProperty0, DCJMSMessageProperty1, ..., DCJMSMessageProperty9. You can enter more than ten properties in the table, however, only the first ten are taken into account. The attribute namespace for the adapter is http://sap.com/xi/XI/System/JMS. Adapter Status Set the adapter to Active to enable messages to be exchanged. Additional Parameters To make additional settings or replace the default settings, enter the parameters and values in the table. You can set the following parameters, for example: Name Value JMSMessageClass com.ibm.jms.JMSMessage JMS.Message.method.setStringProperty java.lang.String XAppId, java.lang.String myapp You can set additional JMS parameters for all JMS providers. Example Below is a typical procedure for handling pending messages: ... 1. The default setting for the parameter of the receiver JMS adapter is Throw Exception. 2. You see the following exception in the message or adapter monitor: The channel is configured to throw a recoverable, temporary error for this warning (default). Decide whether you want to bypass this message. If so, set the Pending Handling channel parameter to 'Bypass' and restart the message afterwards. 3. Make sure that no further messages are sent through this communication channel by deactivating the corresponding sender channel. 4. Check whether the message or messages have arrived in the JMS environment. a. If the message has arrived in the JMS environment, select Mark Message as Delivered (Message Loss Possible). b. If the message has not arrived in the JMS environment, select Bypass Pending Warning and Send Message to JMS (Duplicates Possible). c. Choose Repeat in message monitoring. If some messages have arrived in the JMS environment and some have not, you must perform the procedure twice and resend the respective messages in each case. 5. Reset the parameter in the communication channel to Throw Exception. 6. Activate the corresponding sender communication channel.
Configuring the Sender Mail Adapter Use You configure the sender mail adapter to convert e-mails to XI messages. Integration You configure the adapter on the Parameters tab page during the definition of a communication channel in the Integration Server or in the PCK. In addition to the adapter configuration, you can use the Module tab page to specify generic modules in the module processor, which give the adapter additional functions. Prerequisites 1. You have created a new communication channel or have opened an existing one. 2. On the Parameters tab page you have selected the adapter type Mail. 3. You have selected the Sender radio button to define the adapter as a sender adapter. Activities To configure the adapter, specify the following: Transport Protocol You use IMAP4 (Internet Message Access Protocol) to retrieve e-mails from a folder of an e-mail server. You use POP3 (Post Office Protocol Version 3) to retrieve e-mails from an e-mail server. Message Protocol XIALL In this mode, the content of the RF C822 e-mail matches the content of the XI message. The XI message is a multipart MIME message with a SOAP envelope as its first part. See also: Messages, under XI Message Protocol. XIPAYLOAD In this mode, the content of the e-mail is put in the payload of the XI message. If you do not set the Use Mail Package indicator, the information about the sender (From), receiver (To), and subject of the e-mail is lost. Adapter Engine Select the Adapter Engine on the Integration Server, or select a non-centrally installed Adapter Engine. This selection is not available in the PCK. General Tab Page Connection Parameters for Mail Server Field Entry URL Enter the address of the mail server, for example imap://imapserver/XIInBox. Configure User Authentication If user authentication is required, set the indicator and specify the following: Simple CRAM-MD5 Make the following entries: Specify the user for accessing the server. Enter the Password and a confirmation. Poll Interval (min.) Time interval after which e-mails are called on the server. Delete Messages Once Read If you have selected IMAP4 as the transport protocol, you can specify here whether the messages are to be deleted on the e-mail server after reading. You can then specify a Folder for Deleted Messages on the server. Generate Fetch Report If you want to generate a report for every adapter poll procedure, set the indicator. An XI message with the following information is generated: Interface namespace: http://sap.com/xi/XI/Mail/30 Interface Name: FetchReport Mail Attributes for Message Protocol XIPAYLOAD If you have selected XIPAYLOAD as the message protocol, you must make the following additional specifications under Mail Attributes: If you want to put the entire e-mail message including the header information (From, To, Subject) in the payload, set the Use Mail Package indicator. See the example below. The header information is included in an XML mail package format. Specify whether you want to encode the content of the e-mail. You have the following options to do this: None base64 Quoted-Printable If you want to forward e-mail attachments in XI attachments, set the Keep Attachments indicator. You use the PayloadSwapBean module to replace the application payload with one of the attachments. Security Parameters for Message Protocol XIPAYLOAD If you want to decrypt and validate encrypted and digitally signed e-mails in the corresponding sender agreement in the Integration Server or in the PCK, set the S/MIME indicator. See also: Security Settings for the Sender Mail Adapter
To do this, you must have set the Keep Attachmentsindicator. In addition, enter the following parameters and values in the table in Advanced Mode: XI.ReceiverParty XI.ReceiverService The values you enter here must match the values for Receiver Party and Receiver Service in the corresponding sender agreement. Specify the Persist Duration. This specification is not currently used, but will be used in the future for security archiving. Further Parameters for Message Protocol XIPAYLOAD XI Parameters Specify the Interface Namespace and the Interface Name. Processing Parameters Select the quality of service. For Exactly Once In Order, enter the Queue Name. See: Quality of Service Advanced Tab Page Adapter-Specific Message Attributes To store adapter attributes in the message header of the XI message, set the Set Adapter-Specific Message Attributes indicator. The following attributes are added to the XI message header if the sender makes them available, and if the Variable Transport Binding indicator is set. Description Technical Name User of mail account SUser Mail header 'From' field SHeaderFROM Mail header 'To' field SHeaderTO Mail header 'Subject' field SHeaderSUBJECT Mail header 'Cc' field SHeaderCC Mail header field for reference to mail to which this message replies SHeaderIN-REPLY-TO Mail header field SHeader-REPLY-TO Mail header field for mail client program SHeaderX-MAILER Mail header field for delivery acknowledgement SHeaderDISPOSITION-NOTIFICATION-TO Mail header field for priority SHeaderPRIORITY Mail header field for message importance SHeaderIMPORTANCE To use further header fields, set the relevant indicator. You can then store the following attributes and their values in the XI message header: Description Technical Name Variable Header XHeaderName1 Variable Header XHeaderName2 Variable Header XHeaderName3 The attribute namespace for the adapter is http://sap.com/xi/XI/System/Mail. Adapter Status Set the adapter to Active to enable messages to be exchanged. Advanced Mode To specify additional parameters in the adapter configuration, set the Advanced Mode indicator. Specify the additional parameter names and parameter values in the table: For the security settings, enter values for the receiver party and receiver service here. In the table, set the parameter IMail.AssumeXMLContent = true. The text of the message is then interpreted as XML and is copied unchanged to the mail package. If this parameter is not set, the information is copied from the content type of the MIME header. If the type specified there is application/xml or text/xml, the text of the message is copied as XML; otherwise it is copied as text. Example XI payload with mail package: <?xml version="1.0" encoding="UTF-8"?>
<ns:Mail xmlns:ns="http://sap.com/xi/XI/Mail/30"> <Subject>Subject</Subject> <From>[email protected]</From> <To>[email protected]</To> <Reply_To /> <Content_Type>text/plain</Content_Type> <Content> This is the content. </Content> </ns:Mail>
Configuring the Receiver Mail Adapter Use You configure the receiver mail adapter to convert XI messages to e-mails. Integration You configure the adapter on the Parameters tab page during the definition of a communication channel in the Integration Server or in the PCK. In addition to the adapter configuration, you can use the Module tab page in the module processor to specify generic modules, which give the adapter additional functions. Prerequisites 1. You have created a new communication channel or have opened an existing one. 2. On the Parameters tab page you have selected the adapter type Mail. 3. You have selected the Receiver radio button to define the adapter as a receiver adapter. Activities To configure the adapter, specify the following: Transport Protocol SMTP You use SMTP (Simple Mail Transfer Protocol) to transfer e-mails to an e-mail server. IMAP4 You use IMAP4 (Internet Message Access Protocol) to put e-mails in a folder of an e-mail server. Message Protocol XIALL All information of the XI message is put in the message text of the e-mail. The content of the XI message is the same as the content of the RFC822 mail message. XIPAYLOAD The payload of the XI message is used to create the mail message. If the payload is in mail package format, the header information is also used for the e-mail. If mail package format is not used, the header information is obtained from the adapter configuration described below. Adapter Engine Select the Adapter Engine on the Integration Server, or select a non-centrally installed Adapter Engine. This selection is not available in the PCK. General Tab Page Connection Parameters for Mail Server Field Entry URL Enter the address of the e-mail server: For SMTP: smtp://mailserver, for example For imap: //imapserver/XIOutBox, for example Configure User Authentication Choose the Authentication Method. Plain CRAM-MD5 If the server expects a logon, set the indicator. Enter the User for logging on to the server. Enter the Password and confirm. Send Delivery Status Notification For transport protocol SMTP you can select Send Delivery Status Notification. Under To, enter the e-mail address of the recipient of the delivery status notification. Mail Attributes for Message Protocol XIPAYLOAD If you have selected XIPAYLOAD as the message protocol and have a mail package document as the XI payload, select Use Mail Package. If the XI payload is not available as a mail package document, make the entries for mail attributes (From, To, Subject).
For the format, see Example below. Specifications for mail attributes: Under From, specify the e-mail address from which the message is sent. Under To, specify the e-mail address that will receive the message. If you enter more than one address, you must separate them with a semicolon.
If you have specified an IMAP server under URL, the message is saved in the specified folder but is not sent to the receiver specified under To. Under Cc, specify the other e-mail addresses to which the e-mail is to be sent. These addresses are visible to the receiver. Under Bcc, specify the other e-mail addresses to which the e-mail is to be sent. These addresses are not visible to the receiver. Enter the Subject of the e-mail message. Specify whether you want to encode the content of the e-mail message. You have the following options: None Base64 (default value) quoted-printable If you have selected XIPAYLOAD as the message protocol and you want to forward XI attachments in the e-mail attachments, select Keep Attachments. You use the PayloadSwapBean module to swap the application payload with one of the attachments. See: PayloadSwapBean Security Parameters for Message Protocol XIPAYLOAD To encrypt e-mails and give them a digital signature in the corresponding receiver agreement in the Integration Server or in the PCK, set the S/MIME indicator. More information: Security Settings for Receiver Mail Adapter
To do this, you must have set the Keep Attachmentsindicator. Specify the Persist Duration. This specification is not currently used, but will be used in the future for security archiving. Advanced Tab Page Adapter-Specific Message Attributes To process adapter attributes in the message header of the XI message, select Use Adapter-Specific Message Attributes and Variable Transport Binding. The following attributes in the message header are available for processing: Meaning Technical Name User TServerLocation Authentication Keys TAuthKey Mail header 'from' field THeaderFROM Mail header 'to' field THeaderTO Mail header 'Cc' field THeaderCC Mail header 'Bcc' field THeaderBCC Mail header 'subject' field THeaderSUBJECT Mail header field for reference to mail which is being replied to THeaderIN-REPLY-TO Mail header 'reply to' field THeaderREPLY-TO Mail header field for mail client program THeaderX-MAILER Mail header field for delivery acknowledgement THeaderDISPOSITION-NOTIFICATION-TO Mail header field for priority THeaderPRIORITY Mail header field for message importance THeaderIMPORTANCE To set fields that are not in the table, select Variable Header. You use these fields to forward additional header information. The technical names for the fields are XHeaderName1, XHeaderName2, XHeaderName3. The parameters are embedded in the mail header under the names you enter here. The attribute namespace for the adapter is http://sap.com/xi/XI/System/Mail. Authentication Keys If authentication is required for the receiver system, you can enter a password with confirmation for each key value. This means that you do not need to write passwords in the enhanced message header. To enter or display the respective authentication key, select View Authorization Keys. You can enter and confirm passwords for each authentication key value (TAuthKey). Adapter Status Set the adapter to Active to enable messages to be exchanged. Advanced Mode To specify additional parameters for the adapter configuration, select Advanced Mode. Specify the additional parameter names and parameter values in the table. To prevent the content disposition header being generated automatically, enter the parameter name OMail.AddContentDisposition with value false. If the content disposition header was generated in a module, for example, this parameter has no effect. If you do not set the parameter, the header is generated by the adapter. Example XI payload with mail package: <?xml version="1.0" encoding="UTF-8"?>
<ns:Mail xmlns:ns="http://sap.com/xi/XI/Mail/30"> <Subject>Subject</Subject> <From>[email protected]</From> <To>[email protected]</To> <Reply_To /> <Content_Type>text/plain</Content_Type> <Content> This is the content. </Content> </ns:Mail>
Configuring the Sender RFC Adapter Use You configure the sender RFC adapter so that you can use it to convert RFC calls from a sender to XML messages and send these messages to the Integration Server or the PCK. Integration You configure the adapter on the Parameters tab page during the definition of a communication channel in the Integration Server or in the PCK. In addition to the adapter configuration, you can use the Module tab page to specify generic modules in the module processor, which give the adapter additional functions. Prerequisites ... 1. You have created a new communication channel or have opened an existing one. 2. On the Parameters tab page, you have selected the adapter type RFC. 3. You have selected the Sender radio button to define the adapter as a sender adapter. 4. The communication channel in which the RFC adapter is defined must be defined for a service of type Business System in the area Service Without Party. In the PCK, you must create an empty party record. 5. The entries made in the communication channel must be identical to those for the adapter- specific identifiers for the business system. For more information about adapter-specific identifiers, see Service in the Integration Server or Service in the PCK. Activities Transport Protocol The transport protocol is RFC. Message Protocol The message protocol is RFC (RFC XML). Adapter Engine Select the Adapter Engine on the Integration Server, or select a non-centrally installed Adapter Engine. This selection is not available in the PCK. Source Tab Page RFC Server Parameter The RFC server parameters identify the sender system. Specify the following parameters: Parameter Entry Application Server (Gateway) Gateway host name of the sender system. Application Server Service (Gateway) Gateway service of the sender system. This can be the numeric description of the service port in the sender system or the alphanumeric equivalent (for example, sapgwXX, where XX is the system number of the sender system). Program ID Program ID of the registered server program. The selected program ID must uniquely describe the RFC sender channel in the configured gateway (Application Server (Gateway) and Application Server Service (Gateway) parameters). SNC If you want to use Secure Network Connection, set the SNC indicator. Specify the SNC Name. Select the Quality of Protection. Set the indicator for SNC Advanced Modeand enter the permitted SNC names (ACL)in the table. You can also enter a value for Path to SNC Library. If you do not enter any details here, the setting is applied to the whole RFC adapter. Unicode Select this checkbox if the sender system is a Unicode system. Initial Connections Number of initial connections required between sender system and adapter. Maximum Connections Maximum possible number of initial connections required between sender system and adapter. This value is limited internally to a maximum of 50. Advanced Mode To specify additional parameters in the adapter configuration, set the Advanced Mode indicator. If the channel cannot reach the specifiedSAP gateway to register itself, it retries automatically. The time interval between registration attempts is increased exponentially from one second to an internal maximum value (3600 seconds). Enter the maximum wait time in seconds between two registration attempts by using the Maximum Reconnect Delay parameter. If the connected sender system is a non-SAP system, you can deselect theVerify Sender System checkbox. The sender system is then not checked using the system ID and the client. Enter additional parameters and their values in the table.
You can configure the non-SAP RFC client to connect to the sender communication channel in the following ways: By defining the parameters PROGID, gateway-host, and gateway-service within the saprfc.ini-file using RFC-SDK. By using appropriate parameters in the function RfcOpenEx. If you use the saprfc.ini-file, the respective RFC destination has to be of type R. All the parameter values used within the saprfc.ini-file or with the function RfcOpenEx should match the entries maintained within the corresponding sender communication channel. Example for the saprfc.ini-file is as follows: DEST=RFCCLIENTEXT TYPE=R PROGID=P106646.HKExternalClient GWHOST=pwdf2153 GWSERV=sapgw40 RFC Metadata Repository Parameter The RFC metadata repository parameters identify the SAP system containing the repository for the RFC metadata. This does not necessarily have to be the sender system. Load Balancing If your SAP system works with load balancing, select the checkbox and specify the following: System with Load Balancing Parameter Entry Message Server Host name of the SAP system (message server) Message Server Service Service of the SAP system (message server). This can be the numeric description of the service port of the message server or the alphanumeric equivalent (for example, sapmsXXX, where XXX is the system ID of the SAP system). System ID System ID of the SAP system Logon Group Specify the logon group of the message server. Note that the entries are case-sensitive. Advanced Mode Select this checkbox if you want to specify additional parameters of the class JCO.Client for the adapter configuration. Enter the name and values of the parameters in the table displayed. System Without Load Balancing Parameter Entry Application Server Host name of the SAP system (application server) System Number System number of the SAP system. This is a two-digit numeric value. Advanced Mode If you want to specify additional parameters of the class JCO.Client for the adapter configuration, select this checkbox. Enter the name and values of the parameters in the table displayed. Authentication Mode Use Logon Data for the SAP System Secure Network Connection for RFC Specify the Logon User for logging on to the SAP system.
Select the required level of security under Quality of Protection. Specify the Logon Password for logging on to the SAP system. Enter the SNC Partner Name. Set the indicator for SNC Advanced Mode. Specify the SNC Name. Enter the SNC library and its path. If you do not enter any details here, the setting is applied to the whole RFC adapter. Enter the Logon Language and the Logon Client. Enter the Logon Language and the Logon Client. Authorizations to Read Metadata Depending on the SAP system version, the following authorizations are required to read the metadata (authorization object: S_RFC, ACTVT: 16, FUGR): Function Groups by Release Release Function Groups (FUGRs) As of 3.1H RFC1, SG00, SRFC, SUNI, SYST As of 4.0A RFC1, SDIF, SG00, SRFC, SYST, SYSU, SUNI As of 4.6A RFC1, SDIF, SG00, SRFC, SYST, SYSU As of 4.6D RFC1, SDIFRUNTIME, SG00, SRFC, SYST, SYSU The role SAP_BC_JSF_COMMUNICATION_RO is available to SAPJSF users and contains all the required authorizations. Advanced Tab Page Adapter Status Set the adapter to Active to enable messages to be exchanged. Adapter-Specific Message Attributes The attribute namespace for the adapter is http://sap.com/xi/XI/System/RFC. Parameter Entry Set Adapter-Specific Message Attributes If you want to create adapter-specific message attributes, set this indicator. RFC Destination Technical name: RfcDestination If the indicator is set, the RFC destination that is used in the SAP sender system is transferred as a message attribute in the message header.
Configuring the Receiver RFC Adapter Use You configure the receiver RFC adapter so that you can use it to convert XML messages from the Integration Server or the PCK to RFC calls and send these calls to the corresponding receivers. Integration You configure the adapter on the Parameters tab page during the definition of a communication channel in the Integration Server or in the PCK. In addition to the adapter configuration, on the Module tab page in themodule processor, you can specify generic modules, which give the adapter additional functions. Prerequisites ... 1. You have created a new communication channel or have opened an existing one. 2. On the Parameters tab page you have selected the adapter type RFC. 3. You have selected the Receiver radio button to define the adapter as a receiver adapter. 4. The communication channel in which the RFC adapter is defined must be defined for a service of type Business System in the area Service Without Party. In the PCK you must create an empty party record. The entries made in the communication channel must be identical to those for the adapter-specific identifiers for the business system. For more information about adapter-specific identifiers, see: Service in the Integration Server or Service in the PCK. Activities Transport Protocol The transport protocol is RFC. Message Protocol The message protocol is RFC (RFC XML). Adapter Engine Select the Adapter Engine on the Integration Server, or select a non-centrally installed Adapter Engine. This selection is not available in the PCK. Target Tab Page RFC Client Parameters The RFC client parameters identify the receiver system. Specify the type of the RFC server. It can be an SAP System. It can be an External RFC Server. The external RFC server is a server programmed with RFC-SDK that has registered itself with an SAP Gateway. If your SAP system works with load balancing, select Load Balancing. SAP System with Load Balancing Parameter Entry Message Server Host name of the SAP system (message server). Message Server Service Service of the SAP system (message server). This can be the numeric description of the service port of the message server or its alphanumeric equivalent (for example, sapmsXXX, where XXX is the system ID of the SAP system). System ID System ID of the SAP system. Logon Group Specify the logon group of the message server. Note that the entries are case-sensitive. SAP System Without Load Balancing Parameter Entry Application Server Host name of the SAP system (application server) System Number System number of the SAP system (two-digit numeric value) Authentication Mode Logon Data for the SAP System Secure Network Connection for RFC Specify the logon name for logging on to the SAP system.
Select the required level of security under Quality of Protection. Specify the logon password for logging on to the SAP system. Enter the SNC Partner Name. Set the indicator for SNC Advanced Mode. Specify the SNC Name. Enter the SNC library and the relevant path underPath to SNC Library. If you do not enter any details here, the setting is applied to the whole RFC adapter. Enter the Logon Language and the Logon Client. Enter the Logon Language and the Logon Client. Additional Parameters Parameter Entry Maximum Connections Maximum possible number of initial connections required between adapter and sender system. This value is limited internally to a maximum of 50. Specify the following parameters for the external RFC server: Parameter Entry Application Server (Gateway) Gateway host name of the receiver system Application Server Service (Gateway) Gateway service of the receiver system. This can be the numeric description of the service port in the receiver system or its alphanumeric equivalent. Program ID Program ID of the registered server program Maximum Connections Maximum possible number of connections required between receiver system and adapter. This value is limited internally to a maximum of 50.
You can configure the non-SAP RFC server to connect to the receiver communication channel in the following ways: By defining the parameters PROGID, gateway-host, and gateway-service within the saprfc.ini-file using RFC-SDK. By using the appropriate parameters in the function RfcAccept. If you use the saprfc.ini-file, respective destination should be of type R. All the parameter values used within the saprfc.ini-file or with the function RfcAccept should match with the corresponding entries in the receiver communication channel. Example for the saprfc.ini-file is as follows: DEST=RFCSERVEREXT TYPE=R PROGID=P106646.HKExternalServer GWHOST=pwdf2153.wdf.sap.corp GWSERV=sapgw40 Advanced Mode For SAP systems (with and without load balancing) and also for external RFC servers, set the Advanced Mode indicator to show additional configuration options. Parameter Entry Send 'Confirm Transaction' Only deactivate the indicator if you do not want the transaction confirmation signal (Confirm TID) to be sent after a transactional RFC call. Commit Control for Single BAPI Calls If you want to use this communication channel to call BAPIs as remote-enabled function modules that change data in the database, set the indicator. If executed successfully, the transaction is written to the database by calling the function module BAPI_TRANSACTION_COMMIT explicitly. If an error occurs, the transaction is rolled back by BAPI_TRANSACTION_ROLLBACK. The result is determined by the value of the field TYPE in parameter RETURN. If successful, the tables are empty and the values , S, I, and W are displayed. All other values are regarded as errors. To change this setting, set the indicator BAPI Advanced Mode. In the Successful RETURN-TYPE Values table, enter the values that should lead to a successful execution. Table You can also specify additional parameters of the class JCO.Client for the adapter configuration. Enter the name and values of the parameters in the table displayed RFC Metadata Repository Parameter If an external RFC server is selected as the receiver, then an SAP system must also always be available to provide the RFC adapter with the metadata of the external RFC server. If an SAP system is selected as the receiver, you can also use this to provide metadata to the RFC adapter. Select the Use Alternative RFC Metadata Repository checkbox if you want to use a different metadata repository to that of the receiver system. If you select this checkbox or choose the external RFC server type, the system displays the RFC client parameters and you can enter values for the SAP system. Depending on the SAP system version, the following authorizations are required to read the metadata (authorization object: S_RFC, ACTVT: 16, FUGR): Function Groups by Release Release Function Groups (FUGRs) As of 3.1H RFC1, SG00, SRFC, SUNI, SYST As of 4.0A RFC1, SDIF, SG00, SRFC, SYST, SYSU, SUNI As of 4.6A RFC1, SDIF, SG00, SRFC, SYST, SYSU As of 4.6D RFC1, SDIFRUNTIME, SG00, SRFC, SYST, SYSU The role SAP_BC_JSF_COMMUNICATION_RO is available to SAPJSF users and contains all the required authorizations. If your SAP system works with load balancing, select the checkbox. SAP System with Load Balancing: Parameter Entry Message Server Host name of the SAP system (message server). Message Server Service Service of the SAP system (message server). This can be the numeric description of the service port of the message server or its alphanumeric equivalent (for example, sapmsXXX, where XXX is the system ID of the SAP system). System ID System ID of the SAP system. Logon Group Specify the logon group of the message server. Note that the entries are case-sensitive. SAP System Without Load Balancing: Parameter Entry Application Server Host name of the SAP system (application server) System Number System number of the SAP system (two-digit numeric value) Authentication Mode Logon Data for the SAP System Secure Network Connection for RFC Specify the logon name for logging on to the SAP system.
Select the required level of security under Quality of Protection. Specify the logon password for logging on to the SAP system. Enter the SNC Partner Name. Set the indicator for SNC Advanced Mode. Specify the SNC Name. Enter the SNC library and the relevant path underPath to SNC Library. If you do not enter any details here, the setting is applied to the whole RFC adapter. Enter the Logon Language and the Logon Client. Enter the Logon Language and the Logon Client. Additional Parameters Parameter Entry Advanced Mode Select this checkbox if you want to specify additional parameters of the class JCO.Client for the adapter configuration. Enter the name and values of the parameters in the table displayed. Advanced Tab Page Adapter Status Set the adapter to Active to enable messages to be exchanged.
Configuring the Sender SOAP Adapter Use You need to configure the sender SOAP adapter to send content from remote clients or Web service servers to the Integration Server/PCK. Integration You configure the adapter on the Parameters tab page during the definition of a communication channel in the Integration Server or in the PCK. You cannot enhance this adapter with your own modules on theModule tab page in the module processor. The inbound address for SOAP messages is: http://host:port/XISOAPAdapter/MessageServlet?channel=party:service:channel Under party:service:channelenter the party name, the service name, and the name of the communication channel. If no party has been created, enter the following: channel=:service:channel Prerequisites ... 1. You have created a new communication channel or have opened an existing one. 2. On the Parameters tab page you have selected the adapter type SOAP. 3. You have selected the Sender radio button to define the adapter as a sender adapter. Activities To configure the adapter, specify the following: Transport Protocol HTTP Message Protocol SOAP 1.1 Adapter Engine Select the Adapter Engine on the Integration Server, or select a non-centrally installed Adapter Engine. This selection is not available in the PCK. General Tab Page Inbound Security Checks Select the HTTP security level for inbound messages: HTTP HTTPS without client authentication HTTPS with client authentication See also: SAP Security Guide XI, HTTP and SSL, under Enforcing HTTP Security for Incoming Messages Security Parameters If you want to make additional settings for security in the relevant sender agreement on the Integration Server or in the PCK, set the Select Security Profile indicator. See also: Security Settings for the Sender SOAP Adapter.
If you set the indicator, there must be exactly one sender agreement for the defined communication channel. Under Security Profile, select whether you want to use Web Services Security or S/MIME. Also specify the Persist Duration for the messages. Conversion Parameters Parameter Details Do Not Use SOAP Envelope If the indicator is set, the adapter expects a message without a SOAP envelope. If you have set the indicator, you must also enternosoap=true in the URL. The adapter then puts the whole message in the XI payload. Keep Headers If the header of the Web service message is to be included in the XI message, set the indicator. Keep Attachments If attachments of the Web service message are to be included in the XI message, set the indicator. Use Encoded Headers If the XI header information is to be included in the encoded string, set the indicator. Use Query String If the XI header information is to be included in aquery string, set the indicator. Default XI Parameters Set the default values for the following parameters: Interface Namespace Interface Name Processing Parameters Under Quality of Service, specify how the message is to be processed by the Integration Engine/PCK. Best Effort (synchronous processing) Exactly Once (asynchronous processing) If the client sends a GUID, execution is guaranteed exactly once. See also: Ensuring Exactly Once Processing Exactly Once In Order (asynchronous processing using queues) If the client sends a GUID, execution is guaranteed exactly once maintaining the sequence of successive messages. Specify the Queue Name. Advanced Tab Page Adapter-Specific Message Attributes To store adapter attributes in the message header of the XI message, set the Set Adapter-Specific Message Attributes indicator. The following attributes are added to the XI message header if the sender makes them available, and if the Variable Transport Binding indicator is set. Name Technical Name Remote User SRemoteUser Remote Host SRemoteHost To transfer further header fields, set the relevant indicator. You can then store the following attributes and their values in the XI message header: Name Technical Name Variable Header XHeaderName1 Variable Header XHeaderName2 Variable Header XHeaderName3 The names of the fields and parameters must correspond to the names of the fields and parameters that also go through the HTTP request. The attribute namespace for the adapter is http://sap.com/xi/XI/System/SOAP. Adapter Status Set the adapter to Active to enable messages to be exchanged.
Configuring the Receiver SOAP Adapter Use You configure the receiver SOAP adapter to send information from the Integration Server/PCK to remote clients or Web service servers. Integration You configure the adapter on the Parameters tab page during the definition of a communication channel in the Integration Server or in the PCK. In addition to the adapter configuration, you can use the Module tab page to specify generic modules in the module processor, which give the adapter additional functions. Prerequisites ... 1. You have created a new communication channel or have opened an existing one. 2. On the Parameters tab page you have selected the adapter type SOAP. 3. You have selected the Receiver radio button to define the adapter as a receiver adapter. Activities To configure the adapter, specify the following: Transport Protocol HTTP (including HTTPS) SMTP (including SMTPS) The adapter uses this transport protocol to send SOAP messages as e-mails. Message Protocol SOAP 1.1 Adapter Engine Select the Adapter Engine on the Integration Server, or select a non-centrally installed Adapter Engine. This selection is not available in the PCK. General Tab Page Connection Parameters You define the connection parameters depending on the transport protocol: HTTP/HTTPS SMTP/SMTPS Under Target URL, enter the complete address (URL) of the Web service provider that you want to send the message to. If the server requires a user authentication, set the Configure User Authenticationindicator and specify the following: Specify the User. Enter the Password and confirm. If the server requests a certificate from the client, set the Configure Certificate Authentication indicator. Specify the Keystore Entry. Specify the Keystore View. Under Target URL, enter the complete address (URL) of the Web service provider that you want to send the message to. If the server requires a user authentication, set the Configure User Authenticationindicator and specify the following: Select the PLAIN or CRAM-MD5 authentication method. Specify the User. Enter the Password and confirm. If the server requests a certificate from the client, set the Configure Certificate Authentication indicator. Specify the Keystore Entry. Specify the Keystore View. If the Web service provider can only be reached by using an HTTP proxy server and not directly, set the Configure Proxyindicator and enter the following: Host Port (used for receiving proxy HTTP requests) If the proxy requires a user authentication, set the Configure Proxy User Authentication indicator and enter the User and Password, and confirm.
Mail Attributes for Transport Protocol SMTP/S If you have selected SMTP/S as the transport protocol, you can specify mail attributes: Under From, specify the e-mail address from which the message is sent. Under To, specify the e-mail address that will receive the message. If you enter more than one address, you must separate them with a semicolon. Under Cc, specify the other addresses to which the e-mail is to be sent. The addresses you specify here are visible to the receiver. Under Bcc, specify the other addresses to which the e-mail is to be sent. The addresses you specify here are not visible to the receiver. Enter the Subject of the e-mail message. Security Parameters If you want to make additional settings for security in the relevant receiver agreement on the Integration Server or in the PCK, set the Select Security Profile indicator. See: Security Settings for the Receiver SOAP Adapter Select the security profile Web Services Security or S/MIME. Specify the Persist Duration for messages in days, hours, minutes, and seconds. Conversion Parameters Parameter Details Do Not Use SOAP Envelope If the payload of the message is to be sent without a SOAP envelope, set the indicator. Keep Headers If the header of the XI message is to be included in the Web service message, set the indicator. Keep Attachments If attachments of the XI message are to be included in the Web service message, set the indicator. Use Encoded Headers If the headers of the XI message are to be encoded, set the indicator. Use Query String If a query string is to be specified, set the indicator. SOAP Action Specify the SOAP action. The action species the value for the SOAPAction in Web service messages. Advanced Tab Page Adapter-Specific Message Attributes To process adapter attributes in the message header of the XI message, select Use Adapter-Specific Message Attributes and Variable Transport Binding. You can evaluate the following attributes in the message header: Description Technical Name Server URL (you can set the complete URL here) TServerLocation Authentication Key TAuthKey Proxy URL TProxyLocation Proxy Authentication Key TProxyAuthKey SOAP Action THeaderSOAPACTION If you want to transfer header fields, set the relevant indicator for Variable Header. The technical names for the fields are XHeaderName1, XHeaderName2, XHeaderName3. The parameters are embedded in the HTTP request under the names you enter here. The attribute namespace for the adapter is http://sap.com/xi/XI/System/SOAP. Authentication Keys If authentication is required for the receiver system, you can enter a password and a confirmation for each key value. This means that you do not need to write passwords in the enhanced message header. If you want to specify or display authentication keys, select View Authorization Keys. You can enter and confirm passwords for each authentication key value (TAuthKey or TproyxAuthKey). Adapter Status Set the adapter to Active to enable messages to be exchanged.
HTTP HTTP adapter connect non-SAP systems to the Integration Engine using the native HTTP interface (HTTP payload without SOAP envelope). This uses the Internet Communication Framework of the AS ABAP. The standard exchange format for data in the Integration Engine is XML The plain HTTP adapter is part of the Integration Engine. It comprises two parts, namely an adapter at the Integration Engine inbound channel and an adapter at the Integration Engine outbound channel. The adapter at the inbound channel is located before the Integration Engine pipeline and calls this pipeline. The adapter at the outbound channel is called by the pipeline, and can therefore be regarded as part of the pipeline. It requires a corresponding communication channel from the technical routing for each logical receiver.
Transport Protocol: HTTP(S) 1.0 Message Protocol: XI payload in HTTP body You communicate with the plain HTTP inbound channel of the Integration Engine using an HTTP address. You encode the control data in the HTTP address as parameters, to enable a message to be created. These parameters are mandatory.
The HTTP body is used as the payload for the message. The payload does not contain an envelope with control data for the message you want to create. Quality of Service: BE, EO, EOIO HTTP Security Level: HTTP, HTTP without client authentication, HTTP with client authentication.
ABAP Proxies:
When Web services are built from platform-independent objects in the Enterprise Services Repository (ES Repository), the ES Repository objects are mapped to platform-specific proxy objects. Objects are modeled and stored in the ES Repository, which is the central repository and modeling environment for Web service objects, process and service definitions. The ES Repository stores data that is relevant for configuration, installation, and deployment, but the ES Repository does not provide runtime or platform-specific data.
ABAP Proxy Generation - General Procedure This section outlines the general procedure for generating, regenerating, and deleting ABAP proxies. Additional information for generating specific proxy types is provided in separate sections. The procedure to generate ABAP proxies is essentially the same for each different type of proxy. There are two main steps: Select the objects to be called or implemented. Generate and activate the proxies. Prerequisites To work with ABAP proxies, you need the SAP_XI_DEVELOPER_ABAP role, which is included in the composite role SAP_XI_DEVELOPER. Use the profile generator (transaction PFCG) to assign roles. Depending on the proxy type, the following tasks must be done before you generate a proxy: All objects must be modeled in the ES Repository or be made available as external WSDL descriptions. When a proxy that is modeled in the ES Repository is generated for an object that references another object in the same namespace, the proxy for the referenced object will be generated automatically. For example, a proxy could be generated for a service interface that references a specific data type. If a referenced object is in a different namespace, you need to generate the proxy for the referenced object separately. The package structure in the ABAP back-end system must be defined. The package structure defines where the proxies will be created, where the service provider will be, and how the packages will fit into the overall application structure. Prefixes for the ABAP objects can be defined. It is recommended that you define prefixes as they allow you to ensure that ABAP objects in the back-end system are assigned unique and consistent names. Procedure Generating a Proxy You need to be working in the system in which you want to generate the proxy. Proxies are generated in the ABAP back-end system, in which the object will subsequently be provided. 1. Start the Enterprise Services Repository Browser. Use transaction code SPROXY. The software component versions are displayed. 2. Expand the nodes of the software component version and the namespace in which you want to generate a proxy. 3. Select an object. 4. To generate the proxy, open the context menu and choose Create proxy. 5. Specify a package and a prefix, and choose Enter. Based on the prefix that you specify, valid ABAP names are proposed. You can change the proposed names as required. When the proxy is generated, all the underlying objects will also be generated. Information about the generated proxy interface, such as the implementing proxy class, and the generated service definition is displayed in the Properties tab. The prefix you specified is displayed as part of the ABAP name in the Properties tab and also in the Structure tab. The External view and Internal view tabs respectively show the operations and methods, and the corresponding ABAP message types and data types. 6. Activate the proxy. When the proxy is activated, all the underlying objects are automatically activated as well. Note The ABAP objects, such as the class, interface, DDIC type, are not created in the system until you activate the proxy. End of the note. 7. Release the transport request. Use transaction SE09 to do this. 8. Create a runtime configuration for the proxy. Note A runtime configuration is only needed for service interfaces. End of the note. 1. Start the SAP NetWeaver Administrator. Use transaction code SOAMANAGER, choose Central Web Service Administration, and log on. 2. Select WS Configuration. 3. Select the service definition that was automatically created during proxy generation. 4. Choose Create Endpoint. An endpoint contains a single runtime configuration. You can create different endpoints to define different runtime behaviors for the same service definition. 5. Specify a name for the endpoint. An endpoint must have a unique name within the Web service entity. 6. Check that the security profile meets your requirements. To make changes, choose Edit. 7. Save. The runtime configuration with a port type is now available on the back-end system, and can be integrated into an application. Generating Proxies with Industry-Specific Enhancements To activate industry classifications, you need to select an industry when you generate proxies for Web services delivered with an Enhancement Package. Perform the following steps: 1. Log on to the back-end system in English. 2. Start transaction SM30. 3. Choose the SVW_INDUSTRY view. 4. Select your industries. Regenerating a Proxy If an object is changed in the Enterprise Services Repository (ES Repository) after it has been generated, the changes will not automatically be reflected in the proxy in the ABAP back-end system. If an object in the ES Repository is changed, you will need to regenerate the corresponding proxy manually. Note In the ES Repository Browser, an icon with a red triangle indicates a version of an ES Repository entity that is different from its proxy version in the ABAP back-end system. End of the note. 1. In the Enterprise Services Repository Browser, locate the object whose proxy you want to regenerate. 2. Open the context menu and choose Regenerate proxy This function will only be available if a proxy has already been generated. Only the proxy interfaces and classes will be overwritten. The implementing class will remain intact, meaning that the implementation will not be lost. 3. Reactivate the proxy. From the context menu, choose Activate Proxy. When the proxy is activated, all the underlying objects will be automatically activated as well. Deleting a Proxy 1. In the ES Repository Browser, select an object. 2. From the menu, choose Proxy Delete . Note By default, the implementing class will not be deleted. Only the generated data will be deleted. To delete the provider class, you must choose to do so explicitly when the system prompts you. End of the note. Result When proxy objects are activated, one or more of the following ABAP objects are created: ABAP Dictionary types ABAP Dictionary types represent the global data types in the ES Repository. The system also generates the data types that will be used as method parameters. ABAP interface An ABAP interface comprises interface types and constants. ABAP class (proxy class or implementing class) for provider or consumer proxies The ABAP class of a service provider contains the implementation of the service provider methods, and uses an ABAP interface. A service provider class has one method for each operation modeled in the ES Repository. For a proxy to be used by an application, the methods will need to be filled with application coding --------------------------------
Have you got the error message "Unable to connect to the Integration Builder, when you are trying to create a ABAP PROXY from a R/3 system?
This blog enumerates the process of Configuration required for ABAP proxy. All the configurations are available in the SAP XI configuration guide and Installation guides. This is an attempt to bring the entire configuration together.
Consider the following system landscape for configuration of the ABAP Proxy:
Two systems exist in the landscape:
System X : SAP XI 3.0 system and
System Y : SAP R/3 on WAS 620
The prerequisites to configuration for ABAP Proxy include: (landscape dependent)
1. The business systems should be based on SAP Web AS 6.20 and SAP Web AS 6.20 kernel patch level above 1253
2. You have installed the XI Add-On in each of these business systems as described in the Installation Guide SAP Exchange Infrastructure 3.0
3. The business systems and your central Integration Server are maintained in the System Landscape Directory (SLD).
Configuration required on the Business System:
1. Create HTTP connection in the business system.
Configuration Details:
Technical Setting:
1. Following Inputs are required for technical setting
1 Connection Type: H
2 Target Host: System name
3 Service Number: HTTP Port name
4 Path Prefix: /sap/XI/engine/?type=entry
Logon Security
On the Logon/Security tab page, enter the following logon data:
1 User: XIAPPLUSER (for example); this user should represent the sending business system (see also the SAP XI Security Guide under Service Users for Message Exchange).
2 Password: the password you have specified for this user
3 Client: SAP XI Integration server
4 Language: Language required
SAPISU_XID created in step 1. Dest://SAPISU_XID.
5. Under Specific Configuration Data you can specify additional configuration data
1.Select the relevant category under Specific Configuration Data.
2.Choose Change Specific Configuration Data.
For ABAP Proxies, Add the following configuration:
1.Category RUNTIME
2.Parameters: IS_URL
3.Current Value: dest://SAPISU_XID
4.Choose ENTER.
5.Choose the Technical settings tab page and do the following:
6.In the Program ID field under Registered Server Program, enter LCRSAPRFC
7.This program ID must correspond to a program ID specified in the RFC engine settings of the SAP J2EE Engine on the Integration Server host.
1. You can reuse this program ID for all Business systems
2. If there is HTTP error during connection, first run transaction SLDCHECK in the Business system. Also check that HTTP connection is working fine.
3. In XI Adapter use HTTP connection rather than giving R/3 input details as this is easier to transport and maintenance
4. One receiver adapter can be used for all Interfaces connecting to a Business system.
New Features of SAP PI 7.1
Content
Overview Enterprise Service Repository Integration Engine/Directory Advanced Adapter Engine
Overview
This document describes all new features, enhancements and changes for Process Integration. For each change made, we specify the release and the SAP NetWeaver PI components for which it was implemented. Enterprise Services Repository
This section describes all new features, enhancements, and changes for Enterprise Services Repository. Interface Objects ES Repository Tools Interface Objects -Changes to Service Interface Feature Description Automatic Migration of Message Interfaces Until SAP NetWeaver 2004s there were message interfaces in the Integration Repository. Each message interface consists implicitly of an operation, which is not named in the message interface editor. As of this release, you can no longer create message interfaces. You can only create service interfaces, which allow the definition of multiple operations. Interface Pattern Depending on the use of a service interface, there can be different types of operations for the respective use. To enable the selection of possible operations to be restricted at design time, each service interface has an interface pattern, which you use to decide implicitly on a communication and thus programming model. dempotency
In the service interface, for inbound category with mode as synchronous and any interface pattern except TU&C/C, a new option called Idempotent is available.
Security Profile
Assigning Service Interfaces
You can assign security levels to the service interfaces in the ES Repository. To simplify the configuration of point-to-point connections, you can assign related service interfaces to one another in the Enterprise Services Repository (outbound service interface and inbound service interface). For a given inbound service interface, a wizard automatically creates an outbound service interface and assigns a link to match the two interfaces. This is applicable only for point-to point communication.
Classifying service interfaces in the ES Repository
You can assign classifications to service interfaces in the ES Repository.
Publishing service interfaces
You can configure the ES Builder to automatically publish service interfaces to the Services Registry after activation.
Creating service interfaces from WSDL files
A wizard enables you to import WSDL files into the ES Repository and create service interface objects
Changes to External Definitions Mass import of external definitions
Until now, you could only upload individual files to the Integration Repository one after the other. As of the new release, you can upload multiple files to the Enterprise Services Re pository at once and create an external definition for each file. Automatic Migration of Imported RFCs and IDocs
The internal data storage format for imported RFCs and IDocs has changed. The new data format is simpler and less performance-intensive. All RFCs and IDocs are automatically put in the new data storage format when you upgrade to the new release or transport RFCs or IDocs to the Enterprise Services Repository. There are no other effects. Changes to Mapping Objects General
Parameterized Mapping Programs
You can now work with parameters - whose values are not defined until configuration time - in message mappings, Java mapping programs, and XSLT mapping programs. In mapping lookups, to define the communication channel to be used in the Integration Directory, you can now use the new parameter type Channel. For more information. Message Mappings
Function Libraries
In lower releases, you were able to save and manage user-defined functions as part of one message mapping. You can now create function libraries independently of specific message mappings, and can use the functions you define in them in multiple message mappings.
Standard Functions for Mapping Lookups
In lower releases, you could only use mapping lookups in message mappings if you used the mapping-lookup-API in Java within a user-defined function. The mapping editor now has the standard functions JDBC Lookup and RFC Lookup for lookups involving the JDBC or RFC adapter.
Variables
In the target structure in the mapping editor, you can now define a graphical variable that you assign a value to at runtime by using a normal target-field mapping. You can then use this value in the scope of the variable when you apply the variable in other target-field mappings;
XSLT Mappings
SAP supports the SAP XML Toolkit for SAP NetWeaver Process Integration 7.1 and the next release of SAP NetWeaver. Java Mappings
A new API is available for Java mappings. The previous mapping API still exists but no further development will take place (parameterized Java mapping programs are only possible with the new mapping API, for example).
ES Repository Tools
Usage Profile
The usage profile is a filter that defines the number of ES Repository objects that you can access. It enables you to view and work with only a set of object types, software component versions, and modeling filters required to achieve your goals
Translating language-dependent
You can now translate language-dependent texts in a separate editor.
Integration Engine/Directory IDoc Sender Adapter Available in Integration Directory
You can now configure an IDoc sender adapter in the Integration Directory for processing IDoc packages that reach the inbound channel of the Integration Server and to enter the segment release so that the IDocs are forwarded correctly.
Comparing Metadata for the IDoc Adapter
You have the option of comparing metadata that has been loaded to the Integration Server with the current metadata from the SAP reference system that the metadata comes from.
Message Packaging
You can now improve the performance of message processing in SAP NetWeaver Process Integration by grouping together asynchronous messages in packages and then processing each message package.
Configuration of Principal Propagation
You can configure principal propagation based on Security Assertion Markup Language (SAML 1.1).
Configuration of communication channels with adapter type WS
For configuring scenarios using Web service consumer and web service provider, you can now use a new version of the adapter type WS.
Creating folders
You can create a folder to structure Integration Directory content more clearly. Folders can be shown or hidden in the navigation area of the Integration Builder.
Enabling Async/Sync and Sync/Async Communication With JMS Adapter
Modules are provided for the JMS adapter that enable async/sync and sync/async communication. You add the modules to the JMS adapter modules in the module processor
XML to Text Conversion Module
You use this module to convert an XML document contained in the mail payload of the XI message to simple text format. You can convert data records either to text with a fixed column width or a separate list. You can define the separator. During conversion, the structure of the XML document is checked using your specifications.
Advanced Adapter Engine Local Message Processing on the Advanced Adapter Engine
Using Integrated Configuration you can define a local Message Processing on the Advanced Adapter Engine. The Advanced Adapter Engine provides mapping and routing for this locally. Message Processing is only executed on the Advanced Adapter Engine from one adapter to another without the involvement of the Integration Engine. You can gain a great improvement in performance. You can implement all adapters on the Adapter Engine for a local Message Processing on the Advanced Adapter Engine, apart from the RNIF adapters and the CIDX adapters. If you do not use the integrated configuration, message processing will continue to be performed using the Integration Engine. .
List of Features: Service Interface generation for WSDL import into the Enterprise Services Repository Classification support in the Enterprise Services Repository Security profile settings for Service Interfaces Whereused list in Services Registry Add Information to Services Published in Services Registry Generation of outbound interfaces based on inbound interfaces User defined usage profiles in Enterprise Services Repository User defined usage profiles in Services Registry Cleanup of Services Registry Content-based routing and receiver split in AAE Operation-dependent receiver determination Directory API supports new objects types Enhanced search for communication channels Scenario view in Integration Directory Enhancements of Adapter Engine SE: Remote configuration Empty file handling Overwriting of inbound files Configuration based on Process Component Interaction Models ABAP and Java proxies supported in the Advanced Adapter Engine End to end IDoc packaging IDoc Conversion Adapter Module User defined message search Cross domain message status overview Process Integration monitoring and configuration capabilities available through SAP Solution Manager Management of heterogeneous, multi-platform SOA landscapes (integration with AmberPoint) SOA configuration for connectivity of Web services and consumers based on SOA Manager Enhancement in migration controller for smooth upgrades of Java proxies to SAP NW PI 7.1
Architecting Solutions with SAP Business Technology Platform: An architectural guide to integrating, extending, and innovating enterprise solutions using SAP BTP