You are on page 1of 31

openSAP

Developing Java-Based Apps on SAP Cloud


Platform (Update Q1/2017)
Week 5 Unit 1

00:00:13 Hi, and welcome to Week 5 Unit 1 of the openSAP course "Developing Java-Based Apps
on SAP HANA Cloud Platform". In this unit, we will take a look at SAP HANA Cloud
Platform, API management.
00:00:27 Here in theory, and then in the next unit we will go into the practice and do some hands-on
exercises with it. For this topic, I have Holger Bruchelt with me.
00:00:37 He is product manager for SAP HANA Cloud Platform, API management, and now I would
like to hand over.
00:00:43 Thank you, Sven. Welcome from my side.
00:00:46 Before I go into the details and explain a little more about what API management is and
what you can use it for, let me take a quick look at the situation that we see currently with
our customers.
00:00:57 So right now customers are using a lot of ERP, CRM, and database systems, which we call
the systems of records. When thinking about these systems and thinking about the
innovation cycle,
00:01:12 it's typically an innovation in a time period of years. Now when you compare that to your
personal life, when you work with your applications on your mobile phone,
00:01:22 or with other applications on the Internet, you're much more used to innovation cycles in
days.
00:01:29 So typically if you don't get an update for your application every other day, it seems
outdated – old-fashioned. Here we have a big challenge for enterprises.
00:01:39 On the one hand, we really have these systems of record with a very long innovation cycle.
So typically we see customers who are only using a maintenance window once a year or so,

00:01:51 where they have time to update and innovate their systems. So we have an issue with these
long-lasting systems of record and the fast-paced innovation flow that the customer expects.

00:02:05 Of course, based on these systems of record, what we see is a system of engagement
where you can have integration capabilities, where you can add in security mechanisms,
00:02:14 where you can mash up different data sources, where you can actually create new
applications, so that you can expose these new services to the top-most level, the
consumer level,
00:02:29 where you have your customers, where you have your employees, where you have partners
who can consume this data. So here is where the actual system innovation lives.
00:02:38 Where customers expect these daily new updates, these new features, these new
functionalities. There's obviously now a gap between this system of engagement and the
systems of innovation.
00:02:50 And that's exactly where the SAP HANA Cloud Platform with API management can fill in
this With API management, you can actually bridge this system of engagement with this
system of innovations
00:03:03 and really enable an easy consumption of the different services that you as a business
might have. Yes, so here it's like the pace-layered IT style, right?

1
00:03:14 So it's also the difference that with SAP HANA we are shipping service packs about once or
twice a year, and with HANA Cloud Platform, we are shipping new updates and features
every two weeks.
00:03:25 So exactly in that direction, right? Exactly.
00:03:28 And that's really the powerful platform piece of the HANA Cloud Platform where you can
easily deploy and develop applications, similar to what we've seen in the previous units.
00:03:38 The API management layer basically just introduces an additional management layer on So
when talking and thinking about API management,
00:03:48 what I very much like to compare this with, and obviously this is just a very high-level
comparison, is that you could compare API management to a bouncer protecting the club.
00:04:00 So think of it as the bouncer checking tickets. You are only allowed to get into the club and
really party if you have a valid ticket.
00:04:10 Very similarly, API management can use what are known as API keys to protect the entry
toward the back-end system.
00:04:18 So this API management layer can check whether there is a valid ticket, and only if there is
one will the request be passed back to the back-end system.
00:04:29 The next thing is that some bouncers might check for an additional authentication. Maybe
they want to check your ID to make sure that you are of a certain age,
00:04:37 or that the ticket that you're presenting also matches your identification. And very similarly,
API management can do a similar identity check.
00:04:48 So it can check for different identity providers. Like the Cloud Identity provider on HCP,
00:04:55 it can also be used to validate against social media providers, like from Facebook, Google,
or some others.
00:05:03 So there's another form of protection which can be introduced with API management.
Finally, the bouncer might also check your dress code.
00:05:13 Maybe you have to wear a tie or something like that to enter this club. And very similarly,
API management can check the content of the incoming request.
00:05:23 Maybe it can validate it against a certain structure. And only if this check is matched is the
request actually passed onwards to the back-end system.
00:05:33 So really like a bouncer, API management is the first level of defense of your back-end
systems. So also comparing this to the security services on SAP HANA Cloud Platform,
which we covered in Week 3 of this course,
00:05:46 with the authentication and authorization mechanisms. So this really covers this for APIs.
00:05:53 But even more, like with the dress code compliance, so here you can really go into very
fine-grain material.
00:06:02 So let's continue this analogy and think of other scenarios. A bouncer also has to make sure
that the club is not in danger, that there are not too many people in the club.
00:06:14 So if the club is crowded, then the bouncer should really stop people from coming in. And
very similarly, API management can also have this kind of protection.
00:06:24 So, for example, you could think of a quota that is added to the API calls. So if a certain
number of calls is reached, then API management will just close any incoming connections.

00:06:38 Or maybe there are other things, like you want to allow only one million calls per month, and
then after that, the customer has to pay, or something like that.
00:06:49 So again there's this possibility from API management to ensure that the back end is
protected. Well, it's not only about the people who are already in the club,
00:06:59 it's also about the bouncer having to make sure that people are only coming in one by one,
or maybe there are more lines, so three by three or something like that.
00:07:11 Well similarly, API management can also throttle the incoming requests and say that only
five parallel connections to the back-end system are allowed.
00:07:21 So again here, API management can prevent the overloading of your back-end systems.
Finally – although granted, I've not met a lot of bouncers who actually do this –
00:07:33 but theoretically, the bouncer could analyze the participants, the people who came to the
club. He could look at the tickets that he collected, look at the time when he collected them,

00:07:44 see where the different people got their tickets from. And very similarly, API management
has some advanced analytics functionalities,
00:07:53 where you can see what your most popular APIs are, what regions that the APIs were called
for, what the applications are where these different APIs are being used.
00:08:05 So in addition to all these protection mechanisms and the controlling of the incoming traffic,
API management can also be used to do the next step and really analyze what is actually
happening on your system.
00:08:19 So with this, let's take a look at SAP HANA Cloud Platform, API management. Like I already
indicated, there are three main components that make up API management.
00:08:32 The first one is the API platform. Here's where I as the system owner, the API builder,
create the APIs.
00:08:40 I connect my back-end systems to the API management layer. I expose the APIs so they
can be consumed by a developer later on.
00:08:49 I can manage the APIs, I can add functionalities. So like I said before, I can add security
mechanisms, I can add traffic management functionalities,
00:08:59 I can add monitoring functionalities. So here, it's really all about the runtime, the exposure of
these services, and the consumption of back-end services.
00:09:10 The next one, which is equally important, is the whole analytics functionalities. So here, I
can really see what is happening.
00:09:17 And this is both possible for the API owner – the person who creates and exposes the APIs
– and also the developer who actually consumes the APIs and builds some applications –
maybe some mobile applications – out of it.
00:09:30 And he really wants to know: "What are the applications? What are the services? What are
the APIs which my consumers use the most?" You can see which APIs are running slowly,
which APIs are causing issues, which APIs are very popular.
00:09:48 Maybe you're running a campaign and promoting certain services. And then obviously you
want to know if this campaign is successful,
00:09:54 and that you actually see a spike, for example in certain API calls. The last portion is the
developer services.
00:10:03 So API management is all about exposing APIs and then obviously controlling the access to
your back-end system. But at the same time, you have to promote these APIs
00:10:13 and make it really easy for a developer to discover the APIs, to read through the
documentation, to test the services, to test the APIs,
00:10:23 to make sure that these APIs really fit the purpose that I as a developer have in mind. If I
want to build a CRM application, I have to make sure that the CRM API really exposes or
returns the information that is relevant for me.
00:10:39 And that's exactly what we can do in this developer stack. So here we provide tools to
manage not only the APIs but also the developers.
00:10:48 There's a registration process in place where the developer has to register, where he gets
what is called an API key,
00:10:54 where the developer can then look at this developer portal, where he can browse the
different services, where he can see what services are available, what data is returned, and
so on.
00:11:07 Yes, with this the developer is definitely a very important persona in the whole API
management scenario because he really has to use the platform.
00:11:16 Exactly. But also probably if we want to monetize our API, there are probably more
stakeholders here.
00:11:23 So besides the developer, what might be some other stakeholders? So there's obviously
this API platform where you expose the APIs.
00:11:33 And then what we actually see with a lot of customer is that, for example, the IT department
might host API management. But then different divisions within the company can also use
the API management platform.
00:11:46 And then they can individually also take a look at their analytics functionalities. So let's say
the marketing department runs a campaign.
00:11:55 They can see what their popular APIs are, which ones are very successful, and which
maybe are not so successful.
00:12:01 Yes, so API management... such a layer can really be a door to opening back-end
applications or parts of them, to some of the company's own divisions, but also perhaps to
others from outside – to suppliers or partners or so, right?
00:12:16 Correct, exactly. And I think that is a really important point.
00:12:20 On the one hand, API management is really used to expose the services to the Internet so
that you as a company have some digital assets that you want to expose to your customers,

