Download as pdf or txt
Download as pdf or txt
You are on page 1of 19

NW 202 - Platform for Developing ABAP and Java Applications

Ulrich Klingels/Wolf Hengevoss

SAP AG

Ulrich Klingels:
Can you hear me? Welcome again to the second day in the afternoon. Today were going to talk about
the Netweaver 202 session, which is called Platform for Developing ABAP and Java Applications. And
before we start, I want to introduce myself. My name is Ulrich Klingels. Im working in the Product
Management Team for the J2EE engine. Im working at SAP in Waldorf [sp], so basically I came from the
ABAP side and joined the Java side, so Im familiar, you could say, with both sides. So thats the reason
Im here, so talking about ABAP and Java together.

And the learning object about the session today is that you could see how the Web Application Server
6.40 fits into the big picture of SAP Net Weaver and the enterprise service architecture. So the idea is that
you could understand the development strategies in the application scenario, which includes the 6.40
features for ABAP as well as for Java. And that you see the Java development tools and the infrastructure
as well as the connectivity between the ABAP world and the Java world, and how to leverage the
infrastructure services of an enterprise portal in your development project.

So we want to try to show you the theory in action, which means we have some live demos Ive prepared.
So basically there are three parts depending on where we are, so there is one dedicated to the ABAP
side, one dedicated to the Java side, and at least theres one day more in the Enterprise Portal.

OK. The agenda for today: I want to give you an overview about the SAP Net Weaver, then I want to
discuss the application platform which combines ABAP as well as Java, so theres an overview about the
architecture and we want to discuss the ABAP side, where the business data is located. Then I want to
give you an overview about Web services with ABAP. And after that, we have the first demo. Then I want
to discuss the Java development infrastructure today, and show you how Web Dynpro for Java works.
And after that, I also explain some interesting things about interactive forms from Adobe. And then the
second part starts with the portal integration, and I will show you how easy it is to implement, or integrate,
a Web Dynpro application into the portal. And I will show that in an application interaction so we have the
combined application running in the portal. OK. And at last, we have the summary.

OK. First of all, I want to start with the Enterprise Service architecture; I guess you got a couple of [bits of]
information during the keynote as well as on sessions before. But this slide tries to, let's say, summarize
all the information and maybe bring all the bus routes together. So the Enterprise Service architecture is
today a blueprint for service-based and enterprise-scale business solutions. What does that mean?
Basically you could assume, on the picture you see, existing systems. New existing systems you will
maybe upgrade or implement in the next time, or maybe existing systems. And based on the technology
of enterprise services, we want to provide existing functionality as an enterprise service. Which means,
we want to create enterprise services for people integration, information integration, and process
integration based on existing systems, as well as, let's say, the new upcoming systems. For that, we
need, let's say, an enabler that, for existing systems as well as the new systems, are able to be enterprise
service-enabled and therefore we introduce SAP Net Weaver. So the enterprise Net Weaver augmented
enterprise. SAP Net Weaver is the technical infrastructure for these solutions. And behind SAP Net
Weaver, there is basically Web Application Server, which is the technical infrastructure behind.

The next slide takes a little bit more in detail. So you see in the picture the SAP Web Application Server. It
supports Java as well as ABAP as the infrastructure. And based on the SAP Web Application Server,
there are the components of SAP Net Weaver. So theres DBW [sp] enterprise portal, XI infrastructure;
theres the mobile [sp] infrastructure; and there on the end, the master data management system. All

1
NW 202 - Platform for Developing ABAP and Java Applications
these components together, running on the SAP Web Application Server, are the SAP Net Weaver.
Based on the SAP Net Weaver, new solutions like ERP, SRM, and CRM are based on top. So we could
say, basically, Web Application Server is a complete infrastructure to develop, deploy, and run all SAP
Net Weaver components. I mentioned before My SAP Business Week. And, its important, all customer-
developed applications. Independently, these are developed in ABAP or Java. And third-party J2EE
applications can be run more or less out of the box on the SAP Web Application Server because J2EE is
the standard. We are following the standard, and that means any applications which are based on the
standard can run on the SAP Web Application Server. So that means the Web Application Server
integrates the proven ABAP technology as well as the innovative trim [sp] Java technology in one
application server.

If you have a closer look on the SAP portal, its a Web-based and role-based infrastructure which allows a
secure access. It integrates any kind of structured information, and has a sophisticated navigation as an
option. We will show that later in a demo where I try to show you how the Enterprise Portal eventing
works. Its also built on open [sp] standards and supports a wide platform.

In addition, the other part we want to expose today is the SAP Web Application Server. So there we
support open standards. We have Web services capability out of the box for Java as well as for ABAP. I
will show that for the ABAP side today. Its a scalable and secure environment that has a common
installation administration option for the Web Application Server, and it provides a software lifecycle
management.

Before I continue, I have a question for you: Who is familiar with, let's say, the ABAP development? OK.
And who is familiar with the Java development? OK. So there a couple of people using Java and a couple
of people using ABAP. OK. Thats fine. Maybe an additional question at that point: Who is, lets say,
familiar with both? OK. So, will you come on stage and continue? [Chuckling] OK; Im kidding.

OK, next part is the application platform. And we do not, let's say, to distinguish at that point which is now
ABAP- and Java-related, because a couple of functionalities are usable from both. So we are Web
service enabled; that works for Java as well for ABAP, and that supporting standard is also working for a
couple . . . or, a couple of standards are working for both, for Java as well as for ABAP, and that means . .
. Ill give you an overview about this, and later on, I want to explain what are the key features for the
ABAP world and what are the key features for the Java world.

Its important to know, and I guess most of you know that, that basically Web application service is not,
let's say, a completely new technology. We started with our Web Application Server more or less over ten
years ago, and we called them R/3 basis. Maybe you are familiar with that term, or buzz [sp] word. So
1992, we introduced the 3-T [sp] architecture, which was a scalable and performance platform. In 1996,
we started, as other companies, with the Internet enabling. There we introduced the ITS, which allows us
to run, let's say, a classical Dynpro application to run in the browser. Also there we had SAP Business
Connector. So that was, let's say, the starting point where we started with the Internet.

In 2000, we added native Web technologies and added server-side scripting, let's say, or explain, in that
case we added the business server page technology where we now were enabled to create dynamic Web
pages with HTML and ABAP in combination. And therefore, we also added native HTTP as a product
called XML Support and so on.

In 2002, we introduced . . . oh, I have to go one step back. By introducing these native Web technologies
in our, let's say, R/3 basis, we also changed the name, and now the component, or product, is called SAP
Web Application Server. So there was a big shift between the past and the future because now native
technologies, Web technologies, were enabled and can be used. And with 6.20, which was introduced in
2002, we had full J2EE support. We added additional features, Web service featuresWSDL, description
SOP [sp] protocol and UBDI [sp], for instance.

2
NW 202 - Platform for Developing ABAP and Java Applications

With 6.30, we introduced our own Java development infrastructure. You have to consider that if, let's say,
you are developing Java and you have the J2EE server, it does not basically provide a Java development
environment. This is basically, let's say, something you have to add on top, which is not part of the J2EE
server itself. And SAP made the decision to provide more than only a server, also the development
environment, because, I guess, all of you or most of you are familiar with ABAP, and in that case you
know that theres the ABAP Workbench, and this is really tightly connected to the application server. So
basically customers know that SAP is delivering more than only a server; theres also a development
environment.

