SOAP ACTION IN SOAP ADAPTER and PROGRAM  IF IN RFC COMMUNICATION CHANNEL

Hi Gurus,
Please Explain me what is SOAP action in soap adapter what is the use of it.
What is the Program ID in the RFC communication channel and what is the use of it.
Please tell me in  Detail.
Thanks and Regards,
RAM.

Hi,
Please Explain me what is SOAP action in soap adapter what is the use of it.
As of W3C definition:
The SOAPAction HTTP request header field can be used to indicate the intent of the SOAP HTTP request. The value is a URI identifying the intent. SOAP places no restrictions on the format or specificity of the URI or that it is resolvable. An HTTP client MUST use this header field when issuing a SOAP HTTP Request.
The presence and content of the SOAPAction header field can be used by servers such as firewalls to appropriately filter SOAP request messages in HTTP. The header field value of empty string ("") means that the intent of the SOAP message is provided by the HTTP Request-URI. No value means that there is no indication of the intent of the message.
Putting things simple, this is an identifier of an operation that you want to execute in the web service (as one web service can offer multiple actions).
What is the Program ID in the RFC communication channel and what is the use of it.
Again, this is an identifier for both: RFC sender and receiver systems. It tells the receiver where to listen for connections, and the sender - where to send the data. It works a little bit like a port number in HTTP communication, but with less restrictions.
Hope this helps,
Greg

