Compress SOAP sender messages
Hello experts,
I have a SOAP sender in place receiving 5MB messages from an external partner.
As the charge model with this partner is per mb transfered I am looking for a way to reduce these messages.
Does anyone know if there is a way to ask my partner to compress the messages? And at the same time XI needs to be able to read compressed that and follow the processing.
Thanks in advance,
Diego.
Hi Diego -
Does SOAPUI send the message in compressed format ? You can do a trace using TCPGW. Check the blog -
/people/stefan.grube/blog/2007/03/29/troubleshooting-soap-http-and-mail-adapter-scenarios-with-tcpgateway
Add the following parameter as well to the XISOAPAdapterBean in the Module Configuration tab of the SOAP adpter channel -
XMBWS.AcceptEncoding compress, gzip
Refer to the document -
http://www.sdn.sap.com/irj/scn/index?rid=/library/uuid/40611dd6-e66e-2910-f383-e80fb44f9cd4
Regards,
TK
Edited by: Sameej T.K. on Oct 18, 2010 8:17 PM
Similar Messages
-
Error while posting messages to SOAP sender adapter SP 13
Hi Friends,
I have configured a SOAP sender adapter in XI 3.0 and is using the URL
http://host:port/XISOAPAdapter/MessageServlet?channel=:BS_WEBSERVICE:CC_WEBSERVICE_SOAP to post the messages. When I open the URL in the browser I am getting the error.
Message Servlet is in Status ERROR
Status information:
Servlet com.sap.aii.af.mp.soap.web.MessageServlet (Version $Id: //tc/aii/30_VAL_REL/src/_adapters/_soap/java/com/sap/aii/af/mp/soap/web/MessageServlet.java#5 $) bound to /MessageServlet
Classname ModuleProcessor: null
Lookupname for localModuleProcessorLookupName: localejbs/ModuleProcessorBean
Lookupname for remoteModuleProcessorLookupName: null
ModuleProcessorClass not instantiated
ModuleProcessorLocal not instantiated
ModuleProcessorRemote not instantiated
But when I test the URL http://host:port/XISOAPAdapter/HelperServlet?action=FindChannel&channel=:BS_WEBSERVICE:CC_WEBSERVICE_SOAP to check the communication channel I am getting the right response as below.
<?xml version="1.0" ?>
<http://host:port/XISOAPAdapter/HelperServlet?action=FindChannel&channel=:BS_EBTR_WEBSERVICE:CC_EBTR_WEBSERVICE_SOAP> <s:ChannelInfo xmlns:s="http://sap.com/xi/WebService/xi30">
<channelID>e7ac884596ea3d088cbfd8b434f942f2</channelID>
<name>CC_WEBSERVICE_SOAP</name>
<type xmlns:st="http://sap.com/xi/XI/System">st:SOAP</type>
<direction>INBOUND</direction>
<party />
<service>BS_WEBSERVICE</service>
</s:ChannelInfo
I used the http capture to debug, In the 1st case though I am getting "Message Servlet in status error" I am seeing a 200 OK code in the http capture tool. When the message is posted from .net client proxy we are getting a 500 internal server error.
Am not sure what causes the error ? I saw two notes in SDN related to SOAP - J2EE SP13. We are in SP13. Is this the issue ? Wanted to know your opinion before applying the notes.
Thanks & Regards,
MathewABAP & Java stack was on different SP levels.
-
SOAP Receiver- Error While Sending Message: 500 Internal Server Error
Hello,
Our scenario: IDoc to SOAP
I have added a third party system in the SLD and have used the same in my ID configuration.
An idoc will be triggered from R/3, which will received in PI, PI will transform the IDoc into SOAP message for the third party system.
I have tested the scenario in ID from Interface Determination and its successful.
But when i try to try to test it from RWB, using Test Message in Adapter Engine, I get an error,
"Error while sending message:500 Internal server error"
If we test it using a testing software like SOAP UI, it works fine but from PI we get the error mentioned above.
Regards,
AbhishekHello,
Since the IDOC adapter resides on the ABAP stack, you can use this URL instead (it will be sent to the integration engine as Venkata suggested)
http://host:port/sap/xi/engine?type=entry
Also check your firewall settings from PI to the third-party system.
Hope this helps,
Mark
Edited by: Mark Dihiansan on Feb 7, 2012 11:48 AM -
Hi,
where can i adjust the timeout for:
exception on JaxRpc invoke: HTTP transport error: javax.xml.soap.SOAPException: java.security.PrivilegedActionException: javax.xml.soap.SOAPException: Message send failed: Connection timed out: connect
The webservice needs 5min to return a message....
I found a duplicate of this on thread:
error initiating a test instance
But no answer
Message was edited by:
HEWizardI found http://download-uk.oracle.com/docs/cd/B31017_01/integrate.1013/b28981/events.htm#BABGGADB
Setting Timeouts for Synchronous Processes
For synchronous processes that connect to a remote database, you must increase the syncMaxWaitTime timeout property in the SOA_Oracle_Home\bpel\domains\default\config\domain.xml file:
<property id="syncMaxWaitTime">
<name>Delivery result receiver maximum wait time</name>
<value>60000000</value>
<comment>
<![CDATA[The maximum time the process result receiver will wait for a
result before returning. Results from asynchronous BPEL processes are
retrieved synchronously via a receiver that will wait for a result from the
container.
<p/>
The default value is 60 seconds.]]>
</comment>
</property>
But this changes nothing...
Is this value ignored? -
SOAP Sender Channel _Error in handling SOAP Envelope message
Hi XI/PI Experts :
Scenario : SOAP (SOAP Envelope) to RFC (SAP ERP)
Partners send the information Goods Receipt in SOAP envelope webservice . SOAP Sender removes the SOAP enevlope, inturn sends only the xml in XI /PI:
<GoodsReceipt xmlns="rrn:org.xcbl:schemas/xcbl/v3_5/xcbl35.xsd" xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://www.w3.org/2003/05/soap-encoding">
But We have a certain condition which we applied in Interface determination for 2 Interface mapping of GR . The condition is the message process will take place between 2 IM's based on condition : GoodsReceipt/GoodsReceiptHeader/GoodsReceiptPurpose/Purpose/PurposeCoded =Orginal or Cancelled.
Thsi condition of XPATH causes an errror in SXMB_MONI as it is missing the namesspace after the GoodsReceipt xml tag
:xmlns="rrn:org.xcbl:schemas/xcbl/v3_5/xcbl35.xsd" xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://www.w3.org/2003/05/soap-encoding
Any idea to deal with the solution .Appreciate your inpit,
Note : Graphical mapping is used for Good's Receipt.
Best regards,
Varalakshmi
SAP XI/PI AnalystHave you selected the option Keep headers in sender SOAP adapter?
.To include the header of the Web service message in the XI message, select Keep Headers.
and also check if you have option NO SOAP Envolope is selected. -
Exception in sending message thru SOAP from java file to web service
Hi,
I am trying to invoke a web service from a java file.
But my code error out at particular statement where I am sending the message i.e. at
SOAPMessage reply = connection.call(message, destination);
The error message is
java.security.privilegedactionexception: javax.xml.soap.SOAPException: Message send failed: For Input string "".
I am using the wsdl link in destination variable-
String destination = "http://soad.xxxxxxxxxx.org:80/soa-infra/services/default/xxxxxx/xxxxxxx?WSDL";
Please help me with the solution.Guys, any ideas because this is driving me a bit insane...
If you have any alternative implementations I'm open to them but I'd like to know why isn't this working really...
Thanks and regards
Krt_Malta -
Hi,
I am testing a SOAP Sender Channel using a SOAP Client and getting the following error. I have read almost all the posts related to errors in SOAP Channel and also have checked my URL which is correct. AS mentioned in many of the posts, my url goes like
https://<host>:<port>/XISOAPAdapter/MessageServlet?channel=:DEMO:SOAP_s_GETLIST&version=3.0&SenderService=DEMO&interface=si_os_GETLIST&interfaceNamespace=<namespace>
This is the error that I get when sending a message to the interface
<SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP:Body>
<SOAP:Fault>
<faultcode>SOAP:Server</faultcode>
<faultstring>Server Error</faultstring>
<detail>
<s:SystemError xmlns:s="http://sap.com/xi/WebService/xi2.0">
<context>XIAdapter</context>
<code>ADAPTER.JAVA_EXCEPTION</code>
<text>com.sap.engine.interfaces.messaging.api.exception.MessagingException: com.sap.engine.interfaces.messaging.api.exception.MessagingException: XIProxy:PARSE_APPLICATION_DATA:
at com.sap.aii.adapter.soap.ejb.XISOAPAdapterBean.process(XISOAPAdapterBean.java:1041)
at sun.reflect.GeneratedMethodAccessor1044_10001.invoke(Unknown Source)*
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
</s:SystemError>
</detail>
</SOAP:Fault>
</SOAP:Body>
</SOAP:Envelope>
Has Anybody got this problem before? Is it any problem with the SOAP Adapter itself or with the data that is going in the message? If so, What is the possible solution for this?
Thanks,
Rashmi.Hi Rashmi,
I also think your problem is data related.
Check the response in your SAP PI message monitor (SXMB_MONI) when you trigger a request using SoapUI. It sometimes provides a bit more detail. You design (data types, message types, service interfaces etc.) was done in SAP PI 7 then an Abap Proxy was generated from the service interface?
Sometimes there is an issue between the XSD data type declaration in SAP PI and the conversion to Abap data types that takes place when a proxy is generated from a PI Service Interface.
Check the data that you pass in your request, especially those like datetime fields. Maybe even change some of the data type definitions (like datetime) to a string (request & response) & then test through SoapUI & see if you still get the error. Then you can work out how to best resolve it.
Best Regards, Trevor -
All -
I'm new to consuming web services in JDeveloper. I'm using Oracle JDEV 10.1.3.3/OC4J. I'm using this version since it is compatible with Oracle EBS 12.1.3. My intent is to pull data from our third party recruitment app (Success Factors) and load that data into Oracle HRIS. I'm already doing this through a .NET application. I'm converting it to be a Java Concurrent Program in EBS. The code listed below is a stub call to verify I'm on the right track. I created a JDeveloper Web Services proxy project. I'm testing it locally on my windows desktop. When I'm able to consume the service successfully, then I'll think about moving it to the EBS server.
I'm getting the following error when I invoke the following service:
HTTP transport error: javax.xml.soap.SOAPException: java.security.PrivilegedActionException: javax.xml.soap.SOAPException: Message send failed: String index out of range: -7
End point is: https://api4.successfactors.com/sfapi/v1/soap?wsdl
Any help/assistance would be much appreciated.
Below is my code and output of my test:
package emsc.oracle.apps.emscper.sfapi.proxy;
import HTTPClient.HTTPConnection;
import emsc.oracle.apps.emscper.sfapi.proxy.types.sfobject_sfapi_successfactors_com.IsValidSession;
import emsc.oracle.apps.emscper.sfapi.proxy.types.sfobject_sfapi_successfactors_com.IsValidSessionResponse;
import emsc.oracle.apps.emscper.sfapi.proxy.types.sfobject_sfapi_successfactors_com.Login;
import emsc.oracle.apps.emscper.sfapi.proxy.types.sfobject_sfapi_successfactors_com.LoginResponse;
import emsc.oracle.apps.emscper.sfapi.proxy.types.sfobject_sfapi_successfactors_com.LoginResult;
import emsc.oracle.apps.emscper.sfapi.proxy.types.sfobject_sfapi_successfactors_com.Logout;
import emsc.oracle.apps.emscper.sfapi.proxy.types.sfobject_sfapi_successfactors_com.LogoutResponse;
import emsc.oracle.apps.emscper.sfapi.proxy.types.sfobject_sfapi_successfactors_com.SFCredential;
import emsc.oracle.apps.emscper.sfapi.proxy.types.sfobject_sfapi_successfactors_com.SFParameter;
import emsc.oracle.apps.emscper.sfapi.proxy.types.sfobject_sfapi_successfactors_com.Error;
import java.io.File;
import javax.xml.rpc.ServiceFactory;
import java.util.ArrayList;
import java.util.List;
import java.util.Date;
import javax.xml.ws.BindingProvider;
import javax.xml.soap.SOAPException;
import java.util.Map;
import oracle.security.ssl.OracleSSLCredential;
public class SFAPITest {
// Declare members:
private String companyId;
private String userName;
private String password;
private String developerKey;
private Date effDt;
private String greaterThanEffDt;
private String lessThanEffDt;
// Declare constants:
final static private String breakLine = "+---------------------------------------------------------------------------+";
final static private String format = "yyyy-mm-dd";
private enum ReqId {
PrimaryReq(25),
PrimaryReqCEO(26),
EmCarePrimary(27),
RTI(28),
EmCareClinical(29);
private int reqId;
private ReqId() {
private ReqId(int value) {
reqId = value;
public int getReqId() {
return reqId;
// Getters and Setters:
protected String getCompanyId() {
return this.companyId;
protected void setCompanyId(String value) {
this.companyId = value;
protected String getUserName() {
return this.userName;
protected void setUserName(String value) {
this.userName = value;
protected String getPassword() {
return this.password;
protected void setPassword(String value) {
this.password = value;
protected String getDeveloperKey() {
return this.developerKey;
protected void setDeveloperKey(String value) {
this.developerKey = value;
protected Date getEffDt() {
return this.effDt;
protected void setEffDt(Date value) {
this.effDt = value;
protected String getGreaterThanEffDt() {
return this.greaterThanEffDt;
protected void setGreaterThanEffDt(String value) {
this.greaterThanEffDt = value;
protected String getLessThanEffDt() {
return this.lessThanEffDt;
protected void setLessThanEffDt(String value) {
this.lessThanEffDt = value;
public void runProgram()
SFAPIService mySFAPIService;
String CompletionText = "";
String effDtStr2 = null;
/* Code your program logic here.
* Use getJDBCConnection method to get the connection object for any
* JDBC operations.
* Use CpContext provided commit,rollback methods to commit/rollback
* data base transactions.
* Don't forget to release the connection before returning from this
* method.
/* Call setCompletion method to set the request completion status and
* completion text.
* Status values are ReqCompletion.NORMAL,ReqCompletion.WARNING,
* ReqCompletion.ERROR.
* Use Completion text message of length 240 characters. If it is more
* than 240 then full string will appear in log file and truncated 240
* characters will be used as request completion text.
try
ServiceFactory factory = ServiceFactory.newInstance();
mySFAPIService = (emsc.oracle.apps.emscper.sfapi.proxy.SFAPIService)factory.loadService(emsc.oracle.apps.emscper.sfapi.proxy.SFAPIService.class);
SFAPI api = mySFAPIService.getSFAPI();
/// SFAPI api = new SFAPI();
//Map<String, Object> requestContext = ((BindingProvider) api).getRequestContext();
//requestContext.put(BindingProvider.SESSION_MAINTAIN_PROPERTY, true);
System.out.println("ServiceName => " + mySFAPIService.getServiceName().toString());
System.out.println("End Point => " + mySFAPIService.getServiceName().toString());
System.out.println(breakLine);
// Authentication: Login to SFAPI:
SFCredential credential = new SFCredential();
// Fake credentials being passed in for this post:
credential.setCompanyId("XXX");
credential.setUsername("XXX");
credential.setPassword("XXX");
credential.setDeveloperKey("XXX");
HTTPConnection httpsConnection = null;
OracleSSLCredential _credential = new OracleSSLCredential();
_credential.setWallet("\\\\\\C:\\Program Files\\Java\\jdk1.6.0_33\\jre\\lib\\security", "ParkEstes3");
/*System.setProperty("javax.net.ssl.trustStore","C:\\\\\OraHome_1\\jdev\\jdevbin\\jdk\\jre\\lib\\security\\keystore");
System.setProperty("javax.net.ssl.trustStorePassword","changeit");
System.out.println(System.getProperty("javax.net.ssl.trustStore"));*/
// SFParameter: Define a generic SFParameter List. This is a necessary parameter
// to invoking calls in SFAPI:
/*System.setProperty("javax.net.ssl.keyStore",
"file:\\\C:\\jdk1.4.1\\jre\\lib\\security\\client.keystore");
System.setProperty("javax.net.ssl.keyStorePassword","welcome"); */
/* System.setProperty("oracle.net.wallet_location",
"(SOURCE=(METHOD=file)(METHOD_DATA=(DIRECTORY=\\\C:\Users\dparrish\Oracle\WALLETS)))"); // (2) */
File kstore = new File("C:\\OraHome_1\\jdev\\jdevbin\\jdk\\jre\\lib\\security\\jssecacerts");
boolean exists = kstore.exists();
if (!exists) {
System.out.println("Keystore does not exist");
else {
System.out.println("Keystore does exist");
System.setProperty("javax.net.ssl.trustStore", kstore.getAbsolutePath());
System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
//System.setProperty("proxySet", "false");
//System.setProperty("http.proxyHost", "127.0.0.1");
//System.setProperty("http.proxyPort", "8080");
System.out.println(kstore.getAbsolutePath());
List<SFParameter> lst = new ArrayList<SFParameter>();
SFParameter param = new SFParameter();
param.setName("");
param.setValue("");
lst.add(param);
SFParameter[] sfParam = lst.toArray(new SFParameter[lst.size()]);
Login login = new Login();
try {
login.setCredential(credential);
System.out.println("1");
login.setParam(sfParam);
System.out.println("2");
LoginResponse loginResponse = new LoginResponse();
LoginResult loginResult = new LoginResult();
try {
loginResponse = api.login(login);
catch (Exception e ) {
System.out.println(e.getMessage());
System.out.println("3");
try {
loginResult = loginResponse.getResult();
catch (Exception e ) {
System.out.println(e.getMessage());
System.out.println("4");
IsValidSession vs = new IsValidSession();
IsValidSessionResponse isValidSessionResponse = api.isValidSession(vs);
System.out.println("5");
if (isValidSessionResponse.isResult()) {
System.out.println("Session is valid");
System.out.println("Result => " + loginResult.getSessionId());
System.out.println(breakLine);
Logout logout = new Logout();
LogoutResponse logoutResponse = api.logout(logout);
if (logoutResponse.isResult()) {
System.out.println("Logout of SFAPI Successful");
else {
System.out.println("Logout of SFAPI Unsuccessful");
else {
System.out.println("Session is invalid");
List<Error> errors = new ArrayList<Error>();
for (int i = 0; i < loginResult.getError().length; i++) {
errors.add(loginResult.getError()[i]);
for (int i = 0; i < errors.size(); i++) {
System.out.println("Error Indice => " + i);
System.out.println("Error Code: => " + errors.get(i).getErrorCode());
System.out.println("Error Message: => " + errors.get(i).getErrorMessage());
System.out.println(breakLine);
} // end for loop of SFObject errors
} // end InvalidSession
catch (Exception e)
System.out.println("Session Credential Exception");
System.out.println("Exception => " + e.getMessage());
System.out.println(breakLine);
catch (Exception e)
System.out.println("Parameter List Exception");
System.out.println("Exception => " + e.getMessage());
System.out.println(breakLine);
} // end runProgram
// Constructor:
public SFAPITest() {
} // end constructor
public static void main (String args[]) {
try
SFAPITest test = new SFAPITest();
test.runProgram();
catch (Exception e) {
System.out.println("main exception => " + e.getMessage());
} // SFAPITest
Here is the output with trace:
WARNING: Unable to connect to URL: https://api4.successfactors.com:443/sfapi/v1/soap due to java.security.PrivilegedActionException: javax.xml.soap.SOAPException: Message send failed: String index out of range: -7
Session Credential Exception
Exception => ; nested exception is:
HTTP transport error: javax.xml.soap.SOAPException: java.security.PrivilegedActionException: javax.xml.soap.SOAPException: Message send failed: String index out of range: -7
+---------------------------------------------------------------------------+
Process exited with exit code 0.The other end is throwing back a programming error.
That might be because you are sending incorrect data and the other end fails to validate it.
You might be able to guess based on your C# code. But, since you are using soap one generic solution is available to you.
- Get an http proxy interceptor like wireshark.
- Run it while your C# app runs, collect the http requests from that.
- Run it while running your java code, collect the http requests from that.
Compare the two. -
How to send back the soap fault message without details tag to the sender
Hello Expert,
Is it possible to send the soap fault message(fault String element value) without details tag as shown below to the sender in synchrounous scenario.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<soapenv:Fault>
<faultcode>soapenv:Client</faultcode>
<faultstring>autorizarComprobanteRequest.comprobanteCAERequest.arrayOtrosTributos.otroTributo(1).codigo - El Código de Tributo es obligatorio.</faultstring>
<detail></detail>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>
I have to send the faultstring element value in one of the element in response message back to sender? Is it possible using BPM?The above fault response does not have a fault payload (no detail element) and would result in a system error message.So how to handle this?
If yes .Please tell me the BPM design
faultstring value will be dynamic.
Thanks in advanceThanks Yzanagi,
I have gone through the index.htm file.
In my scenario that is RFC -PI-soap(using http(Axis) protocol).when the webservice provider is sending the soap fault as.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<soapenv:Fault>
<faultcode>soapenv:Client</faultcode>
<faultstring>autorizarComprobanteRequest.comprobanteCAERequest.numeroComprobante - El Número de Comprobante debe ser mayor o igual a 1</faultstring>
<detail></detail>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>
In PI sxmb_moni it is converting to the error (system not application error)as shown below when using receiver soap adapter with https(Axis) transport protocol and Message protocol:Axis.
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
- <!-- Inbound Message
-->
- <SAP:Error SOAP:mustUnderstand="1" xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
<SAP:Category>XIAdapterFramework</SAP:Category>
<SAP:Code area="MESSAGE">GENERAL</SAP:Code>
<SAP:P1></SAP:P1>
<SAP:P2></SAP:P2>
<SAP:P3></SAP:P3>
<SAP:P4></SAP:P4>
<SAP:AdditionalText>com.sap.engine.interfaces.messaging.api.exception.MessagingException: autorizarComprobanteRequest.comprobanteCAERequest.numeroComprobante - El Número de Comprobante debe ser mayor o igual a 1.</SAP:AdditionalText>
<SAP:Stack></SAP:Stack>
<SAP:Retry>M</SAP:Retry>
</SAP:Error>
As my requirement was (I have mentioned in my first question) that I want to pass
SAP:AdditionalText tag
value back to sender in one of the elements of response message payload or handle using fault message mapping if this error could be converted to application error and map to the RFC exception but unfortunately which is not possible even using AXIS adapter.
so other option to inform the sender RFC is mentioned here http://help.sap.com/saphelp_nw70/helpdata/en/22/0425e0488911d189490000e829fbbd/content.htm
but while handling the SYSTEM_FAILURE exception from PI at sender in report program and displaying the msg variable ,I am not getting complete error message..It is getting truncated.Is there a limit to the no of character the msg variable contains which is set by system.Even if we declare msg variable with more length(for example char length 500) it is just displaying part of the error message from PI.
Any Idea to read complete system error message from PI in report program at RFC sender..
Kind Regards,
Kubra fatima -
How to re-use one SOAP Sender Channel for two different messages?
Hi!
I have an XI Proxy to SOAP Sync Scenario. 5 messages uses only 2 channels - cc_XI_Sender and cc_SOAP_Receiver. All messages comes from one Sender Channel and goes to one Receiver channel, and it works fine.
When I make the same for SOAP to XI Proxy Sync Scenario, I've got a problem. For example I have 2 different messages (mi_so_MSG_ONE and mi_so_MSG_TWO), so it works, if I had a two different sender channels (cc_SOAP_R1 and cc_SOAP_R2).
If I set the same Sender Channel in both Sender Agreements (cc_SOAP_R1), only one message (mi_so_MSG_ONE) goes without errors. When I send a second message (mi_so_MSG_TWO), in SXMB_MONI this message comes from Business System (BS_TEST) as message type one (mi_so_MSG_ONE), and then in stage of transformation in Interface Determination goes to message mapping program for other kind of messages (MM_MSG_ONE_to_XI_PROXY). And then - error in message mapping.
I try many URLs for both messages:
1) http://host:port/XISOAPAdapter/MessageServlet?channel=:BS_TEST:cc_SOAP_R1&version=3.0&Sender.Service=&Interface=
2) http://host:port/XISOAPAdapter/MessageServlet?channel=:BS_TEST:cc_SOAP_R1&version=3.0&Sender.Service=BS_TEST&Interface=*
3) http://host:port/XISOAPAdapter/MessageServlet?channel=:BS_TEST:cc_SOAP_R1&version=3.0&Sender.Service=BS_TEST&Interface=...MyNameSpace...mi_so_MSG_TWO
Message in payload:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!-- Inbound Message -->
<MSG_TWO xmlns="urn:xxx:yyy:MyNameSpace" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">... some fields... </MSG_TWO>
But in SOAP Header I see that is NOT second message!
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
< !-- Inbound Message -->
<SAP:Main>
<SAP:MessageClass>ApplicationMessage</SAP:MessageClass>
<SAP:ProcessingMode>synchronous</SAP:ProcessingMode>
<SAP:MessageId>93233F70-3E2F-11DF-8CD3-00237D301CD6</SAP:MessageId>
<SAP:TimeSent>2010-04-02T08:13:09Z</SAP:TimeSent>
<SAP:Sender>
<SAP:Service>BS_TEST</SAP:Service>
<SAP:Interface namespace="urn:xxx:yyy:MyNameSpace">mi_so_MSG_ONE</SAP:Interface>
</SAP:Sender>
<SAP:Interface namespace="urn:xxx:yyy:MyNameSpace">mi_so_MSG_ONE</SAP:Interface>
</SAP:Main>
Is it correct that many kinds of messages cannot goes through one Sender Channel ? If not... How can I reuse one SOAP Sender Channel for both this messages?
Thanks for helping.Thanks for answers!
It means a webservice application will be deployed and exposed in PI using the associated Message Interface and its namespace information in the SOAP Sender channel.
It means only one Sender Channel per one pair of names (name of Message Interface and name of namespace). And it will fail if I change something. And question is: why URL for sending SOAP message contains parameter "Interface"?
"backward compatibility" or "for future use only"?
Nothing happens when I change this parameter, seems that name of Interface comes from first of founded Sender Agreements.
If the structures are the same
No. Structures are different.
Making one structure per all SOAP incoming messages looks workable, but... looks strange (in fact I have a lot of SOAP messages, more than 100 Sender channels).
I found an information, that I can use one Sender channel per many messages with different structures only if I make this messages like different Operations in one Service Interface (in PI 7.1).
But in this case in list of messages in SXMB_MONI I will see only a one name of Service Interface for all my messages and it's not so comfortably for supporting: to take a name of operation that fails I need to goes inside.
In older version of XI (prior 7.1) using one sender channel per many messages allowed without any hints. -
hi am having this error when i click the submite button,am in jdeveloper 11.1.1.6.0
Messages for this page are listed below.
Error
javax.xml.soap.SOAPException: Message send failed: t4-2-dev-fmw01vm
Error
Message send failed: t4-2-dev-fmw01vm
Error
t4-2-dev-fmw01vm
<af:commandButton text="Submit" id="cb3"
action="#{pageFlowScope.InternalUserBean.onSaveRecord}">
</af:commandButton>
public void onSave(ActionEvent actionEvent) {
ADFUtil.invokeEL("#{bindings.Commit.execute}");
ADFUtil.invokeEL("#{bindings.start.execute}");
System.out.println("Deleted");
the log error is
Caused by: javax.xml.soap.SOAPException: javax.xml.soap.SOAPException: Message send failed: t4-2-dev-fmw01vm
at oracle.j2ee.ws.saaj.client.p2p.HttpSOAPConnection.call2(HttpSOAPConnection.java:231)
at oracle.j2ee.ws.common.transport.HttpTransport.transmit(HttpTransport.java:75)
at oracle.j2ee.ws.common.async.MessageSender.call(MessageSender.java:64)
at oracle.j2ee.ws.common.async.Transmitter.transmitSync(Transmitter.java:134)
at oracle.j2ee.ws.common.async.Transmitter.transmit(Transmitter.java:90)
at oracle.j2ee.ws.common.async.RequestorImpl.transmit(RequestorImpl.java:273)
at oracle.j2ee.ws.common.async.RequestorImpl.invoke(RequestorImpl.java:94)
at oracle.j2ee.ws.client.jaxws.DispatchImpl.invoke(DispatchImpl.java:811)
... 74 more
Caused by: javax.xml.soap.SOAPException: Message send failed: t4-2-dev-fmw01vm
at oracle.j2ee.ws.saaj.client.p2p.HttpSOAPConnection.post2(HttpSOAPConnection.java:520)
at oracle.j2ee.ws.saaj.client.p2p.HttpSOAPConnection$PrivilegedPost.run(HttpSOAPConnection.java:1264)
at java.security.AccessController.doPrivileged(Native Method)
at oracle.j2ee.ws.saaj.client.p2p.HttpSOAPConnection.call2(HttpSOAPConnection.java:229)
... 81 more
Caused by: java.net.UnknownHostException: t4-2-dev-fmw01vm
at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:850)
at java.net.InetAddress.getAddressFromNameService(InetAddress.java:1201)
at java.net.InetAddress.getAllByName0(InetAddress.java:1154)
at java.net.InetAddress.getAllByName(InetAddress.java:1084)
at java.net.InetAddress.getAllByName(InetAddress.java:1020)
at HTTPClient.HTTPConnection$11.run(HTTPConnection.java:3641)
at java.security.AccessController.doPrivileged(Native Method)
at HTTPClient.HTTPConnection.getSocket(HTTPConnection.java:3638)
at HTTPClient.HTTPConnection.doConnect(HTTPConnection.java:4477)
at HTTPClient.HTTPConnection.sendRequest(HTTPConnection.java:3409)
at HTTPClient.HttpOutputStream.closeImpl(HttpOutputStream.java:461)
at HTTPClient.HttpOutputStream.access$000(HttpOutputStream.java:99)
at HTTPClient.HttpOutputStream$1.run(HttpOutputStream.java:417)
at HTTPClient.HttpClientConfiguration.doAction(HttpClientConfiguration.java:698)
at HTTPClient.HttpOutputStream.close(HttpOutputStream.java:415)
at oracle.j2ee.ws.saaj.client.p2p.HttpSOAPConnection.sendMessage(HttpSOAPConnection.java:1062)
at oracle.j2ee.ws.saaj.client.p2p.HttpSOAPConnection.post2(HttpSOAPConnection.java:495)
... 84 more
<Utils> <buildFacesMessage> ADF: Adding the following JSF error message: javax.xml.soap.SOAPException: Message send failed: t4-2-dev-fmw01vm
javax.xml.ws.WebServiceException: javax.xml.soap.SOAPException: javax.xml.soap.SOAPException: Message send failed: t4-2-dev-fmw01vm
at oracle.j2ee.ws.client.jaxws.DispatchImpl.invoke(DispatchImpl.java:867)
at oracle.j2ee.ws.client.jaxws.OracleDispatchImpl.synchronousInvocationWithRetry(OracleDispatchImpl.java:235)
at oracle.j2ee.ws.client.jaxws.OracleDispatchImpl.invoke(OracleDispatchImpl.java:106)
at oracle.adf.model.connection.webservice.impl.SaajInteractionImpl.execute(SaajInteractionImpl.java:81)
at oracle.adfinternal.model.adapter.webservice.provider.soap.SOAPProvider.execute(SOAPProvider.java:327)
at oracle.adfinternal.model.adapter.webservice.WSDataControl.invokeOperation(WSDataControl.java:259)
at oracle.adf.model.bean.DCBeanDataControl.invokeMethod(DCBeanDataControl.java:432)
at oracle.adf.model.binding.DCInvokeMethod.callMethod(DCInvokeMethod.java:261)
at oracle.jbo.uicli.binding.JUCtrlActionBinding.doIt(JUCtrlActionBinding.java:1635)
at oracle.adf.model.binding.DCDataControl.invokeOperation(DCDataControl.java:2150)
at oracle.adf.model.bean.DCBeanDataControl.invokeOperation(DCBeanDataControl.java:469)
at oracle.adf.model.adapter.AdapterDCService.invokeOperation(AdapterDCService.java:313)
at oracle.jbo.uicli.binding.JUCtrlActionBinding.invoke(JUCtrlActionBinding.java:740)
at oracle.adf.controller.v2.lifecycle.PageLifecycleImpl.executeEvent(PageLifecycleImpl.java:402)
at oracle.adfinternal.view.faces.model.binding.FacesCtrlActionBinding._execute(FacesCtrlActionBinding.java:252)
at oracle.adfinternal.view.faces.model.binding.FacesCtrlActionBinding.execute(FacesCtrlActionBinding.java:210)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sun.el.parser.AstValue.invoke(Unknown Source)
at com.sun.el.MethodExpressionImpl.invoke(Unknown Source)
at view.ADFUtil.invokeEL(ADFUtil.java:22)
at view.ADFUtil.invokeEL(ADFUtil.java:14)
at view.InternalBean.onSaveRecord(InternalBean.java:59)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sun.el.parser.AstValue.invoke(Unknown Source)
at com.sun.el.MethodExpressionImpl.invoke(Unknown Source)
at org.apache.myfaces.trinidad.component.MethodExpressionMethodBinding.invoke(MethodExpressionMethodBinding.java:46)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
at org.apache.myfaces.trinidad.component.UIXCommand.broadcast(UIXCommand.java:190)
at oracle.adf.view.rich.component.fragment.UIXRegion.broadcast(UIXRegion.java:148)
at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl.broadcastEvents(LifecycleImpl.java:1018)
at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl._executePhase(LifecycleImpl.java:386)
at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:194)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at oracle.adf.model.servlet.ADFBindingFilter.doFilter(ADFBindingFilter.java:205)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at oracle.adfinternal.view.faces.webapp.rich.RegistrationFilter.doFilter(RegistrationFilter.java:106)
at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:446)
at oracle.adfinternal.view.faces.activedata.AdsFilter.doFilter(AdsFilter.java:60)
at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:446)
at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._doFilterImpl(TrinidadFilterImpl.java:271)
at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl.doFilter(TrinidadFilterImpl.java:177)
at org.apache.myfaces.trinidad.webapp.TrinidadFilter.doFilter(TrinidadFilter.java:92)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at oracle.security.jps.ee.http.JpsAbsFilter$1.run(JpsAbsFilter.java:119)
at java.security.AccessController.doPrivileged(Native Method)
at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:315)
at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:442)
at oracle.security.jps.ee.http.JpsAbsFilter.runJaasMode(JpsAbsFilter.java:103)
at oracle.security.jps.ee.http.JpsAbsFilter.doFilter(JpsAbsFilter.java:171)
at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:71)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at oracle.dms.servlet.DMSServletFilter.doFilter(DMSServletFilter.java:139)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3715)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:178)
Caused by: javax.xml.soap.SOAPException: javax.xml.soap.SOAPException: Message send failed: t4-2-dev-fmw01vm
at oracle.j2ee.ws.saaj.client.p2p.HttpSOAPConnection.call2(HttpSOAPConnection.java:231)
at oracle.j2ee.ws.common.transport.HttpTransport.transmit(HttpTransport.java:75)
at oracle.j2ee.ws.common.async.MessageSender.call(MessageSender.java:64)
at oracle.j2ee.ws.common.async.Transmitter.transmitSync(Transmitter.java:134)
at oracle.j2ee.ws.common.async.Transmitter.transmit(Transmitter.java:90)
at oracle.j2ee.ws.common.async.RequestorImpl.transmit(RequestorImpl.java:273)
at oracle.j2ee.ws.common.async.RequestorImpl.invoke(RequestorImpl.java:94)
at oracle.j2ee.ws.client.jaxws.DispatchImpl.invoke(DispatchImpl.java:811)
... 74 more
Caused by: javax.xml.soap.SOAPException: Message send failed: t4-2-dev-fmw01vm
at oracle.j2ee.ws.saaj.client.p2p.HttpSOAPConnection.post2(HttpSOAPConnection.java:520)
at oracle.j2ee.ws.saaj.client.p2p.HttpSOAPConnection$PrivilegedPost.run(HttpSOAPConnection.java:1264)
at java.security.AccessController.doPrivileged(Native Method)
at oracle.j2ee.ws.saaj.client.p2p.HttpSOAPConnection.call2(HttpSOAPConnection.java:229)
... 81 more
Caused by: java.net.UnknownHostException: t4-2-dev-fmw01vm
at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:850)
at java.net.InetAddress.getAddressFromNameService(InetAddress.java:1201)
at java.net.InetAddress.getAllByName0(InetAddress.java:1154)
at java.net.InetAddress.getAllByName(InetAddress.java:1084)
at java.net.InetAddress.getAllByName(InetAddress.java:1020)
at HTTPClient.HTTPConnection$11.run(HTTPConnection.java:3641)
at java.security.AccessController.doPrivileged(Native Method)
at HTTPClient.HTTPConnection.getSocket(HTTPConnection.java:3638)
at HTTPClient.HTTPConnection.doConnect(HTTPConnection.java:4477)
at HTTPClient.HTTPConnection.sendRequest(HTTPConnection.java:3409)
at HTTPClient.HttpOutputStream.closeImpl(HttpOutputStream.java:461)
at HTTPClient.HttpOutputStream.access$000(HttpOutputStream.java:99)
at HTTPClient.HttpOutputStream$1.run(HttpOutputStream.java:417)
at HTTPClient.HttpClientConfiguration.doAction(HttpClientConfiguration.java:698)
at HTTPClient.HttpOutputStream.close(HttpOutputStream.java:415)
at oracle.j2ee.ws.saaj.client.p2p.HttpSOAPConnection.sendMessage(HttpSOAPConnection.java:1062)
at oracle.j2ee.ws.saaj.client.p2p.HttpSOAPConnection.post2(HttpSOAPConnection.java:495)
... 84 more
the application is on the taskflowEdited by: adf009 on 2013/04/26 9:10 AMI found http://download-uk.oracle.com/docs/cd/B31017_01/integrate.1013/b28981/events.htm#BABGGADB
Setting Timeouts for Synchronous Processes
For synchronous processes that connect to a remote database, you must increase the syncMaxWaitTime timeout property in the SOA_Oracle_Home\bpel\domains\default\config\domain.xml file:
<property id="syncMaxWaitTime">
<name>Delivery result receiver maximum wait time</name>
<value>60000000</value>
<comment>
<![CDATA[The maximum time the process result receiver will wait for a
result before returning. Results from asynchronous BPEL processes are
retrieved synchronously via a receiver that will wait for a result from the
container.
<p/>
The default value is 60 seconds.]]>
</comment>
</property>
But this changes nothing...
Is this value ignored? -
Error while sending message to SOAP receiver
Hi ALL,
when i send message from the Service Regestry my interface is working,but when i coppy the same WSDL file in the Service registry in desktop and send message using AltovaSPY i am getting this error.
com.sap.aii.af.service.cpa.CPAException: com.sap.aii.af.service.cpa.impl.exception.CPALookupException: Couldn't retrieve inbound binding for the given P/S/A values
need u'r help.
thanks
Souz..Hi Dominic,
Looks like Cache is not got updated.
Go to SXI_CACHE and check whether it is green or not.If not refresh it.
Also refresh CPACache with PIDIRUSER or any user with similar roles.
to refresh use this URL : http://host:port/CPACache/refresh?mode=full
After this inactivate and activate ur CC.
If this wont work for u...then restart J2EE server.
Regds,
Pinangshuk. -
SOAP Sender Adapter Attachment Handling in Response message
Hi Experts,
I have a SOAP <> XI <> Proxy scenario where an external WS client sends a SOAP request and receives a SOAP response along with an attachment.
The problem is that the WS client is unable to retrieve the attachment from the SOAP response although the SXI_MONITOR shows both the payload and attachment beign sent out. In the SOAP sender I 'DO NOT' tick the 'Keep Attachment' parameter.
If I tick the 'Keep Attachment' parameter, then the payload and attachment both goes as attachment.
I need help in writing an adapter module which would ensure that the payload remains as the main payload and only the additional attachment goes out as an attachment.
Regards,
ShobhitHi Shobhit
You can refer this generic guide
How to create adapter modules for J2EE engine
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/3bdc14e1-0901-0010-b5a9-a01e29d75a6a
How-to create a web service with attachments (SOAP With Attachments)
How-to create a web service with attachments (SOAP With Attachments)
Rename Attachment Adapter Module
Rename Attachment Adapter Module
Hope this will help
Thanks
Gaurav -
Sending non-SOAP XML message without using JMS
Hi, I would like to build application to exchange non-SOAP XML message without using JSM. Could you please tell me which Java Technology that can help doing this? Thanks in advance
to be more specific, could you please tell me any open source jaxm-like that support non-SOAP XML?
-
Use of variable header XHeaderName1 in SOAP sender adapter
Hi all,
I have a doubt regarding the use of adapter-specific attributes in SOAP sender adapter. In specific:
the SOAP client should be able to pass a variable with the SOAP request (XHeaderName1 header variable) and this should be available in mapping (Dynamic configuration)
I've already checked the [help page|http://help.sap.com/saphelp_nw04/helpdata/en/fc/5ad93f130f9215e10000000a155106/frameset.htm] but it seems I'm doing something wrong.
I tried with those settings in SOAP adapter configuration:
Keep headers checked
XHeaderName1 = Test
I try to call the SOAP adapters in the following 2 ways, but none works (the value is not available in message mapping with Dynamic configuration)
1. Pass "Test" value xxxx in SOAP Header as a tag
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SOAP-ENV:Header>
*<Test>xxxx</Test>*
</SOAP-ENV:Header>
<SOAP-ENV:Body>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
2. Pass "Test" value xxxx in SOAP URL
http://host:50000/XISOAPAdapter/MessageServlet?channel=p:s:c&version=3.0&Sender.Service=...&Interface=...&Test=xxxx
Could anyone give me a hint about how to pass those values in the SOAP call and eventually the correct config. of SOAP sender ?
Thanks a lot,
ManuelHi Manuel,
Could you give a bit more detail on how you handled the SOAP message yourself.
I have a similar issue. I am consuming a non SAP Web Service which requires a non-standard token element to be passed back. I have created a an RFC sender to SOAP reciever scenario which works fine for the inital logon and returns the token it expects in the follow up messages.
At present I'm at a loss so your help would be much appreciated. We have got round the immediate issue by creating and sending the SOAP message directly from SAP WAS.
Could we use the XI Adapter and ABAP proxy in a similar way?
Thanks,
Tim J.
Maybe you are looking for
-
Hello every one... from where to start abap.
dear all i come to know that there is a minisap by which we can know about... from where i can get this free download how to instal mnisap & work as beginner in abap.... pls do reply me soon i am eagerly waithin for u r suggestion
-
Using auto exposure give the same settings for every picture
for some reason, aperture 3.0 has been giving me the same settings when using the auto exposure on raw files. i swear it wasn't that way when i first started using the program. regardless of the image, it always sets an exposure of 1.0 and a recovery
-
How much space left for the new System Restore Point(s) creation ??
Sir, MY LAPTOP : single OS, windows 7 sp1 , ultimate 64 , 2gb ram , 4ghz processor, kaspersky antivirus full, total hard disk 150gb, C: 38.9gb, 11.2 gb free space on C: , allocation for SR Points for C: 2.73gb (7%) PROBLEM:(SR Point: System Rest
-
Are there any good code examples for displaying preview images in the storefront?
I can gather other info using folio.xxx, but can not find any good examples to use for preview images. Tried folio.getPreviewImage() with no success. Oh, I should mention it is version 2. Plenty of examples for version 1. Perhaps if I get a little
-
Report on " commission of the sales department with sales representative"
Hi, Can any one help me out in developing a basic report on " commission for the sales department sorted by sales representative" Tell me which field Holds the commission value, and how sales department and sales representative are related. Kindly