Quantcast
Channel: SCN : All Content - SAP Gateway
Viewing all 2823 articles
Browse latest View live

Slacking Off (2 of 3)

$
0
0

(This is Part 2 of a 3 part series. See Part 1 and Part 3 for the whole story.)


In Part 1, we got Slack up and running with a Slash Command that will send an HTTP POST to a specified URL endpoint. In this part, I'll show you how to set up a basic Google App Engine web server in Python to respond to this HTTP POST and format a request for SAP Gateway. From Gateway, we'll output the data that the request asks for and send it back to Slack. I will not be exhaustive of all the features of App Engine - this is an SAP blog, after all - but I'll provide sample code, links to how-tos, and some tricks I learned along the way. The amazing thing is that a super basic implementation is only about 40 lines of Python code!

 

 

Setup

  • You'll need a Google account (if you have a Gmail address, you're good to go). I like using an IDE like Eclipse with PyDev installed, but if you are a complete notepad.exe ninja then go for it.
  • You'll need to secure a domain name for yourself, or have rights to one. Google, again, has an easy way to do this.
  • You'll also need to get SSL set up for that domain, which you can do for 90 days free at Comodo.
  • Once you have the cert, you can apply it to your Google Domain like this.

 

Now you're ready to code! The easiest way to set up a project for App Engine is do the play-at-home 5-minute version. This will get you a project set up, the right deployment tools installed, and a project folder ready to go. Try it out, test it a few times.

 

Once you're comfortable with how that works, you can simply replace the code files with code I'll provide below. Note that there are several places in the code where I've put some angle brackets with comments - this is where you'll need to fill in your own solution details. My meager programmer salary won't cover a giant hosting bill because everyone copies my domain/settings and sends all their messages through my server.

 

First, replace the contents of your app.yaml file with this code:

 

application: <your-google-app-id> 

version: 1 

runtime: python27 

api_version: 1 

threadsafe: true   

 

handlers:

- url: /.*   

  script: main.app 

 

 

Very straightforward, not much to comment on here. Just remember to replace the app-id section at the top.

 

Next, create a file called main.py (or replace the contents of the existing one) with this code:

 

import webapp2

import json

from google.appengine.api import urlfetch

 

class SlackDemo(webapp2.RequestHandler):

    def post(self):

        sap_url = '<your-sap-gateway>/ZSLACK_DEMO_SRV/RfcDestinationSet'

        json_suffix = '?$format=json'

        authorization = 'Basic <your-basic-credentials>'

        slack_token = '<your-slack-token>'

        request_token = self.request.get('token')

 

        if slack_token != request_token:

            self.response.headers['Content-Type'] = 'text/plain'

            self.response.write('Invalid token.')

            return

 

        text = self.request.get('text')

        details = {}

 

        if text.find('shout') > -1:

            details['response_type'] = 'in_channel'

            response_text = ''

 

        if text.find('test') > -1:

            rfc_destination = text.split()[-1]

            request_url = sap_url + "('" + rfc_destination + "')" + json_suffix

            headers = {}

            headers['Authorization'] = authorization

            response_tmp = urlfetch.fetch(url=request_url,

                              headers=headers,

                              method=urlfetch.GET)

            response_info = json.loads(response_tmp.content)

            response_text += 'Sensor sweep indicates the following:\n'

            response_text += response_info['d']['Destination'] + ' - '

            response_text += response_info['d']['ConnectionStatus'] + ' - '

            response_text += str(response_info['d']['ConnectionTime']) + ' ms response'

        else:

            response_text += "I'm sorry, Captain, but my neural nets can't process your command."

 

        details['text'] = response_text

        json_response = json.dumps(details)

        self.response.headers['Content-Type'] = 'application/json'

        self.response.write(json_response)

 

app = webapp2.WSGIApplication([

    ('/slackdemo', SlackDemo),

], debug=True)

 

 

