Accessing CAF application service from outside

Hi,
Can CAF application service be called from outside the CAF? Example from a pure JSP page?
Mayukh

You can also call a CAF service via the EJB protocol from JSP.  Each CAF Service gets deployed as a Stateless Session bean.  You can view these in the IDE if you switch to the J2EE perspective in your CAF project.

Similar Messages

  • Problem with accessing a web service from outside world

    Hello SAP experts
    I have a custom BAPI for which I have created a webservice.
    If I login as an admin to the BOX where I have installed this SAP server and open an internet explorer window and give the URL, I can access the web service without any problem. This is just a simple BAPI that searches for some data from a table based.
    However, when I give the same URL from a different PC, it can open the web service and in the fields if I give the data and click on send button, it fails with an error '500 Internal Server Error '.
    I looked for the details of this error on internet and it says that this is some general error and solutions that it suggested doesn't help my scenario.
    Has anyone seen this problem before? Any help will be highly appreciated.
    Tks
    Ram

    i have tried the stack trace in the catch but as i said on the statement where i made the object for the service the program just exits. it didn't return any exception or any output.
    thanx for refering me any answer.......

  • Access Application Services from Web Dynpro DC

    Hi Experts,
    We created a CAF DC which has an application service called ClientAppService, with a method findClientsById. We also created another DC, a Web Dynpro DC, which makes use of the model generated by the CAF DC. We have programmatic access to the application service through
    ClientAppServiceProxy.findClientsById()
    , but when running the DC which makes this call we receive the following error:
    com.sap.caf.rt.exception.CAFBaseRuntimeException: Query with name findClientsById does not exist
    We've managed to call Application Services before, but that was when the Web Dynpro was in the same DC as the CAF services. Any ideas on how to fix this?
    Thanks,
    JP

    Hi Smith,
    One of the possible reasons of this error is may be your CAF project is not properly deployed in the Server in which you have deployed your WebDynpro project. So during the execution of the WebDynpro project while it tries to invoke this findby from the Application Service of your CAF project it fails to find a match. May be by mistake you have deployed your CAF Application Service first and added the findBy method later. So if your properly deploy your total CAF project in the same server in which you have deployed your WebDynpro project it may resolve your problem.
    Thanks and Regards
    Avijit

  • Unable to instantiate GP process from CAF application service

    Hi,
    I am trying to instantiate a process from my CAF application service as follows.
    IGPProcess process = GPProcessFactory.getDesigntimeManager().getActiveTemplate("7CE44BF090BF11D99817000D60B211F1",user);
    When the execution reaches this step, I am getting the following exception.
    com.sap.engine.frame.core.load.SAPClassNotFoundException
    I suspect that CAF runtime is not able to load GPProcessFactory class. Is there any settings that need to be done or I have to deploy something on the server?
    Please help.
    Thanks
    Raghav

    Hi Raghavendra,
    It seems you are using SPS7 !
    Check runtime reference for J2ee application in application-j2ee-engine.xml :
    <reference
              reference-type="weak">
              <reference-target
                   provider-name="sap.com"
                   target-type="library">cafeugp~api</reference-target>
         </reference>
    Best regards,
    Aliaksei

  • Accessing custom Portal service from a java application

    We have a custom portal service that connects to BW using xmla. How do you access this portal service from a java application. Not from web dynpro, jsp or servlet but from the java code.
    Can we use the INITIAL_CONTEXT_FACTORY to get access to the portal service.
    Thank You
    D.K

    Now I tried the following:
    I've added the prtapi.jar and the service's jar to the additional-lib folder and added the appropriate entries to library.txt and reference.txt.
    Now I can obtain now the PortalRuntime, but this is not initialized.
    Has anybody a solution for this problem? Help would be high appreciated!
    Regards,
    Matthias

  • Exception in CAF application service

    Hi All
    I am trying to access the BAPI bapi__mddataset__get__axis__info
    from a CAF application service. But receive following exception. Any clue how to solve it.
    at com.sap.caf.rt.bol.da.remote.MessageEntityConverter.createNewInstance(MessageEntityConverter.java:788)
         at com.sap.caf.rt.bol.da.remote.MessageEntityConverter.retrieveElementValue(MessageEntityConverter.java:494)
         at com.sap.caf.rt.bol.da.remote.MessageEntityConverter.retrieveMessageValue(MessageEntityConverter.java:447)
         at com.ibm.cer_test.extsrv.MPConnector.process(MPConnector.java:65)
         at com.ibm.cer_test.extsrv.bapi__mddataset__get__axis__info.BAPI__MDDATASET__GET__AXIS__INFOBean.BAPI__MDDATASET__GET__AXIS__INFO(BAPI__MDDATASET__GET__AXIS__INFOBean.java:40)
         at com.ibm.cer_test.extsrv.bapi__mddataset__get__axis__info.BAPI__MDDATASET__GET__AXIS__INFOLocalLocalObjectImpl0.BAPI__MDDATASET__GET__AXIS__INFO(BAPI__MDDATASET__GET__AXIS__INFOLocalLocalObjectImpl0.java:115)
         at com.ibm.cer_test.appsrv.mdapp.MdAppBean.getMdDataSet(MdAppBean.java:295)
         at com.ibm.cer_test.appsrv.mdapp.MdAppLocalLocalObjectImpl0.getMdDataSet(MdAppLocalLocalObjectImpl0.java:115)
         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:324)
         at com.sap.caf.rt.services.serviceaccess.ServiceWrapper.findByDataObject(ServiceWrapper.java:269)
         at com.sap.caf.rt.services.serviceaccess.CAFServiceAccessBeanImpl.findByDataObject(CAFServiceAccessBeanImpl.java:223)
         at com.sap.caf.rt.services.serviceaccess.CAFServiceAccessLocalLocalObjectImpl20.findByDataObject(CAFServiceAccessLocalLocalObjectImpl20.java:875)
         at com.sap.caf.rt.ui.cool.generic.AspectServiceAccess.findBy(AspectServiceAccess.java:275)
         at com.sap.caf.rt.ui.cool.generic.Query.execute(Query.java:218)
         at com.sap.caf.ui.servicebrowser.components.visualizer.controllers.TableViewCC.execute(TableViewCC.java:323)
         at com.sap.caf.ui.servicebrowser.components.visualizer.controllers.TableViewCC.setup(TableViewCC.java:276)
         at com.sap.caf.ui.servicebrowser.components.visualizer.controllers.wdp.InternalTableViewCC.setup(InternalTableViewCC.java:192)
         at com.sap.caf.ui.servicebrowser.components.visualizer.views.ServiceBrowserCV.onActionExecuteQuery(ServiceBrowserCV.java:180)
         at com.sap.caf.ui.servicebrowser.components.visualizer.views.wdp.InternalServiceBrowserCV.wdInvokeEventHandler(InternalServiceBrowserCV.java:215)
         at com.sap.tc.webdynpro.progmodel.generation.DelegatingView.invokeEventHandler(DelegatingView.java:87)
         at com.sap.tc.webdynpro.progmodel.controller.Action.fire(Action.java:67)
         at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.doHandleActionEvent(WindowPhaseModel.java:420)
         at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.processRequest(WindowPhaseModel.java:132)
         at com.sap.tc.webdynpro.clientserver.window.WebDynproWindow.processRequest(WebDynproWindow.java:330)
         at com.sap.tc.webdynpro.clientserver.cal.AbstractClient.executeTasks(AbstractClient.java:143)
         at com.sap.tc.webdynpro.clientserver.session.ApplicationSession.doProcessing(ApplicationSession.java:299)
         at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessingStandalone(ClientSession.java:707)
         at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessing(ClientSession.java:661)
         at com.sap.tc.webdynpro.clientserver.session.ClientSession.doProcessing(ClientSession.java:229)
         at com.sap.tc.webdynpro.clientserver.session.RequestManager.doProcessing(RequestManager.java:152)
         at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doContent(DispatcherServlet.java:62)
         at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doPost(DispatcherServlet.java:53)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:390)
         at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:264)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:347)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:325)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:887)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:241)
         at com.sap.engine.services.httpserver.server.Client.handle(Client.java:92)
         at com.sap.engine.services.httpserver.server.Processor.request(Processor.java:148)
         at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:33)
         at com.sap.engine.core.cluster.impl6.session.MessageRunner.run(MessageRunner.java:41)
         at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
         at java.security.AccessController.doPrivileged(Native Method)
         at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:100)
         at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:170)
    Caused by: java.lang.ClassNotFoundException: com.ibm.cer_test.extsrv.bapi__mddataset__get__axis__info.output.AXIS__INFO
    Loader Info -
    ClassLoader name: [ibm.com/cer_test]
    Parent loader name: [Frame ClassLoader]
    References:
       common:service:http;service:servlet_jsp
       service:ejb
       common:service:iiop;service:naming;service:p4;service:ts
       service:jmsconnector
       library:jsse
       library:servlet
       common:library:IAIKSecurity;library:activation;library:mail;library:tcsecssl
       library:ejb20
       library:j2eeca
       library:jms
       library:opensql
       common:library:com.sap.security.api.sda;library:com.sap.security.core.sda;library:security.class;library:webservices_lib;service:adminadapter;service:basicadmin;service:com.sap.security.core.ume.service;service:configuration;service:connector;service:dbpool;service:deploy;service:jmx;service:jmx_notification;service:keystore;service:security;service:userstore
       interface:resourcecontext_api
       interface:webservices
       interface:cross
       interface:ejbserialization
       sap.com/cafruntimeear
       library:com.sap.guid
       library:com.sap.util.monitor.jarm
       sap.com/com.sap.jdo
       library:cafmetamodellib
       sap.com/caf~core
       library:cafruntimeconnectivity
       library:cafruntimeconnectivity~base
       service:applocking
       interface:security
       library:cafruntimeapi~lib
       service:tcsecdestinations~service
       interface:tcsecdestinations~interface
    Resources:
       C:
    usr
    sap
    J17
    JC01
    j2ee
    cluster
    server0
    apps
    ibm.com
    cer_test
    src.zip
       C:
    usr
    sap
    J17
    JC01
    j2ee
    cluster
    server0
    apps
    ibm.com
    cer_test
    EJBContainer
    applicationjars
    ibm.comcer_testejbmodule.jar
       C:
    usr
    sap
    J17
    JC01
    j2ee
    cluster
    server0
    apps
    ibm.com
    cer_test
    EJBContainer
    clientjars
    clientibm.comcer_testejbmodule.jar
    Loading model: {parent,references,local}
         at com.sap.engine.frame.core.load.ReferencedLoader.loadClass(ReferencedLoader.java:382)
         at com.sap.caf.rt.bol.da.remote.MessageEntityConverter.createNewInstance(MessageEntityConverter.java:781)
         ... 50 more
    Thanks in advance
    Sudip

    Hi,
    I too got an exception like that.
    1. Instead of code
    patentServiceLocal local = this.getpatentService();
    local.update(OBJECT);
    use the following
    this.getpatentService().update(OBJECT);
    I got by problem solved this way.
    Regards,
    Srinivasan Subbiah

  • Problem accessing https Web service from behind proxy

    Hi all,
    I have this constant timeout issue which occurs whenever I try to access the Web service from behind a proxy.
    Find below the error logs -
    AxisFault
    faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
    faultSubcode:
    faultString: java.net.ConnectException: Connection timed out: connect
    faultActor:
    faultNode:
    faultDetail:
    {http://xml.apache.org/axis/}stackTrace:java.net.ConnectException: Connection timed out: connect
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:305)
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:171)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:158)
    at java.net.Socket.connect(Socket.java:452)
    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:324)
    at org.apache.axis.components.net.DefaultSocketFactory.create(DefaultSocketFactory.java:136)
    at org.apache.axis.components.net.DefaultSocketFactory.create(DefaultSocketFactory.java:100)
    at org.apache.axis.transport.http.HTTPSender.getSocket(HTTPSender.java:129)
    at org.apache.axis.transport.http.HTTPSender.writeToSocket(HTTPSender.java:389)
    at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:87)
    at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
    at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
    at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
    at org.apache.axis.client.AxisClient.invoke(AxisClient.java:144)
    at org.apache.axis.client.Call.invokeEngine(Call.java:2688)
    at org.apache.axis.client.Call.invoke(Call.java:2671)
    at org.apache.axis.client.Call.invoke(Call.java:2357)
    at org.apache.axis.client.Call.invoke(Call.java:2280)
    at org.apache.axis.client.Call.invoke(Call.java:1741)
    I am using Tomcat 5.0.19 . Could anyone suggest a possible solution to the same?
    The system works fine when I use a http endpoint.

    Hi,
    By default, your application tries to connect to the Net directly : if you have to specify a proxy, use either these lines in your code :
    System.setProperty("http.proxySet", "true");
    System.setProperty("http.proxyHost", "proxy");
    System.setProperty("http.proxyPort", "8080");
    Or specify them in the command line with the "-D"option.
    Ex : java .... -Dhttp.proxySet=true .... MyApp
    Hope it helps.
    See ya

  • Error in executing RFC or CAF Application Service

    Hello Everybody,
    I am creating course approval process, in which I am calling RFC for user info and after course approval, calling CAF application service to persist this data.
    But, both services are not working in process. I have tested callable objects for these services and tested successfully.
    But, when I am attaching it in the process then process can't go forward from this point.
    I have checked in Log viewer and found following error:
    Path to object does not exist at com.sap.caf.eu.gp.model.pfw.local, the whole lookup name is sap.com/com.sap.caf.eu.gp.model.pfw.local/GPUWLBridge.
    What should be the problem in this?
    If I remove these services then whole process works fine.
    Thanks in advance,
    Bhavik

    Hello All,
    Is there any concept like, I call perticular backgound object first time then I cannot call that object for some period of time?
    I am getting same error in calling RFC callable object as well as CAF service callable object.
    I can execute these callable objects in the process first time successfully. But, When I execute this process second time, these callable objects won't execute.
    I can execute same process after 3 to 4 hours successfully once.
    What should be the reason behind this?

  • CAF Application services project -Error

    Hi
    I'm creating in CAF Application services project
    Application is deployed but go to the CAF UI Admin part get Bellow Error
    Failed to get service module: error <null>
    Failed to read configuration data from XML fail. Configuration name: <null> Error: Configuration does not exist.
         Regards
         Srinivas

    closed

  • How to log Exceptions raised in CAF Application Services

    Hi All,
    When there is an Exception rasing in CAF Application Service custom method implementation what are the steps need to follow for send that exception details to log files & where those log files will be generated i.e either in server, local system, etc.
    If we use following 2 different lines please explain me where that trace is going to written:
    1) System.out.println(e);
    2) e.printStackTrace();
    Thanks in Advance,
    Uday.

    Hi Uday,
    Try this (in my case I'm using that in Background CO that implements IGPBackgroundCallableObject ):
         public static Location logger =
              Location.getLocation(<yourClass>.class);
    Catch block:
              } catch (GPInvocationException e) {
                   throw new GPTechnicalCallableObjectException(
                        logger,
                        resourceAccessor,
                        "ERROR_PARAMETERS",
                        e);
              } catch (GPEngineException e) {
                   throw new GPTechnicalCallableObjectException(
                        logger,
                        resourceAccessor,
                        e.getMessage(),
                        e);
    Reward points if it's helpful.

  • How to access a web service from a XLet

    Hello,
    I am new in software development to ITV and I dint find too many usefull information teaching how to access a web service from a XLet running in a STB. Are there anybody who can give me some help, maybe sample or tutorial?
    Gratefull
    David

    hi,
    you can "borrow" the source code from [Yambo a free soft open source presentation engine (AKA XML microbrowser Xlet )|http://www.cineca.tv/labs/mhplab/index-en.html] both local and on a http remote connection.
    hope it helps..
    bye
    andrea

  • Access a web service from pl/sql

    I am trying to access a web service from pl/sql. I have downloaded the code from
    http://www.oracle.com/technology/tech/webservices/htdocs/samples/dbwebservice/DBWebServices_PLSQL.html
    But when I try to execute the sql, I am getting the following error:
    SQL> @local.sql
    Package created.
    Package body created.
    No errors.
    BEGIN dbms_output.put_line(time_service.get_local_time('94065')); END;
    ERROR at line 1:
    ORA-29273: HTTP request failed
    ORA-06512: at "SYS.UTL_HTTP", line 1022
    ORA-12545: Connect failed because target host or object does not exist
    ORA-06512: at "WEB.DEMO_SOAP", line 71
    ORA-06512: at "WEB.TIME_SERVICE", line 15
    ORA-06512: at line 1
    It is failing at:
    resp := demo_soap.invoke(req,
    'http://www.ripedev.com/webservices/LocalTime.asmx',
    'http://ripedev.com/xsd/ZipCodeResults.xsd/LocalTimeByZipCode');
    But in the examples that I got from downloading source code, site used was:
    'http://www.alethea.net/webservices/LocalTime.asmx',
    'http://www.alethea.net/webservices/LocalTimeByZipCode');
    This site was not accessible. So I changed to the working site as follows, but still I
    am getting the above error.
    But I can access this site, if I type in the above address in the address bar of IE.
    Can any body help?
    I have oracle9i client installed on my machine and able to connect to server thru toad and sql plus.
    or IF any body refers me to a good website for the topic of "using webservies from pl/sql" that would be great too!

    Here is the complete code:
    time_service:
    CREATE OR REPLACE PACKAGE time_service AS
    FUNCTION get_local_time(zipcode IN VARCHAR2) RETURN VARCHAR2;
    END;
    CREATE OR REPLACE PACKAGE BODY time_service AS
    -- Location of Web service definition
    -- http://www.alethea.net/webservices/LocalTime.asmx?WSDL
    -- http://www.ripedev.com/webservices/LocalTime.asmx?WSDL
    -- http://www.xmethods.com/sd/2001/CurrencyExchangeService.wsdl
    --'http://ripedev.com/xsd/ZipCodeResults.xsd/LocalTimeByZipCode style=document');
    FUNCTION get_local_time(zipcode IN VARCHAR2) RETURN VARCHAR2 IS
    req demo_soap.request;
    resp demo_soap.response;
    BEGIN
    dbms_output.put_line('before new request..');
    req := demo_soap.new_request('LocalTimeByZipCode',
    'xmlns="http://ripedev.com/xsd/ZipCodeResults.xsd"');
    dbms_output.put_line('before add param..');
    demo_soap.add_parameter(req, 'ZipCode', 'xsd:string', zipcode);
    dbms_output.put_line('before invoke..');
    resp := demo_soap.invoke(req,
    'http://www.ripedev.com/webservices/LocalTime.asmx',
    'http://ripedev.com/xsd/ZipCodeResults.xsd/LocalTimeByZipCode');
    dbms_output.put_line('before return..');
    RETURN demo_soap.get_return_value(resp, 'LocalTimeByZipCodeResult',
    'xmlns="http://www.ripedev.com/webservices/"');
    END;
    BEGIN
    dbms_output.put_line('inside main time_service..');
    END;
    show errors
    SET serveroutput ON
    exec dbms_output.put_line(time_service.get_local_time('94065'));
    Here is demo_soap.sql:
    Rem
    Rem $Header: soapdemo.sql 21-may-2002.13:48:17 rpang Exp $
    Rem
    Rem soapdemo.sql
    Rem
    Rem Copyright (c) 2002, Oracle Corporation. All rights reserved.
    Rem
    Rem NAME
    Rem soapdemo.sql - <one-line expansion of the name>
    Rem
    Rem DESCRIPTION
    Rem A PL/SQL demo package for making SOAP RPC calls.
    Rem
    Rem NOTES
    Rem This demo package can only be used in oracle 9ir2. It utilizes 9iR2's
    Rem XDB (XMLType and HttpUriType) and 9iR1's enhancements to UTL_HTTP to
    Rem make SOAP RPC calls.
    Rem
    Rem MODIFIED (MM/DD/YY)
    Rem rpang 05/21/02 - created
    Rem
    Rem A PL/SQL demo package that makes a SOAP RPC calls.
    Rem
    CREATE OR REPLACE PACKAGE demo_soap AS
    /* A type to represent a SOAP RPC request */
    TYPE request IS RECORD (
    method VARCHAR2(256),
    namespace VARCHAR2(256),
    body VARCHAR2(32767));
    /* A type to represent a SOAP RPC response */
    TYPE response IS RECORD (
    doc xmltype);
    * Create a new SOAP RPC request.
    FUNCTION new_request(method IN VARCHAR2,
    namespace IN VARCHAR2)
    RETURN request;
    * Add a simple parameter to the SOAP RPC request.
    PROCEDURE add_parameter(req IN OUT NOCOPY request,
    name IN VARCHAR2,
    type IN VARCHAR2,
    value IN VARCHAR2);
    * Make the SOAP RPC call.
    FUNCTION invoke(req IN OUT NOCOPY request,
    url IN VARCHAR2,
    action IN VARCHAR2) RETURN response;
    * Retrieve the sipmle return value of the SOAP RPC call.
    FUNCTION get_return_value(resp IN OUT NOCOPY response,
    name IN VARCHAR2,
    namespace IN VARCHAR2) RETURN VARCHAR2;
    END;
    show errors
    CREATE OR REPLACE PACKAGE BODY demo_soap AS
    FUNCTION new_request(method IN VARCHAR2,
    namespace IN VARCHAR2)
    RETURN request AS
    req request;
    BEGIN
    req.method := method;
    req.namespace := namespace;
    RETURN req;
    END;
    PROCEDURE add_parameter(req IN OUT NOCOPY request,
    name IN VARCHAR2,
    type IN VARCHAR2,
    value IN VARCHAR2) AS
    BEGIN
    req.body := req.body ||
    '<'||name||' xsi:type="'||type||'">'||value||'</'||name||'>';
    END;
    PROCEDURE generate_envelope(req IN OUT NOCOPY request,
                   env IN OUT NOCOPY VARCHAR2) AS
    BEGIN
    env := '<SOAP-ENV:Envelope
    xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
    xmlns:xsd="http://www.w3.org/1999/XMLSchema">
    <SOAP-ENV:Body><'||req.method||' '||req.namespace||'
    SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">'||
    req.body||'</'||req.method||'></SOAP-ENV:Body></SOAP-ENV:Envelope>';
    END;
    PROCEDURE show_envelope(env IN VARCHAR2) AS
    i pls_integer;
    len pls_integer;
    BEGIN
    i := 1; len := length(env);
    WHILE (i <= len) LOOP
    dbms_output.put_line(substr(env, i, 60));
    i := i + 60;
    END LOOP;
    END;
    PROCEDURE check_fault(resp IN OUT NOCOPY response) AS
    fault_node xmltype;
    fault_code VARCHAR2(256);
    fault_string VARCHAR2(32767);
    BEGIN
    fault_node := resp.doc.extract('/soap:Fault',
    'xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/');
    IF (fault_node IS NOT NULL) THEN
    fault_code := fault_node.extract('/soap:Fault/faultcode/child::text()',
         'xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/').getstringval();
    fault_string := fault_node.extract('/soap:Fault/faultstring/child::text()',
         'xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/').getstringval();
    raise_application_error(-20000, fault_code || ' - ' || fault_string);
    END IF;
    END;
    FUNCTION invoke(req IN OUT NOCOPY request,
    url IN VARCHAR2,
    action IN VARCHAR2) RETURN response AS
    env VARCHAR2(32767);
    http_req utl_http.req;
    http_resp utl_http.resp;
    resp response;
    BEGIN
    generate_envelope(req, env);
    -- show_envelope(env);
    http_req := utl_http.begin_request(url, 'POST','HTTP/1.0');
    utl_http.set_header(http_req, 'Content-Type', 'text/xml');
    utl_http.set_header(http_req, 'Content-Length', length(env));
    utl_http.set_header(http_req, 'SOAPAction', action);
    utl_http.write_text(http_req, env);
    http_resp := utl_http.get_response(http_req);
    utl_http.read_text(http_resp, env);
    utl_http.end_response(http_resp);
    resp.doc := xmltype.createxml(env);
    resp.doc := resp.doc.extract('/soap:Envelope/soap:Body/child::node()',
    'xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"');
    -- show_envelope(resp.doc.getstringval());
    check_fault(resp);
    RETURN resp;
    END;
    FUNCTION get_return_value(resp IN OUT NOCOPY response,
    name IN VARCHAR2,
    namespace IN VARCHAR2) RETURN VARCHAR2 AS
    BEGIN
    RETURN resp.doc.extract('//'||name||'/child::text()',
    namespace).getstringval();
    END;
    END;
    show errors

  • Web Service and CAF Application Services - How to return a table

    Hello,
    I'd like to build a CAF Application Service and expose it as a Web Service. This service should return an array or table which I'd like to display in a Visual Composer model.
    I understand that there're limitations at CAF regarding supported data types.
    Does anyone know how to get a workaround?
    Any information is very appreciated.
    Kind regards
    Stefan

    Hi,
    You can return a list.
    The standard way to do this is you have to create a complex data type for response.
    Configure the cardinality of this data type to 1..n so as to accomodate a list.
    In your implementation add your list to this response message and return the list.
    This waly you can return collections.
    Hope it helps.
    Regards,
    Srinivasan Subbiah

  • Accessing BAPI web services from CAF External Services

    We have wsdl files that corresponds to BAPI calls.  Using CAF, we want to create an external service using those wsdl files and then create an application service which will be in turn used by web dynpro for developing our composites. We did the following steps:
    1. Created a new  Composite Application Service project
    2. Then right click on the External Services, select import, choose Web service.
    3. Select 'Local File System or URL' option. Copy the URL from the wsdl file and pasted the URL in the 'Browse' text field and click Next. Got an error in loading the web service.
    4. Removed the Proxy Server settings in Developer Studio but in vain. Tried all possible combinations with the URL also (such as with and without the wsdl key at the end of the URL and using the 'UDDI or URL' option under the Proxy Definition of the External Services Import and also with the Window => Preferences => Proxy settings).
    5. Since the above options failed, copied the wsdl files to the local drive and then choose that WSDL from the file system. Able to import.
    6. Created the application service and provided the custom code for the request and response.
    7. Registered the external service in the CAF browser -> Administrative tools -> External Service Configuration
    8. Tested the service through the Developer Studio.
    The error I get is: ERROR: IOError while working with the message. Check the nested exception: Connect Refused: connect:
    Any idea on what needs to be done to resolve it?

    authentication is required at design time to read the wsdl from bapis. did you provide username and password when importing the web service.
    you can always add the username and password to the url to see if you can successfully get to the wsdl. Like that http://<webas_abap_servername>:<portnumber>/sap/bc/soap/wsdl11?services=BAPI_PO_CREATE&sap-client=<clientnumber>&sap-user=<username>&sap-password=<password>

  • CAF DB Update for CAF Entity Service from Web Dynpro

    Hi all,
    I have created an entity service in CAF called “Contacts’ which contains the following attributes.
    phoneNo
    cellNo
    emailID.
    Another entity service called "Person" is created. This contains the following attributes.
    personId
    personName
    personAddr
    contactsRef. (Cardinality -> 0..n , Relational Type -> Composition)
    That means Contacts entity service is used within Person entity service. Now it is working fine within CAF service browser. Now the Web Dynpro DC of CAF application is used within another custom Web Dynpro DC project. I want to store data from Web Dynpro.
    Within the context of component controller of  Web Dynpro the structure is like
    APerson
         |_ personId
         |_ personName
         |_ personAddr
         |_ contactsRef       
                    |_ phoneNo (Under contactsRef)
                    |_ cellNo (Under contactsRef)
                    |_ emailID (Under contactsRef)
    So I have written the following code within web dynpro custom method.
    APerson person = PersonServiceProxy.create();
    java.util.List ls = new ArrayList();
    for(int i=0; i<4;i++)
    AContacts contact = ContactsServiceProxy.create();
    contact.setCellNo("9092130156");
    contact.setEmailID("[email protected]");
    contact.setPhoneNo("432258");
    contact.getAspect().sendChanges();
    ls.add(contact);
    person.setRelatedModelObjects("contactsRef",ls);
    person.setPersonID("9999");
    person.setPersonName("xyz");
    person.setPersonAddr("ABC, KOL");
    wdContext.nodeAPerson().bind(person);
    person.getAspect().sendChanges();
    CAFServiceFactory.getServiceFacade(idendityDefinition.class);
    After saving the data from Web Dynpro I am trying to test it from CAF service browser. But I am getting only the parent row. I mean only the value of personId, personName and personAddr fields which I have stored from Web Dynpro. But no value is coming within the table for Contacts entity service for composition relation.
    Could anybody help me how can I solve my problem?
    Thanks & Regards
    Chandan
    Message was edited by:
            Chandan Jash

    Hi Chandan,
    Can you do person.getRelatedModelObjects() and get the contact object, to check whether it is null, also check in the CAF DB whether the data you entered is present.
      I am not sure the code is actually adding the contact model object to person.
    Go thru this SDN Blog on usage of the CMI API's, there is a link for CMI documentation in it which might help you get the right code for adding the contact object.
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/cef4f43e-0d01-0010-db84-ede25c874115.
    award points if  info is helpful
    Regards,
    Anish

Maybe you are looking for