Quantcast
Channel: Jive Syndication Feed
Viewing all 3611 articles
Browse latest View live

Creating a Fiori OVP Application with CDS view annotations - Part 2

$
0
0

In this blog we will add some OVP Cards to the application we created in the previous blog.  If you haven't already done so, please review part 1 of the blog series which can be found at

 

Creating a Fiori OVP Application with CDS view annotations - Part 1

 


ADDING CARDS TO THE OVP APPLICATION


TABLE CARD

 

For the first card we will define the properties necessary to display a Table card.  This card presents three fields in a table with the first two columns showing the first two DataFields and the third column shows either the first existing DataPoint or the third DataField.  The annotation @UI.lineItem is used to define DataFields.  Within this annotation we can specify the position to be shown, a qualifier which allows us to identify an associated set of values, and a label.  With this knowledge lets start with a basic example by specifying lineItems for the sales_order_id, customer.company_name and the net_amount.  Notice how the position defers from the order of the fields.  We will use the qualifier in the OVP application when we define the associated card.  Save and activate the changes.

 

@AbapCatalog.sqlViewName: 'zovpdemo'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'OVP Demo App'
@OData.publish: true
define view Z_Ovp_Demo as select from sepm_cds_sales_order as so {
key so.sales_order_key,
 @UI.selectionField: [ { position: 10 } ]
 @UI.lineItem: { position: 10, qualifier:'ordOverView', label: 'Sales Order'  }
so.sales_order_id,
so.created_by,
so.created_at,
so.changed_by,
so.changed_at,
so.note_guid,
so.currency_code,
so.gross_amount,
 @UI.lineItem:  { position: 30, qualifier:'ordOverView', label: 'Net Amount'}
so.net_amount,
so.tax_amount,
so.lifecycle_status,
so.billing_status,
so.delivery_status,
so.buyer_guid,
 /* Associations */
so.customer,
so.items,
 @UI.selectionField: [ { position: 20 } ]
 @UI.lineItem:  { position: 20, qualifier:'ordOverView', label: 'Customer' }
so.customer.company_name
}

 

Now in Web IDE right click on the project and select New -> Card.  Choose the datasource as shown and press Next.

 

Screen Shot 2016-06-16 at 10.27.16 AM.png

Choose the Table Card and then press Next.

 

To define the card view provide the values as shown, making sure to include the qualifier ordOverView that we defined in the CDS view in the annotation path.

 

com.sap.vocabularies.UI.v1.LineItem#ordOverView

 

Press Next and Finish to complete the process.

 

Screen Shot 2016-06-16 at 3.08.37 PM.png

 

Selecting the Component.js file and choosing Run should result.

 

Screen Shot 2016-06-16 at 3.13.38 PM.png

 

Take note that using the smart filter can be used to filter out the displayed results.

 


TARGET VALUES

 

Taking this a step further, we can also use the @UI.lineItem to specify a DataPoint.  Notice in the example below the @UI.lineItem defined for net_amount specifies a type of #AS_DATAPOINT.  In addition to this we have now defined the annotation @UI.dataPoint on the net_amount field.  Using the targetValue as well as the criticalityCalculation we can now color code the values shown in the table as they fit in the defined ranges.

 