I'll do a little explaining here.

  • We'll set up ZSLACK_DEMO_SRV in the next post, part 3.
  • To use Basic authentication, you'll need to take some credentials with access to your SAP Gateway and turn them into base64 encoded characters. One easy way is to bring up the Chrome javascript console (ctrl-shift-j), type "btoa('USERNAME:PASSWORD')", and take the resulting string. Obviously use a real user and password here.
  • Take the slack_token value from the screen where you set up your slack slash command in part 1.
  • The app configuration at the bottom will make it so that you should configure slack to send its commands to https://<your-domain>/slackdemo. Change that to whatever you like.
  • We treat the 'shout' text as a command to send the result of the command to the whole chat window. Otherwise the command will respond only to the person who sends the command and others won't see it.
  • We look for the word 'test' as the key to actually invoke our functionality. If we don't find that, Commander Data will respond with his polite apology.
  • We look for the name of the RFC by splitting the command up into words and then just taking the last word. Python has this nice little syntax for lists where index [-1] is the last element of the list. text.split()[-1] does this for us.

 

Build the project and deploy it to the web site you're using. Now we're ready to create the Gateway service that will do the simple RFC test that Commander Data did in part 1.

 

Off to part 3!


Slacking Off (3 of 3)

$
0
0

(This is Part 3 of a 3 part series. See Part 1 and Part 2 for the whole story.)


In the last 2 posts we paved the way to get some data out of SAP from Slack. First, we set up Slack to send out a request when a user enters a Slash Command. Then, Google App Engine handles that request and forwards it to Gateway. Now Gateway needs to respond back to Google with the RFC connection test that the Slack user asked for.


Here's a simple OData service setup that will test an RFC connection on the ABAP system. My intention is to inspire you to do other cool solutions - I'm just setting this up to show off quick-n-dirty style to explain concepts. Take this and make something else work for you!


Go to SEGW and create a service. I called mine ZSLACK_DEMO. Here's an example setup of the fields for an entity called RfcDestination:


segw for slack service.PNG


Then code up the RFCDESTINATIONSE_GET_ENTITY method in the generated class ZCL_ZSLACK_DEMO_DPC_EXT (assuming you kept the same names I used). Make sure you generate the project first, and then do the redefinition process for the method I mentioned. Here's a great document on setting up class-based Gateway services that goes more in-depth.


Here's a simple implementation of an RFC ping method that matches up with the service we created.


   METHOD rfcdestinationse_get_entity.
     DATA: lv_start TYPE i,
           lv_end TYPE i,
           lo_ex TYPE REF TO cx_root,
           lv_rfcdest TYPE rfcdest,
           ls_key_tab LIKE LINE OF it_key_tab.

     READ TABLE it_key_tab INTO ls_key_tab WITH KEY name = 'Destination'.
     IF sy-subrc IS INITIAL.
       lv_rfcdest = ls_key_tab-value.
     ENDIF.

     er_entity-destination = lv_rfcdest.

     TRY.
       GET RUN TIME FIELD lv_start.
       CALL FUNCTION 'RFC_PING' DESTINATION lv_rfcdest
         EXCEPTIONS
           system_failure        = 1
           communication_failure = 2
           OTHERS                = 99.
       GET RUN TIME FIELD lv_end.

       IF sy-subrc IS INITIAL.
         er_entity-connection_status = 'OK'.
         er_entity-connection_time = ( lv_end - lv_start ) / 1000.
       ELSE.
         CALL FUNCTION 'TH_ERR_GET'
           IMPORTING
             error           = er_entity-connection_status.
       ENDIF.

     CATCH CX_ROOT INTO lo_ex.
       er_entity-connection_status = lo_ex->get_text( ).
     ENDTRY.
   ENDMETHOD.


Maybe not production quality, but ready to do the trick. For a good connection, it will give you an OK ConnectionStatus and a number in milliseconds for the response time. For a bad connection, it will respond with the RFC error in the ConnectionStatus field. Our Google App Engine web server receives this and plugs it into a text response to Slack. When Slack receives the response it puts the text into the chat window for the user who requested it.