00:12:30 to your consumers or something like that. There's certainly one use case that we very often
see with our customers right now.
00:12:37 The other aspect is really what you just said – to really also expose this to other internal
divisions. And we actually heard from quite a lot of companies that the IT department has no
idea who's actually using their services.
00:12:49 So they cannot shut it down because they don't know if someone is still out there, even
within their company, who uses this specific service. Well, with API management, you would
not only see that this service is used,
00:13:02 but via these developer services, you would also see who is actually using your service.
And that can be extremely powerful because then you can see that there is maybe a certain
API that is declining in usage.
00:13:13 And then if there are only, say, five people using this last remaining API, you could reach
out to them and talk to them, why they are still using it, maybe promote a new API, or
something like that.
00:13:22 So that's really where this whole developer service aspect becomes really important. Yes,
so you really get much more control over that whole person.
00:13:33 Okay, so we already touched a little on the different personas. But let me quickly take a look
at API management on the HANA Cloud Platform.
00:13:41 So on the HANA Cloud Platform, we have API management available. It's actually available
on trial, which we'll show you in the next unit.
00:13:49 But there, the beautiful thing is that it's available. I mean you just activate it, you can just
use it.
00:13:55 And then you can really interact with the API management with your different personas. So
you have the API builder.
00:14:01 That's the owner who has access to the back- end system, who makes the connections,
who builds different policies into your API
00:14:11 to really then expose this API to the outside world. And "to the outside world" means the
application developer.
00:14:19 So that's the next persona group that we have here. The application developer connects to
the API developer portal.
00:14:28 And in this developer portal, the application developer sees only exposed APIs, so APIs
where the API builder said: "Okay this API is now ready to be consumed, so let's expose it
in the developer portal."
00:14:42 The application developer can then browse these different APIs. He can look at these
services, test these services, and then he can create an application.
00:14:51 Maybe a mobile application, maybe a Web application – it's up to the application developer.
And the last persona in this whole play is then the consumer who just uses the application.
00:15:02 In a lot of cases, the consumer doesn't even know that there are underlying APIs. But in fact
using this application, he's using the services that the application developer defined,
00:15:14 and then accesses the different back-end systems. So with that, I've covered most of the
topics of API management.
00:15:26 In the next unit, we'll actually do this all hands- So we will take API management on the
HANA Cloud Platform,
00:15:36 we'll activate it, and then we'll take a look at the ESPM application that was created in the
previous unit. We'll enhance it to some extent to actually integrate API management in this
whole scenario.
00:15:50 We'll add some functionalities in the API proxies that we are going to expose. And then
finally we'll take a quick look at the analytics functionalities of API management.
00:16:04 With that, I'm done with this first part here. Okay, so what have we learned in this unit?
00:16:12 We have learned quite a lot about API management and about API management on SAP
HANA Cloud Platform. We have seen that there are many components of this.
00:16:21 So we have the API platform, we have the analytics part, we have the developer part. And
really many people are involved here,
00:16:29 different stakeholders, the API builder, and the API developer, and then of course also the
consumers which use those APIs.
00:16:37 And also if we look outside a bit, like at Facebook and Twitter, they are all using APIs to
connect to other developers which might include, for example, authentication with Twitter or
with Facebook in their applications.
00:16:53 So really APIs are very widely used. So in the next unit, we will really go into the hands-on
stuff here, we'll go really deep.
00:17:00 And see you there and thanks for this, goodbye.
Week 5 Unit 2

00:00:12 Hi, and welcome to Week 5 Unit 2 of the openSAP course "Developing Java-Based Apps
on SAP HANA Cloud Platform". In this unit we will continue with the topic of SAP HANA
Cloud Platform, API management from the previous unit,
00:00:28 and we will really go into the practice and do some hands-on exercises. So let's get to it.
00:00:33 Thank you, Sven. Okay, so in the previous unit we talked a bit about the functionalities of
API management,
00:00:41 we talked about the features that make up API management, we talked about how
customers can use API management, how it fits into your landscape,
00:00:49 and on this slide I have depicted some of the functionalities that are really key to API
management. So we have the security obviously.
00:00:58 So here keep the bouncer in mind. Exactly. We have traffic management, transformation,
00:01:03 we have the onboarding of external developers, we have the documentation that is really
key,
00:01:08 we have reporting and analytics functionalities. So these are really some of the
functionalities that really make up API management.
00:01:16 In this hands-on exercise we'll mainly focus on the security aspect, but obviously you're free
to enhance this scenario and add functionalities as well.
00:01:28 So looking at the existing scenario, what we want to do today... You all know the ESPM
application which consists of the OData provider, so the OData services that I exposed on
HCP,
00:01:43 and the UI, the SAPUI5 application that actually consumes these OData services. In this
exercise we want to introduce the SAP HANA Cloud Platform, API management layer
00:01:56 in between the OData services and the UI. We want to protect this service a little, so we will
add this API key,
00:02:04 then we'll adjust the ESPM application in some detail so it actually connects via API
management to the OData services and not directly any more.
00:02:14 And then finally we'll also take a look at some of the analytics functionalities and actually
see our calls that we are doing from the API management layer.
00:02:25 So from the architecture diagram I see that we will put the SAP HANA Cloud Platform API
management in between our back end and our front end,
00:02:36 so that then really handles the calls between those two parts. Exactly.
00:02:43 Okay, so with this let's get started. The starting point is actually our HANA Cloud Platform
Cockpit.
00:02:52 I'm here on the trial instance so you can go there as well – obviously you have already
registered here and have a user. Then if you go to this "Services" tab on the left- hand side
and scroll down to the integration layer...
00:03:09 just a second here, we'll scroll down to the integration layer of the "Integration" section. And
there we see the SAP API Management tile.
00:03:18 And there you can enable it, right? Exactly.
00:03:22 So here we also see SAP API Business Hub Could you also tell us a bit about this? What is
this? Because there's also "API" in the name.
00:03:30 Exactly, so SAP API Business Hub, which is enabled by default, is actually our
implementation of API management. So if you go to "api.sap.com",
00:03:41 we are currently in the process of trying to collect all the APIs from SAP and expose them in
this API portal.
00:03:52 So this is basically our implementation of the SAP HANA Cloud Platform, API management.
And this is the developer's view, so I as a developer would go to SAP API Business Hub
00:04:02 I would see the different services, I can browse, I can, for example, take a look here at SAP
S/4HANA Marketing Cloud I can see the different APIs, I could read through the
documentation, I can test the services,
00:04:17 if I logged in and authenticated myself, I would get this API key we talked about in the
previous unit. And then I can really test these services and build applications around them.
00:04:29 So here we really have this discovery functionality of SAP APIs. As you can see, we are just
getting started, but over time you will see more and more APIs here.
00:04:38 Yes, so SAP API Business Hub is where we are offering SAP APIs. And the SAP HANA
Cloud Platform, API management service is the service which customers and partners can
use
00:04:52 when they are running applications on SAP HANA Cloud Platform to offer their own APIs.
Exactly, it's exactly like that.
00:05:00 Okay, so back in the HANA Cloud Platform Cockpit, if you go to the SAP API Management
tile, which is probably not enabled for you right now,
00:05:09 just click on it, and then here you should see an "Enabled" button. If you click that, then the
API management would be enabled for you on trial,
00:05:17 and here you can really do everything on your You can follow the exercises that I'm going to
do
00:05:26 and really create your own APIs. Okay, so with this I would just access the API portal.
00:05:36 So remember in the previous units we said there are two portals. There's the API portal for
me as the API owner,
00:05:43 and then there's the developer portal, which is more for the developer who creates the
application and consumes these different services.
00:05:50 So in this API portal, the home page that you can see here is a starting screen. You can see
the traffic in your system.
00:05:57 When you start it the very first time, it'll probably all be empty, and you'll only see zeros
here. But that's what we want to change.
00:06:06 So at first, like I said, we want to add API management in the layer between the ESPM UI
application and the back-end services. So this is the ESPM WebShop that was created in a
previous unit.
00:06:20 Let me just refresh it here. And if I just take a look at the developer tool and I refresh this
screen,
00:06:27 then I can see, for example, that there is a call to the products, and right now this product
call goes to this URL here, to the ESPM OData service.
00:06:40 And this URL is what we want to encapsulate via the API management layer. So let me go
back now to the API management screen,
00:06:51 and down here there's a quick action to actually create an API. Alternatively, I could also go
to "Manage APIs and Products" and then click on "Create",
00:06:58 but since we have this quick action, I'll just click on "API". I'll paste the URL – this is our
target URL, so this is the URL of the OData service.
00:07:09 Here in the URL I see that there is a slash as the last character. Does this slash need to be
there, or would it also work without it?
00:07:19 Well, that always depends on the actual OData service. In this specific case, you need to
have the slash at the end
00:07:25 because otherwise there's a redirect which would require you to add some policies in the
API management. So just make sure that you have this slash at the end.
00:07:35 Then we'll give this service a name – I'll call it "ESPM-Demo01". I'll give it the same title.
00:07:46 And then for the API base path, which is what the developer actually sees, we'll add...
There's usually some kind of best practices that you start, for example, with the version, so
we'll call it "v1" for version one,
00:08:00 we'll call it "os" (openSAP) as a namespace basically, and then – let me actually try to
resize this here – I'll call it just "espm".
00:08:09 Again, I'll add a slash at the end here. And with that I can just click on "Create".
00:08:15 Now we've created... Actually let me click on "Save And Deploy" to make this API proxy
really available. But now we have really created a very simple API proxy.
00:08:26 This means that if I take this URL, and if I open it in a new window, then we are connecting
out to this OData service from our ESPM application,
00:08:36 and we're getting the different collections back from the OData service. So you can see the
products, the supplier, and everything like that.
00:08:46 But now, as you can see here in this URL, we are going via API management. So with this
view, we are currently not using our front-end layer,
00:08:57 but instead we are going directly to API management, which goes to the back end. Correct,
exactly. Okay.
00:09:04 So this is obviously a very stupid API proxy. Now we want to add a first level of security, and
this first level of security will be our API key.
00:09:17 So I will go to this "Policies" view, which is actually where all the magic happens. So here's
the incoming call, which is the developer calling our API proxy.
00:09:29 Then we have all this way from the request until we send the service to the actual OData
service, to our back-end service. And then we have the way back, the response from the
OData service.
00:09:39 And all the way up here and down here, I can do a lot of things. I can modify the flow, I can
add functionalities, I can do conversions.
00:09:50 Here I have the full flexibility to really work with the request or the response before it's sent
to the back end or before it's sent back to the developer.
00:10:01 So I'll click on "Edit" down here, I'll select "PreFlow" here, and now I can select policies.
00:10:10 And with API management, we provide a list of policies out of the box that you can use,
which you just need to configure in some places and then they're ready to use.
00:10:21 For example, there is a policy for Access Control, which allows you to limit access from
certain IP addresses. There's a Concurrent Rate Limit, so remember the bouncer that we
talked about in the previous unit.
00:10:32 So here you can define how many calls are allowed to the back-end system. There are
some caching functionalities, there are JavaScript functionalities, there's JSON Threat
Protection.
00:10:42 So there are quite a lot of policies that you can use out of the box, and you just need to
configure them. I want to take a look at the Verify API Key policy.
00:10:52 So I'll just click on the "plus" sign here, then I'll give it a name: "checkAPI", and I want this
API policy to be available in the incoming request.
00:11:01 So when the developer calls the API proxy, before it's sent to the target system, that's
where this policy should reside.
00:11:10 So here it's now in this flow, the call from the developer comes in, we have this specific
policy, and only then do we send the request back to the target system.
00:11:20 Now what we have to do down here – let me actually resize here again – this is the
template, and this VerifyAPIKey template has a reference – where should we check for this
specific API
00:11:35 Let me just replace this string here, and we'll say: From the request, in the header, I want to
retrieve the API key here from this header field "APIKey".
00:11:48 So with this I'll just update and save this API proxy. And now if I go back to my browser
window and try to test this service, I'll get an error message.
00:11:59 And this is the default error message, so you can see that here it says: "Failed to resolve
API Key variable". It actually tells you where it's looking for this API
00:12:08 And obviously this might be a security hole, so you can definitely change this response and
Omit this "request.header.APIKey" – just show "Failed to resolve API Key" or something like
that.
00:12:19 But in our case, this is the default so we'll stick to that. And obviously our next challenge is
to get this API key.
00:12:28 Well, only a developer can get this API key. The developer would go to the developer portal,
he would subscribe, and then he would get this API key.
00:12:36 So we now need to expose our API proxy to the developer portal. And exposing APIs is
done via "products"
00:12:47 because products are basically groupings of API proxies. So we'll create a simple product
and we'll only add our one API proxy,
00:12:57 and then we'll expose that to the developer portal. But in such a product we could also have
multiple APIs, right?
00:13:02 Exactly, and I think especially if you have, let's say, a CRM product that you expose, then
you could have an API proxy for accounts, one for activities, and so on,
00:13:15 and all these would be bundled in this one product here, and like you said, you can add
multiple API proxies.
00:13:22 Like we saw before in the SAP API Business S/4HANA Marketing Cloud – so this is one
product with several API proxies?
00:13:30 Exactly like that. So I'll call it "ProductESPM".
00:13:35 The same name and title – obviously you can choose different things here. And now I'm
adding the API proxy,
00:13:41 and we just created this "ESPM-Demo01", so I'll select this API. And you can see here that
you could potentially select other API proxies as well.
00:13:51 I'll click on "OK" and now I'm publishing this product. So if I click on "Publish", this product is
now available in the developer portal.
00:14:01 So let's switch personas. Now I'm no longer the API builder who creates the API,
00:14:05 but now I'm the actual developer who wants to consume the service. So going back to my
HANA Cloud Platform Cockpit,
00:14:12 I can now access the developer portal. And in the developer portal – this is one
representation of the developer portal – I can now see our "ProductESPM".
00:14:23 So now I'm the developer, I could say: "Oh, this looks like a nice API, so let's click on this. I
can see there's the "ESPM-Demo01" API, that looks perfect. I want to..."
00:14:34 And obviously here we could have added much more description, and texts, and
documentation about what this proxy is all about. In my case, I'll just assume that this is the
right API proxy and I'll click on "Subscribe".
00:14:46 I want to create a new application, and think of this new application as a virtual application,
as a representation of our, in this case, ESPM UI front end.
00:14:56 So I'll just call it "ESPM-UI", for example, and I'll click on "Save". Now I as the developer
have subscribed to this specific product,
00:15:06 which means if I go to the consumption side, then here I can see our virtual application –
ESPM-UI – and more importantly, here I can see the API key.
00:15:15 So really by subscribing, we are requesting that such an application key should be
generated for Exactly.
00:15:22 And the important thing here is that with this API key, also the analytics functionality is now
able to see that someone called this API proxy, and it knows who the developer was who
created the application.
00:15:35 - Because it's unique, right?
- Exactly. So what we can do is... and there's a built-in test console – obviously you could
also use other tools,
00:15:43 but for simplicity if I just take this specific service – if I test it again like it is, I get this error
message. But now I can just click on the headers, I can add the variable API key...
00:15:56 Perhaps a question here is that the "API" in "API Key" is all uppercase, but in "Key" only the
"K" is a capital letter. Does it have to be this way, or could we also just write it all in
lowercase?
00:16:09 Yes, it could also be in lowercase. It's just a habit of mine to make it case-sensitive here.
But now if I have the headers and the key specified...
00:16:19 Remember here we have the error message. If I click on "Send" again, then very much like
before, we get the information back.
00:16:26 So now we are ready to get this into our ESPM application. The problem is we now have to
tell the ESPM application that it should not use the original OData service any more,
00:16:37 but now it should use the API management OData service. And we'll do this from Eclipse.
00:16:46 So here in Eclipse I made two small modifications. One in the "Home.view.xml", which is the
structure from Git.
00:16:55 In the webshop application, right? In the webshop application, exactly.
00:16:58 So here is the "webshop" application, and then in "view", you can see "Home.view.xml".
And what I did was add one settings button.
00:17:10 And then in the related controller, in the "Home.controller.js", I added some functionalities.
So when the button is pressed, we are retrieving the new URL, we're retrieving the API key,

