ABAP Server Proxies
As part of Research & Development @ Satyam NetWeaver Labs, I was responsible for integrating Legacy system with SAP System using Inbound ABAP Proxies. ABAP Server(Inbound) Proxies enable adapterless integration with SAP Applications on WAS6.20 and above.A server Proxy(Inbound proxy) can be used to
- To implement a service that can be addressed by the SAP XI Integration Server
- To implement a service that can be called as a Web service
This blog describes the steps involved in Inbound/server Proxy Development.
Design Time:
- Necessary repository objects are developed during the design phase. The inbound Datatype and the corresponding message interface are shown below.
- Inbound proxy for the corresponding Inbound Message Interface is generated in the SAP System.
- Inbound ABAP proxy generates the following Objects:
- ABAP Interface ( ZII_EMPDETAILS_IN_MI)
- Structure for the message type in ABAP Data Dictionary (ZEMPDETAILS_MT).
- Structure for the data type in ABAP Data Dictionary (ZEMPDETAILS_DT).
An ABAP class is generated (if it does not already exists for the ABAP Interface that has been generated) which implements the interface ( ZII_EMPDETAILS_IN_MI). Below are the methods and parameters of the ABAP Class (ZCL_EMPDETAILS_IN_MI).
Below is the code snippet of ZII_EMPDETAILS_IN_MI~EXECUTE_ASYNCHRONOUS method. ZEMPMASTER is a function module that inserts the data into corresponding tables.
Note: Do not forget to activate the Objects that have been generated.
Configuration Time:
XI Uses XI Adapter to communicate to SAP System when the SAP System is implementing proxies. Below are the configuration parameters of XIAdapter.
This document will enable adapter less communication with WAS6.20 Systems and above.
Regards,
Michal
Regards
Thank you for this weblog, it is very useful.
However, I have the following remark; You mention in this weblog that by using proxies you do not need any adapter between XI and SAP ("This document will enable adapter less communication with WAS6.20 Systems and above."
).
At the same time you also explain in this document that between XI and the SAP system(Running on WEB AS 6.2x and up) an XI adapter has to be configured.
I am a bit confused now..Could you please explain this part? As far as I know communication between XI and proxies is done via native XI protocol (i.e. SOAP XI, so no need for any kind of adapter).
Thanks,
Roberto.
Adapters functionality is to handle the data transformations( to convert data from Source format to Target format). It also holds the login credentials of Target system.
When u come to "XIAdapter" (used in proxy communication), it does not do any data transformations ( XML format is retained). It has only the login credentials of external system.
As there are no Data transformations we term it as "adapterless" communication.
Cheers,
Siva Maranani.
If you dont mind, can I extend the discussion further? You have replied that, it is "Adapterless" because, it is having only logon credentials of external system. I think, this might not be the exact reason for that. Even for the RFC adapter or IDoc adapter, its the same. You are going to give only logon credentials of the system. Isnt it?
From,
Adithya K
XI Adapter is a special one. When adapter engine (in integration server) sees the receiver XI adapter in the configuration then XI-XML data coming from pipeline will be directed to the target application system (WEBAS >= 6.4) local integration engine without any conversion of the data by it. In order to send the XI-XML to the target definitely XI server needs the details of the target system which is what given in the XI configuration. That's it nothing converting.
Incase of IDOC or RFC also it requires all the details of the target system but as soon as adapter engine detects it is RFC OR IDOC it knows that target system expects XI-XML in IDOC OR RFC method call so it converts it and sends to the target system.
Hope I am clear.
Thanks
Krish
i am working on APABPROXY with help of your weblog. once the value fetched from XI Server i can seen the message in SXMB_MONI as processed Successfully. but the value doesn't update in R/3 Server. i don't know why so kindly help me.
Thank in advance.
I am also facing the same problem as Selva had faced. Have checked the RFC destination and seems to be working fine. In SXMB_MONI data is received at target message interface. I do not get test icon as well in SPROXY transaction in Business System. Also, am not able to monitor using SXMB_MONI in business system but can do in XI system. For Business system I have asked for the authorization for SXMB_MONI but its taking time. Can you please guide me on how to check and proceed?
Thanks a bunch for your help!!
Prashant Rajani
I have a question regarding the comm.channel parameters that you have given in your weblog.
You have used user id xisuper - I believe you have to give the logon parameters for the business system on which the server proxy is implemented , right ?
If that is the case, please clarify the values to be given in the path & service number parameters.
Your quick response to this is greatly appreciated.
Can you still include them ?
Thanks
ABAP server proxy created on the integration server. Problem scenario goes into error because it cannot find a receiver in XI for the interface instead of passing it to the local integration server.
Is it not possible on an XI instance to pass from the XI integration server to the local integration server ?
Thanks
I have a function module that populates the custom structure and calls the EXECUTE_ASYNCHRONOUS by passing the custom structure.
Do we want to handle any exception while calling the EXECUTE_ASYNCHRONOUS method ?.
Will there be a scenario where in EXECUTE_ASYNCHRONOUS would not be able to send the message to the CRM Inbound Queue ?
Thank you for your reply
IN THE BLOG YOU HAVE NOT GIVEN ANY GUIDANCE ABOUT HOW TO IMPLEMENT THE CLASS [ in Properties' tab -> 'implementing class' -> ABAP name : ZMETHOD_NAME - Double Click ]
PLEASE UPDATE YOUR BLOG AND MENTION WHERE TO WRITE THE CODE. OTHERWISE ITS BIT TOO CONFUSING FOR USERS.
Thanks,
We have a requirement like... Inside the server proxy i have to call the execute_asynchronous method of other client proxy... So when a Server proxy get triggered from XI it internally again calls a client proxy to send some other data back to the sender....
I am getting an error when i called the Execute_Asynchronous method of client proxy inside the server proxy... It is telling that in Execute_Asynchronous method of Server PRoxy
*The exception CX_AI_SYSTEM_FAULT is neither caught nor is it declared in the RAISING clause of "EXECUTE_ASYNCHRONOUS".
Could u please tell me how to solve this problem... Or a better way to do Proxy to PRoxy Bidirection data transfer through Asynchronous mode..
Hi Siva,<br/>I have implemented an inbound server proxy with all the steps mentioned in the blog, but when iam testing my scenario, I am getting the error:<br/><SAP:Category>XIServer</SAP:Category> <br/> <SAP:Code area="INTERNAL">CLIENT_SEND_FAILED</SAP:Code> <br/> <SAP:P1>500</SAP:P1> <br/> <SAP:P2>Internal Server Error</SAP:P2> <br/> <SAP:P3>(See attachment HTMLError for details)</SAP:P3> <br/> <SAP:P4 /> <br/> <SAP:AdditionalText /> <br/> <SAP:Stack>Error while sending by HTTP (error code: 500, error text: Internal Server Error) (See attachment HTMLError for details)</SAP:Stack> <br/> <SAP:Retry>A</SAP:Retry> <br/><br/>when i open the attached HTML error, Iam getting something like :<br/><br/>The URL http://PXECP400:8000/sap/xi/engine was not called due to an error. <br/>Note <br/><br/>The following error text was processed in the system EC6 : This browser is not supported <br/>The error occurred on the application server PXECP400_EC6_00 and in the work process 1 . <br/>The termination type was: ABORT_MESSAGE_STATE <br/>The ABAP call stack was: <br/>Function: ICF_ATTACH_ITS_PLUGIN of program SAPLHTTP_RUNTIME<br/>Method: EXECUTE_REQUEST of program CL_HTTP_SERVER================CP<br/>Function: HTTP_DISPATCH_REQUEST of program SAPLHTTP_RUNTIME<br/>Module: %_HTTP_START of program SAPMHTTP<br/><br/>Could u please tell me how to solve this problem<br/>
thanks
I generated the Proxy in GTS, But it is not making the entry in the table SPROXXSL Table for synchronous and it is happening for ashync. While testing i am getting the following error. Did you come accross this kind of error.
"DBIF_RSQL_INTERNAL_ERROR" " "
"CL_PROXY_STYLESHEET_UTILS=====CP" or "CL_PROXY_STYLESHEET_UTILS=====CM003"
"SAVE_TRANSFORMATION"
Please help me.
Regards
Ravi
Thank u