@AbapCatalog.sqlViewName: 'zovpdemo'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'OVP Demo App'
@OData.publish: true
define view Z_Ovp_Demo as select from sepm_cds_sales_order as so {
key so.sales_order_key,
 @UI.selectionField: [ { position: 10 } ]
 @Consumption.semanticObject: 'Action'
 @UI.lineItem: { position: 10, qualifier:'ordOverView', label: 'Sales Order'}
so.sales_order_id,
so.created_by,
so.created_at,
so.changed_by,
so.changed_at,
so.note_guid,
so.currency_code,
so.gross_amount,
 @UI.dataPoint: {title: 'Net Amt',      criticalityCalculation: {    improvementDirection: #TARGET,    deviationRangeLowValue: 100,    toleranceRangeLowValue: 400,    toleranceRangeHighValue: 800,    deviationRangeHighValue: 1200    }}
 @UI.lineItem:  { position: 30, qualifier:'ordOverView', label: 'Net Amount', type: #AS_DATAPOINT}
so.net_amount,
so.tax_amount,
so.lifecycle_status,
so.billing_status,
so.delivery_status,
so.buyer_guid,
 /* Associations */
so.customer,
so.items,
@UI.selectionField: [ { position: 20 } ]@UI.lineItem:  { position: 20, qualifier:'ordOverView', label: 'Customer' }
so.customer.company_name
}

 

After saving and activating the changes to the CDS view, refreshing the OVP Application should now show the card as

 

Screen Shot 2016-06-16 at 3.10.05 PM.png

 

First notice how the net amount label is now being taken from the label defined in the data point.  Also, each value shows with a color indicating how it fits in our range.  TECUM's Net Amt shows in orange which is the range between deviationRangeLowValue and toleranceRangeLowValue.

 


NAVIGATION

 

Now at this we may want to navigate to another app.  In addition to navigating to other sites we can also used intent based navigation which relies on semantic objects and actions.  Web IDE provides a launchpad sandbox which has a few apps that we can call using this approach, so lets navigate to one of these from the card.  The annotation @UI.lineItem supports an array of objects assignment in which we can define multiple assignment for the same field.  For this reason lets just add it to the sales_order_id annotations.  For this to work we will need to assign the type of #FOR_INTENT_BASED_NAVIGATION and also a semanticObjectAction which we can assign to toappnavsample to call the sample app.  In addition it is also required to define the Semantic Object using the annotation @Consumption.semanticObject which we will assign Action.

 

With these changes our view will now look like

 

@AbapCatalog.sqlViewName: 'zovpdemo'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'OVP Demo App'
@OData.publish: true
define view Z_Ovp_Demo as select from sepm_cds_sales_order as so {
key so.sales_order_key,
 @UI.selectionField: [ { position: 10 } ]
 @Consumption.semanticObject: 'Action'
 @UI.lineItem:  [{ label: 'salesOrd', qualifier:'ordOverView',type: #FOR_INTENT_BASED_NAVIGATION, semanticObjectAction: 'toappnavsample'},    { position: 10, qualifier:'ordOverView', label: 'Sales Order'}]
so.sales_order_id,
so.created_by,
so.created_at,
so.changed_by,
so.changed_at,
so.note_guid,
so.currency_code,
so.gross_amount,
 @UI.dataPoint: {title: 'Net Amt',      criticalityCalculation: {    improvementDirection: #TARGET,    deviationRangeLowValue: 100,    toleranceRangeLowValue: 400,    toleranceRangeHighValue: 800,    deviationRangeHighValue: 1200    }}
 @UI.lineItem:  { position: 30, qualifier:'ordOverView', label: 'Net Amount', type: #AS_DATAPOINT}
so.net_amount,
so.tax_amount,
so.lifecycle_status,
so.billing_status,
so.delivery_status,
so.buyer_guid,
 /* Associations */
so.customer,
so.items,
@UI.selectionField: [ { position: 20 } ]
@UI.lineItem:  { position: 20, qualifier:'ordOverView', label: 'Customer' }
so.customer.company_name
}

 

Save and activate the CDS view changes and then refresh the OVP application.  Choosing one of the items in the table should now navigate you to the sample app.  In my case I selected the entry for Telecomunicaciones Star which you can see in the passed parameters list as well as all of the other values.

 

Screen Shot 2016-06-16 at 2.56.18 PM.png

 


ADDING A LIST CARD


Normally for each card you add, you would define additional annotations in your CDS view and assign them a unique qualifier.  For the sake of simplicity, lets just reuse what we have already defined and define a List Card as shown


Screen Shot 2016-06-16 at 3.15.40 PM.png

 

and this will yield

 

Screen Shot 2016-06-16 at 3.17.49 PM.png

 

 

or it we choose the List Flavor Bar, which can be adjusted in the manifest.json which is part of the Web IDE project located under the webapp.

 

"card01": {  "model": "Z_OVP_DEMO_CDS",  "template": "sap.ovp.cards.list",  "settings": {  "title": "{{card01_title}}",  "category": "{{card01_category}}",  "subTitle": "{{card01_subTitle}}",  "entitySet": "Z_Ovp_Demo",  "listType": "condensed",  "listFlavor": "bar",  "sortBy": "changed_at",  "sortOrder": "descending",  "annotationPath": "com.sap.vocabularies.UI.v1.LineItem#ordOverView"  }

 

it would result in

Screen Shot 2016-06-16 at 3.20.33 PM.png

 

 

In the list flavor bar we are now only seeing two fields.  This view is expecting just one data field and two data points, so if we add another data point and set a value format each field as shown

 

 

@AbapCatalog.sqlViewName: 'zovpdemo'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'OVP Demo App'
@OData.publish: true
define view Z_Ovp_Demo as select from sepm_cds_sales_order as so {
key so.sales_order_key,
 @UI.selectionField: [ { position: 10 } ]
 @Consumption.semanticObject: 'Action'
 @UI.lineItem:  [{ label: 'salesOrd', qualifier:'ordOverView',type: #FOR_INTENT_BASED_NAVIGATION, semanticObjectAction: 'toappnavsample'},    { position: 10, qualifier:'ordOverView', label: 'Sales Order'}]
so.sales_order_id,
so.created_by,
so.created_at,
so.changed_by,
so.changed_at,
so.note_guid,
so.currency_code,
so.gross_amount,
 @UI.dataPoint: {title: 'Net Amt',      criticalityCalculation: {    improvementDirection: #TARGET,    deviationRangeLowValue: 100,    toleranceRangeLowValue: 400,    toleranceRangeHighValue: 800,    deviationRangeHighValue: 1200    },    valueFormat:{        numberOfFractionalDigits: 1    }}
@UI.lineItem:  { position: 30, qualifier:'ordOverView', label: 'Net Amount', type: #AS_DATAPOINT}
so.net_amount,
 @UI.dataPoint: {title: 'Tax Amt', valueFormat:{    numberOfFractionalDigits: 1
}}
 @UI.lineItem:  { position: 40, qualifier:'ordOverView', label: 'Tax Amount', type: #AS_DATAPOINT}
so.tax_amount,
so.lifecycle_status,
so.billing_status,
so.delivery_status,
so.buyer_guid,
 /* Associations */
so.customer,
so.items,
@UI.selectionField: [ { position: 20 } ]
@UI.lineItem:  { position: 20, qualifier:'ordOverView', label: 'Customer' }
so.customer.company_name
}

 

 

After adjusting the card01_title in the i18n properties to Net/Tax Sales Orders, this will yield

 

Screen Shot 2016-06-16 at 3.43.04 PM.png

 

 

Now if we wanted more fields we could change the List View to show in the list type extended which again we can just change in the manifest.json.

 

"card01": {  "model": "Z_OVP_DEMO_CDS",  "template": "sap.ovp.cards.list",  "settings": {  "title": "{{card01_title}}",  "category": "{{card01_category}}",  "subTitle": "{{card01_subTitle}}",  "entitySet": "Z_Ovp_Demo",  "listType": "extended",  "listFlavor": "bar",  "sortBy": "changed_at",  "sortOrder": "descending",  "annotationPath": "com.sap.vocabularies.UI.v1.LineItem#ordOverView"  }  }

 

 

The extended list card presents five fields, on the top left side it shows the first two data fields and on the bottom it present the first data point value in a bar and the second and third data point on the right side of the card if they exist.  To max out the fields shown we can add one additional field in our cds view.  This time we will add the lifecycle status field.  Modify your cds view as shown below and save and activate your changes.

 

@AbapCatalog.sqlViewName: 'zovpdemo'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'OVP Demo App'
@OData.publish: true
define view Z_Ovp_Demo as select from sepm_cds_sales_order as so {
key so.sales_order_key,
 @UI.selectionField: [ { position: 10 } ]
 @Consumption.semanticObject: 'Action'
 @UI.lineItem:  [{ label: 'salesOrd', qualifier:'ordOverView',type: #FOR_INTENT_BASED_NAVIGATION, semanticObjectAction: 'toappnavsample'},    { position: 10, qualifier:'ordOverView', label: 'Sales Order'}]
so.sales_order_id,
so.created_by,
so.created_at,
so.changed_by,
so.changed_at,
so.note_guid,
so.currency_code,
so.gross_amount,
 @UI.dataPoint: {title: 'Net Amt',      criticalityCalculation: {    improvementDirection: #TARGET,    deviationRangeLowValue: 100,    toleranceRangeLowValue: 400,    toleranceRangeHighValue: 800,    deviationRangeHighValue: 1200    },    valueFormat:{        numberOfFractionalDigits: 1    }}
@UI.lineItem:  { position: 30, qualifier:'ordOverView', label: 'Net Amount', type: #AS_DATAPOINT}
so.net_amount,
 @UI.dataPoint: {title: 'Tax Amt', valueFormat:{    numberOfFractionalDigits: 1
}}
 @UI.lineItem:  { position: 40, qualifier:'ordOverView', label: 'Tax Amount', type: #AS_DATAPOINT}
so.tax_amount,  @UI.dataPoint: {title: 'Lifecycle'}  
 @UI.lineItem:  { position: 50, qualifier:'ordOverView', label: 'Lifecycle', type: #AS_DATAPOINT}
so.lifecycle_status,
so.billing_status,
so.delivery_status,
so.buyer_guid,
 /* Associations */
so.customer,
so.items,
@UI.selectionField: [ { position: 20 } ]
@UI.lineItem:  { position: 20, qualifier:'ordOverView', label: 'Customer' }
so.customer.company_name
}

 

After refreshing the OVP application your should now see the additional fields showing.

 

Screen Shot 2016-06-16 at 3.59.05 PM.png

 

In the next blog we will explore the use of the Stack Card and a Chart Card.

 

Creating a Fiori OVP Application with CDS view annotations - Part 3


Creating a Fiori OVP Application with CDS view annotations - Part 3

$
0
0

In this blog we will add some additional OVP Cards to the application we created in the previous two blogs.  If you haven't already done so, please review the first two blogs of the series, which can be found at

 

Creating a Fiori OVP Application with CDS view annotations - Part 1

 

Creating a Fiori OVP Application with CDS view annotations - Part 2

 



ADDING A STACK CARD TO THE OVP APPLICATION

 

The stack card relies on the annotations defined by @UI.headerInfo, @UI.identification and @UI.fieldGroup. Using the headerInfo annotation allows us to define  a typeName which will be shown as the card header, as well as a title and header.  In addition you can also utilize the annotation @UI.headerInfo.imageUrl to display an image next to the title and description.  For the image, I will just hard card a value there, field mytestImg, due to the view not having a image field at this level.

 

These assignments will be as follows

 

@UI.headerInfo: {  typeNamePlural: 'Sales Orders',
imageUrl: 'mytestImg',  typeName: 'Sales Order',  title: {    label: 'Order ID',    value: 'sales_order_id'  },  description: {    label: 'Customer',    value: 'company_name'  }
}
define view Z_Ovp_Demo as select from sepm_cds_sales_order as so {
....
 '/resources/sap/ui/core/mimes/logo/sap_50x26.png' as mytestImg,

 

 

The stack card has two clickable areas.  The left side of the card, the white can be used to navigate to another app using semantic navigation.  Clicking the right side will open up the card view.  To assign the left side of the card's navigation point we will utilize the @UI.identification annotation as follows.  This will also display within each card with the position identifying the layout.

 

@UI.identification: {type: #FOR_INTENT_BASED_NAVIGATION, semanticObjectAction: 'toappnavsample2', label: 'Nav Sample', position: '10'}

 

We can also add another button in each card using the same annotation.  For this we can utilize the web_address field as the navigation path.

 


@UI.identification: {type: #WITH_URL, label: 'Customer Site', url: 'web_address', position: '20'}
so.customer.web_address

 

Finally, we can define a fieldGroup to display some additional data in each card, but to utilize this we will have to add some additional local annotations in our Web IDE OVP application.  We can do this by utilizing the Annotation Modeler of Web IDE, but lets first save and activate the CDS View.

 

@UI.fieldGroup: {groupLabel: 'Contact Details', label: 'Email', position: '10', qualifier: 'cusContact'}
so.customer.email_address,
@UI.fieldGroup: {groupLabel: 'Contact Details', label: 'Phone', position: '20', qualifier: 'cusContact'}
so.customer.phone_number,

 

The result of our changes necessary for our stack card should yield

 

@AbapCatalog.sqlViewName: 'zovpdemo'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'OVP Demo App'
@OData.publish: true
@UI.headerInfo: {  typeNamePlural: 'Sales Orders',
imageUrl: 'mytestImg',  typeName: 'Sales Order',  title: {    label: 'Order ID',    value: 'sales_order_id'  },  description: {    label: 'Customer',    value: 'company_name'  }
}
define view Z_Ovp_Demo as select from sepm_cds_sales_order as so {
key so.sales_order_key,
@UI.selectionField: [ { position: 10 } ]
@Consumption.semanticObject: 'Action'
@UI.identification: {type: #FOR_INTENT_BASED_NAVIGATION, semanticObjectAction: 'toappnavsample2', label: 'Nav Sample', position: '10'}
@UI.lineItem:  [{ label: 'salesOrd', qualifier:'ordOverView',type: #FOR_INTENT_BASED_NAVIGATION, semanticObjectAction: 'toappnavsample'},    { position: 10, qualifier:'ordOverView', label: 'Sales Order'}]
so.sales_order_id,
so.created_by,
so.created_at,
so.changed_by,
so.changed_at,
so.note_guid,
so.currency_code,
so.gross_amount,
@UI.dataPoint: {title: 'Net Amt',    criticalityCalculation: {    improvementDirection: #TARGET,    deviationRangeLowValue: 100,    toleranceRangeLowValue: 400,    toleranceRangeHighValue: 800,    deviationRangeHighValue: 1200    },    valueFormat:{        numberOfFractionalDigits: 1    }}
@UI.lineItem:  { position: 30, qualifier:'ordOverView', label: 'Net Amount', type: #AS_DATAPOINT}

so.net_amount,
@UI.dataPoint: {title: 'Tax Amt', valueFormat:{    numberOfFractionalDigits: 1
}}
@UI.lineItem:  { position: 40, qualifier:'ordOverView', label: 'Tax Amount', type: #AS_DATAPOINT}
so.tax_amount,
@UI.dataPoint: {title: 'Lifecycle'}
@UI.lineItem:  { position: 50, qualifier:'ordOverView', label: 'Lifecycle', type: #AS_DATAPOINT}
so.lifecycle_status,
so.billing_status,
so.delivery_status,
so.buyer_guid,
/* Associations */
so.customer,
so.items,
@UI.selectionField: [ { position: 20 } ]
@UI.lineItem:  { position: 20, qualifier:'ordOverView', label: 'Customer',  }
so.customer.company_name,
@UI.fieldGroup: {groupLabel: 'Contact Details', label: 'Email', position: '10', qualifier: 'cusContact'}
so.customer.email_address,
@UI.fieldGroup: {groupLabel: 'Contact Details', label: 'Phone', position: '20', qualifier: 'cusContact'}
so.customer.phone_number,
@UI.identification: {type: #WITH_URL, label: 'Customer Site', url: 'web_address', position: '20'}
so.customer.web_address
 '/resources/sap/ui/core/mimes/logo/sap_50x26.png' as mytestImg,
}


After saving and activating the CDS view changes we can now add the Stack Card to the application.  In your OVP Application add a Stack Card as shown

 

Screen Shot 2016-06-17 at 10.02.26 AM.png

 

 

This will yield the card

 

Screen Shot 2016-06-28 at 4.16.04 PM.png

 

The card has two clickable areas, the white area and also the blue area.  Clicking on the white area relies on the first @UI.identification and clicking on the blue area which opens the cards results in

 

Screen Shot 2016-06-29 at 2.55.03 PM.png

 

Choosing the Customer Site button will navigate us to the url provided by the field web_address and the Nav Sample button we take us to a predefined navigation sample app.

 

 

Adding the Field Group

 

To utilize the field group, it's necessary to add some additional annotations utilizing the Annotation Modeler.  To do this let's first right click on the Web IDE project's webapp folder and choose New -> folder and name it annotations.  Now right click on the annotations folder and choose New -> Annotation File and provide the values

 

Screen Shot 2016-06-28 at 4.22.04 PM.png

 

choose Next and Finish to complete the process.  In addition to creating the file, this process will add an additional entry in the manifest.json declaring a local annotation.  Right click on the new annotation file and choose Open With -> Annotation Modeler.  When the editor opens, choose the Annotate button next to the OData Entity Set.

 

Screen Shot 2016-06-29 at 2.58.02 PM.png

 

Select the node Local Annotations and then choose the add button under actions.

 

Screen Shot 2016-06-29 at 3.00.43 PM.png

 

Choose the annotation UI.Facets and choose OK.

 

Screen Shot 2016-06-28 at 4.26.04 PM.png

 

Now with the Facet annotation selected, choose the add button and add a ReferenceFacet to it.

 

Screen Shot 2016-06-28 at 4.27.26 PM.png

 

Finally assign the fieldGroup to the ReferenceFacet by setting the Annotation property to the FieldGroup Qualifier cusContact and Save your changes.Screen Shot 2016-06-28 at 4.29.05 PM.png

 

After refreshing your app your stack card should now look like

 

Screen Shot 2016-06-29 at 3.02.21 PM.png

 

 

 

ADDING A CHART CARD TO THE OVP APPLICATION


OVP applications have the ability to show numerous types of analytical charts.  In this example we will add a line chart, but the procedure is the same form any type of chart card.  CDS views provide the annotation @UI.chart which contain the majority of the information related to the card.  To adjust the displayed data we can also utilize the annotation @UI.presentationVariant, which allows grouping and sorting or data, and the annotation @UI.selectionVariant, which allows filtering of data.  Additionally, the annotation @UI.dataPoint is available to display a KPI value in the card header as well as the annotation @UI.identification to define a navigation path.


In our CDS view lets first define a line chart as follows in the view area.


@UI.chart:[{    qualifier: 'ordNetChart',    title:'Order Net Amount',    chartType: #LINE,    dimensions: ['sales_order_id'],    measures: ['net_amount', 'tax_amount'],    dimensionAttributes: {dimension: 'sales_order_id', role:#SERIES},    measureAttributes: [{measure: 'net_amount', role: #AXIS_1}, {measure: 'tax_amount', role: #AXIS_1}]
 }]

 

To limit the amount of data we see in our chart we can utilize the presentation variant annotation which we can use to sort the data in addition to limiting the results returned.  This is also a view level annotation so we can add it under our chart.

 

 

@UI.presentationVariant: [{qualifier: 'top5Changed', maxItems: '5',  sortOrder.by: 'changed_at', sortOrder.direction: #DESC }]n: #DESC }]

 

For the example we can define a static field myTarget which we used to display in the KPI header area using the @UI.dataPoint annotation.

 

 @UI.dataPoint:{title: 'Order Target Value', criticalityCalculation: {        improvementDirection: #MAXIMIZE,         toleranceRangeLowValue: 8000,         deviationRangeLowValue: 9000} }    10000.00 as myTarget,

 

 

The resulting CDS view should now be

 

@AbapCatalog.sqlViewName: 'zovpdemo'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'OVP Demo App'
@OData.publish: true
@UI.headerInfo: {  typeNamePlural: 'Sales Orders',  imageUrl: 'mytestImg',  typeName: 'Sales Order',  title: {    label: 'Order ID',    value: 'sales_order_id'  },  description: {    label: 'Customer',    value: 'company_name'  }
}
@UI.chart:[{    qualifier: 'ordNetChart',    title:'Order Net Amount',    chartType: #LINE,    dimensions: ['sales_order_id'],    measures: ['net_amount', 'tax_amount'],    dimensionAttributes: {dimension: 'sales_order_id', role:#SERIES},    measureAttributes: [{measure: 'net_amount', role: #AXIS_1}, {measure: 'tax_amount', role: #AXIS_1}]
 }]
@UI.presentationVariant: [{qualifier: 'top5Changed', maxItems: '5',  sortOrder.by: 'changed_at', sortOrder.direction: #DESC }]
define view Z_Ovp_Demo
as select from sepm_cds_sales_order as so
{
key so.sales_order_key,    @Consumption.semanticObject: 'Action'    @UI.identification: {type: #FOR_INTENT_BASED_NAVIGATION, semanticObjectAction: 'toappnavsample2', label: 'Nav Sample', position: '10'}    @UI.lineItem:  [{ label: 'salesOrd', qualifier:'ordOverView',type: #FOR_INTENT_BASED_NAVIGATION, semanticObjectAction: 'toappnavsample'},      { position: 10, qualifier:'ordOverView', label: 'Sales Order'}]    @UI.selectionField: [ { position: '10' } ]    so.sales_order_id,    so.created_by,    so.created_at,    so.changed_by,    so.changed_at,    so.note_guid,    so.currency_code,    '/resources/sap/ui/core/mimes/logo/sap_50x26.png' as mytestImg,    @UI.dataPoint:{title: 'For Charts', referencePeriod.end: 'created_at', criticalityCalculation: {        improvementDirection: #MAXIMIZE,         toleranceRangeLowValue: 1000,         deviationRangeLowValue: 4000}}    so.gross_amount,    @UI.dataPoint:{title: 'Order Target Value', criticalityCalculation: {        improvementDirection: #MAXIMIZE,         toleranceRangeLowValue: 8000,         deviationRangeLowValue: 9000} }    10000.00 as myTarget,    @UI.dataPoint: {title: 'Net Amt',       criticalityCalculation: {        improvementDirection: #TARGET,        deviationRangeLowValue: 100,        toleranceRangeLowValue: 400,        toleranceRangeHighValue: 800,        deviationRangeHighValue: 1200        },        valueFormat:{          numberOfFractionalDigits: 1        }}    @UI.lineItem:  [{ position: 30, qualifier:'ordOverView', label: 'Net Amount',  type: #AS_DATAPOINT},{qualifier: 'chartLineItem'}]    so.net_amount,    @UI.dataPoint: {title: 'Tax Amt', valueFormat:{      numberOfFractionalDigits: 1    }}    @UI.lineItem:  { position: 40, qualifier:'ordOverView', label: 'Tax Amount', type: #AS_DATAPOINT}    so.tax_amount,    @UI.dataPoint: {title: 'Lifecycle'}    @UI.lineItem:  { position: 50, qualifier:'ordOverView', label: 'Lifecycle', type: #AS_DATAPOINT}    so.lifecycle_status,    so.billing_status,    so.delivery_status,    so.buyer_guid,    /* Associations */    so.customer,    so.items,    @UI.lineItem:  { position: 20, qualifier:'ordOverView', label: 'Customer' }    @UI.selectionField: [ { position: '20' } ]    @UI.identification: [{label: 'Customer', position: '10'}]    so.customer.company_name,    @UI.fieldGroup: {groupLabel: 'Contact Details', label: 'Email', position: '10', qualifier: 'cusContact'}    so.customer.email_address,    @UI.fieldGroup: {groupLabel: 'Contact Details', label: 'Phone', position: '20', qualifier: 'cusContact'}    so.customer.phone_number,    @UI.identification: {type: #WITH_URL, label: 'Customer Site', url: 'web_address', position: '20'}    so.customer.web_address
}                                                                                 

 

After saving and activating the CDS view add another card to define a Line Chart.  Define the card as

 

Screen Shot 2016-07-05 at 1.34.56 PM.png

 

The should result in the card

 

Screen Shot 2016-07-05 at 1.39.01 PM.png

Christian Drumm - SCN Member of the Month July 2016

$
0
0
I am delighted to congratulate Christian Drumm as the SCN Member of the Month for July, 2016! Christian is the head of development and consulting at FACTUR Billing Solutions GmbH, and an expert in SAP CRM and SAP Utilities (IS-U). In addition to sharing

SAP Mentors making a difference in the SAP University Alliances program

$
0
0

Over the last year or so, several of our students at Grand Valley State University's ERP program had the opportunity to interact with several SAP mentors.  These interactions are tremendous opportunities for students to learn about SAP, and about life, from some wonderful people.  Here are some observations from our students:

 

Marissa Mushna met Karin Tillotson at SAP SAPPHIRENOW.  She was impressed with Karin’s drive to get more women involved in Women in Technology. Marissa was also fortunate enough to participate at SAP Teched in Las Vegas where Karin invited her to participate in a Women in Technology event.  Marissa says that meeting Karin has changed her perspective on Women in Technology. Before meeting her she thought there were less women in this field because they just weren't interested in this type of career. After meeting her, Marissa started asking questions such as: Why aren't women interested in this as a career? What can we do to change that? How can we approach young women into being interested in technology careers?  Marissa is an SAP UA and Grand Valley alum working at General Motors.  Marissa’s interactions with Karin and other SAP mentors has inspired her to attend the WIT events at General Motors.  She is involved in campus recruiting to show college students that girls do have important roles in the technology space.

 

 

Kajal Magal had the opportunity to have lunch with several SAP mentors during SAP TechEd.  One in particular, Marilyn Pratt, made a lasting impression.  Marilyn explained that working in technology allows one to work in many different area. She also shared that her experiences at SAP aligned with her goal to make a social impact. She emphasized the importance of seizing opportunities and making an effort to get to know your peers. Great advice for someone just starting her career.

 

Megan Laughlin met Eric Vallo at Tech Ed as well.  This interaction resulted in Eric hiring Megan first as an intern and then full time as an Associate BI Developer for EV Technologies where her interaction with SAP mentors continues. Megan says that working with SAP Mentors has taught her a lot, and has boosted her confidence in her abilities.  I think Eric is very pleased with Meagan’s work for EV technologies. So pleased, in fact, that he visited Grand Valley a few months ago to talk to our students and to recruit more of them.  Thanks, Megan for representing Grand Valley so well.

 

Not all interactions are in person.  Last semester Kumud Singh spoke to our students via Skype – it was the middle of the night for her!  She provided a candid and informative narrative about her experience as a new employee.   Some of the key points that students recall are:

  1. You can't just be focused on just your work. If you don't reach out and embrace the work culture and socialize, you won't be able to learn as much. You learn from your own work as well as sharing with others and listening from others.
  2. Picking the right employer can be crucial to your future. The first job you get can determine how the rest of your career might go. So, it is absolutely crucial to make sure you fit well within the company.
  3. Documenting your work can help you to learn, record, reflect, and share information with others. Documentation is often overlooked, however, it can be of great use to you in the future

 

These are just some of the ways SAP Mentors are making a difference.  Over the years that I have been privileged to be part of the SAP Mentor program, I have witnessed countless instances where mentors were very giving of their time and wisdom to students; not just students, for that matter!

 

Kumud’s talk to our students led me ask how we could share this expertise with the broader SAP University Alliances community.  Regrettably, I did not record the talk!  My bad. However, my colleagues Meagan Knoll and Tom McGinnis have a plan.  We will invite SAP mentors to talk to our students (in person or online); we will invite students from other universities to dial in; and we will record (with permission) and make the recording available to anyone who wishes to learn.  I have already recruited a few SAP mentors at SAP SAPPHIRENOW 2016: Julien Delvat and Paul Achmann have graciously volunteered. We will schedule them for September or October 2016. I will be contacting other SAP Mentors to "volunteer" them! If you are especially eager to share your knowledge with students in the SAP University Alliances program, please let me know.

Disaster Recovery - SAP HANA

$
0
0

                                                                                     Disaster Recovery - SAP HANA

 

In and for any SAP Landscape the most important part is DR setup. In this particular blog, I'm discussing on different methods via which one can setup DR for HANA.

 

           There are 3 types of DR support with respect to HANA

 

  1. Backups
  2. Storage Replication, and
  3. System Replication


                                                                                          BACKUPS

 

As we all know SAP HANA is based on in-memory technology, it persists two types of data storage:


  1. Transaction redo logs, and
  2. Data Changes in the form of Savepoints



Transaction Redo Logs -:

                                             It is used to record all the data changes which are happening, When a database transaction is committed, the redo log buffer is saved to disk. Also, if the redo log buffer fills at any time, the redo log buffer is written to disk anyway, even if no commit has been sent. Upon an outage, the most recent consistent state of the database can be restored by replaying the changes recorded in the log, redoing completed transactions and rolling back incomplete ones.

 

Savepoints -:

                       During normal database operation, changed data is automatically saved from memory to disk at regular savepoints. By default, savepoints are set to occur every five minutes, including during a backup. Savepoints do not affect the processing of transactions. During a savepoint, transactions continue to run as normal, and new transactions can be started as normal. With a system running on properly configured hardware, the impact on performance of savepoints is negligible.

 

                        The main reason of performing savepoints is make the restart quick: when starting up the system, logs need not be processed from the beginning, but only from the last savepoint position. Savepoints are coordinated across all processes (called SAP HANA services) and instances of the database to ensure transaction consistency.

 

What is a SNAPSHOT?

 

SNAPSHOT : In a normal scenario, Savepoints overwrite older savepoints, but it is possible to freeze a savepoint for future use and this is called a snapshot.

 

The advantage of Snapshots is that they can be replicated in the form of full data backups, which can be used to restore a database to a specific point in time. This can be useful in the event of data corruption,  Savepoints, can be saved to local storage, and the additional backups, can be additionally saved to backup storage. Local recovery from the crash uses the latest savepoint, and then replays the last logs, to recover the database without any data loss.

 

 

                                                                                               Storage Replication

 

One drawback of backups is the potential loss of data between the time of the last backup and the time of the failure.

 

Therefore to take care of above mentioned limitation/drawback, a preferred solution is to provide continuous replication of all persisted data. There are several SAP HANA hardware partners who offer a storage-level replication solution, which delivers a backup of the volumes or file-system to a remote, networked storage system.

 

There are some vendor-specific solutions, which are certified by SAP, the SAP HANA transaction only completes when the locally persisted transaction log has been replicated remotely. This is called Synchronous Storage Replication.


Due to its continuity, storage replication can be a more attractive option than backups, as it reduces the amount of time between the last backup and a failure. Another advantage of storage replication is that it also enables a much shorter recovery time. This solution requires a reliable, high bandwidth and low latency connection between the primary site and the secondary site.


                                                                                                   System Replication


System replication is set up so that a secondary standby system is configured as an exact copy of the active primary system, with the same number of active hosts in each system.

 

Important point for this type of set up is that the number of standby hosts need not be identical. Each service instance of the primary SAP HANA system communicates with a counterpart in the secondary system.

 

The secondary system can be located near the primary system to serve as a rapid failover solution for planned downtime, or to handle storage corruption or other local faults, or, it can be installed in a remote site to be used in a disaster recovery scenario. However, if required both approaches can also be chained together with multitier system replication.

 

The instances in the secondary system operate in recovery mode. In this mode, all secondary system services constantly communicate with their primary counterparts, replicate and persist data and logs, and load data to memory.

 

NOTE--: The main difference to primary systems is that the secondary systems do not accept requests or queries.

 

When the secondary system is started in recovery mode, each service component establishes a connection with its counterpart, and requests a snapshot of the data in the primary system. [Snapshot has been explained above in the document] From then on, all logged changes in the primary system are replicated. Whenever logs are persisted in the primary system, they are also sent to the secondary system. A transaction in the primary system is not committed until the logs are replicated

 

Different Log Replication Modes-:

 

  • Synchronous in-memory -:

                                                      It is set by default, the primary system commits the transaction after it receives a reply that the log was received by the secondary system, but before it has been persisted. The transaction delay in the primary system is shorter, because it only includes the data transmission time.

 

  • Synchronous with full sync -:

                                                            In this option log write is successful when the log buffer has been written to the logfile of the primary and the secondary instance. In addition, when the secondary system is disconnected the primary systems suspends transaction processing until the connection to the secondary system is re-established. In this scenario there is no data loss which happens.

 

  • Synchronous -:

                                        The primary system does not commit a transaction until it receives confirmation that the log has been persisted in the secondary system. This mode guarantees immediate consistency between both systems, however, the transaction is delayed by the time it takes to transmit the data to and persist it in the secondary system.


  • Asynchronous -:

                                     The primary system sends redo log buffers to the secondary system asynchronously. The primary system commits a transaction when it has been written to the log file of the primary system and sent to the secondary system through the network. It does not wait for confirmation from the secondary system. However, it is more vulnerable to data loss. Data changes may be lost on takeover.

 

 

Samar

DGIT on a roll!

$
0
0

Well I certainly intended to blog more than once a month! The DGIT team has been so busy getting out in DC attending seminars, meeting representatives on Capitol Hill, and partaking in our own  "listening tour," that time has really been flying by as summer heats up here in our Nation's Capitol.

 

Our first task when we hit the ground here was to get some perspective. What are the biggest issues facing the government? Where will a Digital Government solve big problems, either in the government back office or in enabling the government agencies to fulfill their mission.  Where do these intersect?

 

As we listen to influencers, policy makers, and others closely tied to government functions, we continue to hear the same themes:

-Government has not kept up with the pace of technological advancement and adoption in the private / commercial sector.

-Citizens cannot engage the way they want to and services are way too complicated to access.

-Government runs inefficiently, does not have proper visibility into or reporting on its massive wealth of data, and is facing a workforce crisis.

-Old legacy systems are driving astronomical costs while proving to be impossible to keep secure.

 

A true digital government enables innovation at the speed of society.

This is accomplished by:

-providing Citizen Services across all devices and platforms the way citizens now expect,

-enabling a strong, centralized workforce recruitment and development that attracts top talent,

-harnessing the power of big data in an open and transparent manner,

-and procuring using agile methods allowing fast implementation and adoption of new technologies in IT.

 

Most importantly, a true digital government harnesses the latest technologies, such as Cloud based services, and human training to create a complete system secure against cyber threats. We see these topics comprising 3 pillars of Digital Government: Citizen Engagement, Government Efficiency, and Cybersecurity & Privacy.

 

I will go into each of these major pillars of Digital Government in a series tackling one each week. I look forward to the conversation!Screen Shot 2016-07-06 at 12.59.52 PM.png

Big Data 101: what is Big Data, explained with Sentiment Intelligence

$
0
0

Big Data 101: What is Big Data, explained with Sentiment Intelligence

 

A few weeks ago, at a Customer’s event, I was approached by a User about Big Data and how difficult was for him to understand it. I came up with an approach that I think it would be very useful for anyone to explain or understand it very easily.

Sentiment Intelligence is a very interesting solution from SAP to capture, store and analyze social media, and get insight from Big Data. Look at this <4 minutes youtube video: https://www.youtube.com/watch?v=ERcy0YyHmts

Let’s double click on Sentiment Intelligence and how this is a Big Data solution.

Sentiment Intelligence can turn Tweets into insight by capturing, storing and analyzing them and categorizing each and every one as: Very Positive / Positive / Neutral / Negative / Very Negative

 

Capturing Big Data

How does Sentiment Intelligence can capture Tweets? By reading Tweeter service capturing as they are created (Real time). Most likely you have heard “Big Data’s Three V’shttps://en.wikipedia.org/wiki/Big_data or even more V’s. Here you can understand one side of first V: “Volume”. It is easy to see Tweets as a big volume data collection.

Here comes the second V: “Velocity”. Do you thinks tweets being created is fast?. Transactions coming at a very rapid pace it is something many companies of many industries face. Imagine transactions happening at a retail store chain, or calls at a phone company.

Sentiment intelligence, then stores Tweets in a SAP HANA Database. Here comes “Volume” again. Being able to store this much information at such fast pace is a Big Data problem or, in this case, an ability.

How to access or capture data and then store it (if needed) is an Architecture challenge.

 

Processing Big Data

Every Tweet is a 140 characters long text. How does Sentiment Intelligence can categorize this text as Very Positive, Positive, Neutral, Negative or Very Negative? It reads them!

Text analysis is the process of analyzing unstructured text, extracting relevant information and then transforming that information into structured information that can be leveraged in different ways. (http://scn.sap.com/docs/DOC-54094 )

Here is another buzzword very associated to Big Data: unstructured data. Text is one example of unstructured data, as it has no pre-defined model or structure. Fields in a Database table or tags in an XML file are structured as we know what they are or mean by its position in the underneath structure. Tweets does not have any structure.

SAP HANA has Text analysis functions that “reads” the Tweets, looking for key words and phrases to capture text’s sentiment. This technology has such computing power that can process every Tweet, categorized it and store this high volume and high velocity information into a SAP HANA Database table. It takes a free text string and turn it into a discrete value in a database table. It turned unstructured data into Structure data. This is the key process in Big Data Scenarios. Every scenario will require a very specific way to turn unstructured data into structure data.

Again “Volume” and “Velocity” V’s show up, but now third V’s is also showing its face: Variety. This last V is all about how source data is stored or where it resides. A Tweet in a web service, text in a document, etc. Al kind of files or signals contains info that needs to be processed in order to get information from it.

Thanks to SAP HANA’s high computing power and Text Analysis functions, this scenario is possible.

 

Analyzing Big Data

Text is unstructured and thus traditional OLAP functions does not apply, as they run on numeric values on table’s numeric fields.

Now that structured data is available, traditional BI tools can be used to get the insights we are looking for. But once again First and Second V’s show up. Imagine reporting and analyzing on a very big (millions or billions of records) and changing (more records coming in every second) DB table. A high computer power is needed to read and summarize all this data. If you also need OLAP functionality, even more computer power is needed.

Columns, Bars, lines charts are as useful as they has always being. New visualizations like Geo, Choropleth, Heat, Tree, Network, Tag Cloud, combinations and others are to be used on specific use cases. You can try these new visualizations with SAP BusinessObjects Lumira.

 

Conclusion

Let’s see Gartner’s Big Data Definition: “… high-volume, high-velocity and high-variety information assets that demand cost-effective, innovative forms of information processing for enhanced insight and decision making.” Does it make more sense now?

 

 

I hope you enjoy. Please, let me know what you think.

A tecnologia pode acender uma luz no futuro do setor de Utilities

$
0
0

1_1.jpg


O setor de Utilities do futuro deve explorar ao máximo os recursos tecnológicos disponíveis. Novas tecnologias e softwares podem ajudar a ampliar o potencial de uma empresa de Utilities em diferentes pontos:

  • Otimizar a gestão da cadeia de suprimentos
  • Simplificar o gerenciamento de ativos
  • Assegurar compliance e satisfação do cliente quanto às cobranças
  • Economizar com automatização de sourcing e aquisições

 

  Saiba como a tecnologia pode ajudar o setor de Utilities. Leia o artigo completo no blog da SAP.


It's Time to Prevent Bias Before it Occurs

$
0
0

When I meet with customers to talk about HR technology and its place in diversity and inclusion, the conversation quickly floats to analytics.  For decades we have been measuring our workforce, our salary equity, and other programs to slice by demographic and look for problems we can kaizen.  This type of measurement is critical to understanding the problem and measuring the success of the programs put into place to change our organizations, but I would argue we can do more.

 

What if HR technology could help detect and prevent the bias before it happens?  What if you could have an automated coach guiding you as you make decisions about performance, calibration, recruiting and selection, or compensation? 

 

One area of research into the limiting impact of unconscious bias, is in the recruiting space.  Machine learning technology provides us the ability to learn from our past actions and identify risky behavior before it occurs.  Are your job descriptions using language that could inadvertently discourage a diverse applicant pool?  Are you using the best possible job boards to attract a broad range of candidates?  We can move beyond just identification to suggesting smart alternatives so the end users have the right actions in front of them, making it easy to implement.

 

This new type of enterprise tool  also provides us the ability to identify risk and facilitate objective conversations that otherwise might not have occurred.  Are you giving a low performance score to someone who was on leave this year?  Are you measuring someone’s potential as low because they recently had a child or have taken leave to care for a family member? The power of an integrated suite allows you to look across the talent management lifecycle to identify where there is risk, and potentially subjective bias.


The time has come to move beyond looking in the rear view mirror.  HR Technology should help prevent bias before it occurs by guiding our decisions. This kind of cultural change can only happen if tools are created that keep it simple to make the right objective, impact-driven decisions. It’s time to raise the bar.


Join me at SuccessConnect 2016 where we’ll talk more about how technology can help your organization with inclusion.

EP: WPC 1.0 & 2.0 - Copying Content?

$
0
0

Introduction

 

Modern business requirements and operational enhancements within organizations holster the need to perform regular upgrades and system changes in order to conform to optimal functional environments. Netweaver (NW) upgrades, SP deployments within the Portal Landscape and content Transports/Migration are all too familiar within everyday work processes.


WPC.PNG


 

WPC

 

The Web Page Composer or WPC for short provides Portal end-users with a means of combining dynamic Web based content with "in-house" business applications and functions. Essentially the WPC setup within an Enterprise Portal environment can be regarded as a platform through which users can work with both official (SAP) & third party content, elements, information and data.


Core Elements in association to WPC


  • Web Content
  • Articles
  • Banners
  • Sites
  • Link listing

 

WPC Versions

   

  • WPC 1.0
  • WPC 2.0

 

Can I Copy Content from WPC 1.0 for utilization in WPC 2.0?


For a means of a working example let us imagine that we are moving and transporting a site from WPC 1.0 to WPC 2.0. The need for content handling within WPC 2.0 could have arise as a direct result of a recent upgrade or perhaps anFPN (Federated Portal Network) setup is in place with different Portal versions. By FPN here I am making reference to an example of different Portal versions being used within the same environment type.

 

  • A key point to highlight and consider here is the changes between versioning.
  • There are multiple changes in the configuration, framework and functionality of the Web Page Composer application between WPC 1.0 and WPC 2.0.


Can I Copy Content from WPC 1.0 for utilization in WPC 2.0 (ii) ?


So upon attempting to take content from WPC 1.0(EP 7.30-) and holster it within WPC 2.0(EP 7.30+) you notice a peculiar behavior e.g. Rendering issues, HTML embedding and syntax and Scripting errors.


Why am I encountering this behavior?

 

The migration/transport of WPC content from an EP 7.0 portal to another separate portal on EP 7.30 is NOT officially supported.


  • Officially it is recommended to upgrade the existing 7.0 system to 7.3 to migrate the WPC content.


However as highlighted there may be situations where 7.3 is installed on a separate system and it is not desired to upgrade the existing 7.0 system. In such a case,the content has to be migrated in a different way.


  • Remember with WPC 1.0 and WPC 2.0 there is a jump in versioning & functional display

 

Initial Troubleshooting

 

Therefore if you notice any change in behavior regarding WPC which came into affect on your system setup after an upgrade/change/migration etc I would strongly recommend reviewing the core troubleshooting blog posting below as this will provide you with guidance and additional insight:


Troubleshooting Migration Issues in Web Page Composer :

 

I still need to copy the content

 

There are four methods to achieve the "copy" smoothly (by this I mean display should be fitted to business requirements and appear correctly).


SAP's Product Compliance Solution for Discrete Industries Webinar

$
0
0

 

 

 

 


SAP's Product Compliance Solution for Discrete Industries

Thursday, July 7, 2016, Time: 11:30 AM - 12:30 PM ET
(8:30-9:30 AM PT, 9:30-10:30 AM MT, 10:30-11:30 AM CT)


When registering for our webinars please use your company assigned email address (no personal email addresses, please)

Space is limited. Reserve your Webinar seat now at:
http://leverx.com/sap-product-compliance-solution-discrete-industries-updates/


If you cannot attend, please register and we will email you a link to download the webinar recording.


Webinar Description:

This webinar is intended for companies striving to improve the process of managing environmental product compliance across the organization in order to ensure product marketability, brand protection, and reduce compliance costs.

Value Proposition:
SAP offers a holistic and uniform approach to the management of product compliance data.  The solution enables customers to manage regulatory requirements, collect data from the supply chain, manage the assessment of their product portfolio, and support different departments such as engineering, manufacturing, purchasing and sales by embedding compliance information into core PLM business processes.

In this webinar you will get an overview of the solution including the recent enhancements for Product Compliance for discrete industries in SAP EHS Management and SAP S/4HANA and how it can help you to comply with regional and international legal obligations like EU REACH-SVHC, EU RoHS as well as customer specific and other requirements.

Please join us for this webinar discussion of the SAP Product Compliance solution.

Webinar Speaker:

Kristian Mitic

Product Manager, Energy & Natural Resources Industries

and EHS & Sustainability Products, SAP SE

 

Webinar Agenda:

1. "SAP's Product Compliance Solution for Discrete Industries - Overview"

2. "Simplified Import of Material Declarations Using Industry Standard IPC1752A"

3. "Improved Analytical Use Cases Based on SAP HANA"

4. Questions

 

 


About LeverX

LeverX helps our customers simplify innovation and engineering excellence by improving their ability to manage products, projects, resources, and compliance through the complete product lifecycle and achieve a better return on their engineering investments.  We deploy innovative solutions powered by SAP's Connected Products suite of design networks, design orchestration and portfolio & project management solutions driving operating performance and market competitiveness for SAP customers.

LeverX is an SAP services partner with expertise in Portfolio and Project Management (PPM), Product Lifecycle Management (PLM), enterprise visualization, manufacturing, quality, Environmental Health & Safety Management (EHSM), and product compliance.  We offer strategic consulting, implementation and development services along with unique add-on SAP applications reducing costs and improved operational efficiencies.  LeverX has a proven reputation for excellence and expertise in SAP solutions implementation and development services.

For additional information, please email Alan Mendel, VP LeverX, at alan.mendel@leverx.com


SAP Customers attending will receive a follow up email with a link to download presentation materials and a recording of this webinar. After registering you will receive a confirmation email containing information about joining the webinar.

 

 

 

 

SAP HANA June/July Webinar Series: Experts’ Insights on Best Practices, Case Studies & Lessons Learned

$
0
0

The SAP HANA Webinar Series helps you gain insights
and deliver solutions to your organization.


This acclaimed series is sponsored by the SAP HANA
international Focus Group (iFG) for customers, partners, and experts to support SAP HANA implementations and adoption initiatives. Learn about upcoming sessions and download Meeting Invitations here.


>>>Check outour new SAP HANA blog post about the following June& July webinars:

SAP HANA iFG Sessions:

  • June 14– Scaling Big Data Analytics with SAP HANA Vora and MapR
  • June 16– Instantly Deploy and Use SAP Solutions in the Cloud – Within Minutes
  • June 23– Foghorn: Edge Intelligence and Analytics for IoT
  • June 30– Capture and Replay – Hybrid Cloud Service Beta
  • July 7– Meteo Protect Applies SAP HANA to Pricing Parametric Weather Insurance
  • July 14– HANA Success Workshop and Customer for Life
  • July 21– SAP Business Suite Powered by SAP HANA Migration – Best Practices & Lessons Learned


Check for Upcoming SAP HANA Customer Spotlights –
View Upcoming Sessions>>

New to the iFG community?


Troubleshooting Dynamic Tiering Connections to SAP HANA

$
0
0

Sometimes you may get a connection error when converting a table to
extended storage:

 

ALTER TABLE "DT_SCHEMA"."TABLE_A" USING EXTENDED STORAGE

 

[4863] {207439} [95/10731633] 2016-05-06 17:50:26.455132 e FedTrace

odbcaccess.cpp(03672) : ODBC error: connected:  1 state: HY000 cide: -65 [SAP]

[ODBC Driver] Unable to connect to server 'HANA': [SAP AG] [LIBODBCHDB SO] [ HDBODBC]

General error;1033 error while parsing protocol


In this case, the dynamic tiering host can't communicate with SAP HANA to fetch the contents of

the table needed for the conversion.

 

Enable Traces

 

One solution is to enable traces. Enable these traces, then run the ALTER TABLE statement again:

 

ALTER SYSTEM  ALTER CONFIGURATION ( ' indexserver.ini ' , ' SYSTEM ' ) SET ( ' authentication ' , ' SapLogonTicketTrace ' ) = ' true '  WITH RECONFIGURE;

ALTER SYSTEM  ALTER CONFIGURATION ( ' indexserver.ini ' , ' SYSTEM ' ) SET ( ' trace ' , 'saptracelevel ' ) = ' 3 '  WITH RECONFIGURE;

ALTER SYSTEM ALTER CONGIGURATION ( ' indexserver.ini ' , ' SYSTEM ' ) SET ( ' trace ' , 'authentication ' )  = ' debug '  WITH RECONFIGURE;

ALTER SYSTEM ALTER CONFIGURATION ( ' indexserver.ini ' , ' SYSTEM ' ) SET ( ' trace ' , ' crypto ' ) = ' debug ' WITH RECONFIGURE';

 

Collect the required traces and contact SAP Support to resolve the communications problem.

 

Check for Different Certificate Sizes

 

Certificate sizes on the dynamic tiering and SAP HANA hosts should match. Certificate mutual authentication and the SSL protocol secure internal communications between the hosts. Different certificate sizes show inconsistent certificates that could cause connection problems.

 

Log in as SIDadm on the dynamic tiering host and enter these commands:

  1. cdglo
  2. cd security/rsecssfs/data
  3. ls -al sap_system_pki_instance.*

Note the file sizes. The file sizes should match those on the HANA host.

 

Log in as SIDadm on the SAP HANA host and enter these commands:

  1. cdhdb
  2. cd $SECUDIR
  3. ls -al sap_system_pki_instance.*

Do the file sizes match those on the dynamic tiering host? If not, contact SAP Support.

 

Note: For these certificates to work correctly, you need to synchronize the clocks on the SAP HANA and dynamic tiering hosts. Run the date command on each host.

SAP S/4HANA Customers Respond to an Urgent Call for Agility

$
0
0

As new technologies enter the arena, each entrant is touted as more disruptive than its predecessor. This rate of change coupled with business model obsolescence is growing almost uncontrollably. Yet, racing ahead of even that are customer expectations. Personalization, complete business environment integration, immediate actions and real-time analytics are no longer perceived as luxuries that are nice to have. Our SAP S/4HANA customers deem these features as absolutely necessary, referring to them as non-negotiable in any business transformation investment.


Frankly speaking, the general consensus is that the next five to ten years will be more disruptive from a business model standpoint than the last twenty. Brian Krzanich, Chief Executive Officer, Intel says, “The pace [of change] is going to become faster and faster. The ability to access terabytes of data and be able to do analytics on it is going to be explosive.” (Watch SAPPHIRE NOW replay: Bill McDermott Live, SAP CEO: Run Live, Run Simple).


IMG_0691.JPG

Two examples of technologies that have been advancing quietly are machine learning and the Internet of Things – which are on the cusp of going mainstream in 2016. Many businesses are already finding new ways to incorporate these technologies into existing business processes. Others focus on leveraging new ways of doing business centered on the benefits these technologies bring. Either way, the days of waiting and doing nothing are long gone.


Wieland Schreiner, Executive Vice President and Head of SAP S/4HANA Development,believes that the key to agility is to “go to standard, make consumption easy, make the innovation cycle faster.” Existing companies need to adapt and the one way to do it is to streamline everything. (Watch SAPPHIRE NOW replay: Design Your Strategy for Digital Transformation with SAP S/4HANA).


The central theme faced by virtually every company today is ambiguity. There’s no definitive way for managers to know the impact new technologies will have 1 year from now, 8 months from now or even 6 months from now. If there was, Uber wouldn’t be the giant it is today and Airbnb would not exist.


Right now we are essentially living in a transformative time characterized by a huge digital exclamation point. Businesses know something is coming; they know it will come soon but have no way to measure the magnitude of its impact nor do they have a surefire way to respond to it.

The only thing companies can do to adequately prepare is ensure that their organizations are as nimble and responsive as possible. This generally leads to an urgent need to simplify: Not just their IT landscape, but business processes, data structures and the way they do business entirely.


This is where SAP S/4HANA enters the lime light as a new digital core. In fact, at SAPPHIRE NOW 2016, it truly stole the show.


IMG_0751.JPG

MEMEBOX is a small cosmetics company in South Korea that recently went live with SAP S/4HANA Finance. With this global expansion, broader range of products, and increased sales channels, this resulted in a massive growth in data. This pushed our existing ERP to its limit. The existing ERP system could not support our long term needs,” said Jae Hyun Kim, Global Finance Dir., MEMEBOX Corp.It was unheard of that a company of our size, with 150 employees, would implement a full-stack SAP solution. The implementation risk was enormous…we were constantly changing our business model and often operated without any established business processes.” Kim continued to say, “It only took us 6 months to realize that SAP [S/4HANA Finance] solution has become the backbone of our current and future businesses. (Watch SAPPHIRE NOW replay: Accelerate Growth and Lover Total Cost of Ownership).

 

SWISS PROPERTY AG is a luxury real estate construction company based in Switzerland with a production base in Estonia. The company has less than 100 employees yet was the first company to go live with the SAP S/4HANA 1511 release.


swiss.PNG

“We want to be efficient by utilizing standardization and pre-fabrication as much as possible,” said Jaan Saar, Head of Process and IT, SWISS

 

It’s understandable that businesses are becoming more and more territorial. Now, however, they’re facing a whole new kind of threat. It’s no longer incumbents but rather start-ups leveraging unique, new ways of doing business that bring these disruptive technologies to the boardroom table.


If you’d like to hear more from SAP customers and executives at this year’s SAPPHIRE NOW, check ourSAP S/4HANA Session Replays.


Learn more about SAP S/4HANA at:www.sap.com/S4HANA


SAP BusinessObjects Analysis Office Roadmap Webcast Notes

$
0
0

This was an SAP webcast today on the overview/roadmap

1fig.png

Source: SAP

The usual legal disclaimer applies; things in the future are subject to change

2fig.png

Source: SAP

Word has an asterisk, part of the EPM plug-in

3fig.png

Source: SAP

2.x is the go-to release for future development

 

The Analysis plug-in refers the Analysis ribbon


Based on a pivot table user experience, from Excel

 

Convergence is a single product, single installer, single license


Introduced a common layer into Excel

5fig.png

Source: SAP


Some limitations for EPM exist as shown above

6fig.png

Source: SAP


 

BPC embedded recommend Analysis


Above shows which plug in to use


For BW/HANA, use Analysis


For BPC standard, EPM is the right plug-in


For BPC embedded, recommend Analysis


See note above that explains it more detail

7fig.png

Source: SAP


 

Differences are due to architecture and performance

Analysis approach uses design panel and context pane, Excel styles

8fig.png

Source: SAP


 

EPM plug-in has limitations with embedded


Check the notes


Exceptions, user interface, performance limitations based on architecture

9fig.png

Source: SAP


You can integrate Analysis with Fiori launchpad  – BI platform (open doc)

10fig.png

Source: SAP


Analysis can be a target for RRI interface

11fig.png

Source: SAP


 

If you are on 1.4 please upgrade, said SAP

12fig.png

Source: SAP


Planned (subject to change):


Missing EPM Word support


Re-introduce EVDRE support

 

For Analysis – continuous improvement, table design, rule editor, enable formulas in cross tab

 

HANA – SSO via cloud

 

Simplify user experience, asymmetric measures, auto complete

 

Axis sharing (butterfly report)

 

Grouping on the fly

 

Future  (planned for 2017) – commenting framework, similar to Web Intelligence

Integration – working with Lumira colleagues and Cloud colleagues

 

Looking at offline velocity engine / database

 

PoC with Excel365 geomaps

If you have live apps that might interact with BI data

 


Reference:

You can view the roadmap here (note logon may be required)


Recording: https://sap.na.pgiconnect.com/p4sadjzl5af/

 

Question and Answer
Q: https://apps.support.sap.com/sap/support/pam not working (PAM)

A: working today; could be browser related

Q: Will Analysis for Office work with HANA Enterprise Semantic Search? (for agile data preparation)

A: At this time no other plans

Q: Analysis for office on HANA source does not incorporate scenarios such as constant selection and RRI . When are we planning to include them?

A: move to HANA backend colleagues; not something do in the front

 

Q: One of the biggest pain points for us is upgrading software on end user s computers. As of today it’s manual process requiring user with admin rights accessing end user’s computer. About 80% of our Analysis end users work remotely. Any plans for automating upgrade procedures?

A: Customers said they would like control when upgrades; relies on IT infrastructure and central set up

 

Q:  Today, you have support for Bex workbook , In which version  of AO the Bex is enable to convert workbook?

A: been there for a while

 

Q: integration of excel 365 apps — what is support integration with excel 365 today

A: Analysis Office requires on-premise installation; not plan to integrate with HTML of Excel


SAP Solution Manager 7.2 / SAP Activate Highlights Video

Solution Manager 7.2 highlights on ITSM, Change and Release Management

SAP Web IDE local development with SAP HANA On Premise

$
0
0

In this post I will show how to develop a basic SAP UI5 app locally using OData service located in a SAP HANA On Premise server. I will also show how to take the app to the same SAP HANA server. My OS is windows, but you can easy make analogous steps if you are woking in MacOSx.

 

 

Getting SAP Web IDE

 

First, you will need a SAP Web IDE local installation.

You can download it from this site.

It is really easy to install this new version. You only have to extract the downloaded zip file and execute the orion server.

Details are in this page.

 

After you have a SAP Web IDE local installation, you better create a user account in your local server in order you can make SAP UI5 applications.

 

 

The SAP Web IDE project

 

To make a new project you can follow the File > New > Project from Template route.

 

newProject.png

 

 

In this case, I will use SAPUI5 Application with the SAPUI5 Innovation (Recommended) version.

 

template.png

 

 

For this project I choose tileMetrics as the project name and demo.project as the namespace. Also, I will work with XML views and this first view will be named Main.

 

This is what you have when you run the app for this first time.

empty.png

 

 

On the root directory (tileMetrics in my case) I will create another folder: webservice.

In this folder I'm going to create the .xsodata file for de OData webservice: demo.xsodata

 

service  {   "MDMUSER"."V_METRICS"   as "DemoNumber"   key  ("CONCEPT");
}

MDMUSER.V_METRICS is a view that runs queries on tables to get numbers like the total count of rows, the total count when a column is null, etc.

 

For now, this is our site structure:

structure.png

 

 

We also need the .xsaccess and .xsapp file next to .project.json and neo.app.json.

xsaccess.png

 

 

For now, we need to define a project in SAP HANA wih the same structure than this SAP Web IDE project.

 

hana.png

 

Destination file

 

Depending of your extraction route of the zip file that you downloaded first, you have a similar route like this: C:\SAPWebIDE\eclipse\config_master\service.destinations\destinations.

This route exists only after you create a user for SAP Web IDE.

 

In that directory, you will crete a file with no extension with the connection information to you SAP HANA server.

In my case, this is the content:

 

Description=Webservices demonstration
Name=demo
Type=HTTP
URL=http://XX.XX.X.XX:XXXX
ProxyType=Internet
Authentication=BasicAuthentication
WebIDEEnabled=true
WebIDESystem=demo
WebIDEUsage=odata_gen

 

 

 

Back to the SAP Web IDE project

 

We need to configure this OData service.

With the right click on the root directory, you follow the route: New > OData Service

 

service.png

 

 

This image shows you which are the parameters that you need to set and finish the configuration:

 

odata.png

 

 

Then you need to relate this OData service with you project. So, inside webapp directory you will find manifest.json. In that file you will have a dataSources section, that reflects the configuration that you have already done.

 

dataSources.png

 

 

In manifest.json you can also find models section. We need to add the dataSource in this models section.

 

models.png

 

Till now, the app still showing nothing, but this is about to change now.

You need to modify the Main view to paint a tile with the numbers that we're extracting from the webservice.

 

Inside the content tag of the Main view, write something like this:

 

<TileContainer tiles="{demo>/DemoNumber}" id="demoContainer" allowAdd="false" editable="false">                <StandardTile number="{demo>TOTAL}" title="{demo>CONCEPT}" numberUnit="rows" info="SAP" icon="sap-icon://sys-monitor"/>            </TileContainer>

 

view.png

 

 

If you run the app, now you will see this:

 

app.png

 

You can try changing the window size and see what happens.

 

 

Moving to SAP HANA server

 

 

In order to move this simple app to the SAP HANA server, we need to add a new dataSource in the manifest.json file and change the model.

 

hanaDataSource.png

 

demoHanaServer.png

 

Now you can export tileMetics directory and put it in you SAP HANA project.

I always modify the SAP UI5 CORE resources directory parameter to: https://openui5.hana.ondemand.com/resources/sap-ui-core.js in the index.html file.

 

 

SAP UI5 app on SAP HANA server On Premise:

 

hanaApp.png

SAP BUILD

$
0
0

Hi there,

 

Yesterday I was part of an informative session about a new SAP product

 

With this design tool you can create interactive prototypes and quickly get a demo to visualize the idea even if your technical knowledge.

 

BUILD is an open source technology running on top of HANA.

 

I haven't tried yet but from what I saw seems quite intuitive.

 

https://standard.experiencesplash.com/home

 

Regards,

 

Bruno

Tip in a Minute: Navigation in the New Community

$
0
0
  In this Tip in a Minute video, Moshe Naveh from the SAP community team demonstrates the platform's new navigation.
Viewing all 3611 articles
Browse latest View live


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