00:17:24 then we're setting the API key in the header. So basically we're taking the URL and the API
key, and we're adding this to our application.
00:17:33 Yes, and like in similar units before, we uploaded those code changes – which you see are
already done here – in a branch on GitHub. So it's the API management branch.
00:17:45 Please check out this branch now, and then you will have the same code as we have here
and you can also do all the exercises.
00:17:55 So just build that branch, deploy it to your SAP HANA Cloud Platform developer account on
the trial landscape, and then you can follow along and do exactly what we're doing now.
00:18:06 Exactly. Okay, so with this I can actually go back to the API portal.
00:18:13 Let me quickly take a look at the URLs here. So I'll take this URL,
00:18:23 I'll go to the ESPM application, I will click here – actually let me quickly close the developer
tool.
00:18:29 So if I refresh this site here... yeah, remember here is the list of products.
00:18:36 Now we have this "Settings" button up here. This is really the settings button that we just
added, and it's only available in the API management branch.
00:18:44 Correct, exactly. If I click on this button, then I can add the end point.
00:18:49 And – I hope I didn't close it – I also need the API key. So I'll add those two in here.
00:18:57 And now... Actually let me open the developer tool again because when I click on "Submit",
you will see that the call actually fails. So here you can see a lot of red, and actually if I
scroll down here, I don't get any products.
00:19:14 And the reason why that is happening is because in this specific scenario we are making a
cross-origin call. So remember... Or actually, let me take a look at the error message here.

00:19:25 So you can see that the origin is this service here – the "espmcloudweb", and then my
P-user, "hanatrial.ondemand.com". And now we are trying to call a service on
"trial.apim1.hanatrial.ondemand.com".
00:19:43 So there's really an issue with the origins. And the browser protects this call,
00:19:49 and says that it's not going to load this specific service because this underlying API
management service does not have the required headers set to allow cross-origin calls.
00:19:59 So actually we need to do two things. The first thing is the original OData service from the
ESPM application does not support the verb, the method "OPTIONS".
00:20:11 So we have to use the API management layer to enable the OPTIONS call. The other thing
is we have to modify our API management proxy
00:20:22 to add the required cross-origin headers information. So let's quickly do that.
00:20:30 I'll go back to the API management, and like before, I'm going to... no, actually I'm clicking
on "Edit" first,
00:20:36 and then down here at the bottom we have these "route rules". And here we'll say: Don't
route anything if "request.verb == OPTIONS".
00:20:50 So if an OPTIONS call comes in, then don't even send it to the back-end system, because
in our case, the back-end system doesn't understand the OPTIONS call.
00:20:58 If it's not "request.verb == OPTIONS", then just follow the default stuff and continue the call
with the back-end system.
00:21:06 So I'll just save that. And now we have issue one covered, so the OPTIONS call should be
fine.
00:21:15 The next step is that we need to add these CORS-specific headers. So in "PostFlow" – so
now in the outgoing flow – we'll add... in this case it's an "Assign Message" policy
00:21:29 where we'll set the required CORS headers. So in the outgoing response, I'll click on "Add",

00:21:36 and then down here I'll actually copy and replace the content, so here I've prepared some
code snippets.
00:21:44 Yes, the code for this code snippet will be provided to you with the additional material, so
you can just download this from the additional material in the course, and then you will have
it as well.
00:21:54 Exactly. There's nothing special about that – we're just saying: "Access-Control-Allow-
Origin" is "*".
00:22:00 Obviously, you could do this with more granularity, but in our case we'll just leave it as We'll
set the allowed headers, the maximum age, and all this kind of stuff.
00:22:10 So it's a very basic setting. And then we could already update it,
00:22:16 but actually in this OPTIONS call, the OPTIONS call would fail because we're not providing
the API key. So what I need to do is... the API key check should only be happening if it's not
an OPTIONS call.
00:22:30 Because only in GET, POST, PUT, and calls like this do we actually send the API key from
our ESPM application, but not in the OPTIONS call.
00:22:41 So now we have this condition string set as well, I click on "Update", then click on "Save".
And now we should be done.
00:22:49 We have created the API proxy, we added the support for OPTIONS calls, and we added
the support for CORS. So if I now go back here into my application and just do a refresh,
00:23:00 then you can see that I have some successful GET calls. Actually, if I click on one of these
services here,
00:23:07 then you can now see that we have set this "Allow-Headers", the "Allow-Origin" is now "*".
We have all the other functionalities which we just set in the API management proxy.
00:23:19 And if I remove the developer dashboard, then now you can see all the data coming via API
management from our back-end system. Let me actually do a few more calls
00:23:30 so that we also see some data on the analytics side in a second, so I click here a few times.
If I now go back to API management and take a look at the analytics functionalities...

00:23:42 When you say taking a look at API management, do you mean in the builder view or the
developer view? Actually, it would be a bit of both because both are interested in certain
functionalities.
00:23:53 In my specific case, I'm now in the API builder view, where I see not only my personal APIs
but all the APIs.
00:24:03 And in this case, I just switched to the "Hour" view. We can see that some activity has
happened in the last hour.
00:24:12 If I scroll down – actually this was a test before the recording, but now this is really our
ESPM- Demo01 application – we can see that we have had 12 hits in the meantime, so
there definitely was some traffic.
00:24:24 If we scroll down here a little, we can see that ProductESPM was used, so via this product I
can also identify the developer.
00:24:34 Obviously, in my scenario there's only one active developer right now. But if this was really
a productive instance and you had thousands of developers already on board it,
00:24:44 this is exactly the place where you could see a lot of the information, where you could really
get detailed insights into what is happening, who is using your applications, and so on.

