SmartApps Screens

Screens: components in layouts, each with properties and actions.

A screen defines what a person sees at a step: a layout of components such as text boxes, grids, charts, dropdowns, buttons and pop-ups, for desktop and for mobile.

Screen S02 · Warranty check · desktop and mobile layoutSerial numbertext box · id: txt_serialLook upbutton · btn_lookupSitedropdown · dd_sitegrid · grd_claims · rows from data handler dh_warrantyClaimProductPurchasedExpiresStatusCLM-2041Model X42025-02-112027-02-10in warrantyCLM-2077Model X22023-07-302025-07-29expiredCLM-2090Model X42026-01-042028-01-03in warrantychart · cht_trend · claims per monthApprove claimbutton · btn_approveEscalatebutton · btn_escalateDecision notetext area · txt_noteSELECTED: BTN_APPROVELabelApprove claimVisible= grd_claims.selected.status =='in warranty'Enabled= len(txt_note.value) > 10StyleprimaryACTION 1 OF 2TRIGGERon clickACTIONcall dh_warranty.update(status='approved')OUTCOMErefresh grd_claims · notify L2 · log
A warranty screen: a serial number field, a lookup button, a site dropdown, a grid bound to a data handler, a chart, two decision buttons and a note. On the right, the properties of the selected button and its first action.
3
levels of a screen: elements in components in layouts
product
20+
component types: fields, lists, grids, charts, buttons, pop-ups, panels, uploads, signatures, maps
product
5
ways to set a property: constant, variable, data handler, expression, function
product
2
layouts per screen: desktop and mobile, from one definition
product
1
ID per component, unique across the app
product
Composition

Elements, components, layouts

Three levels, dragged into place.

A layout divides the screen into regions: a header, columns, tabs, a side panel, a footer. Components sit in the regions: a text box, a number, a date, a dropdown bound to a list, a grid bound to a data handler, a chart, a button, a pop-up, a file upload, a signature pad, a map. Elements are the parts of a component: the label, the value, the help text, the validation message. A screen is drafted by dragging components into a layout, and the studio can draft it for you from the fields of the data handlers the step needs.

The same screen definition renders for desktop and for mobile: the layout has a mobile arrangement, and components have mobile behaviour, for example a barcode scan on a serial number field or a camera on a photo upload. A count on the warehouse floor and its review at a desk are one screen.

ComponentBound toTypical use
Text, number, date, timea field of a handler, a variable or an expressionserial number, quantity, new delivery date
Dropdown, radio, checkboxa list from a handler or a constant listreason codes, plants, decision options
Gridrows of a data handler, with filters, sort and inline editlate order lines, count differences, journal lines
Charta query handler or the grid's rowsclaims per month, cover by plant
Buttonactionslook up, approve, escalate, submit
Pop-up and panela second screen or a section shown on demandline detail, supplier history
Upload, photo, scan, signaturefiles and captures stored with the instancecertificates, fault photos, sign-offs
Portal framethe same components delivered to an outside loginsupplier reply, customer claim
Identity and properties

Every component has a unique ID and a set of properties

Any property can be read or set through the ID, from anywhere in the app.

Each component in an app has a unique ID across all its screens, such as grd_claims or btn_approve. Every property of the component, including its value, is reachable by that ID from expressions, actions and other components: btn_approve.enabled, grd_claims.selected.status, txt_note.value. That is how a screen behaves: a button enables when a note is present, a panel fills when a row is selected, a chart follows the grid's filter.

Properties are set in five ways: a constant, a variable (screen, app, global or system), a data handler (a field of the current row, or a list), an expression written in the editor, or a function. Validation is a property too: required, range, pattern, and a custom expression with its message. A component's value can be instantiated at load, on an event, or when another component changes.

idUnique across the app; used everywhere the component is referenced
label · help · placeholderText elements, translatable per language
valueConstant · variable · handler field · expression · function
visible · enabled · requiredBooleans, usually expressions on other components or on the role
validationRequired, range, pattern, custom expression and message
formatNumber, currency, date, unit; per user locale
mobileScan, camera, location, offline capture where allowed
actionsZero or more trigger → action → outcome chains
stylePrimary, secondary, warning; density; width in the layout
Binding

Screens read and write through data handlers

SCREENSDATA HANDLERSSOURCE OBJECTS, READ IN PLACES01 Late lines (grid)screenS02 Line detailscreenS03 Supplier reply (portal)screenS05 Board (chart)screendh_po_linestable handler · EKPO, EKET, EKBEdh_vendortable handler · LFA1dh_stockquery handler · MARD by plantdh_casesapp handler · instancesSAP S/4HANApurchase order linesSAP S/4HANAvendor masterSAP S/4HANAstock by plantLimarunning instancesrows stay in the source · access rules apply at read time · writes go through the source's released interface and are confirmed
Each screen binds to the handlers it needs. The grid on S01 shows the rows the handler returns; S02 shows the selected row's detail from the same handler and the vendor from a second one; the board reads the app's own instances.
Generated screens

Screens drafted from data handlers, rules and hierarchies

Start from a draft, then adjust.

The studio drafts screens in three ways. From data handlers: point at the objects a step needs and it lays out the fields, with the right component per type and the grid for the rows. From rules: a data-quality rule or a contract on a record becomes the correction screen with exactly the fields the rule names, so the steward's screen exists the moment the rule does. From hierarchies: a collaborative app gets a screen per level, with the fields that level decides on and a summary of the levels below.

A draft is an ordinary screen: every component has its ID, its properties and its actions, and it passes the same validation and preview as a screen built by hand. AI-assisted configuration explains what a plain-language description adds.

Pick the handlersThe objects the step reads and the fields it may change.
Terms on this page

Element, component, layoutElements are the parts of a component (label, value, message); components are the controls (field, grid, button); layouts arrange components into regions of a screen.
Unique IDThe name every component has, unique across all screens of an app, through which any property can be read or set.
Portal screenA screen delivered to an outside login, with the access policy limiting the rows shown.
InstantiateTo give a component its value at load or on an event: from a constant, a variable, a data handler, an expression or a function.
Questions

Can I use our design system?

Yes. Colours, type and spacing are a theme applied to every screen; component styles map to your tokens. Screens stay readable on light backgrounds by default.

How do mobile screens work offline?

Components that allow offline capture keep values on the device and submit when connected; the log records the capture time and the submit time separately.

Can one screen serve two roles?

Yes: visibility and enabled properties are expressions on the role, so a customer and an agent can share a claim screen with different parts visible and editable.

Where do uploaded files go?

With the instance, in the platform's store, referenced from the log; a retention rule decides how long they stay.

See a SmartApp built on your data

Bring one process and the systems it touches. In the first session we register the data handlers, draw the levels or the lanes and run the first screen on your live rows.