So therefore, we also introduced Web Dynpro, and Web Dynpro in that case is one common technology
for ABAP as well as for Java. I guess you heard about Web Dynpro ABAP will be released for customers
in the next release after Net Weaver 04. And with the Web Application Server 6.40, which is a
component inside SAP Net Weaver, we are leveraged different processes, which means we are providing
software; a life cycle management for Java. We added a couple of ABAP enhancements like ABAP Web
services, for instance. I will do later on a demo on that, as I mentioned before.

This slide I want to discuss briefly because I want to ensure that you get this information. The SAP Web
Application Server is based on open standards, so we are fully J2EE certified. Today its 1.3 certified. So
any 1.3-certified application, or basically any application or program which follows these standards, can
be run out of the box on the SAP Web Application Server. We are supporting Web services for standard-
based communication. We are using the open source Eclipse framework as the underlying foundation for
the SAP Developer Studio. We are participating in the Java community process. We are a founding
member of the Web Service Interoperability Organization, and SAP is hosting UDDI [sp] business
registry.

What makes the Web Application Server unique? If you compare that maybe with other J2EE servers,
basically its enterprise scaled; its platform independent. I guess platform independence more or less is
not really the reason, because if you talk about J2EE servers, they are more or less all platform
independent. But if you talk about platform independence, you are talking also about database
independence. You know if you are writing any other programs; you dont care on the underlying
database itself. So you write your sequel statement, thats it, and its run more or less on Oracle, Microsoft
Sequel Server, Soft DB [sp], Max DB [sp], for instance, or IBM Data Basic [sp].

We have a lot of experiencemore than 10 yearsabout the application server development. You saw
the slide before. We have common security capabilities for ABAP as well as for Java. And we have Web
Dynpro, which allows us to have one unified technology, or paradigm, for UI [sp] development for ABAP
as well as for Java.

Database independence. Its very important [as] you know from the ABAP side, and I mentioned that
before, that we are database independent. This is also true for the Java world.

And we have the high efficient development environment for team development. You know that you
could, let's say, pretty easily develop in larger teams on the ABAP side. Basically, the development on the
Java side is file based, which means you have the local development environment, all five sources youre
creating are, let's say, start on your local PC. And you have to ensure if you, let's say, deployed it to a
larger test environment that it fits to the sources which are already deployed by your colleagues. And this
is a big task on the Java side, and we are providing, therefore, the Java development infrastructure to
allow team development, or to support team development, with the Web Application Server. And we have
created software [unintelligible] management that is available for ABAP as well as for Java.

OK. What are the features for the ABAP sidewhat are the highlights? Basically, we have the
comprehensive infrastructure for development in lifecycle; I guess you know that. So there is the ABAP

3
NW 202 - Platform for Developing ABAP and Java Applications
Web page, for instance, with the transport mechanism and so on.

With the Web Application Server 6.40 we have an integrated ITS service available. So I guess you know
from the past, there is an ITS as a separate box available you could install, and you could run Dynpro-
based applications in a browser. With the Web Application Server 6.40, it is integrated, the HTML, and
the SAP GUI [sp] or HTML functionality, as an application in the Web Application Server, and there is no
need, in that case, to use an external ITS to run the application. This makes, in this case, only sense if
you have an application sitting on the Web Application Server 6.40. For instance, the ERP, which is now
in the ramp-up, for instance, sitting on the Web Application Server 6.40, and then these applications, the
ERP applications, can get the benefit from the ITS.

We have Web services based on open standards which allows us to publish existing functionality as a
Web service. So any kind of function moduleBAPI [sp], Idot, and so on, can be published as a Web
service.

We have integrated process forms, pdf, powered by Adobe, so we are able to create interactive forms or
printing forms that could be emailed or archived or faxed.

Weve improved the performance productivity, so we are able now to support symbol transformation for
XML, which we accelerated by the rate, I guess, between 50 and 100. But it was a big shift forward for the
performance in that case.

And we are supporting shared objects, which allows you, if you have, let's say, developing ABAP objects,
that you could use shared objects, which allows you to reduce the memory consumption of the application
server. So different objects could be shared, which means that must not be allocated again in the server.

Outlook for ABAP in that case is Web Dynpro for ABAP will be available in the next release, and we have
interactive forms available for Web Dynpro.

OK. If we have a closer look at the architecture of the Web Application Server, you see there are three
layers. Theres the connectivity layer, theres the presentation and business layer, and theres the
persistence layer. The connectivity layer is represented by the Internet communication manager called IC
Man, and the business, or presentation, layer is represented by Java and ABAP. And then we could say
theres a unique technology on top of ABAP and Java which is called Web Dynpro, and we have Web
Services. Both are, let's say, supporting Java as well as ABAP, more or less in the same way.

OK. Web Dynpro comes in the next release, but this architecture fits for today and for the next release.
We have a persistence layer and database abstraction, which means any kind of database, independent
of if youre working on the ABAP side or on the Java side, can be accessed with the database
abstraction. So you write your sequel statement, it runs in any database we are supporting.

We have to have a workbenchI guess you know thatand we have to develop a [unintelligible]. The
different between is, if you want to develop an ABAP program, you have to log on remotely by using SAP
GUI. Developing with the Developer Studio is locally done. So I have, on this machine, also a developer
studio where I develop later on a small Web Dynpro application, and then see the different between the
ABAP and the Java world.

OK. For the connectivity: For the Java connectivity between Java and ABAP, there we have introduced a
couple of years ago the SAP Java Connector which is, let's say, the technical infrastructure between the
Java and the ABAP world. With the SAP Enterprise Connector, we have a more or less tighter integration
into the developer studio, which allows us BAPI explorer functionality where you could select a BAPI and
create a required process. But this is more or less, let's say, a technical detail you need, but its basically
hidden if you use, for instance, Web Dynpro technology. Then you dont really care about that. Its there,

4
NW 202 - Platform for Developing ABAP and Java Applications
but you do not have really to deal with that.

OK. The ABAP application development, I mentioned before, are divided into two parts. So there is the
presentation layer and the business layer. If you have a closer look at the presentation layer, there is the
Dynpro technology, theres the ITS as an option to provide Web Dynpro applications in the browser,
theres the business server page technology.

There is also a question from [unintelligible], who is dealing with business server pages so far? Not so
many. Maybe I have to explain. Business server page technology: There you could, let's say, write
dynamic HTML pages. In that case, you have to provide data into an HTML page, and for that, you are
able to combine HTML text with ABAP coding. So the ABAP coding brings in the dynamic part into the
HTML page, and you could do that in the ABAP Workbench. And this application, the business server
page application, runs directly in the browser, and business server page technology, you could say, is
similar to the Java server page technology where, let's say, also HTML texts are in and there is the Java
language as the dynamic part where you could bring the dynamic part into that page.

Web Dynpro will come in the next release, so has a different color [sp] in that case. And the business
layer consists of the module tool; I guess youre already familiar with that. The module tool basically use
RFC [sp] and BAPIs. And we have Web service sitting on top on RFC and BAPI, so any kind of RFC or
BAPI could be accessed as a Web service.

OK. And we have open sequel for ABAP, which allows us to have independent access to the database.

OK. Now I want to introduce Web services so that you, let's say, get the . . . know a few what ABAP
services, basically, and later on, I want to show how you could use, or how to create, from an existing
function module in ABAP Web service.