00:24:53 You could take a look at what slow APIs are, what fast APIs are, what APIs are mostly
used, and so on. So here you really have a nice overview of what's actually happening with
your different services.
00:25:09 So like I said, this was a very simple example. But with this we have now added the API
management layer in between our OData provider and the UI.
00:25:21 And with that I think we've provided you with a very quick overview of how you can actually
leverage API management. Okay, thanks Holger.
00:25:30 So what have we learned in this unit and in the previous unit? We have really taken a deep
look at API management and API management on SAP HANA Cloud Platform.
00:25:40 We covered this first in theory and now in practice, going into some hands-on stuff with our
ESPM application
00:25:48 to bring in SAP HANA Cloud Platform, API management as a layer between our front end
and our back end. So we really have all the security measures,
00:25:57 and we could now also do quota management or that kind of thing. So really think of that
bouncer who can do quite a lot of stuff.
00:26:06 We brought this in, you have seen it, and I hope you have learned a lot with this. If you want
to explore API management on SAP HANA Cloud Platform further,
00:26:13 on the next slide we also have information which you can just download from the course
materials, we have some links which you can click on to see where you can find more
information,
00:26:24 and also some blog posts to do a couple more additional tutorials. So thanks a lot and see
you in the next unit.
Week 5 Unit 3

00:00:11 Hello and welcome to Week 5 Unit 3 of the openSAP course "Developing Java-Based Apps
on SAP HANA Cloud Platform". In this unit, we will get an introduction into SAP Translation
Hub, for which I have a colleague of mine with me.
00:00:26 Hello, I'm Beatrice Pasch, and I'm a product manager for SAP Translation Hub. Today we
will learn what SAP Translation Hub is, the main use cases, and the benefits.
00:00:39 In today's world, a successful application has to target a global audience, and this global
audience expects software to speak its language.
00:00:48 But developing UIs in multiple languages can be costly and complicated, right? SAP
Translation Hub enables you satisfy the demands of a global market
00:00:59 by enabling you to translate short texts in applications into additional languages quickly and
easily. So that's very nice and that's the motivation for what we are doing, but how are we
actually doing this?
00:01:12 Yeah, so let's come to the basic idea of SAP Translation Hub. You can imagine that UI texts
like "Advanced Search", "Save", "User Settings", or "Account" can be found in many
applications,
00:01:25 and have already been translated for different SAP products in up to 39 languages. The
idea is to consolidate all available English source texts and the corresponding translations
from SAP products to an SAP HANA database,
00:01:40 and establish one central multilingual text repository. For the first time, we now have a
single source of truth for our multilingual text from both a technical and content perspective.

00:01:55 SAP Translation Hub is an SAP HANA Cloud Platform service that opens the door to the
wealth of SAP's translation assets accumulated over 30 years across multiple products and
languages.
00:02:08 As an example, for the core of SAP Translation Hub, you can see on the slide two
multilingual vectors for the term "Account" that are stored in the SAP HANA database.
00:02:20 Each translation vector starts with a domain. SAP product terminology is organized by these
domains.
00:02:28 Domains are used in the translation process to define the correct terminology for a given
application. In the example, "Account" has two different German translations – "Konto" or
"Kunde".
00:02:41 With the help of the domain concept, we are able to offer the right translation proposal for a
customer relationship application with "Kunde", or for a human resources application with
"Konto".
00:02:55 SAP Translation Hub contains a set of REST services that you can use to access the
multilingual texts in the repository. On the graphic, you can see as an example the
suggestion, the translation, and the translation project service.
00:03:11 You can access the Web services to the HTTPS protocol. Standard functions of SAP
identity service manage user authorizations for the services.
00:03:22 You can use the Web services to search or translate texts, for example, integrated in SAP
products like the SAP Web IDE,
00:03:31 or through your own translation user interface. Let me explain the suggestion service in a
little bit more detail because the other services will later be shown in the demo.
00:03:42 Developers can use the suggestion service, or text creation and maintenance, as an integral
part of their development environment. Currently this is available in the SAP Web IDE.

00:03:56 With the suggestion service, you can search English source texts from the database in
seconds. Let's see an example in the SAP Web IDE.
00:04:06 As a developer, I would like to add a new UI text availability to my application. So I'm here in
the SAP HANA Cloud Platform cockpit, and I will now open the SAP Web IDE.
00:04:20 You can find it very easily. Under "All Categories", "DevOps", you can find the SAP Web
IDE.
00:04:27 We will open the Web IDE... and I've already prepared a little example for you so that I can
very quickly show you the suggestion service.
00:04:40 I added a simple Web shop application to my Web IDE, and what we can see here is the
XML file where I have a little placeholder already.
00:04:52 Just a moment... ...here it is.
00:04:56 And with a right mouse click, I can open the menu and find here "Create i18n String". I open
this and I have to define the string key.
00:05:08 Let's make it simple with "key_1". And now the text I would like to add is "Availability".
00:05:14 I start typing and immediately... sorry, there's something wrong with my browser...
immediately I get results back from our multilingual text repository.
00:05:27 I can select "Availability". Then I have to define the text type, in our case let's choose "Table
Title".
00:05:41 And I click on "OK". And now you can see that here the new key is added to the XML file.
00:05:50 And automatically I also have an entry in the corresponding "i18n.properties" file. So you
can see that the new entry is available here.
00:06:01 And what are the benefits for the Web IDE developer? So here is an improved text quality
without typos right from the start.
00:06:11 And he saves time because automatically a new key is added to the XML and to the
property file. So that means for me as a developer it might really make sense to use this
capability directly integrated in the Web IDE
00:06:24 so that I really don't have to do it manually, but the property is automatically added here.
And also it helps that I choose the right words for the English source text, right?
00:06:39 Yes, correct. And what I would like to mention is that at the moment we only support English
as the source text,
00:06:45 but we heard from our customers already that they wish to use their native language. And
that's the reason why will soon also support other languages.
00:06:54 So currently we have one source text, which is English, and then from that source text we
can automatically translate into different languages.
00:07:02 Yes, exactly, that's the idea. So now let's come back to our slide.
00:07:10 And let's come to the key features of SAP Translation Hub. SAP Translation Hub enables
you to search for and translate texts by accessing records in a central, multilingual text
repository
00:07:26 based on the SAP HANA database. It's an SAP HANA Cloud Platform service that gives
you access to decades of SAP translation experience at the push of a button.
00:07:37 Usually we are talking about the reuse of millions of texts for multiple products and multiple
languages to extend an existing app or develop new apps.
00:07:48 For text where we cannot find a translation proposal in the multilingual text repository, we
use machine translation. We trained our own SAP machine translation engines so that we
can always offer a translation proposal
00:08:01 and reach 100% leverage in 39 languages. So here we are now supporting 39 languages
currently as the target language.
00:08:12 So what languages exactly are we supporting here? So what's the easiest way a customer
or partner can look that up?
00:08:18 Yeah, a very good question. So you can easily search in the documentation.
00:08:24 So if you are starting to search for "sap translation hub docu"... you will get the link to our
documentation here.
00:08:39 And there is a separate chapter where you will find information on which languages we are
supporting. So here you can find a table of the languages we are supporting,
00:08:49 the name, the ID of the language. And you will also find the information on whether we are
offering machine translation for this language.
00:08:57 This is visible here in this list. And if we add new languages, you will of course find the
information in this "Supported Languages" overview list.
00:09:07 And probably if we are adding new languages, it would also be in the release notes, right?
Yes, of course, that's also necessary.
00:09:16 Good, let's come back to the slide. And with a set of Web services, like the translation,
translation project, and suggestion service,
00:09:26 you can access the multilingual texts in the SAP HANA database and leverage our machine
translation capabilities. One of our key features is the integration of our APIs into other SAP
products.
00:09:43 We already have a good integration scenario for the SAP Web IDE, and with the 1705
release of SAP Business ByDesign, it will be possible to use our translation service
00:09:54 to translate work centers into languages that aren't part of the standard delivery. Translation
proposals can easily be reviewed and adapted where necessary with our post- editing user
interface.
00:10:10 For the quality index on the user interface, the person responsible for translations can easily
filter by good or bad quality of the translation proposals
00:10:19 and make decisions on the next steps – what needs to be reviewed and what doesn't. Okay,
so those steps, the post-editing user interface and quality index,
00:10:28 we will be showing those in the next unit with the hands-on, right? Yes, you will see this
later.
00:10:34 Okay, now let's look at the main benefits of SAP Translation Hub for different roles.
Developers benefit because they save time by reusing texts.
00:10:44 In the SAP Web IDE example, you saw the seamless integration of the SAP Translation
Hub service into the HCP development tools. Developers can use verified English source
texts and avoid typos by using the suggestion service.
00:11:00 Due to the fact that translation proposals are instantly available, developers can verify the
translation on the UI during the development phase.
00:11:10 Translation administrators benefit by improved efficiency of global operations. And they can
easily provide local key users or translation agency Web access for post-editing tasks.

00:11:24 Managers will, of course, focus on the cost-saving aspect. SAP Translation Hub significantly
decreases the throughput time and cost of multilingual software production.
00:11:36 This will give you more agility, improved global rollout in subsidiaries, increased revenue
and target markets, and then enhanced go-to-market with new apps.
00:11:48 End users benefit because apps in their own language are available earlier and they will
have a better user experience through consistent SAP terminology on the UI.
00:11:59 So what we really see here for many aspects and many personas involved in creating apps
and dealing with translations, it helps and both or multiple personas are addressed.
00:12:14 The fact that SAP Translation Hub is based on SAP HANA Cloud Platform means that there
are countless possibilities to leverage the capabilities of SAP Translation Hub services.