Wrapping Up

Assuming all the pieces of the chain have been done correctly, you can activate your slash command. Try it with something like "/ask-sap shout out a test of RFC <your_destination>". If you're all set, the chat window will shortly return to you with a response from SAP.


This was a very simple prototype implementation - but there are so many things you could do! I'll leave you with a brain dump of ideas to inspire you beyond my work.

  • Set up a batch program that looks for new work items for people and send them a Slack message. Wouldn't it be cool to get a digest of everything I need to approve in one private chat window every morning? Check out Incoming Webhooks for more possibilities here.
  • Incoming webhooks would even be a simple way to enable some basic real-time notifications. User-exits or enhancement points could be created with knowledge of the webhooks and respond right away to almost any ABAP event.
  • Plug in some of your master data creation processes (assuming they're simple enough) to fit into a command. Imagine "/sap-create new business partner PAUL MODDERMAN <other field> <other field>".
  • Slack is cloud-based and doesn't require any complex VPN setup. The Slack app on your smartphone would be an easy way to enable your processes for quick response.

 

Go make cool stuff!

User Management functionality working on DEVELOPMENT server but failing on Quality server

$
0
0

Dear Gurus,

 

 

My current User Self service scenario, The User management OData service for Reset Credential i.e ERP_UTILITIES_UMC_URM/ResetUserCredential?UserName='9000000099' is working fine on Gateway Development and ECC Development server as the Status Code in Table is show as 3 (Completed).

But when I try same scenario on Quality environment (simply changing the system alias for the service) for same scenario the Status Code in Table is show as 1

(In process).

 

 

I'am able to carry out the reset functionality successfully with help of  service on development environment:

ERP_UTILITIES_UMC_URM/ResetUserCredential?UserName='9000000099'

 

 

But when I move the system alias to Quality from previous ECC development server, it is failing on Quality environment.

 

 

Please guide the pointer to check. Also if more info is needed to get insight of current issue.

Any input on this would be helpful and appreciated.

Copying other spaces:SAP for Utilities .

 

Best Regards,

Pavan Golesar

 

Message was edited by: Pavan Golesar

You are not authorized to create project

$
0
0

Hi Freinds

 

I want to  build a OData service using SAP Gateway Service , so when i trying  to create a project, i am getting the following error

 

 

 

 

Regards

Srini

Fetching Metadata along with Query/Get opertation

$
0
0

Hi All,

 

I have following questions.

1. I have a requirement to fetch Metadata of the Entity along with the GetEntity/EntitySet operation

Is there any way out for this? url service

/sap/opu/odata/SAP/ZTEST_FLIGHT_SRV/carrierSet?$metadata (This is giving only the fetched data I also need EDM details).

 

 

2. Metadata definition of the project gives all the details of EDM types in XML only, Is there any way to obtain the same data in Json format?

Url Service used

/sap/opu/odata/SAP/ZTEST_FLIGHT_SRV/?$metadata

tried using

/sap/opu/odata/SAP/ZTEST_FLIGHT_SRV/?$format=json (This gives only entityset details not the EDM details)

 

 

Please help me on this

 

 

Thanks

Vishnu

non-SAP vocabulary based Gatewayservice, WEB IDE, required SAP Annotations

$
0
0

Hi Gateway specialists,

 

I have a question regarding SAP Gateway and annotations. This area is new to me.

 

I'm working with SAP WEB IDE. In SAP WEB IDE you can setup the so called CLOUD CONNECTOR
to access SAP Backend Systems. SAP WEB IDE provides a wizard / UI5 templates, which also
need some input regarding the used ODATA service.

 

There are several SAP blogs and posts available, that for example available EntitySets from a choosen
ODATA service only will become available, if the correct SAP ANNOTATION has been clicked in the
choosen ODATA Service. As I remember, it was "Addressable" or "Searchable".

 

OK.

 

Then I went over UI5 and the new SMART CONTROLS, which generate UI layouts completely based
on a reference to an SAP Gateway ODATA Service which needs special annotations !

 

The required annotations could be exposed with an SAP Gateway Service, exposing vocabulary based

annotations. For example out of (in SAP Gateway available) namespace "com.sap.vocabularies.UI.v1".

 

OK.

 

But If a use a GW project with type "Vocabulary based", then the typical SAP annotations (as described
required for SAP WEB IDE ODATA tempates) are not exposed in standard.

 

QUESTION:

 

How can I use / insert the standard SAP annotations into an Gateway project which is vocabulary based ?

 

If I Import the available special namespaces into my Gateway project, I can insert new namespaces as source. But the system (Gateway
Project) asks for a file, which must be used which contains the required "SAP Annotation information."

 

I'm a little bit confused to get Standard SAP annotations (like "updateable", "deletable",...) into my vocabulary based Gateway project.

 

Thanks in advance

Klaus Wegener

Model provider class and data provider class

$
0
0

please explain Model provider class and data provider class?

How to change dev class $TMP for the repository objects of an OData service?

$
0
0

Based on a question that has been asked in the followig thread How to assign OData Model and SRV to TR from Local Object $TMP  I did a little research how to change the development class $TMP for those objects. I found a useful reply by Jan de Mooij  in the following thread change of source system - any mass transaction? | SCN.

 

Since all the examples that I posted in SCN so far are using $TMP as a dev class I also thought that more than one user might have run into the issue of having created a cool service in $TMP and facing the problem how to transport the same into the quality or productive system landscape.

 

For this document I created a new user DEMOSE80 and created a project ZTEST2 using this user in the Service Builder and generated the runtime objects and registered thus the service in the backend.

 

Let's first have a look which objects are created when generating the runtime objects of an OData service ZTEST2 in the backend system using SEGW.

 

PGMID OBJECT OBJ_NAME

 

 

R3TR  CLAS   ZCL_ZTEST2_DPC

R3TR  CLAS   ZCL_ZTEST2_DPC_EXT

R3TR  CLAS   ZCL_ZTEST2_MPC

R3TR  CLAS   ZCL_ZTEST2_MPC_EXT

R3TR  IWMO   ZTEST2_MDL                      0001

R3TR  IWPR   ZTEST2

R3TR  IWSV   ZTEST2_SRV                         0001

 

Beside the 4 classes you will find the Service Builder project R3TR IWPR and the service R3TR IWSV and the model R3TR IWMO.

 

To change these entries you can use transaction SE03 and choose "Change Object Directory Entries".

 

SE03.png

 

When you click on the entry mentioned above you can select the entries that we are looking for as follows:

 

SE03_2.png

 

We will get the following dialog screen

 

SE03_3.png

 

Here you can either select a single entry and press the change object directory button (which I did for two objects) or you can select multiple entries using F6.

 

SE03_6.png

 

and then enter MASS in the OK Code field as suggested by Jan de Mooi in his comment mentioned above .

 

In the following dialog you have to mark the field Package and enter the name of the new dev class (here ZDEMO).

 

SE03_7.png


As a result all objects are now in a dev class ZDEMO that can be transported.




SE03_8.png

 

If you have activated the service on the hub you would have to change the following objects as well:

 

R3TR IWOM ZTEST1_MDL_0001_BE  , the SAP Gateway Model

R3TR IWSG ZTEST1_SRV_0001     , the SAP Gateway Service

R3TR SICF ZTEST1_SRV          , the SICF Service.

 

For questions about transporting SAP Gateway Services see my SCN document How to transport Fiori like applications using SAP Solution Managers Quality Gate Management

 

Best Regards,

Andre


How to assign OData Model and SRV to TR from Local Object $TMP

$
0
0

I had created a SEGW project in $TMP. I want to assign the whole project and its contents to a package and TR. Most of the objects inside that like MPC and DPC classes I have assigned to a package and TR . But the model and service with the name ZZTEST_MDL_01 and ZZTEST_SRV_01 are still not showing in my TR. I dont know how to assign these from $TMP to a package. I tried in SPRO also but only delete option is there for the above model and service but no other option.

 

Regards

Amber

Single Gateway for development and testing?

$
0
0

Hi all,

 

in one of our project customer asks if we could have a single Gateway for development and testing. I think that basically this is possible and would know if there are some known best practices. In particular I have two main questions

 

  • How to connect OData service? Suppose we develop an OData service OurService. The only method I know is to use two system aliases in /iwfnd/maint_service on the Gateway and use roles to specify user specific to which system a request is forwarded. Unfortunately I can't use both systems in parallel for comparison.
    Is there a way to publisch a backend OData service with a different name? E.g. BAckend service is MyService and Gateway publishes it under MyServiceDev?
  • How about transport? We would like to have a devleoper and a test version of our apps deployed to Gateway (reason: Navigation between apps in Launchpad). Sure we can deploy an apps twice with different names. But then we have only one transport from Gateway to Productive system. Did you ever re-deploy an app with different name to same Gateway with standard SAP transport mechanism?

 

Any help or hints are highly appreciated

 

Regards

Meinrad

SAP NetWeaver Gateway Batch Services

$
0
0

Hi All,

I just need small help regarding GateWay Services for Batch-Retrieval Read (POST/PUT).

 

In Rest-Client i'm giving my service URL following $batch& those Header Details--


Authorization: Basic c3VtYW4ucGFkaWExMjM=

x-csrf-token: U1UjqYUouCRIoRTmaF8qOQ==

Content-Type: multipart/mixed; boundary=batch

 

And in BODY, i'm giving

 

--batch

Content-Type: application/http

Content-Type: application/json

content-length: 54768

Content-Transfer-Encoding: binary

 

GET WBSCollection(PROJECT_ID eq '12345') &$format=json   http/1.1

--batch

 

when i'm sending the request getting status message i.e

202 Accepted i.e correct

but in Response TAB getting this message

Response does not contain any data.

 

i checked in my RFC or even Class Label everything is working fine but not getting

any data from rest client ?



 

How to transport Fiori like applications using SAP Solution Managers Quality Gate Management

$
0
0

Authors

 

Max-Dirk Dittrich

Andre Fischer

Patrick Schmidt

 

 

Updates

  • 22.03.2016 Added information how to make objects that reside in $TMP transportable.

 

Introduction

 

In this document we want to describe how to handle the software changes of a project that encompasses the development of

that is deployed on the SAP Gateway server using the Quality Gate Management (QGM) which is part of SAP Solution Manager.

 

The scenario described is also applicable to projects where SAP Fiori applications and the underlying SAP Gateway service are extended and where the changes need to be transported through a typical 3-system landscape.

 

A big plus for both scenarios is that the complete life cycle management of a SAP Gateway service and the corresponding consuming SAP Fiori like application can be managed using the well known SAP Change and Transport System of an ABAP system.

 

The only problem however is that service development and consumer application development are usually carried out by different developers. In addition complexity is added by the fact that during the development process of an OData service repository objects and customizing data are created in the SAP Gateway Backend and SAP Gateway Server whereas the development artefacts of the SAP Fiori like application are only created on the SAP Gateway Server.

 

As a result 1 customizing request and 3 workbench requests in 2 system landscapes have to transported in synch between the SAP Gateway server and backend systems as shown in the following picture.

 

3 - Systemlandscape.jpg

 

This is where the Quality Gate Management (QGM) comes to the rescue. QGM allows for the creation of so called changes which can contain one or more workbench and customizing requests in different systems. With the help of QGM the workbench and customizing requests that have been assigned to those changes can be transported in synch and the process can be controlled and monitored centrally from SAP Solution Manager.

 

Please note:

If the objects that you want to transport cannot be transported since you might have created them in the development class $TMP, please have a look at the following post. How to change dev class $TMP for the repository objects of an OData service?.

 

Demo Flow

 

Step 1 - Create a change

Step 2 - Create workbench requests and customizing request

Step 3 - Gateway Service Builder - OData Service Creation

Step 4 - Gateway Service Builder - OData Service Implementation

Step 5 - Gateway Backend - Service Registration

Step 6 - Maintain Service - Service Activation on SAP Gateway Server

Step 7 - Maintain Service - System Alias Customizing

Step 8 - SAPUI5 Application Development

Step 9 - Transport changes via QGM

 

Step 1 - Create a change

 

The QGM supports the creation of transport request in different systems that are organized through a change request that spans different systems (e.g Gateway Server and Gateway Backend).

QGM.PNG

 

Step 2 - Create workbench requests and customizing request


In a second step three workbench requests for

  • the repository objects of the Gateway service
  • the service implementation and
  • the Fiori application

will be created.

 

In addition a customizing request is created for the customizing settings of the Gateway service as shown in the following screen shot.

 

Transport and Customizing Requests.PNG

Step 3 - Gateway Service Builder - OData Service Creation

 

When the OData service developer starts to create a new project in the Service Builder in the SAP Gateway backend system and assigns it to a development class the developer will be prompted to assign these changes to the transportable Workbench request (here:EH1K900309) that has been created using QGM before.

Assign Service Builder Project to transport request.PNG

Step 4 - Gateway Service Builder - OData Service Implementation

 

The steps shown in the video are described in detail in the how-to-guide How to Develop a Gateway Service using Code based Implementation.

 

Step 5 - Gateway Backend - Service Registration

 

The service implementation ends with the generation of the runtime objects. In this step the repository objects such as ABAP classes are generated and the Gateway service and model are registered in the SAP backend system.

 

Generate runtime objects and register in backend.PNG

 

As a result the developer is prompted to provide a transportable workbench request. Here the same workbench request (here: EH1K900309) will be used that already contains the Service Builder project.

 

add service implementation repository objects.PNG

Step 6 - Maintain Service - Service Activation on SAP Gateway Server

 

In this step the developer activates the Gateway service on the Gateway Server (Hub). Here the developer is prompted to provide a workbench request (here: GW1K900063). Please note that this happens on the Gateway Server development system (here: GW1).

 

Activate Service.PNG

Step 7 - Maintain Service - System Alias Customizing

 

You now want to transport the customizing settings for the system alias(es) that are assigned to the Gateway Service. This can be done from within the customizing table maintance view.

System Alias Transport 1.PNG

The developer will be prompted now to provide a customizing request (here: GW1K900065) that has been created earlier.

 

System Alias Transport 2.PNG


Step 8 - SAPUI5 Application Development

 

The developer of the SAPUI5 app can now develop the app and publish it finally on the Gateway server which is also called the frontend server for Fiori like applications. The SAPUI5 developer can submit the app so that it is published in the SAPUI5 ABAP repository from within his Eclipse development environement. Here the developer will be prompted to provide a workbench request (here: GW1K900067).

 

transport sapui5 app.PNG

 

 

Step 9 - Transport changes via QGM

 

Now QGM will be used to transport the three workbench requests and the customizing request in synch to the quality assurance system and finally to production.

 

release all transport requests 2.PNG

 

The status of the transports can be monitored. If for example a request is missing this can be easily be monitored in QGM

 

missing transport.PNG

 

Finally all requests have been transported to the production system.

 

all transports green.PNG

 

Result - SAPUI5 App runs

 

Finally the SAPUI5 app runs and displays a list of products  .

 

SAPU5 App.PNG

 

 

Appendix - List of repository objects being transported

SAP Gateway Server


The following objects have to be transported between the SAP Gateway server systems:

 

ObjectTransport Type
ServiceRepository Object
ModelRepository Object
ICF Node

Repository Object

System AliasCustomizing
Serivice Registation on the HubCustomizing

 

Objects to be transported between the SAP Gateway backend systems

 

ObjectTransport Type
Service Builder ProjectRepository Object
Model Provider ClassRepository Object
Model Provider Extension ClassRepository Object
Data Provider ClassRepository Object
Data Provider Extension ClassRepository Object
Model objectRepository Object
Service objectRepository Object

 

Fiori like application

 

The repository objects of an Fiori like application are deployed on the so called Frontend Server which is the same as the SAP Gateway server

 

ObjectTransport Type
ICF ServiceRepository Object
Info Object from MIME RepositoryRepository Object
BSP pageRepository Object

 

How to pass decimal data to Netweaver OData service from JSON input

$
0
0

Hi,

 

I have a POST service and I am trying to send some some data to the webservice using JSON format. In my input, only the decimal fields are not getting passed to the service. The Edm type of those fields is Decimal (13,3).

 

My JSON input is as follows:

 

"Item":[{"Field1":"xxxxx",    "Field2":"yyyy",   "DecimalField1":"1.000",         "DecimalField2":"2.000""DecimalField3":"3.000"}]


Please tell me whether I need to change the format of the decimal fields in the input.

Issue with tree structure

$
0
0

Hi Experts,

 

I have created a SAPUI5 application which mock json data, the master page is in tree structure as shown in image, image1 which is working fine.

 

image.png

 

image (1).png

 

The excel sheet snapshot is my mock json representation, using this data only i am creating my mock json.

 

image (2).png

Now the same application has to be build using odata service as backend(without using mock json data). How could i able to give my master page view as a tree structure in a odata service. Please guide me and help me.

Issue in $batch processing

$
0
0

Hi Experts,

 

I have a table in backend with 2 primary key 'BP_KEY' & 'REG_KEY' as shown below.

 

Table.JPG

Now i have to update/insert the records for multiple entries in the table using $batch operations.

 

I have redefined my methods changeset_begin & changeset_end.

 

Now when i try to update the records, the status changes to 202 accepted but gives the information

 

" Empty response body: Check your batch request

body. See also SAP note 1869434."

 

gw_client.JPG

i have given the URI /sap/opu/odata/sap/YBUSI_PROCESS_SRV/$batch

 

the request body content as,

 

--batch

  Content-Type: multipart/mixed; boundary=changeset

 

 

  --changeset

  Content-Type: application/http

  Content-Transfer-Encoding: binary

 

 

  PUT SPRegtnSet(BP_KEY='3004',REG_KEY='6001') HTTP/1.1

  Content-Type: application/json

  Content-Length: 1000

 

 

{

         "BP_KEY" : "3004",

         "REG_KEY" : "6005",

         "REG_NAME" : "FISMA - NIST",

         "VERSION" : "1"

}

 

 

  --changeset

  Content-Type: application/http

  Content-Transfer-Encoding: binary

 

 

  PUT SPRegtnSet(BP_KEY='3005',REG_KEY='6002') HTTP/1.1

  Content-Type: application/json

  Content-Length: 1000

 

 

{

         "BP_KEY" : "3004",

         "REG_KEY" : "6005",

         "REG_NAME" : "FISMA - SANS",

         "VERSION" : "1"

}

 

  --changeset--

  --batch—

 

 

info.JPG

 

output.JPG

The backend table is not being updated. Please help me to resolve this. I dont know where the problem is.

 

Thanks in advance,

Gowtham


Webdynpro for Java Application "Forbidden"

$
0
0

Hi experts,

 

I hope I got the right Forum for my question...

 

I have a Webdynpro for Java application running which is using spring and hibernate for communication with the database (by using a data source defined in the Portal).

Now it should be running in Version 7.40 of SAP Netweaver Enterprise Portal.

 

The application is using a datasource via JNDI.

The JNDI naming seems to be ok.

 

But when I call the Application in the browser I got the following exception attached as files

 

The application is still running well in an older Version of SAP Netweaver Portal.

 

To me it seems as if there are some restrictions so that the applicaiton is not allowed to Access the data source.

And in addition maybe every user (Guest; meaning without authentification on the Portal) needs some permissions granted.

 

Does anybody have an idea on this?

 

Any help highly appriciated!

 

Thanks and best regards,

Roland

Problems after editing DPC_EXT and MPC_EXT

$
0
0

i have project in SEGW. Most of funcionalities was supported by generator.

 

And after I redefine DPC_EXT and MPC_EXT i fanced troubles.

 

No metadata and funcionalities for previous work (with generator). After this i deleted DPC_EXT and MPC_EXT classes. it wasnt good idea also.

 

Is there is posibility to generete DPC_EXT and MPC_EXT one motre time ?

Loading the metadata for service failed - Data object not found

$
0
0

Hello SAP Gateway Expert,

I'm using the Gateway for some times now and I encountered a strange error.

 

I created a service with Entities based on ABAP RFM and it was working fine. I added an association to manage a DEEP_ENTITY creation and now I have an error when I try to use the service.

From /n/iwfnd/maint_service, when I select my service and click the button "Load metadata", I get an error "Loading the metadata for service 'Z_PDE_CREATE_SRV' failed. Check the error log. "

 

And the error log is telling "Data object 'HeaderPDESet' not found" which strange because the object is existing !

 

I deleted and recreated the Entity and the EntitySet, I regenerated the project, I cleaned the caches /IWFND/CACHE_CLEANUP and /IWBEP/CACHE_CLEANUP.

 

For no effect... Any clue is appreciated !

Thanks,

Luc

NW Gateway Client Problem

$
0
0

Hi experts,

 

I have a problem when executing my web service. it gave me the following Error.

 

HTTP Send failed: HTTPIO_ERROR_CUSTOM_MYSAPSSO-Fehlermeldung beim Senden der Daten.

Message no. /IWFND/COS_SUTIL100

 

I can access my service through REST client in chrome.

 

Please help me on what I should do on this.

and let me know if you need more information.

 

Thank you so much.

-Martin-

Error while access service

$
0
0

Hi there.

I'm trying to create my first fiori app using scn tutorials.

I've created a Odata service in "/IWFND/MAINT_SERVICE - Activate and Maintain Services", the system put it there

sap/opu/odata/sap/ZGW_RE_BU01_SRV

 

When i try to access it i get an error in chrome:

 

Call of service /sap/opu/odata/sap/zgw_re_bu01_srv terminated because of an error. The following error text was processed in system SID : Syntax error in program /IWFND/CL_SODATA_HTTP_HANDLER=CP .The error occurred on the application server SERVER. The termination type was: RABAX_STATE.If the termination type is RABAX_STATE, you will find more information on the cause of termination in system SID in transaction ST22. If the termination type is ABORT_MESSAGE_STATE, you will find more information on the cause of termination on the application server SERVERin transaction SM21. If the termination type is ERROR_MESSAGE_STATE, you can search for further information in the trace file for the work process in transaction ST11 on the application server . You may also need to analyze the trace files of other work processes. If you do not yet have a user ID, contact your system adminmistrator.

 

I've checked ST22 and found, then method HANDLE_CSRF_TOKEN is not inheritaded.

My service inheritate "Logon procedure" from upward service sap/opu/

I tried to deactivate ~CHECK_CSRF_TOKEN=0 but has no result.

Also i checked parameters in profiles:

login/accept_sso2_ticket = 1

login/create_sso2_ticket = 2

login/ticket_only_by_https = 0

 

my system is

SAP_GWFND 740 0004

 

What should i try next to have access to service? its local system, so i dont bother about security.

Thank you!

Viewing all 2823 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>