OK. Basically, the idea is pretty easy behind Web services. First of all, theres a Web service consumer
and theres a Web service provider. The Web service provider is interested to, let's say, provide a service,
and for that he has to publish the service. The question is, Where could he publish the service that
anybody else could, let's say, discover the service? Its pretty easy; the idea is to have him do it in the
UDDI registryuniversal description, discovery, and integration repository, or directory. These are, let's
say . . . you could compare it with the yellow pages. If youre at the yellow pages, you want to find, let's
say, any service from a company, then you look for the category you want to use. Let's say you want to
choose a restaurant in a specific city. Then you search for the flavor you want to have, and maybe you
find restaurants located in the city. OK. And its more or less on the ABAP side for Web service, so you
publish, let's say, the entry in the UDDI registry. As a business consumer, you log onto the UDDI registry,
discover which Web service you want to use. And the question, How does now the Web service
consumer access this Web service? Its also pretty easy. Its based on a standard, and its called
WSDLWeb service description language. This is an XML document containing XML statements. But
this XML document contains the information about what kind of Web service this is, and where the
location ishow I could access this Web service. So there are two [kinds of] information inside. How does
it work, and how could I access the Web service? So the Web service consumer had to retrieve this Web
service description language, and had to implement an application or, lets say, a proxy to retrieve or to
get access to the Web service provider. The only thing the Web service consumer has to do is send an
XML document of a specific kind or format to the Web service provider, and he will get back the answer,
also in an XML document.

So the exchange between the service consumer and provider is done in an XML format, independently of
the implementation of the Web service. Thats the basic idea behind it. But all people want to use XML
documents; nobody wants to implement any, let's say, coding with deals directly XML document because
its hard to document; its a lot of work. So what we need is basically a tool which generates all the
required proxy or applications around. Basically this is possible, so with the Web Application Server

5
NW 202 - Platform for Developing ABAP and Java Applications
independently now, if we are talking about ABAP and Java, it could be done in the SAP Net Weaver
Developer Studio or in the ABAP Workbench. We are able to provide for any existing functionalityit
could be a Java graph, an enterprise Java bean, and RFC, BAPI, an Idot, or an XI server proxycould be
enabled as a Web service. For that we are also supporting a virtual interface.

If youre familiar with ABAP, you know there is a company code and a lot of BAPIs available, all in
function module. And in most cases, let's say if you want to provide this functionality externally, nobody
knows really what is a company code. So what you want maybe to achieve is that you want to hide this,
let's say, huge interface and make it smaller. You provide only the necessary fields to the Web server. In
that case, you could set individual interface from, let's say, attributes of the Web service with the default
value, and in addition you could also rename the names of the attributes. So lets say there are a couple
of function modules coming with the German description, or a short text for the attributes or for the field
names or input parameters, and you could rename that in the language you would use, for instance. Its
pretty easy. And that thing behind it, you do not have to change the existing business function already. So
theres no need to change the function module. Theres no need to change the BAPI. Because this is like
a customizing of the existing functionality. Its like a shell around that existing functionality. If you did that,
that service or that functionality is available as a Web service, and, for instance, on the left [sp] side, the
Web service consumer could access this functionality as a Web service.

OK. In that case, we are also able to create a WSDL description, which could be published in the UDDI
registry, so that the Web service consumer could retrieve the WSDL description, implement in this
required environment to retrieve the Web service.

On the other side, if there is a Web service provider, and you want to access this Web service, you could
connect to the UDDI registry, download it a WSDL description, for instance, generateand this is now
possible on Java as well as on the ABAP sidea required Web service proxy, out of the box without any
line of code. And the only thing you have to do is, let's say, you have to implement a Web service client
applicationsomething has to do something with the date you get from the Web service provider. Thats
the only thing you have to do.

OK. That leads me to the first demo today. So I want to create from an existing function what is a Web
service based on ABAP. For that, I already connected to an ABAP system. That is an ERP system, but
its based on . . . if I open that . . . OK, there is a lot of stuff inside, but . . . yeah, its called Web
Application Server 6.40. There I go into the function builder, and theres a function module available that
is called set_material_data. When I display that, its very complicated. It contains a lot of source code.
Takes a while. There are not more as line anyhow. OK. So thats more or less the only line. So select
[star] from. Set material into table. Thats it. So basically I could test this. And you see, I get as a result, if I
execute that and there are no input values required, and a list of productsrice, corn, wheat, sugar,
potatoes. So thats the answer . . . or, let's say, thats the result by executing this functionality.

What I want to do is create from this function module a Web service. I use utilitiesmore utilitiesand
say, Create Web service. I could create a Web service from a function module, I will do that, or maybe
from a function group. Then all existing function modules inside the function groups are available for the
Web service. I choose Function Module, and now a wizard starts which allows me to create, from an
existing function module, a Web service. I continue. For that, I could define a name for virtual interface.
Later on, I will be able to maintain, if I want to do that, that virtual interface. So virtual interface is called
Set [sp] Material Net Weaver Demo. So our description is Demo, [unintelligible] Four.

Continue. This is the function module. Maybe I could choose another one if I want to do that. OK. And
there is the name of the Web service. I kept that the same as the virtual interface. Maybe I could use the
same name for the Web service as well as for the virtual interface. Thats also a demo. 04. And I
continue, and I say, complete, and now I have to assign a package. I could also say Local Object. And
now, all the required coding is generated in background, but this function module is available as a Web

6
NW 202 - Platform for Developing ABAP and Java Applications
service.

OK. And this is a customizing request. You see that? And this is very important, because this is not, let's
say, a modification of existing functionality; its a customization. Which means you could customize, later,
also the virtual interface and you could use that without creating a modification of an existing system.

OK, now the Web service is finished. And you could expose the Web service with the transaction, WS
admin, Web service administration open. And there you will find more than one. This is the Web service I
created before; there a couple of others [because] we had a couple of sessions before. And this is the
Web service.

I could test the Web service from the Web service administration, and it starts an HTML page. The HTML
page is the same as the test page for a Java Web service. So what we do, really, we reuse the test
functionality from the Java side for the ABAP Web services. So if you test the Web service on the Java
side, it works in the same way. In that case, I have to log on against the ABAP system, because now Im
calling from the Java sidefrom the test pagethe Web service on the ABAP side. Thats the user, and
the password is hidden.

OK. Thats the password I logged on on the ABAP side. And now Im on the test page. There I see the
WSDL description, and therefore I have to log on again because the WSDL description is also coming
from that. OK, this is the WSDL description containing the content as well as the information where this
Web service is located. And this is the address of the Web service. And the only thing I need later on to
use, or call, this Web service from any other location is to use that dummy SDL description.

OK. I could test it. This is the Web service I could call. If I send the Web service, or send a request to the
Web service, this is the request; this is the response, and I get all the entriestheres the rice, the corn,
the wheat, the sugar, and the potatoes. So thats, let's say, a test environment to test, does the Web
service really work together?

OK. You saw that if I go to the test page, if I want to retrieve the WSDL description, that you have to
provide user and password. These are some reasons for security. But if you basically want to provide a
Web service which is a public Web service, then you have to enable the Web service as a public Web
service, and this is possible. You go in the ABAP Workbenchor, in the ABAP state [sp], and start a
transaction as EFCF [sp], where you basically could maintain services for the NCman in the net
communication manager. And there could, for instance, also for the business server page technology,
there is the option basically to publish this Web service page as a public site or not public site. And the
same works in this case for the Web services. There we have the SOP run timeWeb services are
based on the SOP protocol, and there are SOP run times for RFCs. Name space is SAP; there could be
another name space. And there I will find my Web service. This was this one.

So make a double click on that, you see. I could maintain, if I go into the change mode, a client, a user,
and a password. Client will be 803, the user is ticket. I provide my password, choose maybe a
language. English. OK, I should not use a dialect user because this is maybe used by several other
users. Lets say the same issue; provide an RFC connection on the ABAP and also should not use a
dialup user. Its only running. I could continue. Close the session, and try it again. For that instance, I
have to, let's say, close the browser and start the transaction again, where I find my Web service. And I
could test that. Service again. And now, hopefully, I come directly to the test page without a log-on (takes
a while) without a user password setting. And I could provide the WSDL description. Now this Web
service can be reached from outside without authentication. So you could, let's say, retrieve that
information without using user and password.