00:12:25 Not only for cloud but also for on-premise applications. Let's have a look at the available
use cases for SAP Translation Hub.
00:12:35 A non-ABAP developer creating a UI translation for their own app as an integrated part of
the development process can use the SAP Translation Hub services.
00:12:45 The consumption of SAP Translation Hub and other SAP products is our second use case.
And SAP Business Suite or SAP S/4HANA customers who want to translate customer-
specific ABAP short texts
00:12:58 can use a Web-based translation workflow with SAP Translation Hub. In Unit 4, we will see
a demo of how to translate the ESPM Java application by uploading a source text file to
SAP Translation Hub.
00:13:13 Therefore, let's have a look at the non-ABAP use case in more detail. The non-ABAP
developer creates new UI labels by reusing quality-assured English source texts from SAP
Translation Hub.
00:13:28 We saw this as an example for the SAP Web In step two, the developer creates a
translation project, defines the target languages,
00:13:38 and calls pretranslations for source texts from SAP Translation Hub. The developer can
immediately review the translation proposals for his application on the Web UI after new
deployment.
00:13:55 And then the last step – the developer, a local key user, or translation agencies, can
centrally access the list of translation-relevant texts, edit translations, and review the
translated UI.
00:14:09 And with this, we are at the end of this unit. So we have seen what SAP Translation Hub
offers, what its benefits are, what its key capabilities are,
00:14:21 and especially this non-ABAP use case. So for a SAPUI5 Fiori developer who develops our
front end which we have embedded in our Java application,
00:14:30 there we have looked at the use case which we are applying to the ESPM application. And
in the next unit, we will then go into more detail there and into the hands-on part.
00:14:39 So thanks Bea. See you soon in the next unit.
00:14:43 Thanks a lot.
Week 5 Unit 4

00:00:11 Hello and welcome to Week 5, Unit 4 of the openSAP course "Developing Java-based Apps
on SAP HANA Cloud Platform". In this unit, we will continue with the topic from the previous
unit, with SAP Translation Hub,
00:00:25 and now go into the practice, into the hands-on scenario here. Okay, before we do this, let's
do a short recap.
00:00:31 SAP Translation Hub enables you to search and translate texts by accessing records in a
central, multilingual text repository based on the SAP HANA database, using a range of
Web services.
00:00:45 It's an SAP HANA Cloud Platform service that gives you access to decades of SAP
translation experience at the push of a button. SAP Translation Hub has three main use
cases – a non-ABAP, ABAP, and an integration scenario into other SAP products.
00:01:03 In this unit, we will concentrate on the first use case for a non-ABAP developer. In a demo,
you will learn how to translate the ESPM Java application by uploading the source text
property file to SAP Translation Hub.
00:01:19 The following steps are part of the demo. We will open the ESPM application and verify the
source texts.
00:01:27 Then we will enable SAP Translation Hub. We will create a translation project and upload
the "i18n.properties" file to SAP Translation
00:01:38 Then we will generate the translation files. We will have a look and verify the translation
results,
00:01:46 then we will import the new translation files to Eclipse. We will redeploy the ESPM
application and have a look at the UI in different languages.
00:01:55 Okay, so now I will switch to Eclipse. And what I will show you is the ESPM application – it's
already open here.
00:02:06 And as a first step we will verify the source texts. You can see the "espm-cloud-web" folder
here,
00:02:15 and for the "webshop" we have a separate property file in the "i18n" folder. I will open the
property file, and each application has an "i18n.properties" file that contains texts relevant
for translation.
00:02:32 As I mentioned, we will find the property file here in the "webshop" application. And the
structure of this file is very simple.
00:02:39 Each source text has a key which is called during runtime from the application and the
required language. Right now we only see the default "i18n" file which is used if you do not
provide a specific language file.
00:02:55 For each language you support, you need a separate file. For example for German, an
"i18n_de" property file.
00:03:03 Let's check the ESPM application in English on the UI. I will switch to my browser.
00:03:12 And you can see here the Web shop application – you already know this. And if we click in
the catalog, we will find product details.
00:03:23 And we have a lot of texts that we would like to translate into five languages in the next few
minutes: Chinese, German, Japanese, Russian, and Spanish.
00:03:34 To do this, we have to open SAP Translation I will now switch to my trial account, and I'm
already here in the Services catalog,
00:03:46 and under the category "DevOps", next to the SAP Web IDE, you will find our SAP
Translation Hub service. In the first step, if the service is not enabled yet, you have to
enable SAP Translation Hub.
00:04:05 In my case, it's already enabled. Here you will find different links.
00:04:10 Again, the link to the documentation so you have the possibility to check what kind of
scenarios we have and so on. I will open the "Go to Service" link.
00:04:26 And what we can see here is the UI I mentioned already in the previous unit – this is the
SAP Translation Hub UI where you now have the possibility to create translation projects.
00:04:39 We have three options here. The first one is an integration scenario we offer with the SAP
Web IDE and with a Git repository on HANA Cloud Platform.
00:04:50 The second one is the possibility to create via an RFC scenario an ABAP project, and you
can then translate ABAP short texts directly in an ABAP system.
00:05:02 And the last one is the file upload scenario we are using now for this demo. So we are doing
this now for the Web shop, and for the retailer as this is a second SAPUI5 application, it
would work exactly the same.
00:05:18 Yeah, it would work – as you mentioned – in exactly the same way. We also have here an
"i18n.properties" file and that's the same logic behind it.
00:05:31 Okay, what do I have to do now? I have to define a project name for the application – let's
call it "espm". Then I have to the file type – you can see that we have four options.
00:05:43 We support ABAP XLIFF files. Java Properties File is the selection I will use for this demo.
00:05:52 We also support JSON files, and what's really new – we also support the iOS Strings
format. I'll select Java Properties File.
00:06:03 The domain – I explained this in the beginning. For the demo, we will use Basis and not
specify another product like ByDesign or Finance or anything else.
00:06:13 I'll use Basis for this demo. And then I will define the target languages.
00:06:18 So maybe you can remember – we would like to translate into Chinese, German, Japanese,
Russian, and into Spanish. Okay, I'll save my settings.
00:06:38 And you can verify the settings you made, and if you would like to change something, this
is, of course, possible via "Edit project details".
00:06:47 So it's also possible if you would like to add maybe another language three months later.
This is possible with the same translation project, it's not necessary to create a completely
new project.
00:06:58 You can then reuse the project you created here. So here, too, a best practice would be to
always have my translation project available
00:07:08 even when I'm further developing my application. Yes, that's the idea.
00:07:14 Okay, so I have my translation project, and now I would like to upload the file. You have two
possibilities: You can use the "Upload File" button here, but it's easier to use our drag-and-
drop functionality,
00:07:28 so I will close the screen, I'm in the Web shop, and what I'm doing now is simply dragging
and dropping the "i18n.properties" file to SAP Translation Hub.
00:07:41 In the background, the translation service is now called and looks for every single source
text to see whether there is a translation available. It will take some seconds.
00:07:55 By the way, you can hand over the URL to your translation experts in the company, or even
to a translation agency.
00:08:06 They have to be registered to the SAP Translation Hub service and can do the post- editing
on this Web UI. So how would I register them to the SAP Translation Hub service?
00:08:15 Via the configuration of the service, or would I just add them in my SAP HANA Cloud
Platform account as account members? It's possible to do this here on the "Configure
Service" screen.
00:08:28 So here is the possibility then to add additional users. It takes some seconds until it opens.

00:08:37 But that's the idea, that you have the configuration screen here on the SAP Translation Hub
tile. Yeah, so those don't need to be developers or so – I can just hand this over, for
example, to my translation agency.
00:08:49 Yes, exactly. So here, under "Roles", you have the possibility to define destinations, but
also roles and users, and... I don't know why it's taking so long.
00:09:01 But you can see I've already added some users here to my application. Okay, but let's come
back to the SAP Translation Hub UI.
00:09:12 Maybe you noticed that we have a new icon – "Translations" – available here. If I click on
this icon, I can verify the translation results.
00:09:25 What you have to do is select the language – you can see we have here our five target
languages. I will choose "German" – it's a little bit easier for me to do the post-editing step.

00:09:36 And now let's check the translation proposals. Let me quickly explain the table which is
visible on the UI.
00:09:43 The "Key" and "Source Text" information was taken over from the "i18n.properties" file. In
the third column, you can find the translation proposal, and in the fourth column, you can
see the translation provider information.
00:09:58 If we cannot find the translation proposal in our multilingual text repository, then we will call
the SAP machine translation engines and get a backup proposal from these SAP-specific
trained engines.
00:10:12 The goal is to always offer a translation proposal. So it's possible to filter, for instance, all
SAP machine translation provider proposals, which can be done via this filter option.
00:10:29 And so here also the general idea would be that the translations from the multilingual text
repository are better than the machine translation,
00:10:37 and therefore I might check the machine translation a bit more – is this the idea? Yes, that's
the idea, and at the moment you can see that we have a column which is available here –
the "Quality Index".
00:10:50 And the quality index is not available yet for SAP machine translation engines. We will
change this in future, but at the moment this is not available.
00:11:01 So if we switch back to the quality index, then I can also explain that. So it's possible to filter
here by the quality index, and then... you can... let's choose a range here from 0 to 50.

