Top Banner
SAP NetWeaver How-To Guide How To... Create CRUD Operations in Gateway Based on Remote Function Modules Applicable Releases: Gateway 2.0 Version 1.0 April 2010
29

How to Create CRUD Operations in Gateway Services Based on Remote Function Modules

Jul 21, 2016

Download

Documents

AnjuAPillai
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
  • SAP NetWeaver

    How-To Guide

    How To... Create CRUD Operations

    in Gateway Based on Remote

    Function Modules

    Applicable Releases:

    Gateway 2.0

    Version 1.0

    April 2010

  • Copyright 2011 SAP AG. All rights reserved.

    No part of this publication may be reproduced or

    transmitted in any form or for any purpose without the

    express permission of SAP AG. The information contained

    herein may be changed without prior notice.

    Some software products marketed by SAP AG and its

    distributors contain proprietary software components of

    other software vendors.

    Microsoft, Windows, Outlook, and PowerPoint are

    registered trademarks of Microsoft Corporation.

    IBM, DB2, DB2 Universal Database, OS/2, Parallel

    Sysplex, MVS/ESA, AIX, S/390, AS/400, OS/390,

    OS/400, iSeries, pSeries, xSeries, zSeries, z/OS, AFP,

    Intelligent Miner, WebSphere, Netfinity, Tivoli, Informix,

    i5/OS, POWER, POWER5, OpenPower and PowerPC are

    trademarks or registered trademarks of IBM Corporation.

    Adobe, the Adobe logo, Acrobat, PostScript, and Reader

    are either trademarks or registered trademarks of Adobe

    Systems Incorporated in the United States and/or other

    countries.

    Oracle is a registered trademark of Oracle Corporation.

    UNIX, X/Open, OSF/1, and Motif are registered

    trademarks of the Open Group.

    Citrix, ICA, Program Neighborhood, MetaFrame,

    WinFrame, VideoFrame, and MultiWin are trademarks or

    registered trademarks of Citrix Systems, Inc.

    HTML, XML, XHTML and W3C are trademarks or

    registered trademarks of W3C, World Wide Web

    Consortium, Massachusetts Institute of Technology.

    Java is a registered trademark of Sun Microsystems, Inc.

    JavaScript is a registered trademark of Sun Microsystems,

    Inc., used under license for technology invented and

    implemented by Netscape.

    MaxDB is a trademark of MySQL AB, Sweden.

    SAP, R/3, mySAP, mySAP.com, xApps, xApp, SAP

    NetWeaver, and other SAP products and services

    mentioned herein as well as their respective logos are

    trademarks or registered trademarks of SAP AG in

    Germany and in several other countries all over the world.

    All other product and service names mentioned are the

    trademarks of their respective companies. Data contained

    in this document serves informational purposes only.

    National product specifications may vary.

    These materials are subject to change without notice.

    These materials are provided by SAP AG and its affiliated

    companies ("SAP Group") for informational purposes only,

    without representation or warranty of any kind, and SAP

    Group shall not be liable for errors or omissions with

    respect to the materials. The only warranties for SAP

    Group products and services are those that are set forth in

    the express warranty statements accompanying such

    products and services, if any. Nothing herein should be

    construed as constituting an additional warranty.

    These materials are provided as is without a warranty of

    any kind, either express or implied, including but not

    limited to, the implied warranties of merchantability,

    fitness for a particular purpose, or non-infringement.

    SAP shall not be liable for damages of any kind including

    without limitation direct, special, indirect, or consequential

    damages that may result from the use of these materials.

    SAP does not warrant the accuracy or completeness of the

    information, text, graphics, links or other items contained

    within these materials. SAP has no control over the

    information that you may access through the use of hot

    links contained in these materials and does not endorse

    your use of third party web pages nor provide any warranty

    whatsoever relating to third party web pages.

    SAP NetWeaver How-to Guides are intended to simplify

    the product implementation. While specific product

    features and procedures typically are explained in a

    practical business context, it is not implied that those

    features and procedures are the only approach in solving a

    specific business problem using SAP NetWeaver. Should

    you wish to receive additional information, clarification or

    support, please refer to SAP Consulting.

    Any software coding and/or code lines / strings (Code)

    included in this documentation are only examples and are

    not intended to be used in a productive system

    environment. The Code is only intended better explain and

    visualize the syntax and phrasing rules of certain coding.

    SAP does not warrant the correctness and completeness of

    the Code given herein, and SAP shall not be liable for

    errors or damages caused by the usage of the Code, except

    if such damages were caused by SAP intentionally or

    grossly negligent.

    Disclaimer

    Some components of this product are based on Java. Any

    code change in these components may cause unpredictable

    and severe malfunctions and is therefore expressively

    prohibited, as is any decompilation of these components.

    Any Java Source Code delivered with this product is only

    to be used by SAPs Support Services and may not be

    modified or altered in any way.

  • Document History

    Document Version Description

    1.0 First release of this guide.

  • Typographic Conventions

    Type Style Description

    Example Text Words or characters quoted

    from the screen. These

    include field names, screen

    titles, pushbuttons labels,

    menu names, menu paths,

    and menu options.

    Cross-references to other

    documentation

    Example text Emphasized words or

    phrases in body text, graphic

    titles, and table titles

    Example text File and directory names and

    their paths, messages,

    names of variables and

    parameters, source text, and

    names of installation,

    upgrade and database tools.

    Example text User entry texts. These are

    words or characters that you

    enter in the system exactly as

    they appear in the

    documentation.

    Variable user entry. Angle

    brackets indicate that you

    replace these words and

    characters with appropriate

    entries to make entries in the

    system.

    EXAMPLE TEXT Keys on the keyboard, for

    example, F2 or ENTER.

    Icons

    Icon Description

    Caution

    Note or Important

    Example

    Recommendation or Tip

  • Table of Contents

    1. Business Scenario .......................................................................................................... 1

    2. Background Information ................................................................................................. 1

    3. Prerequisites.................................................................................................................... 1

    4. Step-by-Step Procedure .................................................................................................. 2

    4.1 Create the RFC based Gateway Object. ................................................................... 2

    4.2 Create the QUERY Operation. .................................................................................. 4

    4.3 Create the READ Operation. ..................................................................................... 7

    4.4 Create the CREATE Operation. .............................................................................. 10

    4.5 Create the UPDATE Operation. .............................................................................. 11

    4.6 Create the Gateway Consumption Model ................................................................ 14

    4.7 Test the REST Operations. ..................................................................................... 15

  • How To... Create CRUD Operations in Gateway Based on Remote Function Modules

    May 2011 1

    1. Business Scenario

    This How to Guide goes over how to create and test all CRUD (minus Delete since there is no Bank

    delete RFM) operations based on the available Bank BAPIs.

    2. Background Information

    You will need a Gateway 2.0 system to go over thru this How to Guide.

    3. Prerequisites

    You will need the following tools to test your services:

    WFetch HTTP client or Fire Fox Browser which has a REST client similar to WFetch. This How

    to Guide will use WFetch. It can be downloaded from here:

    http://www.microsoft.com/downloads/en/details.aspx?FamilyID=B134A806-D50E-4664-8348-

    DA5C17129210&displaylang=en

    You will need access to a configured Gateway 2.0 system.

    To familiarize yourself with Gateway I suggest the Project Gateway Wiki and the Project

    Gateway Community websites.

    If you are using Internet Explorer make sure it is not configured to show friendly error

    messages. To configure, follow menu path Tools > Internet Options > Advanced > Uncheck

    Show friendly HTTP error messages. This will help you analyze an errors if they occur.

  • How To... Create CRUD Operations in Gateway Based on Remote Function Modules

    May 2011 2

    4. Step-by-Step Procedure

    The following steps will guide you thru creating and testing a Gateway service based on the Bank

    BAPIs.

    4.1 Create the RFC based Gateway Data Model.

    The Gateway Data Model represents the mapping of the Gateway Service to the business data, which

    in this case will come from Remote Function Modules. In this step you will create the Gateway Data

    Model. ...

    1. Logon to the Gateway 2.0 system and go to the ABAP Development Workbench transaction

    SE80.

    2. Create a GW Data Model set the object type drop down to GW Data Model:

    3. In the object name input field enter the name Z_BANK_RFC_:

    4. Click on the eye glasses button to create the data model.

    5. Click the Yes button in the popup window:

    6. In the Create Data Model popup window set the type to PS Public Solution Model:

  • How To... Create CRUD Operations in Gateway Based on Remote Function Modules

    May 2011 3

    7. Except the rest of the defaults (make sure Generate from Data Source Object radio button is

    selected), and click the Enter button.

    8. In the popup window enter a Description, Data Source Type (Remote Function Call), and the

    System Alias (this is the alias that is connected to the back end system). Click Continue.

    9. Your Model should now be displayed. As you can see no RFMs are displayed, you will need to

    search for them.

  • How To... Create CRUD Operations in Gateway Based on Remote Function Modules

    May 2011 4

    4.2 Create the QUERY Operation.

    The QUERY operation is used to get a list of the business objects that your Gateway Service is

    mapped to. In this step you will map the QUERY operation against the BAPI_BANK_GETLIST remote

    function module.

    1. Click the search icon to search for remote function modules:

    2. In the popup window enter the search string BAPI_BANK*:

    3. A list of all matching RFMs are returned:

  • How To... Create CRUD Operations in Gateway Based on Remote Function Modules

    May 2011 5

    4. High light the RFM named BAPI_BANK_GETLIST this will be used for the QUERY operation.

    5. Click the Create Mapping button found on the right hand side of the screen.

    6. In the Map Operation set the Operation Type to Query:

    7. We need to map BANK_CTRY and BANK_KEY of the BANK_LIST table to the S_COR_ID-

    VALUE.

  • How To... Create CRUD Operations in Gateway Based on Remote Function Modules

    May 2011 6

    Note: the S_COR_ID-VALUE is the primary key of generated Gateway services. Each

    Gateway operation must be mapped to the same primary keys. S_COR_ID-VALUE is a 72

    character length string, so the combined length of all primary key fields mapped to it cannot

    exceed this length!

    8. Right click on BANK_LIST-BANK_CTRY and click the Change Mapping button:

    9. In the Mapping Route popup window select the S_COR_ID-VALUE and then click the Enter

    button:

    10. Do the same thing for the BANK_LIST-BANK_KEY attribute (both should be mapped to

    S_COR_ID-VALUE).

    11. Your mapping should now look like this:

    12. Now lets set a constant value on the BANK_CTRY input attribute.

    13. Right click on the BANK_CTRY attribute and click the Set Constant Value button:

  • How To... Create CRUD Operations in Gateway Based on Remote Function Modules

    May 2011 7

    14. In the Set Constant Value popup window enter a value for the Bank Country, in this example

    US with single quites!!!:

    15. Your mapping should now look like the following:

    16. Click the Enter button to complete the operation mapping.

    Note: You may notice that there is no save button to save your Gateway Data Model. To

    save your Gateway Data Model you must click the Generate button, which will not only save the

    Data model but will also generate all of its corresponding classes and configuration. If for some

    reason you became disconnected from the Gateway system your changes will not be saved if

    you have not generated.

    4.3 Create the READ Operation.

    The READ operation is used to read a single business objects data. The OData specification

    mandates that an OData based service must have at the very least a QUERY operation and a READ

    operation. In this step you will map the READ operation to BAPI_BANK_GETDETAIL.

    1. In RFM search results list, select BAPI_BANK_GETDETAIL:

  • How To... Create CRUD Operations in Gateway Based on Remote Function Modules

    May 2011 8

    2. Click the Create Mapping button.

    3. Set the Operation Type to Read.

    4. Map BANKCOUNTRY and BANKKEY input attributes to S_COR_ID-VALUE.

    5. Right click on the BANKCOUNTRY attribute and select the Change Mapping Route button:

    6. In the Mapping Route popup window select the S_COR_ID-VALUE attribute and click the Enter

    button:

    7. Do the same with the BANKKEY input attribute, your mapping for these attributes should now

    look like this:

    8. Uncheck the Return and BankDetails structures, your mapping should now look like this:

  • How To... Create CRUD Operations in Gateway Based on Remote Function Modules

    May 2011 9

    9. Notice in the above image that BANK_NAME and CITY attributes of the BankAddress structure

    are mapped to the previously created attributes from the QUERY operation. Lets do the same

    with the rest of the attributes of the BankAddress structure. We are doing this so that the

    Gateway Data Model has a completely flat structure (no structure or table nodes, all attributes

    are directly under the root node). This is important for two reasons, one it makes for a very

    clean and simple interface, and two operations UPDATE and CREATE which we will be

    mapping later require a flat interfaceno structures or table input are supported for these

    operations!

    10. Right click on the REGION attribute and click the Change Mapping Route button.

    11. Select the root node of your object:

    Note: by selecting the root node of the object you are having the attribute mapped directly under

    it, thus flattening out the structure.

    12. Click the Enter button. Now do these steps for each attribute in the BankAddress structure.

    13. Your mapping should now look like the following:

  • How To... Create CRUD Operations in Gateway Based on Remote Function Modules

    May 2011 10

    14. Click the Enter button to complete the operation mapping.

    4.4 Create the CREATE Operation.

    The CREATE operation creates a business entity. In order for OData to support the CREATE

    operation, structure of the business object mapping must be completely flat. No structures or tables

    are allowed to be passed as input in OData. In this step you will map the CREATE operation to the

    BAPI_BANK_CREATE remote function module.

    1. In the RFM search results, select BAPI_BANK_CREATE:

    2. Click the Create Mapping button.

    3. Select the Create operation type radio button.

    4. Uncheck the BankAddress1 structure, and the BankFormatting, BankMethod, I_XUPDATE

    attributes. Your mapping should now look like the following:

  • How To... Create CRUD Operations in Gateway Based on Remote Function Modules

    May 2011 11

    5. The output attributes BANK_CTRY and BANK_KEY need to be mapped to the S_COR_ID-

    VALUE. Do this, once done the mapping for these attributes will look like this:

    6. Click the Enter button to complete your operation mapping.

    4.5 Create the UPDATE Operation.

    The UPDATE operation updates a business entity. Just like with the CREATE operation, in order for

    OData to support the UPDATE operation the structure of the business object mapping must be

    completely flat. No structures or tables are allowed to be passed as input in OData. In this step you

    will map the UPDATE operation to the BAPI_BANK_CHANGE remote function module.

    1. In the RFM search results, select BAPI_BANK_CHANGE.

    2. Click the Create Mapping button.

    3. Set the Operation Type to Update.

    4. Uncheck the BankAddress1, BankAddress1x, BankDetail, and BankDetailx structures.

    5. Map the input attributes BANKCOUNTRY and BANKKEY to S_COR_ID-VALUE.

    6. Your mapping should now look like the following:

  • How To... Create CRUD Operations in Gateway Based on Remote Function Modules

    May 2011 12

    7. Click the Enter button to complete the operation mapping.

    8. Your Gateway Object should now look like the following:

  • How To... Create CRUD Operations in Gateway Based on Remote Function Modules

    May 2011 13

    9. Click the Generate button. This will generate all the classes and other configuration files needed

    for the service.

    10. When generation is complete you will see the following popup window displayed:

  • How To... Create CRUD Operations in Gateway Based on Remote Function Modules

    May 2011 14

    4.6 Create the Gateway Consumption Model

    The Consumption Model is what exposes the Gateway Data Models to the network. It does this by

    creating a service in the Internet Communication Framework. In this step you will create a

    Consumption Model and then map your Data Model to it.

    1. Now you need to expose the service via the Internet Communication Framework (ICF). Navigate

    to transaction SE80.

    2. In the drop-down select object type GW Consumption Model:

    3. In the input field enter in the service document name in the following format: zbankrfc

    4. Click the Display button and then click the Yes button, the following popup window will be

    displayed:

    5. Enter in the service name zbankrfc, and description and click the Enter button.

    6. The created service document will be displayed. Right click on it and in the context menu select

    Add Gateway Object.

  • How To... Create CRUD Operations in Gateway Based on Remote Function Modules

    May 2011 15

    7. In the popup window enter in Z_BANK_RFC* and click the F4 help button.

    8. Find and select your Gateway Object you created earlierit should look similar to the following:

    9. Your Gateway Object Model should now look similar to the following:

    10. You have successfully created your Gateway servicenow you get to test it.

    11. You can see the Gateway service exposed in the ICF transaction SICF follow the ICF tree

    path default_host > sap > opu > sdata > sap...there you will see a list of all ICF services that

    represent Gateway Consumption Models.

    4.7 Test the REST Operations.

    Now for the fun part! You get to test everything you have done up to this point. Testing the QUERY

    and READ operations is easyyou just need a browser. Testing the CREATE and UPDATE

    operations (as well as the DELETE if we had implemented that), requires the use of a simple HTTP

    tool, the one we use here is WFetch (the FireFox browser also has a nice REST plug-in available).

  • How To... Create CRUD Operations in Gateway Based on Remote Function Modules

    May 2011 16

    1. Go back to transaction SE80 and display your Gateway Consumption Model you created in the

    last step:

    2. Double click on the top level node of your Gateway Consumption Model, this will display its

    properties:

    3. Click the Metadata button. This will launch a browser which will display the metadata of your

    service:

  • How To... Create CRUD Operations in Gateway Based on Remote Function Modules

    May 2011 17

    4. To execute the QUERY operation replace in the URL $metadata with z_bank_rfc_Collection, you should see the following page:

    http://servername:http_port/sap/opu/sdata/sap/ZBANKGEBO/z_bank_gebo2Collection?sap-

    client=800&$format=xml

  • How To... Create CRUD Operations in Gateway Based on Remote Function Modules

    May 2011 18

    1. For each bank in the list there is an atom:id tag with a value of the URL that can be used to call

    the READ operation, for example:

    http://servername:http_port/sap/opu/sdata/sap/ZBANKGEBO/z_bank_rfc_geboColl

    ection(value='0209_US021000089',scheme_id='Z_BANK_RFC_GEBO',scheme_agen

    cy_id='LOCAL')

    2. Copy one of these and paste it into the URL of the browser and navigate to it, the details of the

    Bank will be displayed:

  • How To... Create CRUD Operations in Gateway Based on Remote Function Modules

    May 2011 19

    3. You will need to start WFetch to test the Create and Update operations.

    4. Test the CREATE operation. Enter in the Verb POST, Host, Port and Path. The path should

    be the same as you used to execute the QUERY operation above. You will also need to set

    authentication for Basic auth and enter in your user name and password.

    5. Enter in the required HTTP Header and Body ( in the drop-down select Add Headers&Body):

  • How To... Create CRUD Operations in Gateway Based on Remote Function Modules

    May 2011 20

    Here is an example of the request that you can type in yourself or you can copy the contents of

    the attached file named bank_request.txt. Please note, you will have to change the values to

    match your service(at the very least scheme_id and scheme_agency_id):

    x-requested-with: XMLHttpRequest\r\n

    \r\n \r\n

    \r\n

    \r\n

    \r\n 0209_US021800089 \r\n

    Z_BANK_RFC_GEBO \r\n LOCAL \r\n

    CITIUSXX \r\n 123 Main St \r\n

    \r\n \r\n

    Bank of Gebo \r\n

    \r\n Sacramento \r\n

    \r\n \r\n

    California \r\n CA \r\n

    \r\n \r\n

    \r\n

    /entry>\r\n

    Note: the header x-requested-with is required for CREATE, UPDATE and DELETE operations!

    6. Check the contents of the tagin this case it is 0209_US021200089, this

    value represents the Key value of the bank to be created. The service knows it has two key

    values but it doesnt know how long. 02 is the length of the first attribute, and 09 is the length of

    the second attribute. This is how it is able to parse the key value string. Make sure to enter in a

    unique Bank Number which is currently set to 21200089 in the XML above. Change it to

    something unique.

  • How To... Create CRUD Operations in Gateway Based on Remote Function Modules

    May 2011 21

    7. Now click the Go! button.

    8. The CREATE operation will be executed and the flowing response should be returned:

    Note: notice that in the response if the OData READ operation XML for this bank you just

    created. OData calls the READ operation after the a successful CREATE. This means that your

    OData Gateway services with CREATE operations will need a corresponding READ

    operationwithout the READ operation you would get an exception even though the creation

    was successful.

    9. Now lets test the UPDATE method. In WFetch change the Verb type to PUT:

    10. Set the path to be the same path used when executing the READ operation, in this example it

    will be:

    /sap/opu/sdata/sap/ZBANKRFCGEBO/z_bank_rfc_geboCollection(value='0209_US021800089',

    scheme_id='Z_BANK_RFC_GEBO',scheme_agency_id='LOCAL')?sap-client=800&$format=xml

    Make sure the value is set to the correct Bank Number.

    Note: If copying the path above make sure to change the name Gebo to your name.

    11. Now in the HTTP Header and Body data, change the bank_name and city attributes to

    something different.

  • How To... Create CRUD Operations in Gateway Based on Remote Function Modules

    May 2011 22

    12. Click the Go! button.

    13. If the UPDATE is successful you will receive the following response:

    Note: The HTTP response code of 204 is a successful update responsethere is no response

    body returned hence the codes text No Content.

    14. To make sure that the UPDATE was correct just change the Verb type to GET and disable the

    Header and Body:

    15. It should return in the response the new bank details:

  • How To... Create CRUD Operations in Gateway Based on Remote Function Modules

    May 2011 23

    16. Alternatively just test the read in the browser:

    Congratulations! You have successfully created and tested your Gateway Bank Service!

    http://:/sap/opu/s data/sap/z bank

  • www.sdn.sap.com/irj/sdn/howtoguides

    x-requested-with: XMLHttpRequest\r\n\r\n\r\n \r\n \r\n \r\n 0209_US021200089 \r\n Z_BANK_GEBO2 \r\n LOCAL \r\n \r\n Sacramento \r\n 123 Main St. \r\n El Dorado Hills \r\n \r\n CA \r\n Bank of Gebo \r\n \r\n \r\n \r\n \r\n \r\n\r\n