OK. This was the demo that any kind of function module, any kind of BAPI, could be provided as a Web
service out of the box without any line of code. OK. Let's say you could do that in between one and five

7
NW 202 - Platform for Developing ABAP and Java Applications
minutes; thats not really a big deal.

Now I want to jump on the part of the Web Application Server that is called Web Application Server Java.
I want to provide for this class some features and highlights, and later on I will create a demo where I use
the existing function module on the ABAP side as an ABAP Web service as a model inside a Web Dynpro
application.

OK, the Web Application Server Java is fully J2EE 1.3 compliant. So I mentioned before any kind of J2EE
application which follows that standard can be run on top of the Web Application Server. We have the
Java development infrastructure, which has a comprehensive development and lifecycle feature
available. We have a Java dictionary there, where we have also Open Sequel for Java. Both together are
providing a database persistence framework. We have Web Dynpro in place, Web [unintelligible] service
is there. It works more or less the same as on the ABAP side. We have the interactive form solution
powered by Adobe, which allows you to create user-friendly forms based on, let's say, user-friendly
design tool. And later on, I want to explain how you could run a Web Dynpro application pretty easily in
the enterprise portal.

OK. Before we start, I want to spend one slide about the component model on the Java side. I guess
thats necessary and important because if you want to, let's say, later on use the Java development
infrastructure, then the component model is required. You know from the ABAP side if you write an ABAP
program that you have to assign it to a development class. Or, let's say, in newer releases they are called
packages. The difference between Java classes and packagespackages can be nested. So you could
assign, let's say, a program to a package and the package could be assigned to another package, so
there could be more than one package [unintelligible]. And we have more or less the same concept on
the Java side. We could, let's say, clearly compare them.

So development objects are objects you develop, like table definition Java sources. Development objects
are basically stored as files in the design time repository, which is, in that case, a versioning tool where
you could check in and check out file sources. Development components are defined by a developer and
are a unit of build and deployment. So you could say thats the smallest part of the building process and
the deployment process. And it consists of a couple of development objects. The software component is a
unit of delivery, installation, and software [sp], and its defined by a team leader and consists of
development components. The product is built of software components and shares software components
with ABAP products. Which means, this is, let's say, a nested component model where you could assign
development objects, development components, software components, and products.

OK. I mentioned before that the development on the Java side is done locally. All sources you create on
your local PC are stored on your local file system. There could be a local J2EE engine for local testing
purposes, but if you have to develop an application which is, let's say, where more than one or two
developers are involved, then you have to think about how you, let's say, put that in a larger environment;
how to provide that in a bigger team development environment.

So we have to talk about the central infrastructure. For that, we introduce the design-time repository,
which is a versioning tool. So there you could check in and check out sources against that design-time
repository.

In addition, Java sources have to be built, and therefore we have the component bean service. The
component bean service allows you to build, in a larger context, your sources. So you are checking your
sources during the build process against other components from other developers.

In addition, we need a name server. We have to ensure that if you create package names, create table
names, that these are not used twice. So this is a check during your development if this table already
exists on the database or not. You will get an error if this table already exists. Its more or less the same

8
NW 202 - Platform for Developing ABAP and Java Applications
on the ABAP side. If you log onto the ABAP dictionary, I want to create a table and the table already
exists, I get an exception or an error which [says] the table already exists, and then I have to choose
another table, or maybe I have to investigate if I can use this table, for instance.

In addition, we are providing a system landscape directory. System landscape directory is available for
ABAP as well as for Java. And a system landscape directory contains all system software information
from SAP and the relationship between them. So it contains all information about all solutions from SAP
without the dedicated or the physical host names from your, let's say, customer system landscape. You
have to provide let's say, your physical host names, which is, let's say, the host name for the R/3, which is
the host name for CRM [sp], and so on. Through that, we know which are your central test system, you
know which are your queue system, which are your productive system. We know that, and that leads to
the change management service. The change management service is more or less checking of the
deployment of Java sources through the system landscape. So there we know how we could access, let's
say, the run-time J2EE systemsthe test system, the queue system, and so on. And there is the tracking
on top. And also, let's say, if you make an upgrade or you are applying support packages, also the
change management service knows which support packages have to be applied to which release. This is
the central Java infrastructure for Java development.

OK. I mentioned before that we have the SAP Net Weaver Developer Studio. I have this already running
here. So thats my SAP Net Weaver Developer Studio. The SAP Net Weaver Developer Studio is based
on the open source framework from Eclipse, so its based on Open Standards. It has preferable [sp] and
easy-to-use tools, and if you have a closer look at the picture, youll see there are two boxes. And lets
say depending on the beamer, or on the projector, in my case its more or less orangethere are Eclipse
plug-in framework which allows anybody else who is using Eclipse to create their own plug-ins. And
Eclipse comes with the Java development environment, and these development environments are called
basically perspectives. This perspective, the Java development perspective, comes with Eclipse. And
SAP provided additional perspectives like a J2EE perspective; a Web service perspective; a Web Dynpro
perspective; a DT Outline [sp] perspective; which allows you to check in and check out the Java sources;
and a Java dictionary perspective. The Java dictionary perspective is, you could say, a lightweight data,
or ABAP, dictionary. So you could create elementary titles, you could create structures and database
titles. So we are supporting database indexes, we are supporting table buffers. I guess youre already
familiar with what table buffer means on the ABAP side. So you could mark a table and the content of
the database table is stored in the memory of the application server. If this table is, let's say, accessed
once, then the content is stored in the memory of the application server. We are using the same
mechanism on the Java side, so you could, let's say, mark that with a Check Field, and then this is
available for the queue.

We have [unintelligible] name spaces. I already mentioned that we have a name server that we are
checking [to see] if this table already exists, and we are supporting data files. We are not supporting
foreign keys. We do not support the same data types as on the ABAP side. We do not have a domain
concept, and we do not have a transport of content. We have a transport, or deployment, of the table
definition, but not of the content. On the ABAP side, you could do both. You could assign that also the
table content is transported from a development system to a queue and a product subsystem. Maybe the
product subsystem is not the right way to put things in the product subsystem, but basically its possible.
The benefit of that is database independence. You could run the same databases as on the ABAP side.
We are supporting sequel [sp] chain, because thats based on Java dictionary, and were including the
Java dictionary in the Web Dynpro.

If youre using structures or type definitions in the Java dictionary, that allows us in Web Dynpro to use
that in the layout for field lengths while you have some stuff like that. And we are supporting open sequel
features the same as on the ABAP side.

OK. Open sequel for Java is a large-scale persistence framework. So what we did, more or less, we

9
NW 202 - Platform for Developing ABAP and Java Applications
picked up all the ideas from open sequel from ABAP and brought it to the Java side.

If you talk about Java persistence, there are two parts. There are relational persistence and object
relational persistence. The relational persistence is based on sequel chain and JDBC. Sequel chain is in
this case not a J2EE standard; its an ISO [sp] standard. And sequel chain allows, during design time, a
syntax check against the database. So we are able to check, did you make any typing error, by using a
field name or table name? This is basically not possible if you use plain JDBC. Plain JDBC, in this case,
you have to write your coding, you have to compile your coding, you have to deploy the coding, you have
to execute the coding, and after that, you get an error from the database because this is not a right or
proper table [unintelligible].