00:11:23 And what you will see is that we have some translation proposals which don't have this kind
of quality index, and then we have some with a quality index below 50.
00:11:35 And what is the quality index? The quality index is a value... which gives you the information
about the estimated translation quality,
00:11:51 and this is at the moment based on ratings that language specialists provided in our
translation systems. So this is really only available in our multilingual text repository,
00:12:01 and therefore we think, of course, that with the help of the quality index, you can identify
texts which maybe need... - Another round of polishing, right?
- Yes.
00:12:14 But if they already have a quality of over 90 or so, I might just assume that those are pretty
good. Yes, exactly, that's the idea.
00:12:23 And if you would like to change something, you can do this easily. For instance, this text is
not really good in German. "Sie haben..." "You don't have a customer account..." "...
Konto..."
00:12:43 I can change this. Just a moment... Okay.
00:12:59 And I will save my settings, and you can see that we have a new entry available in the
translation provider row. It's now "Manual", meaning that I made a change.
00:13:11 It's also visible that my test user Steven Test was the one who changed the text. So you can
imagine that it's possible to work with different colleagues on the post-editing step.
00:13:23 So, for example, if I had handed this over to my translation agency and they had logged in
with one of their users, then I would see the user here and know, okay, my translation
agency made some changes here.
00:13:34 Exactly, that's the idea. If you would like to change something, you have to do it for each
target language.
00:13:42 So if you change it in German, it's not automatically changed in another language. You have
to repeat the translation post-editing steps for each language.
00:13:51 And once you are done... Here you can see that we have the results available in Chinese
and Japanese, so we really support different code pages here,
00:14:02 and then it's possible to do the post-editing step directly in our UI. And, yeah, if you are
ready, then we would, of course, like to see the translation in our application UI.
00:14:14 Therefore, we now choose the "Download Translation" button... Did it work? Ah, here, okay.
And a ZIP file will be generated.
00:14:27 If I open that ZIP file... you can see that we now have a separate properties file for each
target language. And what we have to do is extract the files to... our "espm" folder,
00:14:46 and then we can simply import the files to Eclipse. And now I have to open my...
"Downloads" folder, just a moment...
00:15:03 I'll have it in a few seconds – here we have the "espm" folder. Here we have the files we just
downloaded.
00:15:11 And I simply copy the files, and we are here in the "webshop" folder, and I will paste... the
files... for the application... do a short... redeployment...
00:15:29 "Maven clean"... Perhaps you can maximize the screen, then the users can see it better.
Yes, exactly.
00:15:41 Okay. Now the build was successfully done. And what I can do now is go back to our Web
shop application.
00:15:52 I will do a short refresh. Let's go back... to the... catalog.
00:16:04 I will reopen the Web shop, it's easier. Okay, and what I can do now to verify the UI in
different languages
00:16:13 is add the command "?sap-language=de", because now we're starting with it in German.
And you can see that we now have the German texts visible on the screen.
00:16:32 If we click on the details of a product, we can also see that German texts are available. And
we can, of course, now also verify the other languages, so let's, for instance, choose
Spanish.
00:16:47 We can see that we now have the possibility to immediately verify the UI in different
languages. And this is, of course, helpful if you would like to check whether everything is
really readable on the UI
00:17:00 or if the button is maybe too small and you have to enhance the button. And here, the
language which is taken and displayed – if I don't add anything,
00:17:11 it's like with all other SAPUI5 projects, so the language is taken from my browser settings,
right? Yes, that's right.
00:17:20 So your browser is set to English, so the default language displayed is English. If your
browser had been set to German, then it would be German.
00:17:28 Yes, exactly. And for the demo, I only used this command here so that you can see other
languages. And also, if someone wants to test the languages,
00:17:36 then the command is probably best and easier than always changing the browser language.
Yes, exactly.
00:17:43 Yeah, so this was the demo I wanted to present, and I think it was really easy, isn't it?
Definitely.
00:17:52 On this slide, you can find links to additional information if you would like to learn more
about SAP Translation Hub. We have, for example, a link to a tutorial which describes step
by step how you can translate the ESPM Java application.
00:18:09 If you want to see or read more, just follow the link and you will find much more content on
this topic. So maybe I will give you a quick idea of how you can find in the tutorial catalog – I
think you all know the developer tutorial catalog –
00:18:24 and if you start typing "SAP Translation Hub"... there is a typo... "Trans... lation... Hub", you
will find six tutorials already, and the ESPM tutorial is available here under "Translate a
Java app".
00:18:43 So if you would like to do it by yourself, just follow the steps here which are described in this
tutorial. Okay, that's it from my side.
00:18:52 Okay, so let's switch back to the slides, and we are also nearly done with this unit.
00:19:00 So what have we learned? We have learned how we can really do some hands-on stuff with
SAP Translation Hub,
00:19:08 where it's in "Services" in our cockpit and we can enable it there. Then we looked at the
"i18n" file, the language properties file of our ESPM application,
00:19:20 brought that into the SAP Translation Hub service, translated it into different languages, and
then also brought the new languages back into our application.
00:19:29 With this, thanks a lot Beatrice, thanks a lot for listening, and see you in the next unit. Bye
bye.
Week 5 Unit 5

00:00:12 Hello and welcome to Week 5 Unit 5 of the openSAP course "Developing Java-Based Apps
on SAP HANA Cloud Platform". In this unit, we will take a look at the mobile scenario here
in this unit in theory,
00:00:27 which we'll then continue in the next unit with the practice part. Having a look at the mobile
scenario for our ESPM application means we will take a look at how we might mobilize this
application.
00:00:41 As the ESPM application in the front end is a Fiori application using the SAPUI5 libraries,
Fiori on mobile devices is the key here.
00:00:52 So what you see on the left side of the screen – the SAP Fiori Web app, the classic Web
app style – that's how we looked at our application already in our browser, on our laptops,
desktops, and so on.
00:01:09 What you now see on the right side is what we'd like to look at now in this unit. What the
ESPM application might look like as a Fiori mobile app.
00:01:21 And there are different kinds of Fiori mobile apps. So you can either just open a regular
Web app in a mobile browser,
00:01:29 then everything is displayed smaller. Otherwise, it's nothing more than a regular Web app.
00:01:35 Then we also have hybrid apps, meaning we package those Web apps in a native app
package, and in that way can roll out those hybrid apps also via an app store.
00:01:50 And the last part is we really build a native app, for example using there the SAP HANA
Cloud Platform SDK for iOS. And why would we even like to use our applications on a
mobile device?
00:02:04 First, if we call a Web app, we don't have a laptop or desktop to hand, so we just take our
mobile phone to have a look at our application and to do something there.
00:02:18 Doing a hybrid or native app is usually done when we would like to have some capabilities
which we don't have in a regular Web app. For example, offline capabilities, push
notifications, or something in that area.
00:02:36 So here you see different services which are offered by us in the UX and mobile area of
things, and in which lifecycle stage those come into play.
00:02:52 For example, you also have, first on the left, a discover and design phase. The Build tool...
00:02:59 And the Build tool here, we looked at this in the previous week. So the Build tool here helps
you with developing an early prototype, doing user studies with that, collecting feedback.

00:03:13 Then you pass that over, you can export the automatically generated code there and import
that in the Web IDE. And the Web IDE, we will now also have a look at this part.
00:03:24 Not in this unit but in the next one, the hands-on unit. And last but not least, in the deploy
part we then have our portal.
00:03:34 And the portal here is a very important part of Cloud Platform as it offers our SAP Fiori
launchpad where we can then register our Web applications
00:03:45 so that all our applications are available to our enterprise users via the launchpad. What
comes into play here as well is then the Fiori Cloud service.
00:03:56 So the Fiori Cloud service is a service that's offered if you have on-premise systems,
perhaps also on older releases, but you would like to give your users access to the new
Fiori apps.
00:04:07 That way you can use SAP HANA Cloud Platform and Fiori Cloud to connect to your on-
premise system from the Cloud Platform and then to provide the new Fiori apps via the
Cloud Platform, while still using the data from your on-premise systems.
00:04:26 The service that's important now for those two units for us is the Fiori mobile service. So the
Fiori mobile service is a mobile service offered on the Cloud Platform that helps you create
a native app package.
00:04:41 So taking a Web app and packaging this Web app into a hybrid app, and into a native app
package. And that way you can then also give this application out to your users via an app
store.
00:04:59 And then last but not least we have all of the SAP Cloud Platform Mobile Services, for
example also the mobile service for development and operations,
00:05:09 or the mobile service for app and device management. And those are then additional mobile
services which you can use to either handle all your apps, to manage them,
00:05:20 or also during the development phase. So what are the tools offered?
00:05:30 First we will start on the right side, at the top right, the Build tool. In the build phase, when
you discover and design your application,
00:05:41 here the Build tool helps you to do a prototype. The next step, already mentioned, the SAP
Web IDE.
00:05:47 You can import your automatically generated code and pass this over from the designers to
the developers and then really do the rest of the coding there.
00:05:57 Next, the mobile service for SAP Fiori. And that's the one that's the highlight here.
00:06:05 We can use this mobile service to create a hybrid app, and then also to automatically
generate our app package for us so that we can distribute this application to our users.
00:06:20 Then with this app package, which we can generate, for example, for iOS or for Android, we
can then roll out our application to all our enterprise users via SAP Mobile Place.
00:06:35 So here you now see the three types of applications. So at the top left, we have the regular
mobile Web application.
00:06:46 You just launch it in a Web browser, it follows the HTML5 standard, and often, to bring out
the SAP Fiori design guidelines,
00:06:58 it uses the SAPUI5 libraries. Then in the middle part, and that is what we will be doing with
our ESPM application, we will create a hybrid application,
00:07:07 so taking the first mobile Web application and packaging this in a hybrid app container. And
for that, SAP leverages the Apache Cordova framework for those hybrid apps
00:07:22 and enhances this with the SAP Kapsel capabilities, which are some additional capabilities
which you might like to have in an enterprise use case.
00:07:34 Last but not least, there is also the possibility to create a new native application. That's
usually done when you need the ultimate performance for your application.
00:07:45 If you already do processing in your application, then you might like to do that. For that, the
SAP and Apple partnership with the SAP HANA Cloud Platform SDK for iOS is pretty good,

00:07:59 so you can use the Swift programming language here to develop an iOS application. Now
you see the workflow that's going on and which we will also be following in the next unit
hands-on.
00:08:15 So firstly you need to develop your SAP Fiori content. So we need to have our SAP Fiori
application, our ESPM application, as a Web application in Web IDE.
00:08:30 Then we deploy this to a front-end server. In our case, we will be using the SAP HANA
Cloud Platform portal as our front-end server here.
00:08:40 Then we can build and test this application. The easy part here is to release this as a
regular Web application for our desktop users,
00:08:48 or also as a mobile Web application for some of the mobile users. And then the next part is
really where the Fiori mobile service comes into play.
00:08:58 So we might customize our application package, configure this, and then build this out. That
way we really generate an application package which you can then deploy to an iOS device
or to an Android device.
00:09:14 We can test this, and then deploy this, and monitor this via SAP Mobile Place. Everything
we will be doing in the next hands- on unit will be in the Web IDE, or almost everything.
00:09:30 We will also do some things in the cockpit or in the administration view, but almost
everything happens here in the Web IDE. We use it for developing our application, we use it
for testing our application.
00:09:43 And we can then also use it as an interface to the Fiori mobile service, as an interface to the
portal service, and to bring our app to the Fiori launchpad, and also here to build the app
package for the mobile app.
00:10:05 And so what exactly will we look at here for our ESPM application? We will see at the top
right our architecture,
00:10:17 and highlighted we have the part which we will be looking at in the next unit. So it's the UI
part including the connection to our OData service.
00:10:30 So the first thing we need to do is create a destination in the cockpit so that from the Web
IDE and from our Web application we can reach our OData service
00:10:42 which we already have running in our Java application. Then the next part here is that we
take the customer Fiori application and the retailer Fiori application out of our Java package,

