abas Software AG

Applications

The dashboards come with four different applications. A dashboard editor application, a view-only application, an application for displaying graphs on the input screens and a manager application (admin only). Each application serves different use cases and can be addressed via a URL parameter.

Linking to applications

To start a specific application, you must attach the parameter app to the dashboard base URL, e.g. http://yourHost.yourDomain/dashboard/?app=editor&id=default_dashboard&mandant=erp.

Table 1. Table URL parameter
Parameter Description

app=editor

Starts the Editor

app=viewer

Starts the Viewer

app=chartviewer

Starts the Chart Viewer

app=manager

Starts the Manager (admin only)

Dashboard Viewer

The main purpose of this application is to integrate dashboards with the native abas ERP UI. The Viewer can be configured to act as a sub page of an abas ERP input screen or as a sidebar attached to an abas ERP screen. The Viewer is the most used Dashboard application.

Using the Viewer

Using abas Dashboard Viewer

Configuration

All configuration is done by URL parameters. Of course, parameters can be combined using regular URL syntax.

Table 2. Table Viewer URL parameters
Parameter Description Values/Examples

id

The unique Dashboard ID. Directly loads the board with the specified ID.

E.g. id=4c733044-b543-437f-8b0b-a1beaf5b2116 or id=CustomerOverview

mandant

Set the ERP client

E.g. mandant=erp or mandant=SABA

linkto

Open links in the Web Client (web) or native UI (native), default: native UI

linkto=web or linkto=native

menu

The dashboard menu will only contain the menu with the ID

Dashboard category id or "none" to hide the whole menu

context

Provide a data record when calling a board. Multiple context can be provided separated by an ampersand.

E.g. context=0:1;(154,0,0) or context=(154,0:1,0) or context=(154,0:1,0)&context=(222,2:1,0)

processchain

Provide the Process Chain widget with the type of process chain (sales, purchase or service)

processchain=sales or processchain=purchase or processchain=service

Dashboard Editor

The Editor is the application with the most build-in features. Its purpose is to enable users and administrators to create, modify and delete dashboards.

Creating dashboards

Creating dashboards with the Editor

Modifying/Removing dashboards

You must have sufficient permissions to modify or remove a dashboard. This is the case if you are either the creator of the corresponding dashboard or if you have administrator permissions. While modifying a dashboard, you can reorder and resize widgets, configure the widget settings, add new widgets from a widget library or remove widgets from the dashboard.

Dashboards supplied by abas are immutable, even if you have administrator permissions. However, you can easily clone these dashboards at the click of a button and then customize the clones. Removing abas standard dashboards is not possible either. Instead of removing abas dashboards, you can create custom user menus containing only the dashboards you want to be visible to you or other users. A description of how to create custom dashboard menus can be found in the Menu chapter.

Dashboard Editor basics

Creating and customizing dashboard categories

As part of the menu, dashboard categories offer the possibility to label groups of dashboards. The category is then displayed in the menu for the purpose of overview and navigation. The video shows how to create custom dashboard categories.

Dashboard categories tutorial

Chart Viewer

Chart Viewer is a non-interactive application. Once configured, it displays charts in full screen without a navigation bar or anything else.

Configuration

Table 3. Table Chart Viewer URL parameter
Parameter Action

chartfile=file.json

Path to the file containing the chart descriptions generated by FOP

Dashboard Manager

The main purpose of this application is to manage users, groups and dashboards. You can switch between these three management use cases via the menu on the left side. Only administrators can access this application. It can be reached via the URL parameter "app=manager" or from the context menu of the user avatar in the Dashboard menu.

Group management

The group management is used to display all available dashboard groups and to create, edit or delete groups. A dashboard group is used to provide one or more dashboards to different users.

Alt text

In the dialog for creating or editing a group, you must enter an ID, a name (both at least 3 characters) and an optional description. Use the checkboxes to add the users and dashboards in the lists to the group or to remove them from it.

Alt text

User management

The user management displays all dashboard users with their username, last login, write permission and groups. You can also edit different options for a user here.

Alt text

In the edit dialog, you can see the email address, user ID, username and the time of the last login (all not editable). It is also possible to give a user only read access so that the user is not allowed to create or edit any dashboards. By default, this is deactivated. The list of available dashboard groups is used to add the user to one or more groups or to remove them from a group.

Alt text

Dashboard management

The dashboard management displays a list of all available dashboards with their owners and the groups they belong to (indicated by the gray boxes).

Alt text

Integration in abas ERP

