B1if and Consuming Web Services by PHP

Hi Experts,
We are in the process of integrating a custom made ecommerce  application with SAP B1. We had gone through the SDN Blog and found a Topic viz, Creating Web Services with B1if and Consuming by DotNet
[http://www.sdn.sap.com/irj/scn/weblogs?blog=/pub/wlg/28162]
We would like to get the same with that of PHP. Say, while pressing a button in PHP webpage,  I would have to add an  Item master in SAP B1 by using B1if
Please help.
Thanks in advance
Arun

Hi Cezary,
How to consume a web service from php?
I have a web service hosted on this route:
http://<my-ip>:8080/B1iXcellerator/exec/soap/vP.0010000101.in_WCSX/com.sap.b1i.vplatform.runtime/INB_WS_CALL_SYNC_…
I got it from, Scenario-control-trigger in B1if.
I want to consume this service from php, is it possible?
Jerry

Similar Messages

  • Creating and consuming web service

    Hello Everyone,
    Please help me in creating a webservice which can be consumed in a button in Excel sheet i.e. I have to create a button in Excel sheet and on click of that button i have to consume a web service deployed in AS. Also I have to pass the data in Excel sheet to that web service.
    PS: This is just a business logic no other view or UI is required here.
    Thanks in advance.
    Regards
    Pranav

    Hi Pranav
    >2. I know I can download WSDL files from server using the test page. Downloaded zip file has these three wsdl files Config1_document.wsdl, Config1_TestVi_document.wsdl and main.wsdl. But which wsdl to use while consuming.
    Actually all the .wsdl files are part of single WSDL document which describes your Web service. Starting/root point here is main.wsdl which references two other .wsdl. You can access any time the root WSDL part by URL like
    "http://<host>:<port>/BcfRemoteCheck/Config1?wsdl&style=document&mode=standard".
    Hope you know where to see the WSDL URL (in Webservice Navigator or in Single Service Administration where you downloaded the ZIP).
    When you are consuming web-service you need all the parts. Usually when a Web-service is consumed the remote WSDL is used for generation of WS Client Proxy. But, the WSDL files can be also downloaded and used locally for generation of the WS Client Proxy.
    Sometimes the WSDL is not necessary at all for WS consuming on run-time. In the case it's used only on design-time just to know WS names, ports, operations, etc, for writing the code of WS Client.
    BR, Sergei

  • How to publish and consume web services in WAS 620?

    It appears that Web Service Creation Wizard is only available in WAS 640. We only have WAS 620 installed. Do any of you know what are the steps to publish ABAP function modules as web services, as well as to consume web services?
    Thanks,
    Angela

    Hi Angela,
       If you want to expose function modules as web service, you can generate WSDL by running BSP application 'webservicebrowser'. If you want to consume a web service then it is a bit difficult but possible. Look at sample programs (rsvsoap*).
    Also look at help document http://help.sap.com/saphelp_47x200/helpdata/en/94/f8c8a2e68811d6b2dc00508b5d5211/frameset.htm
    Regards,
    Sanjeev

  • Consuming web service in PHP

    Hello,
    I have a PHP page that consumes the web service from ABAP side.
    ABAP is definitely returning a table with a list of materials to the PHP page because we have set a remote breakpoint in the ABAP system and it is breaking at that particular point.
    Now i would wish to iterate through the results from the return table.
    $client = new SoapClient($wsdlfile,
                    array('login'      => "xxx",
                          'password'   => "xxx",
                          'trace'        => true,
                          'exceptions' => true));
      try {
         $results = $client->ZxtGetMaterialList();
           print_r($results);
    For the print_r function, it is giving me the following.
    stdClass Object ( [ItBapimatdoa] => stdClass Object ( ) )
    Does anyone has any idea how to iterate through the results?

    Hi Gregor,
    Thanks for the reply,
    There is no input parameters for the function module and a table is returned successfully.
    Anyway I have generated the codes by using the scripting languages tool provided over here, http://www.sdn.sap.com/irj/scn/downloads?rid=/library/uuid/cdbe319e-0d01-0010-92b7-dd4625e7e9de&overridelayout=true
    The generated php codes works fine. And i will follow up from the generated code.
    thank you.

  • Exposing and Consuming web service using NWDS

    Hi all,
    I want to expose and consume a webservice using NWDS.
    My java application will interact with the SAP web service to create materials in r3.
    I just want to know how to create a EJB project that contains the Web service and deploy on the SAP WAS.
    and from the java application how would I access the same.
    do I need to AXIS jar ?
    How would get The WSDL corrosponding java files ?
    I will be very thank ful if you can provide me with the some study materials also.
    Warm regards

    Hi
    Refer these links
    https://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/media/uuid/60dbd7ac-4788-2910-539b-b3599c64be12
    http://help.sap.com/saphelp_nw04s/helpdata/en/d6/f9bc3d52f39d33e10000000a11405a/frameset.htm
    Regards
    Abhishek

  • Consuming web service in PI 7.3 and creating file

    Hi,
    I need to consume web service in PI 7.3 and create file from response. I have WSDL for the web service. Now confused about datatype/message type. Is there any document/note to follow?
    thanks,
    7Z

    I need to consume web service in PI 7.3 and create file from response. I have WSDL for the web service. Now confused about datatype/message type. Is there any document/note to follow?
    ==>
    Hi,
    There are 2 ways you can do this :-
    If your sender is a file and receiver is a webservice and you want to map the response back to the file then :-
    Sol 1 :- Async-Sync Bridge using RequesResponse Oneway bean
    Sender File channel ---> Soap Receiver Channel
    Soap Receiver Channel brings the response back to the File Receiver Channel.
    Now this File Receiver Channel should be called inside the Sender File Channel using the above bean.
    Data Type :
    Src - File struc to SOAP request (WSDL used as an external definition)(mapping 1)
    SOAP response(WSDL used as an external definition) to Tgt File Struc (mapping 2)
    Sol 2 :- Async Scenario
    Make a Sender File Channel --> use SOAP lookup channel (pass the request payload through the SOAP receiver channel) --> Map the response back to the File using File Receiver Channel.
    Data Type:
    Src - File struc to Tgt File Struc (mapping 1). Since you are passing the request payload through SOAP lookup in the UDF itself.
    ======================================================================

  • How to consume web service in jdev 10.1.3 and OAF 12.1.3

    I have a question regarding consuming web service in jdev 10.1.3. I have a WSDL url and want to generate java stub files from the wsdl. How do I do this using jdev?

    This is now contained in the PageDefinition file.
    1. Right-click on the Data Action, and then select Go to Page Definition
    2. Add an attribute to the <pageDefinition> tag called ControllerClass="MyPackage.ShowInfoAction"
    If you have more than 1 Data Action linked to a PageDefinition, then there is more work required.
    Hope this helps

  • WebCenter Sites : Consume Web Services and apply templates

    Hi,
    What is the best approach to consume Web Services or REST Service with Sites?
    The idea is to consume some eServices personalized for a connected user and apply different presentation templates for those services to add to Sites pages.
    Any Best practices here ?
    Regards
    Jo

    For consuming SOAP services inside a delivery template, there used to be the webservices:invoke tag but it was deprecated in version 7.6, and was generally not recommended to use anyway. There are no new tags for consuming SOAP or REST webservices, customers asking to do that are generally advised to reuse the existing libraries and write their client code in java, for example directly in an element/template or custom tag that you use in elements/templates. For performing simple REST queries you could use ics.ReadPage or httpclient.
    Sites (was CS) comes with jars for handling SOAP and REST services, such as saaj, xmlbeans, jaxrpc, and jersey. You can use these, but if you run into bugs or limitations with the provided versions be aware that upgrading these jars may break Sites. And similarly, upgrading Sites may change these jars and so break your client code.
    Phil

  • Consuming Web Services in 11.2 does not work (UTL_DBWS)

    Hello
    i read some documents for consuming web services on the internet , but i get an error when i call add_numbers function as follows:
    i connected on WSUSER , then
    SQL> select add_numbers(1,3) from dual;
    The Error message is:
    ERROR at line 1:
    ORA-29532: Java call terminated by uncaught Java exception:
    java.lang.IllegalAccessException: java.lang.ExceptionInInitializerError
    ORA-06512: at "WSUSER.UTL_DBWS", line 193
    ORA-06512: at "WSUSER.UTL_DBWS", line 190
    ORA-06512: at "WSUSER.ADD_NUMBERS", line 25"
    I use the following steps to setup the UTL_DBWS :
    1-     Create new user 'WSUSER'
    2-     Run the UTL_DBWS scripts ( utl_dbws_decl.sql , utl_dbws_body.sql) on WSUSER.
    3-     Execute this command
    loadjava -u scott/tiger -r -v -f -genmissing dbwsclientws.jar dbwsclientdb11.jar
    4-     Log in as sys and grant these privileges to our new user:
    execute dbms_java.grant_permission('WSUSER','SYS:java.util.PropertyPermission','http.proxySet','write');
    execute dbms_java.grant_permission('WSUSER','SYS:java.util.PropertyPermission','http.proxyHost', 'write');
    execute dbms_java.grant_permission('WSUSER','SYS:java.util.PropertyPermission','http.proxyPort', 'write');
    execute dbms_java.grant_permission('WSUSER','SYS:java.lang.RuntimePermission', 'accessClassInPackage.sun.util.calendar','');
    execute dbms_java.grant_permission('WSUSER','SYS:java.lang.RuntimePermission','getClassLoader','');
    execute dbms_java.grant_permission('WSUSER','SYS:java.net.SocketPermission','*','connect,resolve');
    execute dbms_java.grant_permission('WSUSER','SYS:java.util.PropertyPermission','*','read,write');
    execute dbms_java.grant_permission('WSUSER','SYS:java.lang.RuntimePermission','setFactory','');
    execute dbms_java.grant_permission('WSUSER','SYS:java.lang.RuntimePermission', 'createClassLoader', '' )
    5-     Create add_numbers function on wsuser to test utl_dbws:
    CREATE OR REPLACE FUNCTION add_numbers (p_int_1 IN NUMBER,
    p_int_2 IN NUMBER)
    RETURN NUMBER
    AS
    l_service UTL_DBWS.service;
    l_call UTL_DBWS.call;
    l_wsdl_url VARCHAR2(32767);
    l_namespace VARCHAR2(32767);
    l_service_qname UTL_DBWS.qname;
    l_port_qname UTL_DBWS.qname;
    l_operation_qname UTL_DBWS.qname;
    l_xmltype_in SYS.XMLTYPE;
    l_xmltype_out SYS.XMLTYPE;
    l_return NUMBER;
    BEGIN
    l_wsdl_url := 'http://www.oracle-base.com/webservices/server.php?wsdl';
    l_namespace := 'http://www.oracle-base.com/webservices/';
    l_service_qname := UTL_DBWS.to_qname(l_namespace, 'Calculator');
    l_port_qname := UTL_DBWS.to_qname(l_namespace, 'CalculatorPort');
    l_operation_qname := UTL_DBWS.to_qname(l_namespace, 'ws_add');
    l_service := UTL_DBWS.create_service (
    wsdl_document_location => URIFACTORY.getURI(l_wsdl_url),
    service_name => l_service_qname);
    l_call := UTL_DBWS.create_call (
    service_handle => l_service,
    port_name => l_port_qname,
    operation_name => l_operation_qname);
    l_xmltype_in := SYS.XMLTYPE('<?xml version="1.0" encoding="utf-8"?>
    <ws_add xmlns="' || l_namespace || '">
    <int1>' || p_int_1 || '</int1>
    <int2>' || p_int_2 || '</int2>
    </ws_add>');
    l_xmltype_out := UTL_DBWS.invoke(call_Handle => l_call,
    request => l_xmltype_in);
    UTL_DBWS.release_call (call_handle => l_call);
    UTL_DBWS.release_service (service_handle => l_service);
    l_return := l_xmltype_out.extract('//return/text()').getNumberVal();
    RETURN l_return;
    END;
    6-     Test the function
    Select add_numbers(1,2) from dual
    on the test i get the error message :
    ERROR at line 1:
    ORA-29532: Java call terminated by uncaught Java exception:
    java.lang.IllegalAccessException: java.lang.ExceptionInInitializerError
    ORA-06512: at "WSUSER.UTL_DBWS", line 193
    ORA-06512: at "WSUSER.UTL_DBWS", line 190
    ORA-06512: at "WSUSER.ADD_NUMBERS", line 25
    anyone have an idea to resolve this error .
    thanks alot

    Hi.
    Looking at the code, it seems it is my article you are asking about.
    http://www.oracle-base.com/articles/10g/utl_dbws10g.php
    I've just run through it on an 11.2 instance and it works fine for me.
    Make sure your server has access to the Internet and make sure the java classes are loaded successfully.
    Cheers
    Tim...

  • Best practice for consuming web services

    Hi
    we are consuming web service in orchestration by "Add Generated Item".By using this option it creates 1 orch,1xsd file and some bindings.
    we have different projects for schemas,maps and orchestration under our solution in visual studio.
    Now i need to know that what will be the best practice for consuming web service in orchestration i mean in which project should i use "add generated item" (in orchstration project or in schemas project) coz it generates both 1 orch and 1
    schema.
    thanks

    From a service orientation perspective you should abstract the service artifacts from the other artifacts. Otherwise it will be very difficult to update the service interface without affecting the other artifacts. For example you don't want to have to redeply
    your entire application if only one field changes in the service you consume.
    So I typically generate the items, remove the unnecessary stuff, and put them in a separate project.
    Depending on the control you have over the services you want to consume, it would even be better to create another layer of abstraction. By that I mean create your own interface (schema) and map that one to the one the service exposes. This basically
    is only necessary if you consume external services that are beyond your control. By abstracting the interface it exposes, you limit the impact of changes of that interface on the rest of your system. All changes are abstracted behind your own interface.
    If you consume internal services, you can probably control the way the interface is defined. In a service oriented world all internal services expose a well known interface, based on the domain objects you have within your organisation.
    Jean-Paul Smit | Didago IT Consultancy
    Blog |
    Twitter | LinkedIn
    MCTS BizTalk 2006/2010 + Certified SOA Architect
    Please indicate "Mark as Answer" if this post has answered the question.

  • Windows authentification while consuming web service from ABAP

    Hi All,
    We are consuming web service from ABAP, we have created client proxy in SE80 and configured logical port in LPCONFIG.
    This one was working fine. Now we have added  windows user authentification to access this service.
    Now when I'm trying to regenerate this proxy in R/3 it is asking for user and password. When I enter these details this one is not working.
    If I access this service direcly from internet explorer and I enter same user and password then I would able to access this service.
    Could you please let me know how to handle this.
    Regards
    Vikram

    The dialog that is produced by HTTP Destination object of the logical port is designed only for use within Classic Dynpro applications.  There is no prompt produced when running in Web Dynpro.  If possible assign a generic user within the logical port definition and this will be used automatically by all users.

  • Consume web service in ABAP proxy with SOAP header

    Hi Thomas ,
    I am trying to consume web service in  ABAP . I have followed the procedure from one of your web blog <a href="/people/thomas.jung3/blog/2004/11/17/bsp-a-developers-journal-part-xiv--consuming-webservices-with-abap a Developer's Journal Part XIV - Consuming WebServices with ABAP</a> . (640 release).
    I need to pass SOAP header along with SOAP body. As you mentioned I have used if_wsprotocol_ws_header interface to pass header but it is still failing.
    Please see below code and please give some direction to fix the issue.
    1.Create ABAP proxy for WSDL (http://ws.strikeiron.com/SwanandMokashi/StockQuotes?WSDL). It has created structures only for SOAP body.
    2.Create Logical port
    3.Create following program to call proxy
    REPORT  zproxy.
    DATA: ref_stock TYPE REF TO zzco_stock_quotes_soap ,
          ws_header TYPE REF TO if_wsprotocol_ws_header,
          name TYPE string,
          namespace TYPE string.
    TRY.
        CREATE OBJECT ref_stock
      get WS_HEADER protocol
        ws_header ?= ref_stock->get_protocol('IF_WSPROTOCOL_WS_HEADER').
      set somehow header as iXML-DOM tree
        DATA: ixml TYPE REF TO if_ixml,
              xml_document TYPE REF TO if_ixml_document,
              xml_root TYPE REF TO if_ixml_element,
              xml_element TYPE REF TO if_ixml_element,
              xml_node TYPE REF TO if_ixml_node.
        DATA l_xstring        TYPE xstring.
        DATA l_string         TYPE string.
        FIELD-SYMBOLS <fs_xstring> TYPE xstring.
      Additional Header:
        CONCATENATE
    '<soap:Header>'
    '<s1:LicenseInfo xmlns:s1="http://ws.strikeiron.com">'
    '<s1:RegisteredUser>'
    '<s1:UserID>[email protected]</s1:UserID>'
    '<s1:Password>aaaaaaaa</s1:Password>'
    '</s1:RegisteredUser></s1:LicenseInfo>'
    '</soap:Header>' INTO l_string.
      convert to xstring
        l_xstring = cl_proxy_service=>cstring2xstring( l_string ).
        IF NOT l_string IS INITIAL.
        create iXML DOM document from XML xstring
          CALL FUNCTION 'SDIXML_XML_TO_DOM'
            EXPORTING
              xml           = l_xstring
            IMPORTING
              document      = xml_document
            EXCEPTIONS
              invalid_input = 1
              OTHERS        = 2.
          IF sy-subrc = 0 AND NOT xml_document IS INITIAL.
            xml_root = xml_document->get_root_element( ).
            xml_element ?= xml_root->get_first_child( ).
          add header element by element to SOAP header
            WHILE NOT xml_element IS INITIAL.
              name = xml_element->get_name( ).
              namespace = 'http://swanandmokashi.com' . "xml_element->get_namespace_uri( ).
              IF NOT xml_element IS INITIAL.
              ENDIF.
              ws_header->set_request_header(
                          name = name
                          namespace = namespace
                          dom = xml_element ).
              xml_element ?= xml_element->get_next( ).
            ENDWHILE.
          ENDIF.
        ENDIF.
      CATCH cx_ai_system_fault .
    ENDTRY.
    *Call soap body using abap proxy class.
    DATA: get_quotes TYPE zzget_quotes_soap_out .
    DATA: get_quotes1 TYPE zzget_quotes_soap_in .
    get_quotes1-quote_ticker = 'GE'.
    TRY.
        CALL METHOD ref_stock->get_stock_quotes
          EXPORTING
            get_quotes1 = get_quotes1
          IMPORTING
            get_quotes  = get_quotes.
      CATCH cx_ai_system_fault .
      CATCH cx_ai_application_fault .
    ENDTRY.
    4.It is throwing cx_ai_system_fault error.
    SOAP details:
    Input:
    <?xml version="1.0" encoding="utf-8"?>
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding" >
    <soap:Header>
    <s1:LicenseInfo xmlns:s1="http://ws.strikeiron.com">
    <s1:RegisteredUser>
    <s1:UserID>[email protected]</s1:UserID>
    <s1:Password>aaaaaaaa</s1:Password>
    </s1:RegisteredUser>
    </s1:LicenseInfo>
    </soap:Header>
    <soap:Body>
    <tns:GetQuotes xmlns:tns="http://swanandmokashi.com">
    <tns:QuoteTicker>GE</tns:QuoteTicker>
    </tns:GetQuotes>
    </soap:Body>
    </soap:Envelope>
    Thanks,
    Kavitha.

    Hi ,
    Thank you for the response. Did you passed user email and password ([email protected] /aaaaaaaa) part of licenseinfo->resisteredUser along with Quoteticker GE in analyzer?
    <a href="http://www.strikeiron.com/Analyzer/OnlineAnalyzer.aspx?WSDL=http://ws.strikeiron.com/SwanandMokashi/StockQuotes?WSDL">ANALYZER</a>
    Thanks,
    Kavitha.

  • Standard Web Service and Customized Web Services with or without PI?

    Hi All,
    I want to know how I can use Standard Web Service available in SAP  and customized Web Services
    without PI Interface?
    And what is the best practice to expose services ,via PI Interface or directly?
    Thanks in advance!!
    Pushkar

    This is purely based on your requirement. If you use PI middleware to expose web services, you get standard functionalities such as certificate authentication, logging, message reprocessing for the failed messages etc.  If your requirement is so simple, then you might not need PI. In this case you can develop simple webdynpro for abap program to create webservice and expose the webservice in ECC webservice runtime. You can let anyone to consume within your network. other ways like exposing BAPI/RFC as webservice.  I would recommend going with PI.

  • Consuming Web Services with ABAP - WSDL

    Hi All,
    I Want to consume web service in abap, i found lot of documents,Here i am having data in the internal table i need to pass
    it to wsdl file, The Web Service or Proxy generates a WSDL file. So this WSDL file can be consumed on ABAP Front and Encrypt the Data that is to be sent to the Banks.
    I found the input and output, Where i can find the method generated or we need to create it
    CALL METHOD io_clientproxy->XXXXXXXXXXXX
    please let me have your valuable ideas
    Thanks in advance,
    Arun.

    Hi Miguel,
    I have not heared about SPROXY, Here i found some code,which calls a web service method and where it is from.
    when i double click on my proxy it shows me some method.IF_PROXY_BASIS_INTERNAL~CREATE_FRAMEWORK
    this is the one web service method. and i meed to pass the internal table data to WSDL file.
    *-- create web service proxy class instance
    TRY.
        CREATE OBJECT io_clientproxy
          EXPORTING
            logical_port_name = 'LP4'.
      CATCH cx_ai_system_fault.
    ENDTRY.
    *-- call web service methods
    TRY.
        CALL METHOD io_clientproxy->get_airport_information_by_is
          EXPORTING
            input  = input
          IMPORTING
            output = output.
      CATCH cx_ai_system_fault.
      CATCH cx_ai_application_fault.
    ENDTRY.
    *-- text processing
    output_string = output-get_airport_information_by_is.
    REPLACE ALL OCCURRENCES OF
        '<' IN output_string WITH '<' .
    REPLACE ALL OCCURRENCES OF
    '>' IN output_string WITH '>' .
    REPLACE ALL OCCURRENCES OF
    'xmlns=' IN output_string WITH 'xmlns:xsl=' .
    *-- parsing
    TRY .
        CALL TRANSFORMATION ('Y_AIRPORT_XML2ABAP')
                SOURCE XML output_string
                RESULT     outtab = outtab.
      CATCH cx_xslt_exception INTO xslt_err.
        DATA: s TYPE string.
        s = xslt_err->get_text( ).
        WRITE: ': ', s.
        STOP.
    ENDTRY .
    Regards,
    Arun.

  • Code for consuming web services in ABAP

    *& Report  ZVM_GET_CITY_TIME
    REPORT  zvm_get_city_time.
    PARAMETERS:
      p_city TYPE zget_city_time_soap_in-city.
    DATA:
      cl_proxy TYPE REF TO zco_time_service_soap,
      input    TYPE zget_city_time_soap_in,
      output   TYPE zget_city_time_soap_out,
      systerr  TYPE REF TO cx_ai_system_fault,
      w_error  TYPE c.
    TRY.
        CREATE OBJECT cl_proxy
          EXPORTING
            logical_port_name = 'ZCO_TIME_SERVICE_SOAP'.
      CATCH cx_ai_system_fault.
        CREATE OBJECT systerr.
        WRITE:/ 'Error in creating object - ', systerr->errortext.
    ENDTRY.
    TRY.
        input-city = p_city.
        CALL METHOD cl_proxy->get_city_time
          EXPORTING
            input  = input
          IMPORTING
            output = output.
      CATCH cx_ai_system_fault.
        CREATE OBJECT systerr.
        WRITE:/ 'Error in calling the method - ', systerr->errortext.
        w_error = 'X'.
    ENDTRY.
    CHECK w_error NE 'X'.
    SKIP.
    WRITE:/ 'The current time in ', p_city, ' is ',
            output-get_city_time_result.

    <i> is there any other way to consume web services in ABAP</i>
    you can use cl_http_client class to make your program to act as http client and post the soap message too webservice. This way you dont need to generate proxy, but you should know the soap message format.
    Regards
    Raja

Maybe you are looking for