00:10:56 and have them now separately as regular SAPUI5 applications, have them there in our Web
IDE.
00:11:05 And in that way we can then deploy them to the Fiori launchpad on the portal service and
have a look at it as a regular Web app, so integrated with the Fiori launchpad.
00:11:18 The next part is that we can leverage the mobile service for Fiori to create an app package.
And, for example, what this might give us in our case is that we might enable the offline
capabilities
00:11:35 so that a customer or a user of our application, even if he doesn't have an Internet
connection on the go, he can still use our application. And in that way, when he has an
Internet connection again, the application syncs up again.
00:11:51 So that's one capability that a hybrid app might give a user, which is an advantage over a
regular mobile Web app. For the destinations, we will need to create two destinations
because we have two OData services.
00:12:10 We have an unprotected OData service for the customer, that's one of the destinations
here. And then we have a protected destination which we will need to create with
AppToAppSSO,
00:12:22 so app-to-app single sign-on, which needs to be enabled here. And that destination more or
less also provides the security from our logged-in user to the SAPUI5 application, to the
Fiori application,
00:12:36 via the destination back to the OData service in our Java application. And that's called app-
to-app single sign-on,
00:12:46 to handle here the authentication also for the second protected OData service for our
retailer. So what have we learned in this unit?
00:12:57 We have learned how SAP Fiori looks on mobile devices, how SAP Fiori is available on
mobile devices. We've also learned about some different mobile services of SAP HANA
Cloud Platform
00:13:14 and additional services in the UX development phase which we might use. We have learned
about the mobile application types, so mobile Web app, hybrid Web app, and also the native
mobile app.
00:13:29 And then, last but not least, we took a look at how exactly we would be leveraging the
mobile service for SAP Fiori for our ESPM application
00:13:40 and what we will then do in the next unit with our ESPM application. Thanks a lot and see
you in the next unit.
Week 5 Unit 6

00:00:11 Hello, and welcome to Week 5 Unit 6 of the openSAP course "Developing Java-based Apps
on SAP HANA Cloud Platform". In this unit we will continue with the topic from the previous
unit but then really go into the hands-on stuff.
00:00:27 So, first let's do a short recap of what we covered in the previous unit. We covered the
scenario of how we might mobilize our ESPM applications.
00:00:37 So we are taking our Customer SAPUI5/Fiori application and our Retailer SAPUI5/Fiori
application into the Web IDE and we create hybrid applications from that.
00:00:50 So first a mobile Web application and then out of that we are creating a hybrid Web
application. It's important here that we understand the concepts of destinations and app-to-
app single sign-on (AppToAppSSO).
00:01:05 because we need destinations to connect from those HTML5 applications back to the
OData service offered by our Java application. And as one of those destinations, for the
retailer it's a secured destination.
00:01:22 For that we also need to understand the concept of AppToAppSSO. Meaning that the user
who's logged in to our Fiori application also goes via an AppToAppSSO,
00:01:34 and this authentication is also used for authentication of the OData service, so that this
protected OData service can also be accessed.
00:01:47 So what are the first steps we need to do? We are partitioning this into more or less two
parts.
00:01:54 First we will more or less just create a mobile Web application, and then in the second part,
we will really use the mobile service for Fiori on that application.
00:02:05 First we need to create our two destinations, then we need to get into the Web IDE, build
our apps there, then go into the Portal service, create an ESPM SAP Fiori launchpad site
there,
00:02:21 and last but not least, then also deploy our applications to SAP HANA Cloud Platform,
register them with our created SAP Fiori launchpad site,
00:02:34 and then we can test them already as Web apps integrated with Fiori launchpad. So how do
we do that?
00:02:46 Let's first... when we are here on our GitHub repository, we would now like to take... we
have two branches which we will use in this unit: the Webshop and the Retailer.
00:02:59 So when we just open the Webshop branch, we see here that this is not just a Web
application for a Web shop. And we also have here a destination file that we use for this
destination.
00:03:15 So we might just download this here, this branch, as a ZIP file, and also the one for the
Retailer. Later we will also use the clone in the Web IDE to actually get our applications,
00:03:32 but just for the destinations, to make it easy, we've provided them and... yeah, we can just
use those destinations here. So let's open up our account... go to "Connectivity"...
00:03:51 then to "Destinations", and now we need to import the destination. So the first destination is
"ESPM",
00:04:02 and then here, the link is... we need to provide a link to our application. And here that's... if
we call the application "ESPM", so that's this part, but we can also just check this out.
00:04:17 If we open up our running Java application, we can also see what the URL of that
application
00:04:27 So let's just open up our application here. And here in the URL, we see... I called the
application "ESPM", therefore it's "espm" first.
00:04:36 Then it's my P-user, "trial", and then the rest of the URL, so let's take this part here. And...
let's put this in here,
00:04:51 otherwise, if you didn't put this in here, your own running application, the whole thing
wouldn't work. So really make sure that you put the URL for your application in here.
00:05:03 And just the part until "ondemand.com" – everything else behind that we will then cover
directly in the Web application. Save that destination,
00:05:14 and import the second destination... for the Retailer. This is now called "ESPMSSO".
00:05:28 And we again need to put in our own URL for our application. And what you will see here
directly is that the authentication for this one is "AppToAppSSO" – that's important here.
00:05:43 Additionally, for usage in the Web IDE we have some properties. So now we have our two
destinations.
00:05:51 And what we can do here directly is check whether the destination is working – the same
also for the protected one. So that's fine.
00:06:04 Also, if we would just like to see the OData service, we could just type it in here – so
"espm.svc" is the URL. And to the secure OData service it's with the additional "secure".
00:06:20 And you have also just seen the short federation for the authentication for the secured part.
Okay, so the destination stuff is done.
00:06:32 Next we need to get into our Web IDE so we go to "Services"... and... under "Services" in
the "DevOps" area, we have here the Web IDE.
00:06:45 We also have an "innovation version", so that's the version where the new stuff comes in
first. The regular version is a bit more stable – that should be used for productive use and
also for most development purposes.
00:07:00 It's just if you would like to test out a new application or a new feature in the Web IDE, then
you would choose the innovation version. Also, here the link to the documentation, but we
can go directly to the Web IDE.
00:07:17 So, now we are in our Web IDE, we take for the Webshop first... the Git link. And we go to
"File" in the Web IDE, "Git", "Clone Repository".
00:07:35 And there we just put in the link. And now the Git repository is cloned to the Git service
running on SAP HANA Cloud Platform,
00:07:46 and then the application is imported here into Cloud Platform. No, we don't want to commit
and push this, so let's do it later.
00:07:59 And here on the right-hand side you have this Git logo, which you click and then the Git
pane opens. And here under "+" we now need to select the branch which we are using, so
here we are using the "HTML5-Webshop" branch first.
00:08:24 "Reset and Checkout". Okay. And now we are actually getting the branch that we want.
00:08:32 So now we have this branch and we can do it similarly also to the... second one. We might
just use it here directly, or we could clone it – the repository – again.
00:08:50 So... no, it's that way... "Clone Repository". Now it might show an error, or it automatically
does a renaming
00:09:06 because the application would now be named exactly the same except with "-2" here. "Do it
later". Same part here.
00:09:15 And the branch which we now want to use is the Retailer branch. Okay. "Reset and
Checkout". Okay.
00:09:24 So now we have our application already in the Web IDE and... or our two applications. And
what we could do here is, for example, just run this application,
00:09:40 and then we would, for example, here see our application in this pane in the test part of the
Web But we won't use this now.
00:09:54 Actually the next part that we would like to do is enable the Portal and create a new Fiori
launchpad site there. So here, when we were in our "Services", just at the bottom, together
with the "User Experience" capability, we have here our "Portal" service.
00:10:16 So if this is not yet enabled for you, please just enable it. And if it is already enabled, you
can also go here to "Documentation" if you want to read more about it.
00:10:30 But we choose "Go to Service"... and now we are in the Admin Space of our Portal. So we
create a new site... call it "ESPM", but what we call it doesn't really matter.
00:10:47 So next we select "SAP Fiori Launchpad" here... and go and "Create". Now an SAP Fiori
launchpad site is created for
00:11:01 When we go here to "Settings", it's called "ESPM", it's currently offline, so let's see. "ESPM"
– we can publish this.
00:11:16 We can also set it as the default. That would be preferable here.
00:11:22 And... I also still had an old one here – it doesn't matter now. The ESPM part is important
here.
00:11:31 It's published, it's set as default, which you can also see here by this button. And the next
part is... when we refresh that here, it also shows up that it's now published.
00:11:45 Under "Apps" we don't have anything yet, so we now need to deploy our applications and
add them to SAP Fiori launchpad, and we do that again via the Web IDE.
00:11:58 So first let's take our Webshop and go to "Deploy" and "Deploy to SAP HANA Cloud
Platform". Okay, so here we now need to provide the password for our account.
00:12:24 So here we can now choose... a name for our application, and deploy that. Now the
application gets deployed, and afterwards we can register it to Fiori launchpad.
00:12:44 So here we just need to select a unique name – "webshop" is fine. Then we can configure
the tile – "ESPM Webshop". Subtitle – we don't need one.
00:13:01 We select our site, so the site will be "ESPM". And "Finish".
00:13:09 And then we can open our Fiori launchpad and also our application, and now we see our
Webshop application embedded as a Fiori application in Fiori launchpad.
00:13:26 So let's also do the same for the Retailer. "Deploy", "Deploy to SAP HANA Cloud Platform".

00:13:37 "retailer" Register it to Fiori launchpad.