The Dashboard is integrated into the native UI and the Web Client. Detailed information on how dashboards can be integrated into abas ERP can be found in the Online Help: https://extranet.abas.de/sub_de/help/he/html/dashboard.html

Standard dashboards in abas ERP screens

From abas ERP 20 various standard dashboards are automatically stored in the screens of the native UI. When upgrading to abas ERP 20, the display of these standard dashboards may still have to be activated. For this, the supplied standard call parameters must be selected in the screens via the GENAPEVENT infosystem. Possibly existing custom call parameters that are not overwritten during the upgrade must be removed. A guide can be found here: Displaying dashboards in GUI screens

The following table provides an overview of which dashboard is stored in which screen by default.

Table 4. Overview Standard dashboards in abas ERP screens
Dashboard Screens

Customer file (CustomerOverview)

Customer (0:1)

Pipeline (PipelineProspect)

Prospect (0:6)

Vendor file (VendorOverview)

Vendor (1:1)

Product file (ProductOverview)

Product (2:1)

Sidebar Sales (SidebarSales)

Blanket order (3:20), Quotation (3:21), Sales order (3:22), Packing slip (3:23), Invoice (3:24), Web order (3:25), Opportunity (3:30)

Sidebar Purchase (SidebarPurchase)

Blanket order (4:20), Request (4:21), Purchase order (4:22), Packing slip (4:23), Invoice (4:24)

Sidebar Service (SidebarService)

Service quotation (3:27), Service order (3:28), Repair order (3:29), Cost estimate (3:31)

Service overview (ServiceOverview)

Service product (116:1)

Process chain (ProcessChain)

PROCESSCHAIN infosystem

Documents (Documents)

Customer (0:1), Customer contact (0:2), Prospect contact (0:7), Vendor (1:1), Vendor contact (1:2), Product (2:1), Blanket order (3:20), Quotation (3:21), Sales order (3:22), Packing slip (3:23), Invoice (3:24), Web order (3:25), Service quotation (3:27), Service order (3:28), Repair order (3:29), Opportunity (3:30), Cost estimate (3:31), Blanket order (4:20), Request (4:21), Purchase order (4:22), Packing slip (4:23), Invoice (4:24), Entry (6:0), Lots (59:0), Project (86:5), Service product (116:1), Service request (122:1)

Integration in abas ERP Version 2018r4

As the Dashboard is only available from abas ERP 20, it is not integrated in older abas ERP versions by default. Nevertheless, it is technically possible to make the Dashboard usable from abas ERP Version 2018r4n14p06 with certain restrictions. A description of what is required for this can be found below.

In abas ERP 20, the enumeration 20130 EDIAPPLICATION and its use was changed as well as the way URLs are calculated. In addition, a new ID format - called IDG - was introduced.

Therefore, a straightforward approach, such as simply adding the required environment variables and creating the required URL call parameters, will not lead to success in abas ERP Version 2018.

The best way to integrate the Dashboard into abas ERP Version 2018r4 is to write a FOP that generates the required URLs. The FOPs can then be integrated by simply adding them in the fop.txt.

This approach is recommended but also has its limitations.
The subentry in the screens' context menues to reload the web application will not work because it recalculates the URLs using the URL call parameters. Menu entries that use URL call parameters naturally do not work either.

Prerequisites

The following examples assume the environment variable DASHBOARD_URL to be existent and non-empty.

example
WEBSERVER_PORT_HTTP = 8181
# Base URL for all Dashboard applications
DASHBOARD_BASE_URL = http://${HOST_HOMEDIR}:${WEBSERVER_PORT_HTTP}/dashboard/?mandant=${MNAME}&linkto=native
# Dashboard Viewer
DASHBOARD_URL = ${DASHBOARD_BASE_URL}&app=viewer
# Dashboard App "Chartviewer" (abas Charts)
CHARTVIEWER_URL = ${DASHBOARD_BASE_URL}&app=chartviewer&chartfile=

To simulate the standard URL call parameters from abas ERP 20, we need to define the missing URL query parameters

  • id (Dashboard ID),

  • menu (Dashboard menu ID),

  • context (ERP object ID in new IDG format) and

  • in case of DMS dmsfield and dmsvalue

and append them to that environment variable.

Example for Documents dashboard

In the standard release, the URL2 field dokumentbaurl stores the URL for the Documents dashboard.
We write a FOP called FOP.DMSURL and bind it to the maskein event. We can either bind it also to the field’s name, since we know it and thus fix it, or use a wildcard.

fop.txt
*  *  maskein  *  dokumentbaurl  *  [C] FOP.DMSURL