Object-oriented database relational persistence is based on Enterprise Java bean container managed
persistence, or JDO for Java development object. Independent of whether you are using relational
persistence or object relational persistence, we are supporting the open sequel engine, which supports
the table catalog, which is represented by the Java dictionary. We have a table buffer; I already
mentioned that.

And we have a statement cache. The statement caches are caching prepared statements. Any kind of
sequel statements going to a database must be prepared, and this could be executed by the database.
That takes a while. And if you do that again and again and again for the same statement, this could be . .
. or you could save, or increase, the performance if you cache these statements and reuse the
statements.

And we provide a sequel trace, which allows you to investigate your program if you have, let's say, some
problems and after ten minutes your program comes back and you do not know what is the first sequel
statement, the second, and so on.

The question is, and this will be demoed, after that a couple of slides, what is Web Dynpro? I guess you
already got today the overview about Web Dynpro. So its SAPs developer framework for creating
professional UIs for business applications that is true for ABAP as well as for Java. It includes
sophisticated run-time services. Minimize manual cording. You will see that I could write a complete
application, a small application, without any line of code. We have visual tools to design and reuses UI
components, and it develops a full control of generated code at all stages of the development process. At
any time of the development process, I could add coding, additional coding, for the Web Dynpro
application.

Web Dynpro is a professional environment because its based on a tool-based design. Were supporting
the model Q [sp] controller architecture. Its browser based. We are supporting zero footprint, so you do
not have to install anything on the client. We have screen updates without [unintelligible] loads. I guess
you know if youre clicking the Internet to a link, the page goes down, it takes a while, and the page
comes up. And this is more or less not user-friendly if you are doing, let's say, business, or using
business applications, and you are a professional user and dealing all day with the same application. You
want to have a stable user interface. And we are able to provide that with the Web Dynpro technology
because we are only changing part of an application or in layout, and so we only turn the part, or shift the
part, of content inside an application or a page, and that looks like a screen without [unintelligible] load.

OK, its [unintelligible], which means we could reuse components; very important to enable the reuse of
components. We have a clear separation of UI design and business logic; I will show that later. We are
supporting different backends, so we are able to retrieve data from ABAP, from Java, or from Web
services. And its device independent. I guess thats also important. This is a technology where you could
write an application which runs in a browser as well as on a PDA. You do not have, let's say, to change a
lot of things in the application. Maybe it depends on the device itself, on the size; you have maybe to
reassign the sizes of the screens. But basically you could use the whole application.

10
NW 202 - Platform for Developing ABAP and Java Applications

And its comprehensive, which means it allows user personalization. We have 548 accessibility. There
was this morning a question about 548 accessibility. That means that handicapped people could have
access to the software, and its very important in the US. You could not do any deal without that feature,
because in the public sectors, this is a required feature, and if this is not supported, then you do not have
any way to get the software to any public company. And we support multiple languages.

OK. So a couple of advantages are there. So we have a unified rendering, which means any Web Dynpro
application, independently of whether this is done in Web Dynpro ABAP or in Java, looks like the same.
So you do not have to set up anything, and the users do not really see if this is Web Dynpro-based on
ABAP or standard Dynpro based on JAVA.

We have accessibility standards, so with special screen readers. We could provide also keyboard
support; thats the 548 accessibility, and the flicker-free page reload is also available.

I mentioned before, I want to explain what the model view controller concept is. Its pretty easy to
understand. The model view controller concept consists of a model, a view, and a controller. OK. A view,
in this case, is the layout of an application. It consists of UI elements. You could arrange UI elements
together and you have a view which represents the user interface. We have controller, where you could
control the navigation between the views. In addition, there is user context information; this is stored as
data in the controller. And we have the model, which could be access to ABAP to Java or Web services.
This are the basic idea behind Web Dynpro.

OK. Web Dynpro Java could be developed in the SAP Net Weaver Developer Studio. Thats the Java
development run time where you could execute the Java Web Dynpro, and the Java Web Dynpro can be
accessed to the Java back end, to Web service provider, or to an ABAP back end. Web Dynpro ABAP
can be, or will be, available in the ABAP Workbench. You could write your Web Dynpro ABAP application
in the ABAP Workbench, and its executed in the ABAP Web Dynpro run time. Therefore, we are allowed
to access ABAP, back ends, Web services. We do not support Web services for that case. But any case
of Java back end, or any functionality, if this is a Java class or an enterprise Java bean, could be provided
as a Web service. And then, you could use the Web service also, which leads from the ABAP side and
Java Web service. And then you could access also the Java business functionality if this is required.

For existing screen painter dynpros, we allow to convert the layout of existing screen painter dynpros into
Web Dynpros. So there could be a reuse from the layout definition. OK, and all Web Dynpro applications
running out of the box in the [unintelligible].

Interactive forms. There are a couple of benefits. Interactive forms are based on Adobe software, and its
fully integrated in the Web Application Server. So its integrated in the Developer Studio as well as in the
ABAP workbench, and with the Adobe interactive forms we are able to reduce the total cost of ownership
on the customer side because its the standard approach for forms. Most of the people know how pdf
works and what it looks like. So theres one template for business forms, for instance. Excellent usability
and unique XML and pdf capabilities. Because an interactive form in that case consists of a layout of the
form as well as that the data that may be entered in such an interactive form is stored in an XML
document. So we have the separation of the content and the layout of the document, which allows us
later to retrieve from such an interactive form document, the data. So we are using the XML document,
and this could be used by an application.

There are three solutional scenarios available. Theres the online interactive form solution; theres an off-
line interactive form solution; and theres a process form solution. The online interactive form solution
works in that way: Youre creating an interactive form. The interactive form is a pdf document containing
not only text, also input fields. And you could enter in these input fields values. This is more or less, you
could say, your UI [unintelligible] based on pdf. There is, for instance, context-sensitive value help

11
NW 202 - Platform for Developing ABAP and Java Applications
available, and online checks. The context-sensitive value helps are an online value help. So any data
which you let say see that is directly, or could, come from a database. This is required. So you could say
this is a pdf-based UI.

The offline interactive form is more or less the same. So you could create from an online interactive form
an offline interactive form, exactly at a specific time. And for that specific time, you create static value
helps, you create static checking, and you could add simple arithmetic calculations, for instance. And now
you are able to send these off-line interactive forms by email, for instance, to a customer. The customer
could fill out that interactive form because he could enter data and send that back by email, and the
application is able to read the content of this interactive form and could, lets say, store it on a database. I
guess you already are, all of you, using Xware [sp], for instance, or more or less all. And I guess you
know the nightmare to update Xware sheets by getting some paper sheets and to have that in synch and
stuff like that. So with that interactive form solution, its pretty easy, because an application could read the
data from a work, lets say a document. This is a pdf document in that case. And you could pretty easily
use that, that the data is going from this interactive form or from the offline interactive forms directly into
an application. In addition, well process forms, which means any standard pdf document can be printed,
emailed, or archived or faxed to any kind of service. OK.

The question is now, how does really Java and ABAP work together? Therefore, I have a picture about
the application server again. Here we have the presentation layer, the business layer, and the persistence
layer. For the presentation layer, we have Web Dynpro for Java, and we will have in the next few days
Web Dynpro for ABAP available. We have in the business layer EJBs, enterprise Java beans, and we
have on the business layer for the ABAP side, function modules and BAPIs available.

Existing functionality like BAPIs or EJBs can be provided as a Web service, so there can be a Web
service consumer or a Web service provider getting access to a function module, a BAPI, or to an
enterprise Java bean. And the persistence layer is represented by the open sequel technology, which
allows us to access through the database.