00:14:01 Select our site. And finish.
00:14:07 Again, we can open our Fiori launchpad and now we see both applications here, and we
can also go into the Retailer application and then have everything here.
00:14:20 So we have both applications now deployed on SAP HANA Cloud Platform. And we also
have both of them added to our ESPM Fiori launchpad site.
00:14:32 Next the second part – let's take a look at the mobile service for SAP Fiori. So in order to
use our applications with that, we need to check two things.
00:14:43 First we need to provide a subscription to our application, which we now do again in the
cockpit... with "Applications" and "Subscriptions".
00:14:59 And in here we have the subscribed HTML5 applications, and here we need to create a new
subscription. Our account.
00:15:10 The Webshop... "webshopsub" – so here the subscription name. It's just important that it's
not the same name, so just add "sub". And let's do the same also for the Retailer.
00:15:44 When that's done, we see it here: "retailer". And the Webshop...
00:15:50 we can go to our "Services"... and in our "Services" now take a look at the Fiori mobile
service, so it should be under "Mobile"... here: "Fiori Mobile".
00:16:04 Now please enable this service for you if it's not yet enabled. And... one more thing we had
here – okay, we have to make sure that in the SAP Web IDE the hybrid app toolkit plug-in is
enabled.
00:16:18 So also let's check in the Web IDE... here under the settings... "Plugins"... "Hybrid App
Toolkit". Okay, for me it's enabled, so if it's not yet enabled for you, please enable it here
and then reload the Web IDE.
00:16:42 Here's the Fiori mobile service. So first, if you'd like to read more about it, just click here on
the link for the documentation.
00:16:50 You can find here the user guide, and especially in the user guide, here below, you see a
full-story, end-to-end tutorial on how you
00:17:01 now might use the mobile service for SAP Fiori to build native applications. It comprises a
few parts here.
00:17:14 So if you want to do this yourself, please just follow this guide here, and I'll show you a bit of
it right now. So you would start by going here, clicking on your Webshop application and
going to... "Fiori Mobile" – let's check.
00:17:38 Okay, "Fiori Mobile", and then you could build the device, or launch on the device. So the
parts describing what you need to do are here.
00:17:50 If you want to run through the full set-up, please just follow the steps described here in the
blog posts and you will see what you need to do.
00:18:01 For example here, some of that we already did: "Enable Fiori Mobile service", "Create SAP
Fiori Launchpad" – that stuff we already did. Then "Add a destination...", "Create a sample
Fiori application..." – we did this already.
00:18:17 You might need to prepare the application for packaging, deploy it... okay, that's fine. The
app subscription we already did.
00:18:27 And then, for example here, if you want to build your application now, you need to create a
signing profile, You can do this if you go here in the Fiori mobile service to your Admin
Console,
00:18:43 and there you can go to "Applications" and "Manage Signing Profiles", and here for Android
or iOS you can create a profile.
00:18:56 So for Android you can automatically generate a profile, for iOS you need to be registered
as a developer with Apple, and then you can upload the certificates needed for your signing
profile.
00:19:15 What else was there? Here you create a profile, a configuration file,
00:19:23 and then you can use the Fiori mobile build process to really generate your app package,
you can get shown a QR code as a result, you can scan this with your device
00:19:35 and directly download the application from SAP Mobile Place to your mobile device and
then test it there. So with this, we are at the end of this unit.
00:19:51 So we have seen how we can deploy the ESPM application as a regular SAPUI5/Fiori
application to SAP HANA Cloud Platform and to register this with the SAP Fiori launchpad
there.
00:20:07 Next we then also had a look at what the steps are if we now want to package this as a
hybrid application so that we have it as an application directly available on our mobile
devices.
00:20:23 Also, all the steps here can be done via the SAP Web IDE or the cockpit and the
administration consoles connected there for the individual services.
00:20:35 Everything should be at hand, and in the documentation everything's explained in case you
have any questions,
00:20:43 so please have a look there if you want to get additional information. With this, thanks a lot
for listening to this unit and see you in the next unit.
Week 5 Unit 7

00:00:11 Hello, and welcome to Week 5 Unit 7 of the openSAP course "Developing Java-based Apps
on SAP HANA Cloud Platform". In this unit we will wrap up and provide a summary of all
that we covered throughout the last five weeks.
00:00:28 So, looking back at the first week where we began, we had a look at some of the
capabilities of the Java Runtime, of Eclipse, got an elevator pitch to SAP HANA Cloud
Platform, what you can use it for, and what it offers.
00:00:50 Then we had a look at what the ESPM application is, so the Enterprise Sales and
Procurement Model application, one of our reference applications, which we then used
throughout all of the five weeks.
00:01:04 In the first week we then also took a look at Git, how it integrates with Eclipse, and how we
make use of Git at SAP and also now particularly for the ESPM application.
00:01:18 We then took a look at Maven, the Apache Maven project that's used for the build handling,
for the build of our application. How this integrates also with Eclipse and how we can build
the ESPM application via Maven
00:01:34 so that all the libraries which we use in the application are automatically fetched. Next, we
took a deeper look at the ESPM application, the scenario from the customer's point of view,
from a retailer point of view,
00:01:48 and how this all looks, and what the parts of the application are, what the architecture of the
application is, with our database, with our database connection which uses JPA,
00:02:04 then with our mid layer which provides the OData services, which are then used in the top
layer of our SAPUI5 application. Then next, in Week 2, we took a deeper look in exactly
those three areas.
00:02:21 So two units we looked into the JPA model and how the database connection is handled
there, how all that stuff is built out. Then in the next two units we took a look at our OData
service
00:02:36 and how you can leverage the Apache Olingo framework to create OData services. And
then in the last two units in that week we took a look at our embedded SAPUI5/Fiori
applications
00:02:50 which would give us our UI which uses and consumes the OData services provided by the
back end, and here those two applications which were for the customer and then for the
retailer
00:03:03 which we can execute directly in our browser and how those might be built. Week 3 was all
about security and identity management.
00:03:13 For that week we had Martin Raepple with us. He talked a lot about how you can handle
authentication and authorization in the ESPM application,
00:03:23 how we can protect our application against attacks, and then also provided some additional
features that the platform offers,
00:03:33 for example the Authorization Management Platform API, how we can use this, how we can
handle multiple identity providers in our application,
00:03:43 and how on SAP HANA Cloud Platform we showcase and how we can manage users very
efficiently with groups, with federated authorization
00:03:58 to really handle huge amounts of users in our identity providers that use our applications
running on SAP HANA Cloud Platform. In Week 4 we first had a look at the SAP Jam
collaboration
00:04:13 and how we can integrate SAP Jam with the ESPM application, how we can leverage SAP
Jam here to discuss our products. Next we then had a look at how we leverage the
document service on SAP HANA Cloud Platform in our ESPM application,
00:04:31 how we save and store our PDF invoices there, and how we can retrieve them from there as
well. If you want to use the document service in your own application, this should probably
give you an idea of how exactly you might do that.
00:04:50 Next we saw how we can use social sign-in for our application, how we can integrate the
ESPM application with Twitter here and how this integration works.
00:05:05 Next we took a look at the Build tool. So how a designer might go about prototyping an idea
for an application to catch errors in thinking and also in design very early on
00:05:22 with user feedback, with an iterative process before even handing the code over to a
developer. In Week 5 it was all about some additional features, some new features that the
platform offers.
00:05:37 So in the first two units we then took a look at API management. We then had Holger
Bruchelt with us and he really helped us to see how we can use API management together
with the ESPM application,
00:05:54 how we might use API management for throttling and for protecting our OData services. So
also if we have our own OData services and want to give them out to our customers or
partners,
00:06:12 how we can then handle this and how we can leverage API management to do this. Next we
had Beatrice Pasch with us and she introduced us to SAP Translation Hub,
00:06:26 what it helps us to do and how we can really translate the ESPM application very easily and
largely automatically into multiple languages. So our default language is English, but then
how we can add very easily additional languages,
00:06:44 like German but also other languages that are not as common. And then in the last two units
here in Week 5 we took a look at the mobile scenario.
00:06:59 So when we, for example, just have the SAPUI5, the Fiori apps are not embedded any more
inside the Java application but now directly as separate HTML5 applications,
00:07:18 how we can import them into the Web IDE and how we can then deploy them on SAP
HANA Cloud Platform, how we can create our own SAP Fiori launchpad site via the Portal,
00:07:34 and then how we can register our deployed customer app and retailer app in that Fiori
launchpad, so we really have them embedded in the whole enterprise usage of SAP Fiori
launchpad.
00:07:48 And then as the last part in that topic we took a look at the mobile service for SAP Fiori and
that it really gives us the ability here – also with its integration to the Web IDE – to very
easily create a hybrid application,
00:08:06 so how we can leverage the mobile service for SAP Fiori to package our application as an
Android application or as an iOS application and provide them to our users via SAP Mobile
Place.
00:08:21 And with this, here are a couple of links. Just download the slides below, then you can click
on the links – a couple of blog posts,
00:08:30 some additional resources to try out to have a look at what's coming here – interesting stuff.
And also, if you want to stay up to date, have a look at our Web site – we always provide
new content there.
00:08:45 Have a look at our community – there you'll find all the blogs, questions and answers, and
more. Then also, you always get the newest info on our Twitter channel – just follow the link
there.
00:08:58 We also have an account on SlideShare, where we provide the slides, for example like our
roadmaps. And then also if you like to listen to audio, then you can subscribe to the SAP
HANA Cloud Platform podcast,
00:09:14 and when we have news, especially after or even during events, we provide new content
there as well that you can listen to. With this, thanks a lot for joining this course.
00:09:26 I hope you enjoyed yourselves, you learned a lot, you got new ideas, and that this course
helped you in your daily business. Thanks a lot and see you soon.
www.sap.com

© 2017 SAP SE or an SAP affiliate company. 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 SE or an SAP affiliate
company.
SAP and other SAP products and services mentioned herein as well as their
respective logos are trademarks or registered trademarks of SAP SE (or an
SAP affiliate company) in Germany and other countries. Please see
http://global12.sap.com/corporate-en/legal/copyright/index.epx for additional
trademark information and notices.
Some software products marketed by SAP SE and its distributors contain
proprietary software components of other software vendors.
National product specifications may vary.
These materials are provided by SAP SE or an SAP affiliate company for
informational purposes only, without representation or warranty of any kind,
and SAP SE or its affiliated companies shall not be liable for errors or
omissions with respect to the materials. The only warranties for SAP SE or
SAP affiliate company 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.
In particular, SAP SE or its affiliated companies have no obligation to pursue
any course of business outlined in this document or any related presentation,
or to develop
or release any functionality mentioned therein. This document, or any related
presentation, and SAP SE’s or its affiliated companies’ strategy and possible
future developments, products, and/or platform directions and functionality
are all subject to change and may be changed by SAP SE or its affiliated
companies at any time
for any reason without notice. The information in this document is not a
commitment, promise, or legal obligation to deliver any material, code, or
functionality. All forward-looking statements are subject to various risks and
uncertainties that could cause actual results to differ materially from
expectations. Readers are cautioned not to place undue reliance on these
forward-looking statements, which speak only as of their dates, and they
should not be relied upon in making purchasing decisions.

You might also like