Similar Messages

  • What must be the SOAP Action for Soap Receiver?

    Hi,
    Below is part of wsdl file. I'm using mtd1 method in it.
    This is an Axis generated wsdl.
    part of wsdl
    <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://schemas.xx.com/yy/Wsdl">
       <wsdl:types>
          <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:acbase="http://schemas.xx.com/yyTypes" targetNamespace="http://schemas.xx.com/yy/Types" elementFormDefault="qualified">
    What must be the SOAP Action for SOAP Receiver?
    Thanks

    >
    Cemil Bozlagan wrote:
    > Hi,
    > Below is part of wsdl file. I'm using mtd1 method in it.
    > This is an Axis generated wsdl.
    >
    >
    > part of wsdl
    > <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://schemas.xx.com/yy/Wsdl">
    >    <wsdl:types>
    >       <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:acbase="http://schemas.xx.com/yyTypes" targetNamespace="http://schemas.xx.com/yy/Types" elementFormDefault="qualified">
    > ....
    > ....
    >
    >
    > What must be the SOAP Action for SOAP Receiver?
    >
    > Thanks
    find you answer here - /people/shabarish.vijayakumar/blog/2008/01/08/troubleshooting--rfc-and-soap-scenarios-updated-on-20042009

  • Multiple SOAP Actions in SOAP Receiver - PI 7.1

    Is it possible to handle multiple SOAP Actions in SOAP Receiver Communication Channel in PI 7.1 ???
    Plz help ....
    Neena

    How can I handle two SOAP operations without BPM ?
    In first Action I will get an ID,
    WIth that ID I need to perform another Action.
    Any help ???

  • Blank SOAP Action in Soap Request- Portal Service calling Web Service

    Hi
    I'm trying to access an Web Service through a client portal service which was generated by NWDS. I called this service from a basic component and tried to execute the WS function after populating all the needed fields. When I started the component I encountered the following error.
    java.lang.IllegalArgumentException: The SOAP Action "" include in the soap request not corresponding to the Portal service method..
    I initially thought it was because I was downloading the WSDL to my local and using that in the portal service generation. Maybe not all the information about the web service was being obtained. I tried it again after generating the portal service from the WSDL online but still obtained the same error.
    Any insight on what's causing the error would be appreciated. Thanks!

    Dear expert.
    i got the same problem with Reyes. anyone can solve this issue?
    thank in advance.

  • Calling Soap Action in Soap Receiver

    Hi ALL,
    I have a requirement where i have a WSDL file which contains multiple actions and multiple Soap Action Parameters ,
    whereas i need to combine all the Soap action Parameters into single SOAP Parameter and call it in my SOAP action parameter at the receiver side
    of the SOAP.
    Please guide me how to achieve this.

    Hi,
    If you mean setting it dynamically, yes, it is possible. The technical name for soap action in dynamic configuration is THeaderSOAPACTION with namespace http://sap.com/xi/XI/System/SOAP
    http://help.sap.com/saphelp_em900/helpdata/en/48/327519a3af58d8e10000000a421937/frameset.htm
    Hope this helps,
    Mark

  • Program Id in RFC sender channel

    Hi Experts,
    Can the same Program ID be used in 2 different RFC sender channels? I do not want to use the existing RFC sender channel. Please le me know.
    Thanks
    Suma

    Hello.
    I can't understand what are you trying to implement here, but here is the correct way to work with RFC CC
    1. every sender CC should have the XI as the gateway server. the program ID is then registered on the xi server.
    2. If you want to call the same interface from different ECC systems, you will create an RFC destination in each of them, containing the XI as the gateway and the same program ID. in that case you fill the RFC Metadata Repository Parameter with one of the ECC systems (as the RFC have the same metadata in both servers - it doesn't matter which one is written there) look here for more information: [Configuring the Sender RFC Adapter |http://help.sap.com/saphelp_dimp50/helpdata/EN/67/6d0540ba5ee569e10000000a155106/frameset.htm]" and focus on the sentence: "The RFC metadata repository parameters identify the SAP system containing the repository for the RFC metadata. This does not necessarily have to be the sender system" (:
    3. If you want to use different interfaces - you will use 2 program IDs, 2 sender channels, 2 sender agreements.
    hope it helps.

  • Adapter Module not working in Sender Communication Channel working in recie

    Hi
    I have written one adapter module. IF i give that Adapter Module in Sender Communication channel its not working. If i give that in Reciever Communication Channel its working. If i mention in both the channels then its working in sender communication channel also.But in only sender communication channel its not working in only reciever communication channel its working Can any one tell me why its happening
    Thanks & Regards
    Ravi Shankar B
    Message was edited by:
            RaviShankar B
    Message was edited by:
            RaviShankar B
    Message was edited by:
            RaviShankar B

    hi
    if its problem with my code why its working if i give the adapter module in both the communication channels?If i give in only sender communication channel the module is not invoking. its not showing any auditlogs.Can any one please help me
    OUTBOUND is for sender
    INBOUND is for reciever right.?
    the following code i have written
    public ModuleData process(
              ModuleContext moduleContext,
              ModuleData inputModuleData)
              throws ModuleException {
              String SIGNATURE =
                   "process(ModuleContext moduleContext, ModuleData inputModuleData)";
              Object obj = null;
              Message msg = null;
              String filename = null;
              AuditMessageKey amk = null;
              try {
                   obj = inputModuleData.getPrincipalData();
                   msg = (Message) obj;
                   System.out.println("&&&&&&&&&&&&&&&&&" + msg);
                   if (msg.getMessageDirection().equals(MessageDirection.OUTBOUND)){
                        amk = new AuditMessageKey(msg.getMessageId(),AuditDirection.OUTBOUND);
                        Audit.addAuditLogEntry(amk,AuditLogStatus.SUCCESS,">>>>>>>>>>>>>>> etHostName: Module called"+ i++);
                   }else{
                        File filename1 = new File("
    10.7.1.43
    XI
    source","text.txt");
                        filename1.createNewFile();
                        amk = new AuditMessageKey(msg.getMessageId(),AuditDirection.INBOUND);
                        Audit.addAuditLogEntry(amk,AuditLogStatus.SUCCESS,">>>>>>>>>>>>>>> etHostName: Module called"+ i++);
                   System.out.println("**************" + amk + "***********");
              } catch (Exception e) {
                   Audit.addAuditLogEntry(amk,AuditLogStatus.SUCCESS,">>>>>>>>>>>>>>> GetHostName: Error Module called");
                   e.printStackTrace(System.err);
                   ModuleException me = new ModuleException(e);
                   throw me;
              // Read the channel ID, channel and the module configuration
              try {
                   Hashtable mp = (Hashtable)inputModuleData.getSupplementalData("module.parameters");
                   if(mp != null){
                        filename = (String)mp.get("FileName");
                        Audit.addAuditLogEntry(amk,AuditLogStatus.SUCCESS,"Host >>>  Element Name is set to {0}"+filename );
                   }else{               
                        Audit.addAuditLogEntry(amk,AuditLogStatus.WARNING,"HostElementName parameter is not set. Default used: HostName.");
                        filename = "FileName";
              } catch (Exception e) {
                   e.printStackTrace(System.err);
                   Audit.addAuditLogEntry(amk,AuditLogStatus.ERROR,"Cannot read the module context and configuration data");
                   ModuleException me = new ModuleException(e);
                   throw me;
              try {
                   XMLPayload xmlpayload = msg.getDocument();
                   DocumentBuilderFactory factory;
                   factory = DocumentBuilderFactory.newInstance();
                   DocumentBuilder builder = factory.newDocumentBuilder();
                   Document document =
                        builder.parse((InputStream) xmlpayload.getInputStream());
                   Element rootNode = document.getDocumentElement();
                   if (rootNode != null) {
                        Element childElement = document.createElement("filename");
                        childElement.appendChild(document.createTextNode(filename));
                        rootNode.appendChild(childElement);
                   // Transforming the DOM object to Stream object.
                   TransformerFactory tfactory = TransformerFactory.newInstance();
                   Transformer transformer = tfactory.newTransformer();
                   Source src = new DOMSource(document);
                   ByteArrayOutputStream myBytes = new ByteArrayOutputStream();
                   Result dest = new StreamResult(myBytes);
                   transformer.transform(src, dest);
                   byte[] docContent = myBytes.toByteArray();
                   if (docContent != null) {
                        xmlpayload.setContent(docContent);
                        inputModuleData.setPrincipalData(msg);
              } catch (Exception e) {
                   e.printStackTrace(System.err);
                   Audit.addAuditLogEntry(amk,AuditLogStatus.ERROR,"Cannot read the module context and configuration data");
                   ModuleException me = new ModuleException(e);
                   throw me;
              return inputModuleData;
    Best Regards
    Ravi Shankar B
    Message was edited by:
            RaviShankar B
    Message was edited by:
            RaviShankar B

  • Adapter engine field blank in RFC Comm channel (Sender)

    Hi Friends,
    I am not getting any value in drop-down list of adapter engine in RFC adapter sender communication channel.System is allowing me to save the comm channel , system is giving me following error
    No adapter engine specified
    I m getting values of adapter engine when I select some other adpter like XI.
    Thanx
    Anand

    Hi,
    The RfcAdapter is implemented as a J2EE Service and thus this service has to be started and stopped. This will affect the whole RfcAdapter and can be done from the J2EE Engines Visual Administrator. When you are connected to the J2EE Engine choose the tab 'Cluster' and open the appropriate server node in the tree. Then open the 'Services' node. There you can see the entry 'SAP XI Adapter: RFC'. When you open the context menu on this entry you can start and stop the service
    Regards
    Chilla...

  • Adapter type is not coming in Communication channel

    Hi all,
             I am facing a problem while creating a communication channel as i am not able to see any adapter type and its showing as non editable field  .
    i have cretaed my own software component in SLD  am i missing something in SLD configuration ??  because of that  i am not able to see any adapter over there .
    regards,
    praveen

    Praveen,
    You need to import SAP BASIS Software Component Version into Integration Repository.
    You need to download it from service market place.
    https://websmp205.sap-ag.de/~form/handler?_APP=00200682500000001943&_EVENT=SEARCH&HIDE=&SEARCH_SPAT=X&SEARCH_BPAT=X&SEARCH_CD=X&SEARCH_P=X&SEARCH_PV=X&SEARCH_C=X&SEARCH_CV=X&SEARCH_TA=&SEARCH_V=&HIDE_EXPERT_SEARCH=X&SEARCH_MAX_RESULT=20
    In Search Term Enter "SAP BASIS <version>".
    Now click on XI CONTENT SAP_BASIS 7.00 -
    > Database independent -
    > SAPBASIS13_0-20000888.ZIP Just save this file on your machine and unzip it.
    Now put this in the import directory: \usr\sap\<SID>\SYS\global\xi\repository_server\import\
    In IR, TOOLS ---> Import design objects and import it.
    Regards,
    Sarvesh
    ***Reward points for helpfull ans, in your last thresd you did not assingned points to any buddy.

  • No Adapter Metadata when trying to creating communication channel.

    Hi experts,
    I am using a new setup of Netweaver 2004S - PI 7.0.
    I created a communication channel (File Sender).
    When I tried to define the Adapter Type, there is no Adapter Metadata to pick from pop up window!
    I've read other threads and they suggest that some imports (SWCV SAP BASIS) needs to be made in the IR.
    I've checked my settings using Transaction Code -SPAM, under package level:
    Component: SAP_BASIS
    Software Component Release: 700
    Level: 0010
    Support Package: SAPKB70010
    Short Description: SAP Basis Component
    Software Package Type: Basis Support Pkg
    Did I miss out anything?
    What package do I need to download and how do I verify I've installed them correctly?
    Please help.
    Thanks
    Ron

    Hi all,
    Thank you for all your kind responses so far.
    I have one last question - Where can I download the SWCV SAP BASIS patch from?
    I logged in to ServiceMarketPlace with my company partner ID and follow these links:
    SAP Support Portal -->
    Downloads (Tab) -->
    SAP Support Packages (Tab) -->
    SAP Support Package Stacks (Left Hand Menu) -->
    SAP Netweaver 2004s -->
    A configuration tree is shown. I choose "SAP IGS 7.00 for Process Integration (PI/XI), J2EE Adapter Engine (PI/XI)..." -->
    Check  Windows Server on IA32 32 bit --> "No Support Packages found."
    My PI is running on Windows Server 2003, with a MaxDB installation.
    As you can see I'm very new to the SAP environment, so please bear with me for my ignorant questions.
    Thank you.
    Ron

  • TNS Packet writer failure and end-of-file on communication channel

    Hello Sir/Mam,
    I m working on oracle server 9i. when i insert data into Blob,Nclob,Clob field which is larger than 4KB, this message occur everytimes.(TNS Packet writer failure or end-of-file on communication channel).
    Can u tell me why this happen when i insert large data from 4KB.
    I m using oledb to insert data into a table.if datasize is less than 4 KB ,its easily insert.
    My Code Module is this
    BOOL CconnectivityDlg::OpenOracleFile()
         BOOL bResult=FALSE;
         bFile = FALSE;
         dwFileSize = 0;
         CString csVirtualPath;      
         CFileDialog dlg(TRUE);
         if(dlg.DoModal()==IDOK)
              StrName = dlg.GetPathName();
         hFile1=CreateFile(StrName,GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE,
                                       NULL,OPEN_EXISTING, NULL,NULL);
         unsigned int count =0;
              if(hFile1==INVALID_HANDLE_VALUE)
                   if(count<5)
                        count++;
                        Sleep(1000);
                   else
                        return bResult;
         DWORD dwHighPart,dwLowPart;
         dwLowPart = GetFileSize(hFile1,&dwHighPart);
         LARGE_INTEGER NewFilePointer;
         NewFilePointer.LowPart = dwLowPart;
         NewFilePointer.HighPart = dwHighPart;
         dwFileSize = NewFilePointer.QuadPart;     
         bFile     = TRUE;
         bResult = TRUE;     
         if(hFile1)
              CloseHandle(hFile1);
              hFile1 =NULL;
         return bResult;
    BOOL CconnectivityDlg::CreateConnection()
         BOOL bResult = FALSE;     
         CString Count,strFileSaveName;
         Count.Empty();
         strFileSaveName.Empty();
         unsigned int nCounter = 0;     
    repeat:     
         if(!AfxOleInit())
              return FALSE;
         m_pConn.CreateInstance (__uuidof(Connection));
         CString strConn ;
         strConn.Empty();
         m_pConn->CursorLocation = adUseClient;
         strConn     =_T("Provider=MSDAORA;OSAuthent=1;Data Source =LOVE;Connect as =SYSDBA;");
         try
              m_pConn->Open(_bstr_t(strConn),_bstr_t("system"),_bstr_t("system"),adConnectUnspecified);
              bResult = TRUE;
         catch(_com_error& e)
              CString sBuff = GetErrorDescription(e);
              AfxMessageBox(sBuff);
              return 0;          
         catch(...)
              AfxMessageBox(_T("UnknownError"));
              return 0;
         m_pCom.CreateInstance(__uuidof(Command));
         try
              m_pCom->ActiveConnection = m_pConn;
         catch(_com_error& e)
              CString sBuff = GetErrorDescription(e);
              AfxMessageBox((sBuff));          
         catch(...)
              AfxMessageBox(_T("UnknownError"));
         return bResult;
    CString CconnectivityDlg::insertimage()
         CString Query,ColmnName;
         Query.Empty();
         ColmnName = _T("FIRST");//Coloumn Name
         Query = _T("insert into SINGLE(FIRST) values (?)"); //Table in which i want to insert data of Nclob type.
         hFile1 = CreateFile(StrName,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);//File from i read the data to insert into nclob field
         DWORD dwHighPart,dwLowPart;
         dwLowPart = GetFileSize(hFile1,&dwHighPart);
         LARGE_INTEGER NewFilePointer;
         NewFilePointer.LowPart = dwLowPart;
         NewFilePointer.HighPart = dwHighPart;
         dwFileSize = NewFilePointer.QuadPart;     
         BYTE *ImageData = new BYTE[dwFileSize+2];
         memset(ImageData,0,dwFileSize+2);
         BOOL bRead = ReadFile(hFile1,ImageData,dwFileSize,&dw,NULL);
         VARIANT varChunk;
         long lngOffset=0;
         UCHAR chData;
         SAFEARRAY FAR *psa = NULL;
         SAFEARRAYBOUND rgsabound[1];
         rgsabound[0].lLbound=0;
         rgsabound[0].cElements=dwFileSize;
         psa = SafeArrayCreate(VT_UI1,1,rgsabound);
         HRESULT hr;
         while(lngOffset < (long)dwFileSize)
              chData = ((UCHAR*)ImageData)[lngOffset];
              hr = SafeArrayPutElement(psa,&lngOffset,&chData);
              lngOffset++;                                        
         lngOffset     = 0;
         varChunk.vt=VT_ARRAY|VT_UI1;
         varChunk.parray=psa;
              try
              m_pCom->Parameters->Append(m_pCom->CreateParameter(_bstr_t(ColmnName),adLongVarWChar,adParamInput,(ADO_LONGPTR)dwFileSize,varChunk));
              VariantClear(&varChunk);
         catch(_com_error& e)
              CString sBuff = GetErrorDescription(e);
              AfxMessageBox(sBuff);
         if(ImageData)
              delete[] ImageData;
              ImageData = NULL;
         try
              m_pCom->CommandText=_bstr_t(Query);
              m_pConn->CursorLocation = adUseClient;
              m_pCom->CommandTimeout=0;
              m_pCom->Execute(NULL,NULL,adCmdText);
         catch(_com_error& e)
              CString sBuff = GetErrorDescription(e);
              AfxMessageBox(sBuff);
         return 0;
    CString CconnectivityDlg::GetErrorDescription(_com_error& e)
    bstrt bstrSource(e.Source());
    bstrt bstrDescription(e.Description());
    _TCHAR szTemp[1024];
    CString strInfo ;
    wsprintf(szTemp, _T("Message : %s\n"), e.ErrorMessage());
    strInfo = szTemp;
    wsprintf(szTemp, _T("Code : 0x%08lx\n"), e.Error());
    strInfo += szTemp;
    wsprintf(szTemp, T("Source : %s\n"), bstrSource.length() ? (LPCTSTR)bstrSource : T("null"));
    strInfo += szTemp;
    wsprintf(szTemp, T("Description : %s\n"), bstrDescription.length() ? (LPCTSTR)bstrDescription : T("null"));
    strInfo += szTemp;
         CString str     =     strInfo;
         if(str.Find(_T("not a valid password"),0) > 0)
              strInfo     =     _T("File is password protected") ;
    return strInfo;
    }

    user7728510 wrote:
    Hi,
    for what i know, MSDAORA provider doesn't support Oracle data types introduced since <font face="tahoma,verdana,sans-serif" size="1" color="#000">version</font> 8, as CLOB, BLOB and so on, so i think that it uses varchar2 up to the 4k limits and then causes this error.
    Have you tried with the OraOLEDB.Oracle.1 provider instead?Nice writing, Thanks for your explanation!

  • Same sender and receiver service but different communication channel

    Hi Exoerts
    I am doing a scenario  Proxy to JMS,HTTP and SOAP Adapter ( everything resides in the same recieiver service )
    Mesage from  SRM System ( proxy ) has to sent to MQ service. But in MQ I have to pass to the same message to three different nodes namely - JMS, HTTP and SOAP Adapter.
    I tried to configure Multiple receivers in the receiver determination. Its doesn't allow add the same service.
    Even if i configured with Multiple services for each nodes - its not allowing to create receiver detemination. It says already exits
    Please tell me fesible solution how to deisgn this
    Thanks
    Faheem

    you need to use only one receiver determination in your case...do not add the receivers
    u can have 3 different interface determinations and in each case the sender / receiver / outbound interface will be the same ..
    only the inbound interface will change ....so u will have 3 inbound interfaces ..
    3 receiver communcation channels for 3 adapters and of course 3 receiver agreements

  • Could not forward to JCA adapter : putting .jpg image failed : receiver communication channel

    hello all,
    i have a FTP to SFTP scenario for posting photos from my FTP server to other SFTP server
    its successfully posting an .xml to the SFTP server but not able to post the .jpg image
    attached is my audit log for my adapter
    regards,
    sushant

    Hi Sushant
    May be you are using a name for the image which is much longer than the name length expected by SFTP adapter.
    Use a shorter name and send the file, see if that works or not.Remove the * from the file name.
    Also check this
    Scenario ABAPProxyToSFTP Outbound

  • Receiver Soap Adapter and multipart messages

    Dear SAP XI experts.
    I have a scenario where I should create multipart message in an integration process and send it to a receiver using soap adapter. Is it possible to have two message types, one for main payload and one for attachment?
    In my case I know I have to switch on 'Do Not Use Soap Envelope' and 'Keep Attachments' parameters in communication channel configurations. Anything else needed in this side? For example in Adapter Module configurations?
    Is this scenario: To create multipart message in an integration process and to send it using receiver soap adapter, possible at all?

    Hi,
    >>>>In my case I know I have to switch on 'Do Not Use Soap Envelope' and 'Keep Attachments' parameters in communication channel configurations. Anything else needed in this side? For example in Adapter Module configurations?
    check question:
    My web service expects a SOAP with multiple elements in the SOAP body. How can I create such SOAP message?
    from SAP note: 856597
    and you will know everything
    Regards,
    michal

  • How to call Function through Soap Action

    Hi all,
    I have a Receiver communication channel in PI that sends data to from the interface to Oracle Webservice.
    At that moment a function should be called with two constant parameters and the third one is the xml with all the data.
    updateExchangeRates("CJV", "connector", ratesXML)
    xml schema:
    Anyone knows if it is possible to call that function in PI soap action and how should I do it?
    I've tested soap action with
    updateExchangeRates("CJV", "connector", list_wrapper)
    and got the error:
    invalid content type for SOAP: TEXT/HTML; HTTP 401 Unauthorized
    Thnaks in advance,
    Regards

    Hi,
    Please refer the below blogs for dynammic soap action
    How to set soap action in soap adapter during configuration when there are multiple operations in a web service?
    Dynamically providing URL and action values to receiver SOAP communication channe
    regards,
    Harish

Maybe you are looking for