Technology Blogs by SAP
Learn how to extend and personalize SAP applications. Follow the SAP technology blog for insights into SAP BTP, ABAP, SAP Analytics Cloud, SAP HANA, and more.
cancel
Showing results for 
Search instead for 
Did you mean: 
former_member197988
Discoverer

InnoJam as pre-event of the TechEd means that you start on Sunday morning to design within a 6 hour design thinking session a solution fitting to the motto Better Cities – Better Lifes and then have another 24 hours to develop this and prepare a presentation that convinces the jury that you have to be the winner. Because this gives you a place to present at the TechEd DemoJam the next day.

Wim Snoep has written a great blog from the team’s point of view:

Winning the InnoJam & becoming 3rd in DemoJam. Team Park-IT.

In this Blog I would like to give you some more insights on what was required to get this story up and running and the objects that were finally built.

We had there two different types of users working with the system:

  • Larry, the consumer in his car with his Windows 8 tablet looking for a cheap place to park
  • Greg, the mayor in the city hall who wants to have on his iPad KPI’s, Dashboards and a view on his financial situation and satisfaction of the customers

So, 24 hours and even less is not much to build such a complete scenario as the team wanted to have and not only a little UI prototype since you need also quite some time to create and prepare the presentation and probably you want to have one or the other hour of sleep in the night.

The decision to take Business ByDesign and its SDK, the Business ByDesign Studio helped here to jump start and get the required objects quickly set up.

As Wim stated: „We decided for a backend which was easy to create, and easy to open up, since we had limited development capacity in the team. Chosen was for Business ByDesign.”

But at the end it was much more than only the backend:

Object List of the Business ByDesign Studio Solution

Two associated Business Objects, one for master data and the other one for transactional data

Three lines of business logic coding

A complete set of UI with Object Work Lists, Detail screens and navigation between them and also the Object Value Selector to pick a parking place from a list.

Queries

Data Sources and reports

WebServices for the communication with the Windows 8 tablet

Data Migration (File Upload) to get the 2000 booking records into the system

Business Objects

Parkingplace

The parking places are stored in this master data object with address, cost, location and number of spaces:

import AP.Common.GDT as apCommonGDT;

businessobject Parkingplace {

        // Parking Place Master Data

        //

        [AlternativeKey] element ID       : ID;

        element Nr_Of_Spaces              : IntegerValue;

        element Address                   : Text;

        element Cost                      : FloatValue;

        element Validation                : Indicator;

        element Nr_Of_Spaces_Open         : IntegerValue;

        element Longitude                 : Text;

        element Latitude                  : Text;

            

}

Parkingrecord

The booking records are stored in a 2nd Business Object with an association to the Parkingplace object including the satisfaction rating:

import AP.Common.GDT as apCommonGDT;

businessobject Parkingrecord {

        // Booking Record

        //

        [AlternativeKey] element ID       : ID;

        element Satisfaction              : IntegerValue;

        element Reservation               : Indicator;

        element PaymentAmount             : FloatValue;

        element DateOfParking             : Date;

        element TimeIn                    : Time;

        element TimeOut                   : Time;

        element ExpectedStay              : FloatValue;

        element Validated                 : Indicator;

        element ParkingplaceID            : ID;

        association Parkingplace to Parkingplace;

}

UI’s

Parkingplace

A complete UI scenario with navigation was created with the UI Wizard:

To be used with an iPad, the UI’s must be tagged in the UI Designer with Tablet:

The same was done for the second object Parkingrecord.

The resulting UI on the iPad rendered with the iPad Player downloadable from the Apple App Store:

Analytics

In a first step a datasource must be created for the business object. The wizard in ByDesign Studio lets you select the business object, the required fields including fields from associated objects

Then the reports are defined and the result on the iPad looks like this:

WebServices

As consumer device a Windows 8 tablet was used. To have a complete free design, the app was built with native programming in C#. To communicate with the business objects, meaning to query or to create or update data, WebServices have been created. Also here the ByDesign Studio provides a wizard to select the required fields and define the service operation like query or create:

 

The WSDL file from these services is then used in the C# project for the consumer tablet UI:

In the C# project an access to e.g. the query looks like:

namespace Win8AppTeamp.Model

{

    public class ParkitServiceInvoker

  {

        public async Task<List<Location>> GetLocations()

     {

            var bind = new HttpsTransportBindingElement();

            bind.AuthenticationScheme = System.Net.AuthenticationSchemes.Basic;

            CustomBinding custBinding = new CustomBinding(bind);

            EndpointAddress managedServiceOrderInEndpoint = new EndpointAddress("https://my300178.vlab.sapbydesign.com/sap/bc/srt/scs/sap/yy6y5yvvey_manageparkingplace?sap-vhost=my3...");

            var client = new ParkitService.Y6Y5YVVEY_ManageParkingplaceClient(custBinding, managedServiceOrderInEndpoint);

            client.ClientCredentials.UserName.UserName = ;

            client.ClientCredentials.UserName.Password = …;

            var res = await client.QueryByElementsAsync(new ParkitService.ParkingplaceQueryByElementsSimpleByRequestMessage_sync());

            return res.ParkingplaceQueryByElementsSimpleByConfirmation_sync.Parkingplace.Select(x => new Location(double.Parse(x.Latitude.Value), double.Parse(x.Longitude.Value))).ToList();

           

         }

   }

}

Data Upload

To have an at leastbit realistic data basis for the reporting, the parking record business object was filled with ~2000 records, which were too much to enter them manually. So we created with the ByDesign Studio a file upload interface, our standard data migration way for own objects.

The wizard guides you through all steps like selection of the required fields:

To sumarize this at the end, a lot of different content was created using Business ByDesign Studio, mainly built using the wizards, not much coding was required. This helps the great Park-IT team to build the complete end-to-end story in the given timeframe.

6 Comments