or

*  *  maskein  *  *  *  [C] FOP.DMSURL

The FOP itself should use the environment variable DASHBOARD_URL and map the current screen or accompanying database group to the required URL query parameters dmsfield and dmsvalue.

Expand to see the FOP
FOP.DMSURL
..!interpreter english translate noabbrev
.. Check if DASHBOARD_URL is set
.continue END ? F|empty(E|DASHBOARD_URL)

.. Check if variable "dokumentbaurl" exists
.continue END ? _F|defined(M|dokumentbaurl)

.. Declarations
.type text xdashboardmenu ? _F|defined(U|xdashboardmenu)
.type text xdashboardid   ? _F|defined(U|xdashboardid)
.type text xdmsfield      ? _F|defined(U|xdmsfield)
.type text xdmsvalue      ? _F|defined(U|xdmsvalue)

.assign U|xdashboardmenu = "none"
.assign U|xdashboardid   = "Documents"

.. Set dmsvalue and dmsfield for different database groups

.. dmsvalue is always the object's erp field "nummer" here
.assign U|xdmsvalue = 'M|nummer'

.assign U|xdmsfield = "KuLiNr"   ? M|objdnr = 0 & M|objgruppe = 1
.assign U|xdmsfield = "KuLiNr"   ? M|objdnr = 1 & M|objgruppe = 1

.assign U|xdmsfield = "KtktNr"   ? M|objdnr = 0 & M|objgruppe = 2
.assign U|xdmsfield = "KtktNr"   ? M|objdnr = 0 & M|objgruppe = 7
.assign U|xdmsfield = "KtktNr"   ? M|objdnr = 1 & M|objgruppe = 2

.assign U|xdmsfield = "ArtNr"    ? M|objdnr = 2 & M|objgruppe = 1

.. Sales
.assign U|xdmsfield = "VKRAufNr" ? M|objdnr = 3 & M|objgruppe = 20
.assign U|xdmsfield = "VKAngNr"  ? M|objdnr = 3 & M|objgruppe = 21
.assign U|xdmsfield = "VKAufNr"  ? M|objdnr = 3 & M|objgruppe = 22
.assign U|xdmsfield = "VKLiefNr" ? M|objdnr = 3 & M|objgruppe = 23
.assign U|xdmsfield = "VKRechNr" ? M|objdnr = 3 & M|objgruppe = 24
.assign U|xdmsfield = "VKSANr"   ? M|objdnr = 3 & M|objgruppe = 27
.assign U|xdmsfield = "VKSerNr"  ? M|objdnr = 3 & M|objgruppe = 28
.assign U|xdmsfield = "VKRepNr"  ? M|objdnr = 3 & M|objgruppe = 29
.assign U|xdmsfield = "VKChanNr" ? M|objdnr = 3 & M|objgruppe = 30
.assign U|xdmsfield = "VKKostNr" ? M|objdnr = 3 & M|objgruppe = 31

.. Purchase
.assign U|xdmsfield = "EKRAufNr" ? M|objdnr = 4 & M|objgruppe = 20
.assign U|xdmsfield = "EKAnfNr"  ? M|objdnr = 4 & M|objgruppe = 21
.assign U|xdmsfield = "EKBestNr" ? M|objdnr = 4 & M|objgruppe = 22
.assign U|xdmsfield = "EKLiefNr" ? M|objdnr = 4 & M|objgruppe = 23
.assign U|xdmsfield = "EKRechNr" ? M|objdnr = 4 & M|objgruppe = 24

.assign U|xdmsfield = "CharNr"   ? M|objdnr = 59 & M|objgruppe = 0
.assign U|xdmsfield = "ProjNr"   ? M|objdnr = 86 & M|objgruppe = 5
.assign U|xdmsfield = "SPrNr"    ? M|objdnr = 116 & M|objgruppe = 1
.assign U|xdmsfield = "VKSanfNr" ? M|objdnr = 122 & M|objgruppe = 1

.. cases we haven't handled above will use AbasId
.assign U|xdmsvalue = 'M|id'     ? F|empty(U|xdmsfield)
.assign U|xdmsfield = "AbasId"   ? F|empty(U|xdmsfield)


.. set "dokumentbaurl"
.assign M|dokumentbaurl = 'E|DASHBOARD_URL' + "&menu=" + 'U|xdashboardmenu' + "&id=" + 'U|xdashboardid' + "&dmsfield=" + 'U|xdmsfield' + "&dmsvalue=" + 'U|xdmsvalue'

!END
.continue

Further examples