One thing is very important. You see if you have a closer look on the database itself, there are two
schemasan ABAP schema as well as a Java schemathe ABAP schema containing the ABAP tables;
the Java schema containing the Java tables. There is no relation between them; they are completely
separate. And if you want to get an access from the Java side to the Java schema, you could use it in that
way that you are using Web Dynpro, calling an enterprise Java bean, and use open sequel to get an
access to the data in the Java scheme.

On the ABAP side, if you want to connect from the Java side the other world, then you have to use the
JCO connection, using enterprise Java beans, calling function what you [unintelligible] BAPI, and the
ABAP side is using ABAP open secret to retrieve the data from the ABAP side. In addition, you could also
use Web Dynpro, calling a function module or BAPI, using open sequel, and access the ABAP schema.

One thing is also important at that point. Web Dynpro on the Java side allows, by using the Java
connector, to get access to any kind of ABAP system. So if you, lets say, have an R/3 4.6-C system, you
could access, by using Web Application Server 6.40, using Web Dynpro, by using a BAPI browser, to get
access to your existing R/3 system. OK. Then, the right [sp] side, with the ABAP part, lets say is an
external system which is your R/3 system, and then this is a remote connection to that system.

In addition, we have also, in the next release, the option to use ABAP Web Dynpro, calling a function
module, and retrieve the data from the ABAP scheme.

OK. What we do not recommendand thats very importantwe do not recommend from SAP to get an
access from Java to the ABAP schema, and from ABAP to the Java schema. There are at minimum two
reasons for that. There are a lot more, but two I have to mention. First of all, is that the locking

12
NW 202 - Platform for Developing ABAP and Java Applications
mechanism is done in the application server and its not done in the database. So if you retrieve data from
Java, or using Java to retrieve data from the ABAP side, the Java side does not know which tables are
locked on the ABAP side, and vice-versa. And that means, if you do thatfor instance, from a technical
point of view it is possibleyou could, lets say, retrieve data which is not consistent, or maybe you make
an update which is not consistent because the tables are locked from the ABAP side. On the ABAP side,
if you make a select to a table on the ABAP side, and you are sure you only read tables, or maybe you
make an update in that case, there are all sorts of problems of the relation between the tables. You know
from the ABAP sideand I guess if you are familiar with F.I., for instance, there are F.I. documents which
is a big . . . thats a business object in SAP, and if you update or change an F.I. document, it accesses
maybe 50 tables. There are currencies, exchanges rates, languages, and stuff like that. And this is also
related to the customizing you did before in the system. So there are a lot of things you have to consider if
you retrieve data from one table because you do not know which are the related tables. So basically on
SAP side, we also recommend to use function modules and BAPIs if you do that from the ABAP side. If
you are coming from Java, you do not have any information, which may be the relation between them. So
there are two issues which lead to that, that we do not recommend to access from Java to ABAP and
vice-versa.

OK. Now I want to do a demo. I went to create a Web Dynpro application. And the Web Dynpro
application will now use the function module from the demo before, and therefore I use the existing Web
service, which allows me to access the function module. And I use that by creating a Web Dynpro
application using this Web service.

OK. So I go into the Developer Studio. As I mentioned before, there are a couple of perspectives, so you
could use maybe another one. I will open a perspective, maybe a dictionary perspective. This is not
required for the demo, but you see it. For instance, they could create a Dynpro project so you see the
database icon and that leads to the idea, I guess, that there could be a table created. And also there are
other perspectives available, like an JB [sp] perspective. But I do not want to develop a EJBs or create a
database table; I want to create in Web Dynpro, and that the icon for Web Dynpro. This is the Web
Dynpro Explorer, and theres already an existing Web Dynpro application in project. I create a new one,
and I have to say, File, New, Web Dynpro Project. This is, lets say, my container [where] I could
create a Web Dynpro application. I call them Catalog Demo.

OK, now Im creating a couple of parts of a Web Dynpro project. So there is, for instance, where some
entries created for application, model, and so on. And I have to create an application. Basically, in one
Web Dynpro project there can be more than one Dynpro application existing. So I have to create an
application, which is called Catalog. And I have to provide a package name, which is common. Dot SAP.
. . . (Thats OK.) Then I create a new component, and now I create a component. I create the source
folder where the files are stored. I use a Window name. This is, lets say, a Window that contains all the
queues of the application. And I create a default queue. The default queue will be empty later on because
its only initial queue in this case. Its the frame for a UI.

OK. Now, a lot of stuff is generated behind the scene. And you see, theres the component, and when I
make a double click on the component you see Im able to go to the diagram queue. And when I go into
the diagram queue, you see exactly what I mentioned before with the model queue controller concept.
Theres a queuethis is represented by this icon. This is the queue representing later on the layout.
Theres a component controller that contains the navigation and the context during a user session, and
there is right now no model available, but I will create a model. And this will appear here in this box.

To create a model, I have to say, Create Model. And I want to create a Web service model. I have to say
Next. Provide a model namethe model name will be Catalog model, and the model package is
common.SAP.model. And then choose Local file system, or UL, and then I could provide the location
of the Web service. Which was the location of the Web service? It was on the ABAP side. And basically, I
could start a page. This is the WSDL description containing the definition of the Web service and

13
NW 202 - Platform for Developing ABAP and Java Applications
providing the location of the Web service.

OK. The only thing I have to do is to copy that URL, go into the Developer Studio and provide that URL,
choose Next, and now a model is created for that specific Web service.

And now for the creation of the model. You do not care what is really behind that. So is that now a model
coming from Java, from ABAP, or maybe from a Web service? This is a model which is related to Web
service.

OK. The next thing I have to do, this model has to be accessed by the component controller, and for that,
the context has to be generated. And therefore, I could apply a template. This template is called Service
Controller Template, and it instantiates the context for that specific model. I could choose a model, which
are available. There is only one model availablethis onebecause I only added one. But there is the
option to add more than one model. I could say Next, and I could choose there Request or
Responsethis is the result from the function module, or maybe I could also provide information to the
Web service which is, lets say, the input parameter for the function module. So I will use for Interested it
the Response, because there are, lets say, the data, there are the five lines from the function module.
The result contains, later, the valuesrice, potato, wheat, and so on.

And, the template will generate a method. This method will later call the Web service. And this is the, lets
say, default value for the name, and Im not really good [at remembering] such a name, so lets say Get
Data. Its much easier. Or, Get Material Data, or something. OK, finish. And now, you see the
component controller is, or has, a connection to the model. Now the data flow this model between the
component controller and the model.

The next I have to do, I want to provide the data, which is now available in the component controller, to
the view. In that case, I choose Data Link, and I draw that line from the queue to the component
controller. And in that case, I have also to map these response and make a drag-and-drop to the context
of the queue. And when I release that, Im able to select which field I want to use in my view. I want to use
All. OK. And then you see it, the mapping between the controller and the view. So the data, which is in
the controller, will go and all data, all result data, are going into the view and are available there. You see
it as a connection, or lets say, binding, between the view and the controller.

OK. If I go backmake a double click on the viewyou will see the layout of the view. The view is empty
because I didnt maintain so far any layout information. But the data is in. So what I have to do right now
is to use the data and provide it to UI elements. For that, I go back, say Apply template, because the
data, which is coming from the function module, are in a table format. There are five lines, table. And then
select all the data I want to use. Lets say I do not use classification, for instance. Next, Finish. And
when I have a look at the view, then you see there is now a representation of the table now in a layout
available. This is the representation of the data.

OK. What I have to do, or to add, is another template which is called Action Button, because I have to
call the method Get Data to retrieve data from the Web service. Theres a button. I could rename that to,
lets say, Fill Table. Next. And I choose a method from my component controller, and this is called, Get
Data. Thats a proposal from the system because theres only one method available.

