Hi Experts,
What is the road map of AIF with S/4 HANA?
SAP has any plans to change with S/4 HANA?
Thanks,
Kiran.
Hi Experts,
What is the road map of AIF with S/4 HANA?
SAP has any plans to change with S/4 HANA?
Thanks,
Kiran.
Hello,
I have some jobs in SM37 with names like /AIF/LOYAL_RT1_00000517*
Status is cancelled now, but when it was tried to be executed, duration was like 4.451 sec
Because of this problems, we had an issues with other jobs in system.
In job log I have messages like this:
Wait for lock of run 0000000000
Job cancelled after system exception ERROR_MESSAGE
Output device "" not known
Part 1,SAP AIF - Simple Inbound Scenario- Part-1, we have completed the basic steps for SAP PI , Here we will be dealing with steps involved in SAP ECC box . Go to SPROXY, generate and activate the Service Interface.
Now we will be moving for AIF Customization .
Basic Steps -
SAP ECC - AIF CUSTOMIZATION
To kick start with the Interface development we need to create a namespace , this is done by
Define Namespace
New Entries eg. ZAIF_D
(One Namespace can be associated with multiple interfaces development)
Define Interface -Select the namespace (ZAIF_D), New Entries.
Note the Provider proxy class name that is generated in SPROXY.
In our case - ZAIF_ASY_ADDR_HNCL_SI_AIF_ADD.
Raw Data Structure and Record type in raw structure will
populate automatically.
Inbound Interface – Raw Data Structureis created during proxy generation, this act as a Source Structure for Inbound Interface.
Record Type in Raw Structure – is the main component of raw data structure.
Save all the details.
Additional interface properties->Specify Interface Engine.
In our case we are dealing with proxy so we need to select the following entries .
Define Structure Mapping – Here fields of the source (Raw) structure are mapped to the fields of
the Destination (SAP Data) Structure.
Define Actions – It wraps the business logic at runtime .At least one function module should be defined.
Select the function double click , New window/session for Function module editor here we will be writing business logic.
Now we will be testing the interface .
To be continued - Part 3
SAP AIF - Simple Inbound Scenario -
Part-3
This document will help AIF beginner , In understanding the basic steps involved in SAP AIF .
Here we are taking a simple Inbound Case, We will be updating PA006 based on PERNR and ANSSA using SAP AIF. In Inbound case the change data will be routed via SAP PI, SAP AIF and will be updating the PA table (PA006).
High level flow –File Adapter will poll the records, message mapping/ routing in SAP PI, which in turns will be trigger Inbound proxy this will call the AIF functions and update the PA table.
STEPS -
SAP PI
ESR | |
---|---|
Create— Two Data type
(ZDT_ADDRESS_REQ) | ![]() |
Service interface (SO_AIF_ADD_REQ)
Category-Outbound Message type - ZDT_ADDRESS_REQ
SI_AIF_ADD_REQ Category – Inbound | ![]() |
Message Mapping | For simplicity, one to one mapping. |
Operation Mapping OM_AIF_ADDR | ![]() |
Intergration Directory | |
Business System – BS_SAPECC
Business Component –BC_SAP_AIF
Register the Service Interface in Business Component. | ![]() |
Communication Channels-
| ![]() |
Create -
Service interface has been created in ESR (SAP PI) and a proxy class structure for service interface is generated in SAP ECC.
Now we need to implement the proxy method to call the SAP AIF To implement the method double click on generated proxy class.
To be Continued : -
Earlier part SAP AIF - Simple Inbound Scenario -Part-2 we have covered the devlopment and customization steps. In this final phase we will be covering with the testing and monitoring of Interface.
We placed an XML file in Remote Server . File adapter polls the files
Sample payload
SXMB_MONI (SAP PI) -
Messge is succesfully processed in SAP PI
Cross check the processed message in SAP PI (SXMB_MONI).
Checking the Successful processed message in SAP ECC -
Checking the message in AIF -
T-Code - /n/AIF/ERR
Enter Application Specfic Interface details with date and time and Status Selection.
Execute - Below screen show that the message was sucessfully processed in SAP AIF ,
we can also see the data in proxy structure.
Cross Verfiying Updated PA tables - The data processed from PI has been updated in SAP ECC.
SAP AIF facilitate interface implementations, interface monitoring and error handling it empowers business users to monitor interfaces they are responsible for and to handle business errors.
SAP PI,and SAP AIF together provide a complete toolset forcomplex integration scenarios.They efficiently combine Operational Monitoring,Technical Integration, and Transactional Error Resolution capabilities.
Related Content
SAP Application Interface Framework - Cookbook
SAP AIF: So what is it all about?
SAP Application Interface Framework - SAP Library
Previously SAP AIF- Simple Outbound Scenario Part-1 we have covered the basic process for SAP PI and Proxy.
Here we will be dealing with SAP AIF Customization for Outbound Scenario .
SAP AIF Customization
Here I’ll be using the same namespace ZAIF_D (as it was created for Inbound Scenario )
Define Interface- Select the namespace (ZAIF_D), New Entries.
Select-(as highlighted in below figure )
Proxy Class Outbound.
SAP DataStrucutre
Specify interface engine– Enter the details as shown below.
Define Structure Mapping - Select Namespace, InterfaceName,Interface Version
Select the Source Structure ( this is created in SE11)
Now select destination structure -
Define field Mapping
For simplicity, No action has been added here
For triggering an Outbound data.
Go to SE38 – Create a report which will give the total number of records updated, using CALL FUNCTION '/AIF/SEND_WITH_PROXY'
SXMB_MONI (ECC)
T-code –AIF/ERR – Shows successful message
Related Content --
In previous blog (SAP AIF -Simple Inbound Scenario - Part-3), we were updating the PA006 table, Here for Outbound case we will trigger a report (SAP ECC) which will capture the updated PERNR’s, totals No of records updated on particular date.
In outbound case the destination / target structure is called as Raw Structure, Source Structure is called as SAP Data Structure.
Steps -
SAP PI -
ESR
Create—
Two Service interface
(SO_AIF_ADD_RES)
Category-Outbound
Message type - ZDT_ADDRESS_RES
(SI_AIF_ADD_RES) Category–Inbound
Message mapping - One to One
Operation Mapping ---OM_ResSrcECC_PITgt
INTEGRATION DIRECTORY
Business System – BS_SAPECC
Business Component –BC_SAP_AIF
Register the Service Interface in Business Component.
Communication Channels- File Receiver (BC_SAP_AIF)
Configuration Scenario -
• Receiver Determination,
• Interface determination
• Sender agreement
• Receiver agreement
For Outbound Service interface (SO_AIF_ADD_RES ) created in ESR (SAP PI) and a proxy structure for service interface is generated in SAP
ECC.
SAP ECC
T-Code- SPROXY
Generate and activate the proxy
We need to create a SAP Data Structure in SE11 .
SAP AIF customization will be covered in Part 2
To be continued:- Part 2
SAP AIF- Simple Outbound Scenario Part-2
In continuation of the previous( SAP AIF- Simple Outbound ScenarioPart-2), here I’ll be using two functions in report to trigger the data and route data to XI/PI using AIF. This can be helpful for the beginners in SAP AIF.
Here we will be selecting the below function.
Here we will trigger simple report using the above functions, which will execute proxy framework and the transformed data will be captured in FTP folder.
We will be using the same scenario for outbound as previous blog. (SAP AIF- Simple Outbound ScenarioPart-2)
SAP PI & ECC proxy generation (SO_AIF_ADD_RES) steps remains the same as described in previously.
Created a report (SE38) using the two functions and captured the output in SAP PI.
We can also check the same -TCODE -/n/AIF/ERR also.
Related Content -
Hello All,
We have exposed asynchronous web service via ECC directly (SOAMANAGER). We have configured AIF for this scenario. AIF is working fine during runtime but when we try to access the message payload via /AIF/ERR - it gives following error.
Payload of message with GUID 989C6E5C2CC111CAA04408002B1BB4F1 could not be retrieved.
Web service was called from external consumer , not from SPROXY transaction. We have tried both Proxy & XML as persistence engine.
Thanks & Regards,
Dijesh Tanna
As of AIF 3.0 a new, fantastic feature has been introduced - AIF serialization. Together with my two colleagues from Int4 - Michal Michalski and Krzysztof Luka we've decided to describe how do different options of AIF serialization work as we believe it's usage can be a vital part of almost every AIF implementation due to it's unique benefits.
SAP Press has published our book with it's new format - E-bite. E-bites are supposed to be smaller books available only in electronic format and they need to concentrate on a single topic only - in our case serialization. Our book contains step-by-step instructions and screenshots that will enable you to explore your serialization options in SAP Application Integration Framework in no time, starting from the configuration up to monitoring and troubleshooting of the AIF serialization.
Where to buy:
SAP Press - Serializing Interfaces with SAP AIF
Reference:
My first book on AIF topic for business users - SOA Integration - Enterprise Service Monitoring (LIE, FEH/ECH, AIF)
Hi AIF Community,
we identified following behavior in the AIF structure mapping processing:
The order in processing the structure mapping is the same as displayed in the structure mapping customizing. It is the alphabetic order of the source structures. In case you cannot control the naming of the source structures you cannot control the order of the structure mapping processing. In a field mapping you need to use a target value from another structure (e.g. company code in a header structure) that is processed afterwards we need to implement function modules extra for this field mapping. The simple existing AIF value mappings cannot be used in this case.
Does someone had also the same problems and used another better solution?
Is there any possibility to control the order of the structure mappings besides the naming of the source structures?
Best regards
Christoph
Currently trying to get a new PO message to be triggered when the delivery complete indicator is set.
I have checked and EKPO-ELIKZ is configured in "Field relevant to Printouts of Changes".
I noticed another message about this: Delivery completion Indicator does not trigger output on PO
Can someone confirm there is no way to trigger a PO message when the delivery complete indicator is set automatically during goods issue?
I know I can view an individual Vendor's Partner Function through XK03 > Partner Function > Vendor Catagorization, but this only does 1 vendor at a time. Does anyone know how to view a list of Vendors and their Function?
Thank you.
Hello Folks,
We have two application which are developed in SMP and one in-house mobile web application . Now users are accessing two application from SMP and other from outside. So they need a hyperlink inside SMP to access the third application as well with the same credentials. SMP application are being authenticated through LDAP. So how can pass the same credentials to access the in-house mobile application from SMP ? So user no need to login again while clicking the hyperlink. Please advise . Thanks in advance for you valuable comments.
Thanks
Alok
Hello!
Bought New SAP Press book (E-bite series): Serializing Interfaces in SAP AIF. It's really nice. After running through it I started experimenting with our own interfaces (inbound, PI proxy).
First decided to move several types of messages to new index table. Created new index table by copying /AIF/STD_IDX_TBL and extending it with several new key fields. Also made customizing settings to target interface to new index table.
And immediately faced an issue. Now my old messages are in old index table (which is "not known" to interface anymore), so /AIF/ERR is not displaying them. I can't reprocess them or even see, what was in them on arrival.
While the major part of the fields in all AIF message index tables are the same it was not a big deal to copy index data between tables. But after that new key fields still remain empty. Luckily, for messages that are restarted in /AIF/ERR, system automatically refills key fields and solve issue. But for already processed messages (which are not allowed to be restarted) new key fields still remain empty and they are "placed" in Undefined folder.
So my questions are:
Thanks in advance!
Regards,
Petr
Hello AIF enthusiasts!
During AIF implementation we use AIF Checks quite often. Settings available in AIF allow to customize pretty sophisticated checks, in order to raise error messages in /AIF/ERR or and/or skip unneeded data rows, that should not be processed. E.g. we can use check as shown below to test if PLANT field in incoming data message contains values, which is applicable to our interface or this record should be ignored.
Check like this is Successful if record exists in table and fails if it is not there.
But several time we faced opposite requirement. We are maintaining table with forbidden values. Idea is: if value is found in table, than check should fail. And if value is not found, check should be treated as successful.
My proposal is to add Boolean Flag to this customizing which will "reverse" check result: success of the logic of the check will be interpreted as fail, and fail as success.
P.S. Of course the above requirement can be covered with a little bit of code, but the idea is to implement it in codeless manner (as AIF allows many things to do).
Regards,
Petr
iPad and iPhone configuration setting:
Note 2019275:
This posting will refer to the locations above for information.
I have configured the Integration services according to the requirements. I have also, manually, generated the security certificate. After copying the certificate to my mobile devices, I updated SAP with the device ID. I tested with two devices...
1) Android phone(s)
2) iPad
In all circumstances, in all testing... The Android devices work without issue. The iPad devices do not work.
On all devices I can open a browser and navigate to https://<servername-or-IP>:8443 and log into the Integration Framework without issue.
All of these tests are on 9.1 pl06.
Has anyone else experienced issues with connecting an iPad using B1Mobile?... Has anyone been able to resolve this?
The message I receive on the iPad is as follows;
Security Error
The certificate for this server was not issued by a trusted certificate authority.
The connection to the server is disabled.
Contact your IT administrator for more details.
Thanks,
~ terry o.
One crucial part of the SAP Application Interface Framework is the Interface Determination which allows you to configure what interface should be used for message processing based on the content of a message.
In the SAP Application Interface Framework (AIF) you can use standard types like proxy class, IDoc or XML but you can also define interface determinations for customer-specific engines.
In order to configure the interface determination you will first have to use the transaction transaction /AIF/CUST. Following SAP Application Interface Framework –> System Configuration –> Interface Determination in SAP menu, you will find the following options:
The main focus of this post is the Interface Determination for IDoc Interfaces. At first, you will define one or more determination keys for the designated IDoc Basic Type – Message Type, which specify an AIF interface. In AIF 3.0 SP02 you can define up to five determination keys. For each key there are three categories available: IDoc Control Record (C), IDoc Data Record (D) and System fields (SY-<name>).
After selecting the fields, you can assign the value to determine the interfaces.
There are various operators to define the value for the interface determination:
Extended information on regular expression you will find here:
In the picture above you can see that the special character “|” was used, which stands for the logical operation “or”. This means that if the IDoc is an inbound one (DIRECT equals 2) and if RCVPRN equals one of the values separated by “|” then the interface ORDUS13_IN, version 1 in the namespace ORDERS will process the corresponding message.
All these operators offer a broad range of possibilities and are working well but let’s the take the following business scenario.
One company wants to use the sales organization as criteria for deciding which interface reflects a certain message. The corresponding qualifier for the sales organization in E1EDK14 segment is e.g. “008” and as we can see in following picture the qualifier “008” occupies the third row of E1EDK14 segments.
With AIF standard you will always get the value of the first row of the E1EDK14 segments. In our example with E1EDK14-ORGID as key and “AT11” as value for interface determination AIF will select “AT14” as value. This means that the interface will not process the message in accordance to business requirements.
One existing solution to fulfil the business requirement to split IDocs to different reveivers is described in OSS note 1909791: There you will have to implement the BADI /AIF/RECEIVER_DETERMINATION method SELECT_FROM_MULTI_VALUES:
“In order to determine the correct recipient you have to implement the new BAdI /AIF/RECEIVER_DETERMINATION Method SELECT_FROM_MULTI_VALUES. The BAdI receives the namespace, interface, interface version and the current line of the table as parameter. If the current line contains the required information for the receiver determination parameter RECEIVER_FOUND is required to be set to 'X'. If the current line did not contain the required information the parameter RECEIVER_FOUND is required to be set to blank.
If the BAdI is not implemented the solution works as before. In this case the first entry of the corresponding table is used to determine the receiver.”
This solution was implemented by SAP to be able to handle table elements in IDocs, but works only to select a recipient together with single index tables. So it is a very powerful method, but does not help you in the process step of Interface Determination (where this functionality is missing at the moment).
Since SAP AIF is an ABAP-based framework, it enables us to bring our own extensions. So one way of solving this issue is to find and modify the method responsible for the IDoc interface determination. The name of the method is “/AIF/IF_INF_DET_ENGINE~GET_INF_DET_VAL” and can be found in class “/AIF/CL_INF_DET_ENGINE_IDOC”. Here you can define an Overwrite-Exit which will replace the original method. So you can design your method as you wish - but it is important to keep in mind that the variables or methods could be changed with the next releases, so you might need to adapt your code to the new SAP design. This will be handled via SPAU in the update procedure.
Below there is a quick solution for the described business case. You can use the standard SAP code but add the following variable of type C and change the section for IDoc data record with the code below.
DATA: lv_qualforgid TYPE c length8.
IF lv_fieldcategory = 'D'.
ASSIGN COMPONENT 'IDOC_DATA'OFSTRUCTURE is_input_struct TO<lt_idoc_data>.
ASSIGN lv_psgnum TO<lv_psgnum>.
SPLIT lv_fieldname AT'-'INTOTABLE lt_fname.
lv_lines = LINES( lt_fname ).
lv_check = lv_lines - 1.
LOOPAT lt_fname ASSIGNING<fname>.
lv_tabix = sy-tabix.
IF<fname> = 'E1EDK14'.
LOOPAT<lt_idoc_data>ASSIGNING<ls_idoc_data>.
IF<ls_idoc_data>-sdata(3) = '008'.
lv_qualforgid = <ls_idoc_data>-sdata(8).
EXIT.
ENDIF.
ENDLOOP.
READTABLE<lt_idoc_data>WITHKEY('SEGNAM') = <fname>('PSGNUM') = <lv_psgnum>
('SDATA') = lv_qualforgid ASSIGNING<ls_idoc_data>.
IF sy-subrc = 0.
ASSIGN COMPONENT 'SEGNUM'OFSTRUCTURE<ls_idoc_data>TO<lv_psgnum>.
IF lv_tabix = lv_check.
TRY.
CREATEDATA cr_aif_structure TYPE(<fname>).
CATCH cx_sy_create_data_error.
RAISE EXCEPTION TYPE /aif/cx_inf_det_base
EXPORTING
textid = /aif/cx_inf_det_base=>type_not_found
typename = <fname>.
ENDTRY.
ASSIGN cr_aif_structure->* TO<ls_struc_data>.
CHECK sy-subrc = 0.
<ls_struc_data> = <ls_idoc_data>-sdata.
READTABLE lt_fname INDEX lv_lines ASSIGNING<lv_fname>.
ASSIGN COMPONENT <lv_fname>OFSTRUCTURE<ls_struc_data>TO<lv_field>.
<lv_value> = <lv_field>.
EXIT.
ENDIF.
ENDIF.
ELSE.
READTABLE<lt_idoc_data>WITHKEY('SEGNAM') = <fname>('PSGNUM') = <lv_psgnum>
ASSIGNING<ls_idoc_data>.
IF sy-subrc = 0.
ASSIGN COMPONENT 'SEGNUM'OFSTRUCTURE<ls_idoc_data>TO<lv_psgnum>.
IF lv_tabix = lv_check.
TRY.
CREATEDATA cr_aif_structure TYPE(<fname>).
CATCH cx_sy_create_data_error.
RAISE EXCEPTION TYPE /aif/cx_inf_det_base
EXPORTING
textid = /aif/cx_inf_det_base=>type_not_found
typename = <fname>.
ENDTRY.
ASSIGN cr_aif_structure->* TO<ls_struc_data>.
CHECK sy-subrc = 0.
<ls_struc_data> = <ls_idoc_data>-sdata.
READTABLE lt_fname INDEX lv_lines ASSIGNING<lv_fname>.
ASSIGN COMPONENT <lv_fname>OFSTRUCTURE<ls_struc_data>TO<lv_field>.
<lv_value> = <lv_field>.
EXIT.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
The code above represents a specific solution. This means that the data for ORGID will be selected from the position corresponding to the qualifier “008”, so that the criteria will be fulfilled and the message will be processed by the right interface.
This is one way to quickly solve the problem. A more general approach would be to use a combination qualifier-organization id as value for interface determination. In this way the flexibility will increase significantly without the need to change the code each time you use a different qualifier as the qualifier from which the organization id will be selected is defined by the user through a customizing step.
So based on the proposed solution a more standard and general code can be implemented in order to extend the possibilities of the IDoc interface determination even further.
Please send me updates or comments with your requirements in Interface Determination in order to make the monitoring in SAP AIF more powerful and add significantly great features in comparison to standard transactions like we02 or bd87.
Hello,
I'm trying to make use of AIF to monitor simple RFCs. I want to extend this to use all the advantages of AIF.
A function module was created on a remote machine, which can be successful called and fill an import parameter in my ABAP code.
I created a AIF Interface and a data structure, which is use as an export parameter for /aif/cl_enabler_xml=>transfer_to_aif.
Before I invoke the /aif/cl_enabler_xml=>transfer_to_aif, i fill the structure in my ABAP code.
With /AIF/IFMON i am able to observe when the program is called and can see the data which was passed.
Now I’m searching for a way to call the rest of the framework, before I call the remote function (May change one of my variable to a fixed value or do some data checks). Is it possible to do that with AIF or do I have to code it by myself?
Br,
Nikolaus
Hello Gurus,
Our current SAP - B2B situation is as follow:
One of our customer wanted to have only 1 integration platform, 1 transformation instead both SAP PI and Sterling Integrator.
Mostly they are preferring to get rid out of SAP PI and also they wanted to implement SAP AIF(Application Interface Framework) in their landscape.
Please suggest us the best approaches for the current proposal.
They would like to perform SAP Inb & Outb integration as follow:
And also suggest me whether usage of SAP AIF is possible or not without SAP PI.
As far as I know we can expose RFC/BAPI's as WSDL then provide to the Sterlking team as they can post the msgs over SOAP, not sure whether it'll work/how it will work with SAP AIF(without SAP PI).
Kindly suggest please...
As ever,
NageswaraRao