Configuring WCF-SAP for RFC Call
Hi,
I want help in configuring the WCF-SAP adapter in a receive port.
I have done configuration set like below:
But when SAP calls RFC then I am getting below error in application log:
Thanks, Girish R. Patil.
Examine the non-resumable message in your Group Box. It will reveal the Context Properties of the message from SAP that the Publish/Subscribe engine tried (and failed) to find a matching subscription for.
After examining the message, create an Orchestration and/or Send Port that subscribes to some of the Context Properties.
Also: Remember that if your subscriptions require message type or you have Map(s) on your Receive Port, you need to use the XMLReceive Pipeline and not the PassThruReceive.
Morten la Cour
Similar Messages
-
Which paramter configures the timeout for rfc call (to R/3 ) from BPM
hi froum,
i have a scenario, with BPM, in which theres a synchronous send to a rcf Function Module in R/3,
now, can u tell me which paramter decides the time out for this Sync call to rfc enabled Function Module in R/3,
i mean which paramater in SXMB_ADM or anywhere else that dictates the time periodCheck this out, RFC adapter section
/people/michal.krawczyk2/blog/2006/06/08/xi-timeouts-timeouts-timeouts
Regards,
Prateek -
Question on service userid - for RFC call
Hi
In XI 3.0 SP18 , we are making a RFC call from XI mapping runtime - to XI's ABAP stack - RFC function module . In the RFC receiver communication channel , I tried using service user XIISUSER , XIAPPLUSER for this RFC call - I got short dumps on XI ABAP stack mentioning that these two service users do not have authorization to make RFC calls -
Does anybody out there know what service user on XI has RFC call authorization that can used to make RFC calls onto XI ABAP stack from its mapping runtime ?
Correct answers will be rewarded rightaway. Thanks for your time in advance.Hi,
u have to make entry in sld...
Hi,,
2 Introduction
Configuring IDoc adapter in Exchange Infrastructure 3.0 requires some configuration on the SAP
systems, for both XI and the backend system where the IDoc message is to be sent. These steps, although
simple, are many times missed or mis-configured, causing the delivery of messages to fail.
Since IDoc adapter uses the ABAP stack, instead of J2EE, the configuration requirements are mainly in
ABAP.
Setting up IDoc adapters requires the XI integration server to be able to communicate with the backend
SAP system, and also to make sure that the Logical System Name used when posting IDoc exists on the
backend SAP system.
3 The Step By Step Solution
The basic steps for the IDoc configuration are outline below:
1. Configure SM59 on XI to communicate to SAP backend system.
2. Configure port on XI for IDoc communication.
3. Create or verify the Logical System Name on the SAP backend system.
4. Create or verify business system in XIs System Landscape Directory.
5. Verify the Logical System Name of the business system.
6. Verify or add the Logical System Name for the sender business system.
7. Create/configure the Communication Channel for the IDoc receiver adapter
3.1 Configure SM59 on XI to communicate to SAP backend system.
1. Using transaction SM59, create an RFC destination with Connection Type = 3.
In this example, the RFC destination name is NDVCLNT510.
2. Enter the logon information:
3. Test the connection by clicking on Testing connection and Remote logon.
Both must be successful.
3.2 Configure port on XI for IDoc communication.
4. Go to transaction IDX1 on XI, and create a port. In this example, the Port name is SAPNDV.
The Port name must be in the form of SAPxxx, where xxx is the system ID of the backend SAP
system.
The Client must be the client number of the backend SAP system.
Select the RFC Destination which was created in the previous step.
3.3 Create or verify the Logical System Name on the SAP backend system.
5. Enter transaction SALE on the SAP backend system.
6. Create or verify the Logical System Name. In our example, NDVCLNT510 is verified.
3.4 Create or verify business system in XIs System Landscape Directory.
The business system name for the SAP backend system must contain a valid Logical System Name. This Logical System Name is the one verified or created in the previous step.
7. In the System Landscape Directory, select the SAP backend business system. If one does not exist, then create the business system. Verify the Logical System Name.
3.5 Verify the Logical System Name of the business system.
8. In the Integration Directory, doubleclick on the business system (in our example, it is NDVCLNT510).
Navigate the menu:
Service Adapter Specific Identifiers.
If information is empty or incorrect, then it will have to be synchronized with the content of the System Landscape Directory. Follow the steps below for synchronization.
9. (Optional) Synchronization of the business system in Integration Directory to the business system in System
Landscape Directory.
Double-click on the business system in the Integration Directory.
Switch to Edit mode.
Select menu: Service Adapter-Specific Identifiers
10. (Optional) Within the dialog box, click on the button as indicated below to resynchronize.
11. (Optional) If the expected data from the System Landscape Directory is not updated, then the SLD cache may need to be cleared first.
3.7 Create/configure the Communication Channel for the IDoc receiver adapter.
15. In the Integration Directory, create an IDoc receiver communication channel.
The RFC Destination is from step 3.1.
The Port is from step 3.2.
NOTE:
There is no need to create an IDoc sender Communication Channel for XI. Instead, the backend SAP system must be configure to send the IDoc to XI.
4 Appendix
Transaction: IDX2
There are a couple of situation where IDX2 can be useful on the XI system.
1. When we want to test connection between the XI and SAP backend system.
2. When an IDoc has changed, and the meta data stored in XI needs to be update. When an IDoc is sent from the SAP backend system to XI, XI will first check to see if the meta data for the IDoc is already in its persistent cache. If not, then XI will use the configuration in IDX1 to retrieve the IDoc meta data from the backend system. If the
meta is already in cache, then it will NOT do so. Therefore, when an IDoc has changed, it is necessary to manually update the new meta data on XI, or delete it from the cache, so that the latest version can be retrieved. IDX2 is used for this purpose.
Go to transaction IDX2 and click on Create.
Enter the IDoc Type and the Source Port as defined in step #2. Click Continue.If successful, the following will show up. If error occurs, then the IDX1 configurations will need to be re-checked.
Reward points if find useful. -
Hi All,
Can we have use different user IDs to make RFC calls to SAP? Do we have option to call RFC using different users like DEV1, DEV2 etc which is specific to the user logging in to MII. This is required to maintain the change history record while posting data back to SAP
As per the current set up its always user which is configured in SAP server editor in MII, makes the change in SAP.
Any input is appreciable
Thanks in advance
NamitaAjay,
It is like passing any other parameter to your BLS.
For example :
1.In your BLT, create 2 trx params
UserName,Password.
In your Jco Action Block assign these params in the Links Tab of the action.
2. Create a xAcute Query Template wrapping this BLS transaction.Set Param1 as UserName and Param2 as Password.
3. Now in your frontpage screen, create an iCommand applet wrapping the above xAcute Query Template.
4. In your screen have 2 input fields to enter username and password.
In the "OnClick()" event, use the setParam() method to set the values from the Input fields.
Hope this helps. I do not have the resources to give you the code but i think this should work. Let me know if this helps,
Thanks,
Ram -
Login information for RFC call
Hi there,
I would like to know if there is a way to authenticate a user via bsp and get that login information to make the RFC call to different systems.
i tried the to call an FM via RFC directly from abap and it forces me to login and it works but when i put that code to bsp. I just get a "page cannot be displayed" error.
I know i can enter an ID and password on sm59 for the connection but i need to let the user login
I am using this for a user creation tool.. instead of using su01 to create a user it will be done via bsp and would like to reflect the changes done when running the reports from SUIM
thanks in advance
RyanHi Ryan,
I will assume your RFC Destination already trusted system and using current user logon (see my previous reply).
However this still prerequisite for the next step.
Now, please correct me if my understanding is wrong.
In your reply, you have at least 2 System, right?
S1 & S2.
Where S1 has BSP Application (Ex:/ FormRegistration)
And S2 is where you control the user and Function Module.
Do you put, generic user for all BSP Service in System S1?
You can create another BSP Application in System S1 (Ex:/ CallingFM)
but this time don't put default user in BSP Service.
And from BSP Application FormRegistration, you create 1 button to call the BSP Application CallingFM.
I will give you sample code:
FormRegistration: address:http://systemS1.sap.com/FormRegistration/page1.htm
HTML Part:
===========
<HTML>
<input type="button" value="Register the user" onclick="submitUser();">
<script>
function submitUser(){
document.forms[0].action = 'http://systemS1.sap.com/CallingFM/page1.htm';
document.forms[0].target = '_new';
//it will open new window, just put it empty if you don't want to open new window.
document.forms[0].submit();
</script>
</HTML>
Now, when user click Button "Register the user" it will open the new window.
But because it doesn't allow you to using default user, it will prompt user id and password.
After that it will submit the data to CallingFM
Now in CallingFM we already have the sy-uname = user-B.
CallingFM: address-> http://systemS1.sap.com/CallingFM/page1.htm
OnInputProcessing Part:
=================
call function 'zcreate_user' destination 'S2'
Why you need CallingFM BSP application? because you need to re-assign sy-uname in S1 from default user with user-B ID, and use it to connect to System S2, S3, etc.
Please note: SM59 and User Id must be set before this.
Because when you call RFC from other destination, SAP will refer to Logon setting in SM59 for that destination.
Hope this will help you. -
'Classic' RFC library - password limited for rfc calls ?
Hi ,
we are using the 'classic' RFC library to connect to SAP for calling RFC function modules. Due to the fact that there are often older SAP systems involed, we use only passwords with 8 digits. But now we have the requirement to use passwords for the rfc user with more than 8 digits. According to my todays knowlede, the password is limited to 8 digits with the standard rfc lib.
Can the newer SAP NW RFC lib handle a password with more than 8 digits ?
But am i right that the SAPNW RFC lib is unable to handle rfc calls with opening a SAPGUI ?
thx
HeikeHi,
thank you for your answer!
I have investigated something new yesterday:
I thought at the beginning, that the problem just occurs, when the system work processes are reached. The system has for example set up 15 dialog processes and the external server is calling the function 20 times in parallel. Then we normally need 5 dialog processes more. The system is taking then all 15 dialog processes and the locks got stucked.
That means, that I´ll maybe only get 4 or 5 uploads, which have really been updated the tables. All the others couldn´t get the table locked for their process.
But if I now let the server call the function just about 13 times in parallel, nearly all uploads have been updated the table!
From my point of view, the lock from SAP gets stucked, when the limit of dialog processes is reached. It´s not working in the right way anymore...
The same is happening, when you set up in the system, that only 10 work proecesses can be used by RFC. If I have more than 10, it´s going to be critical with the locks....
WEIRD!
Can anybody help me out of trouble?
Thank you! -
XML pay load for RFC call in java mapping
Hi,
I searched in many forums about the payload to be given for RFC Lookup from a functional module,but i think i am not able to get it correct.
Can any one please give me the exact structure of XML Payload to be sent while invoking the function module via RFC LOOKUP
Say i have 2 import parameters(input1,input2) and one output(output1)......
Thanks in advance,
H.L.Babu>
hlbabu123 wrote:
> Hi,
> I searched in many forums about the payload to be given for RFC Lookup from a functional module,but i think i am not able to get it correct.
>
> Can any one please give me the exact structure of XML Payload to be sent while invoking the function module via RFC LOOKUP
>
> Say i have 2 import parameters(input1,input2) and one output(output1)......
>
> Thanks in advance,
> H.L.Babu
have a look at this document - https://www.sdn.sap.com/irj/scn/index?rid=/library/uuid/a03e7b02-eea4-2910-089f-8214c6d1b439&overridelayout=true
in case u still have issues do get back -
Best approach for RFC call from Adapter module
What is the best approach for making a RFC call from a <b>reciever</b> file adapter module?
1. JCo
2. Is it possible to make use of MappingLookupAPI classes to achieve this or those run in the mapping runtime environment only?
3. Any other way?
Has anybody ever tried this? Any pointers????
Regards,
AmolHi ,
The JCo lookup is internally the same as the Jco call. the only difference being you are not hardcoding the system related data in the code. So its easier to maintain during transportation.
Also the JCO lookup code is more readable.
Regards
Vijaya -
Hi all,
Is there any specific role, that should be assigned to the USER, so that he can make RFC calls to BAPIs.
Or by default any USER can make the RFC calls to the BAPIs. For example, I am writing a Java/JCO appliation to call BAPIS. The current user I am using has all the permissions (I guess).
Thanks,
Nagarjuna.Your basis admin should be able to tell you. I know that it would be included in SAPALL. I can't really say, because it can very from system to system.
Regarsds,
Rich Heilman -
Message mapping transformation error for RFC calls
Hi,
I am having a weird problem. recently client migrated the server and we started getting all possible errors in XI which we are able to fix. Now we have a strange problem in quality system alone where the bapi calls are made from QA11 and MIGO. The bapi call from MIGO is sucessfull but from QA11 it fails with below error
com.sap.aii.utilxi.misc.api.BaseRuntimeException
thrown during application mapping
com/sap/xi/tf/_MP_RFC_PROXY_GOODS_RECEIPT_:
RuntimeException in Message-Mapping transformatio~
I checked in development system and production where it is sucessfull but in quality its failing. I checked the cache and refreshed for confirmation and checked the trace and log files but couldt find any solution. The call made from a test report is also sucesfull but only bapi calls from QA11 are failing.
Note: i am using same bapi in MIGO and QA11 and the integration is same as well. There is no difference in data between 2 transaction just the trigerring point is differenct.
I tested my message mapping, interface mapping and configuration as well with sample payload and they are working fine.
I checked SDN and saw that similar issue is faced by others but no solution is provided.
Regards,
Jayaram
Edited by: JAYARAM MAGANTI on Jun 9, 2009 1:14 PMHi all,
Has anyone ever faced this issue?
i tried all the options that i think of and as a last attempt even restarted XI engine though it makes no sense. but still i am having the same issue.
If anyone had come across similar kindly update the solution
Jayaram -
Target system(Destination) for RFC call ?
Need some help in calling an RFC for xi interface.
For triggering the data in to xi , RFC needs to be called. This RFC can be called using an ABAP Program / report . BUT inorder to call that RFC a Destination / Target system needs to be defined . Even though RFC destinations can be managed by transaction SM59 what will be the target system for calling this RFC in a generic sense?
Like what destination i should be expecting this code : ?
REPORT Z_TEST.
CALL FUNCTION 'ZFunctest' destination ????
Please suggest
KrishnaYes i now understand the scenario : well is this statment correct ?
When we say like this :
CALL Function 'ZTEST' Destination SIDCLNT015
does this mean ZTEST should be there in destination system ? which means the RFC i am writing should be there on xi systems whose system id is SID ?
As i heard some where that ZTEST should be there on targetsystem i call for ?
Please suggest
Krishna -
A problem about configuring an endpoint for RFC in GP
Hi, All.
I tried to implement a RFC CO in my gp process.
So I have to configure the endpoint in GP.
When I configured it , I got an error messag
"Error occurred while trying to connect: A client allocated from pool 660ALEREMOTEENgwmis-PUBLICsaphrdHRD100 cannot be disconnected directly. Please, use JCO.releaseClient(JCO.Client) instead".
Can anyone do me a favor to tell me how can I deal with this?
Thanks a lot.Hello Dai,
you only have to (eventually) change the config.xml when you upgrade the Workflow engine. So if you install the workflow for the first time there is no need to change.
If you have to change it and the "Edit workflow configuration file" is not working properly (In my case it is working?!) you could edit the config file manually. This file can be found in the Workflow dir (standard path is: "Program FilesSAPIdMworkflowconfigs"). I
In my case the config.xml looks like that:
Regarding your second question. If you follow the installation guide everything should work fine.
I hope I could help you.
BR
Jörn Kaplan -
Packing how do u configure in sap for any material
Pls let me know
1.The process of packing for any material in sap
2.If a project is going live on 1/06/07 and if delivery , billing takes place in the legacy system on 30 and 31/05/07 how do u activiate it in the prod system
3.what is the exact role of migo and miro process in third party salesProcess of packing
Path: IMGLogestics executionshipping--packing
1) Define Number ranges for Handling Units
Here we define the number ranges for packing the units.
2) Packing control by item categories:
Here we define if the items categories that we use can be packed or not.
3) Define requirements for Packing in the delivery
Here the requirement for packing is set. We are using std requirement. We can create our own requirement for example saying that the packing is not possible if credit block exists.
4) Define packing materials
Here we define the packing materials that we use. the material master for materials must be created and the material type is VERP. In the sales: general/ plant view in packing material data the corresponding packing material has to be enterd in the packing material type field. Ex: you create packing material Z003 and call it wooden box, then you must enter Z003 in the material masters sales: general plant view in the packing material type field.
5) Define material group for packing material
This group has to be mentioned in the material master of all the materials that have to be packed. Ex You define a material group grp1, then you must mention this in the material master sales: general plant view in the packing mat grp pack matls field.
6) Define Allowed Packaging Materials
Here we define all the materials that are allowed for packing along with the respective mat group. Ex: You have created three packing materials (step 4)
a) z001: Plastic trays
b) z002: corrugated box
c) z003: wooden box
you have also created a packing material group grp1 (step 5)
Now you must assign z001, z002, and z003 to the packing group grp1 -
Where used for RFC calls to different system
Hi,
I want to change the interface of a function module which exists in our XI system.
The function is called from R/3 in different places and hence will need to be changed in each location.
Is there an easy way of determining all the different calling points?
The only way I can see would be to run a text search utility against the code.
Thanks,
AlanYou cannot user SE37 and whereused list for this. due RFC available in XI and you need to check for R/3 for whereused points
Try to run the program RS_ABAP_SOURCE_SCAN and in the search string put your function module name and execute
( if it is a custom function module search. in the search pattern use all custom package names)
a®s
Edited by: a®s on Jul 14, 2008 9:24 AM -
Why poor WCF performance for first calls?
I'm seeing some weird WCF call timings that I can't explain, and it is causing some real issues in my application. My WCF service calls seem to be taking hundreds of milliseconds if not seconds longer than they should.
I've set up a simple SL5 project hosted in a web app project just to reduce the variables, and I still see terrible timings.
I've got a very simple WCF service call, and I'm using ClientBase to instantiate the service instance, then I'm calling the service in a tight loop 30 times (asynchronously).
The problem is that the first handful of calls take extremely long, according to the IE F12 tools. I'm seeing network times of between 500ms and 2000ms. After that, all of the service call times drop down below 100 ms. The problem for me is that,
when I am just calling the service once in an application, I am seeing these initial delays, meaning every time I call the service it tends to take a really long time. I only did the tight loop test to see if things get better over time, which they do.
I would imagine it is doing something like establishing the initial channels, and that is what is taking the hit, and then calls after that just reuse them, but is there anyway to reduce that initial hit? Adding tons of extra time to each of my
calls in the real app is killing my performance.
Here is a screenshot of F12 with the call results. You can see the first bunch of calls take an extremely long time, then everything gets nice and quick after:
Here is the calling code in the test app:
Private Sub TestWcfClientBase()
Dim client = ServicesCommon.GetService()
client.Proxy.BeginGetCurrentUser((AddressOf OnGetUserCompletedCommon), Nothing)
End Sub
Public Shared Function GetService() As ServiceClient(Of IServiceAsync)
Dim service As New ServiceClient(Of IServiceAsync)("IServiceAsyncEndpoint")
Return service
End Function
Public Class ServiceClient(Of T As Class)
Inherits ClientBase(Of T)
Implements IDisposable
Private _disposed As Boolean = False
Public Sub New()
MyBase.New(GetType(T).FullName)
End Sub
Public Sub New(endpointConfigurationName As String)
MyBase.New(endpointConfigurationName)
End Sub
Public ReadOnly Property Proxy() As T
Get
Return Me.Channel
End Get
End Property
Protected Sub Dispose() Implements IDisposable.Dispose
If Me.State = CommunicationState.Faulted Then
MyBase.Abort()
Else
Try
Catch
End Try
End If
End Sub
End Class
The client config is as follows:
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding
name="NoSecurity"
closeTimeout="00:10:00"
openTimeout="00:01:00"
receiveTimeout="00:10:00"
sendTimeout="00:10:00"
maxBufferSize="2147483647"
maxReceivedMessageSize="2147483647"
textEncoding="utf-8">
<security mode="None" />
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint
name="IServiceAsyncEndpoint"
address="http://localhost/TestService.svc"
binding="basicHttpBinding"
bindingConfiguration="NoSecurity"
contract="Services.Interfaces.IServiceAsync" />
</client>
</system.serviceModel>
Here is the stripped down service code:
<AspNetCompatibilityRequirements(RequirementsMode:=AspNetCompatibilityRequirementsMode.Allowed)>
<ServiceBehavior(InstanceContextMode:=InstanceContextMode.PerCall)>
Public Class TestProxy
Implements IServiceAsync
Public Function GetCurrentUser() As WebUser Implements IServiceAsync.GetCurrentUser
Dim user As New WebUser
With user
.User_Name = "TestUser"
End With
Return user
End Function
End Class
And here is the service config:
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true"/>
<bindings>
<basicHttpBinding>
<binding name="NoSecurity" closeTimeout="00:10:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:10:00" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" textEncoding="utf-8">
<readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="4096" maxNameTableCharCount="16384"/>
</binding>
</basicHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="TestProxyServiceBehavior">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="TestProxyServiceBehavior" name="TestProxy">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="NoSecurity" contract="Services.Interfaces.IService" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
</services>
</system.serviceModel>Hi ChrisMikeC,
Based on your description and config file, it seems that you host your WCF Service in IIS and you try to consume this WCF Service in a SL5 project, if I do not misunderstand you, in my mind when we are hosting our WCF service in IIS, there is a high
cost for the first call. On the first call to our WCF service, IIS must compile our service. Then IIS must construct and start the service host, so it will be slow in the first call. For more information about how to improve the time for the first call, please
try to refer to
this article. Meanwhile please try to host your WCF Service in Windows Activation Services or Windows Service in where you will have greater control on the service host startup.
Besides, since your SL5 project hosted in a web app, then in my mind ASP.NET applications always takes longer in first call because it includes JIT compilation step, and ocne the code is compiled, all the calls thereafter are faster than first one, so please
try to use the Console application or a Windows Forms appliction to test if the time can be slow down.
Best Regards,
Amy Peng
We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
Click
HERE to participate the survey.
Maybe you are looking for
-
Can't open project saved in iDVD4 on new Mac with iDVD 7.02
I used iDVD 4 (in OS 10.4) a great deal but recently upgraded my Mac to Leopard on a Mac Pro. I have now iLife08 installed with iDVD 7.02. When I try to open an old iDVD project file I get the following error message: "Changing the TV standard will r
-
Multi-Mapping Error after copying into new namespace
Hi everybody, we got a BPM running using a multi-mapping. We decided to design new namespaces. After copying every IR object (datatype, message-type, mappings etc.) --> SXMB_MONI shows a mapping-error. But when I take the payload and test the mapping
-
How do I save my copy of Lion?
Once I download my Lion update, how do I save it for future re-install? M
-
Firefox no longer displays the buttons for Adobe functions when I open a webpage with an pdf on it (e.g. a URL that ends in pdf)/ There's no way for me to download them to my laptop. The old version of Firefox automatically showed those buttons. I ca
-
Metadata template created in Bridge can't change "Copyright Status" property
If I create a metadata template in Bridge CS4, select Copyright Status and set it to Copyrighted, any other metadata changes in the template will be applied, but "Copyright Status won't change. I can't even manually set the Copyright Status from with