If I finish that, you will see in the layout there appears the button, which is called, Fill Table. OK. And
now Im able to deploy and run the archive. Which means, if I click on that button . . . (Oh, I had a
problem. OK, but a small one.) Basically, by using these wizards. . . . By using these wizards, there are
some coding generated and there must be some imports. So that was the problem I got here, and its
pretty easy to maintain. Basically, if I go to Catalog, Component Controller Added, there should be . . .
in the implementation there are some problems, and that could be resolved by using a functionality which
is called Organize Imports. There are a couple of import statements missed. Now they are maintained

14
NW 202 - Platform for Developing ABAP and Java Applications
on top, and the only thing, I have to save that; I forgot to do that at first. And then I could say, Deploy and
Run Archive, and now the application is deployed to the server and its executed.

And you see, this is, lets say, the UI. I didnt maintain, lets say, the header lines in the proper way, so
this is the default. And I could say, Fill Table, and the data is coming from the Web service.

OK. This is, lets say, a short explanation how does Web services with Web Dynpro work. But you see, it
was really independent, what was the location of the Web service. The only thing I had to use was the
WSDL description. If I have this URL containing the description of the WSDL, Im able to use that in Web
Dynpro.

That was the demo. Now I want to talk about how could we, lets say, integrate such a Web Dynpro
application in the portal. And how could, lets say, portal inventing work together between two Web
Dynpro applications? OK. Basically, the Enterprise Portal is role-based. There are a couple of different,
lets say, users who could accessthat could be a sales manager, a line manager, a business developer.
We insure and secure access to the portal. The portal is Web-based; I guess you already know that. And
we are allowed to use a single sign-on to different systems behind. So there could be ERP systems,
CRM, and other systems, or maybe you could access also IBIX [sp]. Their latest release is called SAP
Enterprise Portal 6.0. Thats part of SAP Net Weaver.

OK. The portal works with a couple of elements together, which means we have to discuss what is a role,
what is a role set, which is a page, and what is a I view. Basically, an I view is the smallest part in a portal.
It contains a small application. It represents an application, and a page could consist of an I view. That
means, at minimum, if you have a page, there must be an I view. But on one page, there could be also
more than one I view. And you could bundle pages together in a work set, and you could assign a work
set to a role. A role is also assigned to a user. So a user could have different roles; a role consists of work
sets; a work set consists of several pages; and a page consists of I views. Thats the idea behind it. We
need that explanation because this is later required, or will be shown, in the demo.

OK. The question was, what is an I view? I already clearly explained it. This is a small application that
displayed information. So it could be in any formatit could be text, video scraps, reports, tables, text,
and so on. Now you can be interactive; allows you to perform business functionality and I view can
display information from any data source. So its not related to SAP applications or any kind of application
when it could run in an I view. In our case, we are using Web Dynpro as, lets say, an application running
in an I view.

OK. I guess you got also the information about the tools which are available to create content for the
portal, and there are a couple of portal content design tools. I want to briefly discuss the positioning that
you, lets say, know when you have to use which tool. So basically, we are providing content with the
Enterprise Portal, and there is the contents studio, so you could, lets say, arrange pre-defined content it
the portal. And therefore, you could use the SAP Portal context studio.

We are providing the SAP Net Weaver visual composer that was last year on the keynote if you could
remember, or if you were there, a big demo about the visual composer. And with the visual composer you
could, lets say, compose on, lets say, BAPI and function modules the user interface. This is, lets say, for
business users who do not really know what are, lets say, what are behind the BAPI or function module.
So you could arrange such interactive views.

You saw the SAP Net Weaver Developer Studiothey are where the Web Dynpro perspective, where
you could develop an application. So this is more for business application developers. And you have to
know, all applications basically on the ABAP side are stateful applications. All sessions running in a SAP
GUI are stateful sessions. If you compare that, lets say, with a browser application, maybe with Emerson,
all the applications are basically stateless. The reason for that is the memory consumption for stateless

15
NW 202 - Platform for Developing ABAP and Java Applications
applications is much smaller as for stateful, because no user context is called. So if you go back in
Emerson, for instance, you lost the data you entered before, because there is no user context.

What does it mean? It means that any Web Dynpro application is also stateful. And in some cases, it
makes sense to have a stateless application. And in those cases, we recommend to use, lets say, the
Java perspective or the portal development kit to create Java server pages or any, let's say, low-level
stateless technology to create stateless applications. If you want to create, let's say, a portal where you
know 100,000 users will enter this portal every day, then it makes . . . they only, lets say, go through and
went away after that only to pick up some information. But this information must be provided dynamically.
Then it makes no sense, lets say, to create a stateful application, because then the memory consumption
of your system will increase dramatically. So you have to keep them very small. And in that case, you
have to create stateless applications where no user context is held on the application server. And
therefore, there are these, let's say, low-level Java application technologies.

To integrateand we want to focus on the Developer Studioto integrate a Web Dynpro application into
the Enterprise Portal, there is a wizard available. I will show that later. And we have the unified rendering
and unified printing [sp]. Thats very interesting. So you saw, for instance, these applications. So they are
where color [is] available, they are where the font, they are the background color available. Did I maintain
the background color? No, what? It comes, let's say, out of the box. Because behind the Web Dynpro
application, there is a style sheet which describes what are the colors, what are the font sizes, and so on.
How a button should like, what is the color of the button, and so on. This style sheet is more or less the
same as in the portal. And if you, as a customer, change the style sheet, any kind of Web Dynpro
application directly fits to the new corporate style sheet of your company. So you do not have to change
or touch the applications anymore. Its very important.

And theres also the option to use different styles sheets in the portal. So let's say you have different
business units, and you say, This is business unit 1, and they want to use style sheet 1, and you have
business unit 2, and they are using style sheet 2thats all possible. And this is the big advantage using
Web Dynpro because this is directly possible, that these Web Dynpro applications get directly the
branding of your application, of your company.

We are providing quality eventing [sp]. I will show that later in a demo. Between different Web Dynpro
applications, there is a relation between, I would say, we are able to loosely couple applications together.
So they are not really tightly connected. Its loosely coupled by using the portal eventing.

We have a work protect mode, which means if you, let's say, go back and forth, we are saving the data
you entered so far and so you could work with a back-and-forth button so that you do not lose the data
you entered.

OK. So the portal eventing, I want to explain, is pretty easy to do. So we have a client side for portal
eventing available. And that this will work a receiver who wants to receive the data from the portal
eventing has to be subscribed to the portal eventing. Portal eventing is the name-and-value couple. So if
the name-value couple is there, you provide that. You could retrieve or subscribe for a specific name
space, and then you retrieve that specific value from the portal eventing. So if the receiver is already
subscribed, and the sender fires an event, the data is pushed to that portal eventing and the receiver is
able to get the data without any direct connection between the two applications. The only thing you have
to do is, that you, as a receiver, have to, let's say, subscribe for an event, and the sender has to fire an
event; the only thing you have to do. And both applications do not know anything from each other.

OK. That leads me to the least demo for today. So basically, I mentioned before, I want to use an existing
application and the existing application is (I could use an existing browser, so thats fine) theres a link to
the Enterprise Portal. I have to log on. This is . . . [speaks under breath] This is a portal. In this portal,
there is an application which is called Online Shop. When I click on that online shop, you see there is a

16
NW 202 - Platform for Developing ABAP and Java Applications
shopping basket. The shopping baskets are allowed to collect items. The only thing which I didnt get
implemented so far is, let's say, the catalog. So let's say Select a Line and fill the shopping basket.