In the standard release, there are two other URL2 fields which store the URL for the dashboards: aktebaurl and sidebarbaurl.
These URLs require the URL query parameters id, menu and context to be defined.

As you can see in the following example the context is fixed and can be calculated in the same way for all abas ERP objects.
The ID of the dashboard and the menu categories to display depend on the opened screen. Therefore, a FOP based solution requires a mapping in this case.

example to calculate aktebaurl at a marker called "AKTE"
!AKTE
.. get screen context in IDG format
.assign U|xcontext = F|regreplace(M|id, ","+'M|objdnr'+"," , ","+'M|objdnr'+":"+'M|objgruppe'+",")

.assign U|xdashboardid = "CustomerOverview"    ? M|objdnr = 0 & M|objgruppe = 1
.assign U|xdashboardmenu = "customer"          ? M|objdnr = 0 & M|objgruppe = 1

.assign U|xdashboardid = "PipelineProspect"    ? M|objdnr = 0 & M|objgruppe = 6
.assign U|xdashboardmenu = "prospect"          ? M|objdnr = 0 & M|objgruppe = 6

.assign U|xdashboardid = "VendorOverview"      ? M|objdnr = 1 & M|objgruppe = 1
.assign U|xdashboardmenu = "vendor"            ? M|objdnr = 1 & M|objgruppe = 1

.assign U|xdashboardid = "ProductOverview"     ? M|objdnr = 2 & M|objgruppe = 1
.assign U|xdashboardmenu = "product"           ? M|objdnr = 2 & M|objgruppe = 1

.. set "aktebaurl"
.assign M|aktebaurl = 'E|DASHBOARD_URL' + "&menu=" + 'U|xdashboardmenu' + "&id=" + 'U|xdashboardid' + "&context=" + 'U|xcontext'

You may create new URL2 fields and define the URL that should be called the same way.
Of course, you may also set U|xdashboardid to dashboards you created yourself. Their IDs are generic and can be found either via the dashoard’s URL or using the submenu entry "Informations" of a dashboard in the menu.
If you don’t want to display the menu at all, just set the variable to "none"`. If you want to display the whole menu and not only a specific category, just leave the variable empty.

Infosystems

Since infosystems are FOP or Java based, we must include them in the existing code.

For the PROCESSCHAIN infosystem and its accompanying dashboard, it is sufficient to add the following lines to $MANDANTDIR/ev/PROCESSCHAIN.EV and calculate the required URL2 fields ekkettebaurl, serkettebaurl and vkkettebaurl. The infosystem itself decides which of these three URLs are displayed.

code snippet for $MANDANTDIR/ev/PROCESSCHAIN.EV
!END
.. generate url
.input "FOP.DASHBOARDPROCESSCHAIN"
..
.continue
Expand to see a code snippet for FOP.DASHBOARDPROCESSCHAIN
code snippet for FOP.DASHBOARDPROCESSCHAIN
.. Infosystem ProcessChain
.assign U|xdashboardid   = "ProcessChain"
.assign U|xdashboardmenu = "none"

.. get mask context in IDG format
.assign U|xid = M|einkauf^id
.assign U|xcontextek  = F|regreplace(U|xid, ","+'M|einkauf^objdnr'+"," , ","+'M|einkauf^objdnr'+":"+'M|einkauf^objgruppe'+",")

.assign U|xid = M|service^id
.assign U|xcontextser = F|regreplace(U|xid, ","+'M|service^objdnr'+"," , ","+'M|service^objdnr'+":"+'M|service^objgruppe'+",")

.assign U|xid = M|verkauf^id
.assign U|xcontextvk  = F|regreplace(U|xid, ","+'M|verkauf^objdnr'+"," , ","+'M|verkauf^objdnr'+":"+'M|verkauf^objgruppe'+",")

.. set "sidebarbaurl"
.assign M|ekkettebaurl  = 'E|DASHBOARD_URL' + "&menu=" + 'U|xdashboardmenu' + "&id=" + 'U|xdashboardid' + "&context=" + 'U|xcontextek'  + "&processchain=purchase"
.assign M|serkettebaurl = 'E|DASHBOARD_URL' + "&menu=" + 'U|xdashboardmenu' + "&id=" + 'U|xdashboardid' + "&context=" + 'U|xcontextser' + "&processchain=service"
.assign M|vkkettebaurl  = 'E|DASHBOARD_URL' + "&menu=" + 'U|xdashboardmenu' + "&id=" + 'U|xdashboardid' + "&context=" + 'U|xcontextvk'  + "&processchain=sales"