OK. What I want to do, I want to add to that page an additional I view containing this application. This
application provides content for that shopping basket. So what I have to doand this shopping basket
already is subscribed for portal eventing. So the shopping basket waits for an event, for portal eventing. I
have to enhance the application, that this application fires an event. OK. For thatits not too
complicatedwe have also a template available. In that case, we have to go to the view. Say, Apply
template, and I have to apply a template which is called Enterprise Portal Eventing. Next.

And I want to fire an event. Ill put Subscribe. Then I want to retrieve data, but I want to fire, because I
want to fire exactly the line I selected by clicking on a button, let's say, Add to Basket. And for that, I
have to use a name space and a name. This is exactly the name space and the name which has to be
the same as the subscriber was who is using. So they must fit together. In that case, I have to write,
comment.sap.onlineshop. And the name of the event is Product ID.

OK. And I have to select from my result the value I want to provide. The value I want to provide is the ID
of the product. And I have to create a new action. And the action is called Add to Basket. OK. Now,
theres an action which is called Add to Basket. And this action has to be called to fire the event to make
the portal eventing available.

OK. Now go to the view, and now portal eventing is basically available as an action. But I need something
to trigger this action. And what I have to do, I have to add an additional button, which is called Add to
Basket. And the action I want to fire is, as a default action, I could use the A and then Add to Basket, but
I want to use that action I created before. And then this button will fire the action and the action itself will
create the portal eventing, or fire the portal eventing.

Now, if you have a closer look to the view, you see theres a button Add to Basket. Now I could, let's
say, deploy and run the archive. And lets try. OK, now you see, I could fill the table. Select an item, and
could say, Add to Basket. I click on Add to Basket and nothing is happening. Why? Did I miss
something? What? Not subscribed? Good guess, but. . . . The portal is missing. This application does
not run in the portal, and without portal, there is no portal eventing. What I have to do now is to bring that
local application, which is running in the browser so far, into the portal. So I have to register that Web
Dynpro application as an I view in the Web Dynpro.

OK. So I go into the portal, go to Content Administration, and we already prepared some well or entries
there. So the only thing I have to do is, I say, Portal Content. There is . . . check it. Theres Java 105;
thats the demo in that case. And I have to say, New I View. And then a wizard starts where I could
enter this I view to that portal. OK. There are a couple of I views types available. I choose Web Dynpro I
view. And remember, I mentioned before, we are supporting both ABAP as well as Java. So after
selecting Web Dynpro, you have to decide, is that the Java Web Dynpro or an ABAP Web Dynpro? The I
view name, lets say its Catalog . . . no, Product Catalog, and the I view ID is, let's say, Product Log.
And the I view prefix should be Java 251, for instance. Next.

And then you could select, is this now an ABAP Web Dynpro or Java Web Dynpro? Its Java. Next. And
then you have to select a server thats some application parameter. This is the server, which already
maintained before in the system.

And then, now the more or less most important part starts. Now I have to, lets say, use a Web Dynpro
name space and an application name. If you go to the catalog back, this URL is exactly the name you
have to provide for the portal. So in that case, thats . . . I make a copy-and-paste of that. OK. Thats the
portal. So the Catalog is the name of the application. And before, thats the name space for Web
Dynpro. Its Catalog Demo, and Catalog is the application name. We could provide it some application

17
NW 202 - Platform for Developing ABAP and Java Applications
parameters. And so you could finish that stuff.

OK. Now, I could also go to the page layout. (Sorry; go to the page. [Unintelligible]) And you see the
structure? Thats the online shop. Thats shop and the content, and I want to maintain the shop itself, so I
go here and say, At delta link. (Sorry.) Open at to delta link. Theres the shopping basket. This is the first
application in. Empty page. Delta link. OK, I guess I made a mistake; sorry. Delete. [Speaks under
breath.] Thats strange. [long pause] Things are some. . . . Product Catalog; I created that, so. . . . [under
breath] OK, I was lost.

So basically, I added to the shopping basket to the page, which was the first I view. I added the product
catalog. I changed the page content to the page layout, and now you see there is (takes a second) the
layout of the . . . and theres the shopping basket on top, and the product catalog. And what I want to do
is put them up. But at the beginning theres the product catalog and then the shopping basket.

OK. And in that case, I could save that, go to Purchase (oops, try again; no application is specified.) I
guess I made a mistake during the. . . . In the case that we do not run out of time, I had a fallback.

Basically, its this one. In case I had some problems with the system, but I could use that also to show
you, how does it work? OK. Something is changed. Possibly the performance on the system, but. . . . OK.
But if it worked in the proper way, there would be, at the end, two applications in the portal. There was
something during the registration, but basically there would be the product catalog on top and there would
be the shopping basket. If you select one line here, and you click on Add to Basket, the data you
entered here will go into the shopping basket, and that integration is done by the portal eventing. So its
only by using publishing subscribe. There was now a problem by registration base I view, in the portal,
but I have to investigate it. But there are additional sessions at the end, we do not want to run out of time.

OK, summary. So, the SAP Web Application Server provides a foundation platform for SAP Netware and
our components and my SAP Business Week for all its important customer application development and
third party applications, and its more or less the technical enabler for the Enterprise Service architecture.
You saw that I was able to create from any other functional module Web service. And this is also possible
on the Java side. From any existing Java class, or enterprise Java bean, I could create the function Web
service, and this is, lets say, is required to use Enterprise Service architecture for all our applications.
New functionalities can be explored and are featured with the Web Application Server. So there we had,
on the Java side, Web Dynpro. We had a couple of enhancement of the ABAP side. So theres XML
mapping, which are improved. We have shared memory access, and stuff like that. We have a couple of
application scenarios which are using the combination between ABAP and Java. So we are able, let's
say, to use the ABAP side for business functionality and to create user interface on the Java side.

And, how to integrate Web Dynpro into SAP portal? You could use the Plank [sp] or portal eventing, you
could use user-managed engine, which means theres a unified user management engine behind that you
could use for the sameas well as for ABAP and Javathe same users with portal themes, which allows
you to use different style sheets for different, let's say, business units. And building of demo that
consisted that means, ABAP business logic exposed as a Web service, we are creating the
presentation we are using, the model-driven approach from Web Dynpro. We are able to reuse existing
components. Web Dynpro is exactly created in that way that existing applications, existing I views, can be
reused and we are able to run . . . yeah, there was a problem with the integration of Enterprise Portal, but
basically you could integrate any kind of Web Dynpro application on the portal.

OK. Thank you, and I guess we have time for questions if there are questions about. . . . Yes, please?

Question:
[Inaudible]

18
NW 202 - Platform for Developing ABAP and Java Applications
Ulrich Klingels:
OK. The question was, are there standard Web services created? Basically not, so its as far as I know
basically from a technical point of view not, but it depends, really, on the application if there are Web
services provided. But it takes not really a long time to create a Web service. OK, another question?

Question:
[Inaudible]

Ulrich Klingels:
The question was, could Web Dynpro application be run in another portal as an I view, if I got your
question the right way? OK. Basically, it depends on the portal. So, the SAP portal can use any kind of
application in an I view, and I do not know the concepts of other portals. So in that case, if the other, let's
say, portal allows you to access a Web Dynpro application, and behind the Web Dynpro application, you
have to remember, theres only, let's say, a URL. If you use that URL, and this could be used in other
portals, then I guess this is possible, then you could run such an application also in a portal. But the portal
eventing only works inside the basic key portal. We simply support the technology inside of SAP
applications. OK. Any other questions? OK. No? OK, thank you.

[Applause]

19

You might also like