Enh Guide YL S4 2021 Final
Enh Guide YL S4 2021 Final
Enhancement Guide
Document Version: 1.3 – Final
Date: August 16, 2023
Example Words or characters quoted from the screen. These include field names, screen titles,
pushbuttons labels, menu names, menu paths, and menu options.
Textual cross-references to other documents.
EXAMPLE Technical names of system objects. These include report names, program names, transaction
codes, table names, and key concepts of a programming language when they are surrounded
by body text, for example, SELECT and INCLUDE.
Example Output on the screen. This includes file and directory names and their paths, messages,
names of variables and parameters, source text, and names of installation, upgrade and
database tools.
Example Exact user entry. These are words or characters that you enter in the system exactly as they
appear in the documentation.
<Example> Variable user entry. Angle brackets indicate that you replace these words and characters with
appropriate entries to make entries in the system.
1 INTRODUCTION ........................................................................................................................ 7
1.1 About this Document ................................................................................................................ 7
1.2 Terminology .............................................................................................................................. 7
1.3 References ................................................................................................................................ 8
This document serves as a reference for all enhancement technologies that can be used in SAP Yard Logistics for
S/4HANA. The enhancements include Technical Enhancements, Business Logic Enhancements, User Interface
Enhancements, and UI5 Fiori Enhancements. Note that major parts of this document overlap with already existing
initiatives. The SAP TM Enhancement Guide served as a template for this document as the enhancement
strategies have been mostly developed within the TM domain. Some parts have been extracted from there and
put in into this document for basic illustration. We recommend that you also go through the original document to
get further details.
There are also many documents published in the SAP Community Network (SCN), which is also a good source of
information for many enhancement topics.
1.2 Terminology
Abbreviation Term
BO Business Object
TM Transportation Management
UI User Interface
YL Yard Logistics
CF Cloud Foundry
Resou Location
rce
[SCNF How to Create, Enhance, and Adapt Floorplan Manager Applications on SAP NetWeaver 7.40 - Part 1
PMEN https://blogs.sap.com/2017/10/12/how-to-create-enhance-and-adapt-floorplan-manager-
H] applications-on-sap-netweaver-7.52
SAP Yard Logistics for S/4HANA is based on a set of Frameworks that help to realize different aspects of the
application. The business objects are modeled and implemented with the Business Object Processing Framework
(BOPF). The expert user interface is based on ABAP Web Dynpro and is realized with the Floorplan Manager
(FPM), which supports modeling, implementing, and configuring the user interfaces. The Floorplan Manager
BOPF Integration (FBI) is used to connect the backend with the user interface. It provides the connection between
the business objects in the backend with the corresponding user interface realized with the FPM.
To utilize the enhancement capabilities, some general knowledge on these frameworks is required. Besides these
frameworks, general knowledge on the following implementation and configuration technologies are a
prerequisite for creating enhancements:
BAdIs (Implementation)
Implicit Enhancements (Implementation)
BOPF Enhancement Workbench (Configuration / Implementation, part of the BOPF Framework)
The mentioned frameworks and technologies are described in the following sections to provide a very basic
insight on how they are involved in the SAP YL solution and how they are used for creating enhancements.
More Information
You find this documentation on the SAP Library for SAP NetWeaver 7.4. Go to SAP Help portal at section
http://help.sap.com and choose Technology Platform → SAP NetWeaver → SAP NetWeaver 7.4 →
Developer's Guides. Go to Development Information, Custom Development (UI) section or to Custom
Application Development (ABAP) section.
Business objects are the basis of the SAP YL solution. Each business object represents a type of a uniquely
identifiable business entity, described by a structural model, an internal process model as well as one or more
service interfaces. The business processes provided with SAP YL operate on these business objects. Examples for
YL business objects are the Yard Order or the Yard Task.
For a general introduction to BOPF, see [BOPFINTRO] or [SCNBOPF].
BOPF controls the application business logic as well as the data retrieval of the buffer and persistency layer. The
main design principles are a clear separation of the business logic and the buffering of data, as well as a clear
structuring of the business logic into small parts with a clear separation of changing and checking business logic.
The BOPF approach for implementing business objects breaks down business logic into the following concepts:
Actions
Determinations
Validations
Queries
Nodes
A Node is a semantically related set of attributes of a business object. You can use the nodes to define and
structure your business object. The attributes of a business object node are defined by dictionary data types.
Nodes can be hierarchically defined and related. Each business object has only one Root Node. Nodes are defined
via compositions in a tree, but nodes can also be related in an arbitrary structure via associations that can be
separate from the tree structure.
Business Object Representation nodes are placeholders for other business objects and the associations to these
business objects. They are only for visualization of the association to other business objects.
Associations
An Association is a direct, unidirectional, binary relationship between two business object nodes. You can use
associations to relate two nodes in a well-defined direction. You can use the association to navigate from one node
(source node) to the related node (target node). The associated nodes can be nodes within one business object or
in different business objects (cross business object association). Associations can have parameters to filter the
result of the related nodes. You can only define them between two nodes and in one defined direction. Moreover,
they have a defined cardinality, which gives information about the existence of an association and the number of
associated nodes.
Determinations
A Determination is an element of a business object node that describes internal changing business logic on the
business object. You can use it to trigger business logic based on internal changes (in contrast to an action).
There are two types of determinations - Transient and Persistent. This categorization indicates whether a
determination alters persistent or only transient data. You can use a determination to mostly compute data that
can be derived from the values of other attributes.
For example:
Products (for example, item amount = quantity × list price) and ratios
Totals of items (for example, invoice amount = Σ item amounts)
Statuses
The determined attribute and the determining attributes can belong to the same node (example 1) or to different
nodes (example 2). There are also values that do not depend on any other value but still must be determined
automatically upon creation or modification of a node instance, for example, IDs, UUIDs, and GUIDs.
For each determination, it is necessary to specify which changes (such as create, update, delete or load) on which
nodes will trigger the determination at a specific time. A determination is called at different points in time
(determination time), depending on the model.
Validations
A validation is an element of a business object node that describes some internal checking business logic on the
business object. You can use validations to check if an action is allowed. You can assign action validations to
object-specific actions and to the framework actions create, update, delete, and save. You can use them to check
if an action can be carried out. An action validation is carried out when an action is called before it is performed. If
some validations fail, the action is not performed for the instances where the validation failed. Depending on the
action settings, the action is also not performed.
You can use a validation to check the consistency of a business object. You can use consistency validations to
check the consistency of a business object. You can assign them to the framework actions check of each node.
Consistency validations are carried out when this action is called or automatically after a change is made if they
are triggered via trigger nodes based on the changes. It is only triggered if some of the trigger nodes are assigned
and instances of these trigger nodes are changed.
Queries
Queries represent a defined set of attributes, such as search parameters, that return the queried IDs of the
business object node instances. A query allows you to perform searches on a business object. They provide the
initial point of access to business objects. Each query has an associated parameter structure. The result of the
query is a set of all the record IDs in a business object that match the query criteria.
The models of the SAP Yard Logistics for S/4HANA business objects can be displayed with the BOPF Modeling
Tool. You can start it via transaction/BOBF/CONF_UI. It allows browsing through the list of the business objects of
the application. From here, you can navigate to the details of each business object to display its node structure
and hierarchy, the configuration, the DDIC structures for each node, the node elements, for example,
Associations, Actions, Determinations, Validations and Queries. Moreover, it allows navigating to the
implementing ABAP classes of the business object.
On the initial screen, you can browse through the available YL business objects as well as four other object
categories, which are partially reused. These are as follows:
Dependent Objects:
Used in SAP YL for reusable parts of business objects that are not objects on their own, that is, they only exist in
the context of a business object (the hosting object). For example, attachment folder and text collection.
Data Structure:
This DDIC structure contains the attributes of the node, representing the node data.
Database Table:
Shows the database table where the persistent node information gets stored.
When expanding the Node Elements, you can further navigate to a node and the elements assigned to it (for
example, Associations, Determinations, Validations, Actions and Queries as described in the previous sections).
Moreover, the details for each of these elements can be displayed from here. For example, the details of an Action
You can find a comprehensive representation of BOPF implementation aspects at the following places:
TM Enhancement Guide [TMENH], Section 3.2
Navigating the BOPF, Part 3: [BOPFNAV3]
Typically, you implement a business object based on a specific business semantics that is defined via the core
requirements as defined by the product owner team. When the core functionality does not cover the requirements
of a customer, you must enhance the business object has. Fortunately, the BOPF framework comes with a set of
enhancement techniques that you can use to add the functionality. The tool that allows the enhancement is called
the BOPF Enhancement Workbench.
A general introduction to the enhancement features of BOPF can be found in [BOPFNAV5]. The SAP TM
Enhancement Guide [TMENH] shows the enhancement features in the context of SAP TM, which has a similar
architecture as SAP YL.
The BOPF Enhancement Workbench is available to enhance the standard YL BOBF Business Objects. You can use
it to create, change or delete enhancements of the standard YL BOPF Business Objects. You can again enhance
such enhancements with the same tool, that is, nested enhancements are also possible. The BOPF Enhancement
Workbench supports the following enhancements:
Create, change, or delete additional:
Sub nodes
Actions and action enhancements
Determinations
Consistency and action validations
Queries
Customer/Partner-specific Business Objects
The BOPF Enhancement Workbench now allows creating new customer/partner-specific business objects.
Customers and partners can create their very own business objects that they can freely implement according to
their requirements. SAP development must have declared Standard YL BOPF business objects as extensible. Only
such business objects can be enhanced. The same applies to business object entities like nodes, actions, and so
on. They can only be enhanced if SAP development has declared them to be extensible.
The BOPF Enhancement Workbench is started with transaction /BOBF/CUST_UI.
On the initial screen, you can see the business objects that can be enhanced in general (see Business Objects in
the figure above). Whenever you want to enhance one of the listed Standard Business Objects, the first step is to
create a so-called enhancement object for this business object. For the enhancement object, the original business
object represents the so-called super business object or base object.
Important to know is that this enhancement object neither replaces nor represents a copy of the standard
business object. Instead, it serves as a container for all enhancements that you add to the business object via the
enhancement workbench. At runtime, the standard business object functionality is still being executed with the
enhancements in addition.
Some general remarks that are valid for creating enhancements via the wizards provided by the BOPF
Enhancement Workbench:
Enhancement Name:
The enhancement name should start with the namespace or prefix of the open enhancement. This ensures there
is a clear separation between the entities of different enhancements, for example, two or more different
implementation partners want to separate their enhancements. The system automatically enters the value in the
field for the enhancement name. You should add a meaningful enhancement name.
When completing the wizard, further required objects are generated automatically. The system adds the new
enhancement to the enhancement object. It displays the new enhancement in the Entity Browser when you select
the corresponding assigned node or action. As mentioned, if an implementing class is required for the
enhancement, it is generated and must be implemented manually afterwards. The constants interface of the
Implementing Classes:
Some types of enhancements require providing an implementing class. This class contains the business logic of
the enhancement. In the wizard, you define a class name, and the system creates it automatically with the right
interface assigned for the corresponding entity that the system creates after finishing the wizard. You must
implement the enhancement manually.
The implementing class name should meet naming conventions. The wizard automatically suggests a class name
that corresponds to the BOPF naming conventions. You can also provide already existing classes as implementing
classes. They need to implement the corresponding BOPF Interface, for example, /BOBF/IF_FRW_ACTION for
actions or /BOBF/IF_FRW_VALIDATION for validations, and so on). The system does not overwrite the
implementing class if it already exists when finalizing the wizard.
Enhancement Scenarios:
Enhancements to a business object can concern many different topics:
Field Extensions
Enhancements can be as simple as adding additional persistent or transient attributes to existing nodes. This
is supported via append structures to the persistent and transient include structures of the BO.
Create Additional Sub Nodes
Enhancement can also comprise of adding additional nodes in the BO definitions. Such nodes can be
persistent or transient. Thereby, you can add completely new features to existing BOs.
Create Additional BOPF Artifacts
You can enhance an existing BO by new basic BO artifacts like actions, determination, validations,
associations, and queries. Typically, field extensions or new sub nodes are filled/created by additional
determinations. You typically enhance a BO status and consistency by additional validations. Here, the
execution sequence of added artifacts with respect to already existing standard artifacts plays a role. The
definition of the execution sequence is part of enhancement process.
Enhancing Existing BOPF Artifacts
To change the basic behavior of a BO, you can enhance the existing standard artifacts via pre- and post-
enhancements. You must define such enhancements carefully.
You can find many concrete examples regarding the above enhancement scenarios in section 3.3 of the TM
Enhancement Guide [TMENH].
Summary
BO enhancements work best if you can clearly define the semantics of the enhancements by new additional
features of the BO. Such features can be field extensions but also new additional sub nodes. You can use the
For ABAP programs, several so-called implicit enhancement options exist, for example:
At the end of an include
At the end of a structure definition - types, data, constants, statics
At the start and at the end of a method or function module
Replacing method implementations by overwrite-methods
These options provide very powerful means to alter standard code. In some cases, there are no other ways to
enhance, for example, when adding a type or data definition. In other cases, SAP strongly recommends using
BAdIs instead, since they provide a defined interface. Nevertheless, some of the mentioned options are described
here to be used to create enhancements. You should use the implicit enhancements with care. Keep in mind the
following aspects when making use of this enhancement technique:
Detailed knowledge on the application code is required for identifying the objects to that you want to enhance
for a specific purpose.
In case of methods that are not part of a stable interface, the signature can potentially change.
This can lead to problems in case a pre- or a post-method implementation relies on parameters from the
methods signature, especially when parameters might have been removed.
Enhancement SPAU might become necessary after updates to analyze conflict situations related to your
enhancement implementations.
In case of overwriting methods by copying the code of a standard method and adjusting it within an overwrite
method implementation, you will not get the changes/corrections for the standard portion of your
implementation.
ABAP objects, classes, or interfaces, can be enhanced by pre-, post- and overwrite methods that are executed
before or after the original method implementation or in case of overwrite methods, replace the complete original
implementation at runtime.
To stress again, you should make sure to handle the depicted implicit enhancements (pre-, post- and overwrite-
methods) with care. Keep in mind the potential problems and consequences mentioned at the beginning of this
section.
Moreover, it is highly recommended to implement such enhancement code in your own local class methods and
just place the call of these local class methods into the Enhancement Implementation. This provides more
transparency for customers and partners, as well as, for SAP in case of problem analysis, support, and so on. This
also provides a better overview for customers and partners over the coding that they have added with the
described techniques.
You are provided with several concrete examples regarding these enhancement topics in the TM enhancement
guide [TMENH], They can also be applied to SAP Yard Logistics for S/4HANA.
The Business Add-In (BAdI) concept is SAP’s object-oriented plug-in concept for ABAP. BAdIs are a mechanism
for planned extensibility. Planned means that the developer of the standard software already anticipates that
others may want to change or enhance the standard behavior at certain points in the application. BAdIs are used
to plug in custom behavior either in an additive way or by replacing the standard behavior.
All BAdIs can be found in the IMG (transaction SPRO) under the following path:
SAP Customizing Implementation Guide → Yard Logistics → Business Add-Ins (BAdIs) for Yard Logistics.
The Post Processing Framework (PPF) provides SAP applications with a uniform interface for the condition-
dependent generation of actions, for example, printing delivery notes, faxing order confirmations, or triggering
approval procedures. The system generates the actions if specific conditions occur for an application document.
The system then processes them either directly or later.
The system calls them from PPF actions of YL business objects, /SAPYL/YARD_TU (Yard Transportation Unit) and
/SAPYL/YARD_TASK (Yard Task). To process the PPF actions, you are provided with the following agent classes:
/SAPYL/CL_YO_PPF_EXT_COM_AGENT External communication agent
/SAPYL/CL_YO_PPF_PRINT_AGENT Yard Order Printing Agent Class
/SAPYL/CL_YO_PPF_SERV_AGENT Yard Order PPF Service Agent
/SAPYL/CL_YR_PPF_PRINT_AGENT Yard Request Printing Agent Class
/SAPYL/CL_YTU_PPF_SERV_AGENT Yard Task PPF Agent Class
/SAPYL/CL_YT_PPF_EXT_COM_AGENT External communication agent
/SAPYL/CL_YT_PPF_PRINT_AGENT Yard Task Printing Agent Class
/SAPYL/CL_YT_PPF_SERV_AGENT Yard Task PPF Agent Class
/SAPYL/CL_WH_VIS_PPF_SRV_AGENT YTU Warehouse Visit PPF Agent Class
You can use output management to print, fax, and email documents such as yard order, yard request or yard task
information. You can also execute application-to-application or business-to-business actions. You can use output
management features in the following business documents:
Yard Requests
Yard Orders
Yard Tasks
The following are the main output management features:
Display an action such as a settlement document
Choose the output method such as print, fax, and email
Preview a document
Enter an attachment
Enter a note
Enter a recipient
Execute the action, such as printing and faxing a yard document
You can also regenerate and execute an action that you have already executed. For example, you can reprint a
business document that you have already printed. When you regenerate an action, you can change the attributes,
for example, the recipients.
The system also displays the status of an action after execution. If a particular action was not processed
successfully, the system displays the cause of the error.
For printing yard specific documents, we use the Adobe Document Services with the following sample PDF forms:
/SAPYL/F_YO_PDF - SAP YL Yard Order Printing Document to PDF
/SAPYL/F_YR_PDF SAP YL Yard Request Printing Document to PDF
/SAPYL/F_YT_PDF SAP YL Yard Task Printing Document to PDF
You can adapt a standard print form to your requirements or create a new print form.
If you are creating a new print form, you have created and activated a form using the Form Builder (transaction
SFP). Then execute the following procedure:
Create a custom ABAP class for the print form (see Creation of an ABAP Class for a Print Form).
Create a custom ABAP class for the Post Processing Framework (PPF) service (see Creation of an ABAP
Class for the PPF Service).
Define an action profile and an action in the Post Processing Framework (PPF).
An action controls the point at which a document is to be printed (for example, when a user saves a
document). When you define an action, you must specify the name of the print document. You also specify
that the document is a PDF document, and you enter a standard BAdI. Alternatively, you can use an existing
action profile and action.
Create the required schedule conditions in Customizing for Cross-Application Components under Processes
and Tools for Enterprise Applications → Reusable Objects and Functions for BOPF Environment → PPF Adapter
for Output Management → Maintain PPF Settings.
Assign the ABAP class for the PPF service created in step 2 to the relevant business object (BO) nodes.
The new PPF service class must be assigned to the relevant business object node as an output agent. You do
this in Customizing for Cross-Application Components under Processes and Tools for Enterprise Applications
More Information
SAP Library for SAP Supply Chain Management on SAP Help Portal at http://help.sap.com/scm .
Under SAP SCM Server application help, open SAP Library and choose Processes and Tools for
Enterprise Applications Reusable Objects and Functions for the BOPF Environment (CA-EPT-BRC)
http://help.sap.com, then "Function oriented view" > "UI Technologies in SAP NetWeaver", then "SAP
Interactive Forms by Adobe", see link:
http://help.sap.com/saphelp_nw74/helpdata/en/a9/b128543eaa4a508b5120b695e29391/content.ht
m?frameset=/en/47/ab79e202e84be69174b5683fd02f9c/frameset.htm¤t_toc=/en/47/ab79e2
02e84be69174b5683fd02f9c/plain.htm&node_id=32&show_children=false
As soon as a Yard Task is activated, an SMS is sent to the phone number, informing the driver about this task. The
SMS contains the destination information in the yard. The same should be possible when a task is activated
automatically as a follow-on task or manually using the yard task maintenance. Also, in this situation, the SMS is
sent to the driver giving him the information about the next location in the yard.
The user can:
Change the message text
Confirm the sending of the message - sends the message
Cancel the sending of the message - no message is sent but still the task is activated
The determined text is shown to the user in a popup. The language for the text is the driver language maintained in
the yard order. If no language is maintained, the user language is used. A new setting in the user default settings
"Show Driver Communication" (checkbox) for YO and YT is provided. Only if this flag is maintained, the popup
with the text that is sent is shown.
In order to show the popup, a new checkbox is implemented in the Overview Yard Task or Overview Yard Order
(see next figure).
In order to support integration of SAP Yard Logistics for S/4HANA with several external or internal EWM systems,
a new so-called "Warehouse Visit" is introduced. A warehouse visit represents a combination of EWM business
system and EWM warehouse. They should be maintained for each Yard Order Item that is processed by an
external or internal EWM system. At that level, as many warehouse visits are defined as EWM warehouses need to
be visited by a Yard Transportation Unit.
The integration with these external EWM systems is done by means of web services. The integration with internal
EWM systems is done by direct call. All EWM calls are wrapped into the BAdI /SAPYL/SUBSYST_CALL in
enhancement spot /SAPYL/ES_WEB_SERVICES.
The interface /SAPYL/IF_SUBSYST_CALL contains methods for all used outbound web services:
CHECK_IN ( TU Check-in)
CHECK_OUT ( TU Check-out)
DOOR_DETERMINATION ( TU Door Determination)
DOOR_ARR_DEP (TU Arrival / Departure at door)
CANCEL_CHECK_IN
CANCEL_CHECK_OUT
MAP_TU_NUMBER_IN
This BAdI is triggered within corresponding qRFC modules of function group /SAPYL/EWM_RFC (RFC for EWM
communication).
Figure 19: PPF Action Definition for SAP EWM to SAP YL communication
More information
For more information on the integration between SAP EWM and SAP Yard Logistics for S/4HANA, consult
SAP Note 2667768 - Implementation information about the integration of SAP Yard Logistics for SAP
S/4HANA and warehousing EWM in SAP S/4HANA.
This chapter provides the basics on how to enhance the existing user interface. The user interface is built with the
help of the Floorplan Manager (FPM) and the Floorplan Manager BOBF Integration (FBI). These two frameworks
enable enhancing a user interface via configuration rather than having to implement additional code.
This document cannot cover a complete description of FPM and FBI. It, therefore, concentrates on the very basic
things that customers and partners need for creating basic and common enhancements of the UI by adjusting the
standard configurations of the YL user interface. The examples used here are based on the Yard Order UI, but the
principles and techniques are valid for any other user interface also. For enhancements of more complex user
interfaces, it is recommended to build up a more detailed FPM and FBI knowledge.
The FPM is based on a Web Dynpro ABAP application that provides a framework for developing new Web Dynpro
ABAP application interfaces consistent with the SAP UI guidelines. FPM allows a modification-free composition of
discrete User Interface Building Blocks (UIBBs) that are compliant with the mentioned guidelines.
For more information about which GUIBBS exist, how feeder classes are generated, about the detailed FPM event
loop, and how the UIBBs are talking with each other via wiring, consult the existing sources, for example,
[SCNFPM].
The Floorplan Manager BOPF Integration (FBI) is used in SAP Yard Logistics for S/4HANA to integrate FPM with
the BOPF-based business objects. The FBI provides generic FPM application feeder classes together with the
relevant application configuration that allows consuming services of Business Objects modeled in BOPF. You can
use these BOPF services seamlessly in a modification-free UI environment.
The FBI provides the following functionalities that support the communication and cooperation between FPM
applications and BOPF-bases Business Objects:
Editing data of BO node instances in the standard GUIBBs FORM and LIST
Accepting action parameter values and invoking corresponding actions on BO node instances
Overview Search (OVS) based on BO node queries
Input of external IDs on initial screens and subsequent conversion of these external IDs into internal
(technical) IDs (Alternative Key Conversion)
You can obtain a general overview of the required concepts of FBI in [SCNFBI].
The technical help shows you all required information for configuration, customizing and personalization.
On the tab Web Dynpro Application of the Technical Help screen, you can find the application configuration in the
section Application. Click the link to navigate to the application configuration where you can display (and adjust)
general application parameters.
In section Start Component of the same screen, you can find the leading Web Dynpro Component Configuration
(WDCC). The links are listed here.
Component Configuration
It represents the starting configuration of the corresponding application and contains all sub-elements
(UIBBs, Views, and so on) with their related configurations. When you display the component configuration,
you can navigate further to all subcomponents of this application.
Component Customizing
In the component configuration, you can only see the standard content. Only in the component customizing,
you can later see the enhancements that you did for a standard configuration. Moreover, only here you can
add enhancements to existing configurations.
Make sure that in transaction SICF, you activate the corresponding service. You can check this under the
path: sap → bc → webdynpro → sap → customize:component. In case the service is not active, let your
system administrator activate it. Otherwise, you cannot create any UI enhancements.
Personalization
When following this link, you get to the personalization settings for the specific application, that is, here you
can see all personalization settings of each authorized user as well as the general personalization settings for
the application that are valid for all authorized users.
In section Current View, you can find a link to the Component Configuration and Component Customizing that you
have marked with the mouse pointer to start the technical help. That is, it allows navigating to the configuration
and customizing of the UI component that currently has the focus.
To create enhancements, you need to start the corresponding user interface from the SAP user menu or from
within NWBC. Within the user interface, you can then use the mentioned technical help (as per NW 7.31).
In the current release of SAP Yard Logistics for S/4HANA, we introduce external business function interfaces as
standard SAP interfaces. They are remote function call enabled and can be compared with BAPIs (Business
Application Programming Interfaces).
These new interfaces play an important role in the technical integration and in the exchange of business data
between SAP Yard Logistics for S/4HANA and other SAP or non-SAP components. These RFC-enabled business
function interfaces enable you to integrate these components and are therefore an important part of developing
integration scenarios where multiple components are connected to each other, either on a local network or on the
Internet.
Caution
The external business function interfaces described in this chapter only support the transaction model
with a COMMIT WORK when they are called. For more details see [BAPITRCOMMIT].
Each function module has two BAdI calls used to extend the processing logic. The BAdIs are called before and
after the processing block (based on the BOPF processing logic blocks). You can find out the calling point by
checking the iv_before_selection importing parameter. If it has the value abap_true, you are before the
processing block. If it has the value abap_false, the calling point is after the main processing block.
You have two extension tables, EXTENSION_IN and EXTENSION_OUT for each function module. The extension
parameters are based on the BAPIPAREX structure.
The format of the data records in this table is determined by the BAPIPAREX structure. This structure contains
multiple data record fields (VALUEPART1, VALUEPART2 ...) and one field for the name of the help structure
(STRUCTURE). Since the data for each data record is written to the corresponding data record fields in parts one
after the other, a help structure is required for interpreting the data.
You find in the next chapters the BAdI for each function module of the business function interface.
This function module is used to create yard request or a yard order with items, products, date and time, reference,
item reference, dock appointment scheduling on item level, warehouse visit on item level, threshold on item level
and business partner. The document category can be used to differentiate between yard order or yard request
creation (see values for /sapyl/if_constants=>gcs_document_category).
The tables EXTENSION_IN and EXTENSION_OUT should contain the customer-specific data, which can be
processed by implementing the BAdI /SAPYL/BAPI_YO_CREATE.
This function module is used to update yard request or yard order with items, products, date and time, reference,
item reference, dock appointment scheduling on item level, warehouse visits on item level, threshold on item level,
checks and business partner.
The tables EXTENSION_IN and EXTENSION_OUT should contain the customer-specific data, which can be
processed by implementing the BAdI /SAPYL/BAPI_YO_UPDATE.
This function module retrieves the yard request or yard order headers based on the selection criteria provided.
The tables EXTENSION_IN and EXTENSION_OUT should contain the customer-specific data, which could be
processed by implementing the BAdI /SAPYL/BAPI_YO_GET_LIST.
This function module retrieves the yard request or yard order details based on the yard number, yard document
category and yard document number.
The tables EXTENSION_IN and EXTENSION_OUT should contain the customer-specific data, which can be
processed by implementing the BAdI /SAPYL/BAPI_YO_GET_DETAIL.
This function module executes the yard request or yard order action for the given document.
The tables EXTENSION_IN and EXTENSION_OUT should contain the customer-specific data, which could be
processed by implementing the BAdI /SAPYL/BAPI_YO_EXECUTE.
This function module updates the yard task with its items.
The tables EXTENSION_IN and EXTENSION_OUT should contain the customer-specific data, which can be
processed by implementing the BAdI /SAPYL/BAPI_YT_UPDATE.
This function module retrieves the yard task headers based on the selection criteria provided.
The tables EXTENSION_IN and EXTENSION_OUT should contain the customer-specific data, which can be
processed by implementing the BAdI /SAPYL/BAPI_YT_GET_LIST.
This function module retrieves the yard task details based on the yard number and yard task number.
The tables EXTENSION_IN and EXTENSION_OUT should contain the customer-specific data, which can be
processed by implementing the BAdI /SAPYL/BAPI_YT_GET_DETAIL.
This function module executes the selected yard task action for the given yard task.
The tables EXTENSION_IN and EXTENSION_OUT should contain the customer-specific data, which could be
processed by implementing the BAdI /SAPYL/BAPI_YT_EXECUTE.
This function module updates the weight, loading scheme, license plate number, country, products, and
thresholds of the transportation unit.
The tables EXTENSION_IN and EXTENSION_OUT should contain the customer-specific data, which can be
processed by implementing the BAdI /SAPYL/BAPI_YO_UPDATE.
This function module retrieves the yard transportation unit headers based on the selection criteria provided.
The tables EXTENSION_IN and EXTENSION_OUT should contain the customer-specific data, which can be
processed by implementing the BAdI /SAPYL/BAPI_YTU_GET_LIST.
This function module retrieves the yard transportation unit details based on the external yard transportation unit
number.
The tables EXTENSION_IN and EXTENSION_OUT should contain the customer-specific data, which can be
processed by implementing the BAdI /SAPYL/BAPI_YTU_GET_DETAIL.
This function module executes the selected yard transportation unit action for the given yard transportation unit.
The tables EXTENSION_IN and EXTENSION_OUT should contain the customer-specific data, which can be
processed by implementing the BAdI /SAPYL/BAPI_YTU_EXECUTE.
SAP Yard Logistics for SAP S/4HANA supports the integration of an IoT server to pull measurement data
proactively or receive measurement data triggered from an IoT server (Or IoT device). The solution also supports
integration with a Geofence server for automating yard operations. For more information on settings and process
examples, refer to the How to Guide delivered with SAP Note 3343964.
6.1 Extension
The IoT solution in Yard Logistics for SAP S/4HANA can also be enhanced to fulfill customer-specific
requirements.
IOT Settings
Source /SAPYL/IOTSRCGEN
Package /SAPYL/IOTGENPCK
Property /SAPYL/IOTGPRSTP
Thing /SAPYL/IOTGTHING
Geofence Settings
Geofence /SAPYL/IOTGEOFEN
Note
As this method is now obsolete, the logic in this method is no longer in the support scope.
The following is a dummy implementation to simulate the receipt of a dynamic temperature value from an IoT
server.
A smart IoT device or IoT server can send measurement data to the solution server. Following objects are used to
handle the inbound data:
Gateway Project: /SAPYL/GEN_IOT_MEASUREM_ACTION
Data Provider Extension Class: /SAPYL/CL_GEN_IOT_MEAS_DPC_EXT
Method: /SAPYL/CL_GEN_IOT_MEAS_DPC_EXT=>MEASUREMENTACTIO_CREATE_ENTITY is called to
handle the inbound measurement data.
As part of the IoT geofence function, a thing (= transportation unit) that enters or exits a predefined geofence will
trigger a geofence event, which will be processed by SAP yard Logistics for SAP S/4HANA in the backend using
class /SAPYL/CL_GEN_GEOFNC_ACTN_PRC. For more information about the geofencing configuration and the
detailed data sent by this action, refer to the how to guide mentioned in section 6 above.
Based on the content triggered by the entry and exit actions, and the IoT configuration made beforehand, the
backend logic maps the thing and geofence information to the yard internal data for the transportation unit, yard
order and storage bin. The standard mapping logic is defined in class /SAPYL/CL_IOT_GEN_ACTN_PREPRC.
For extension of EH&S functionality for Yard Logistics the following BAdIs can be used:
/SAPYL/BADI_DG_DETERMINE_TU - BAdI for Dangerous Goods Data Redetermination for Transportation
Unit
/SAPYL/DG_CHECK - BAdI for Dangerous Goods Checks (with a sample for a separation check)
/SAPYL/DG_CHECK_CICO - BAdI for Dangerous Goods Checks during Check-In/Check-Out (with a sample)
During destination location determination for Yard Task several checks for dangerous good run:
check on allowed hazardous materials
check on maximum storage quantity
check maximum stacking height for containers
All these checks run within the BAdI for location determination /SAPYL/LOCATION_DETERM. This BAdI is
triggered with the set of prepared products, which are collected in the BAdI /SAPYL/HAZARD_RATING_DETERM.
Both BAdIs are triggered within the determination DET_DEST_LOCATION of BO Yard Task /SAPYL/YARD_TASK,
node ROOT.
During content maintenance in Yard Order and Transportation Unit, dangerous goods mater data is automatically
retrieved based on product and dangerous good regulation.
A possibility to overwrite the product information is foreseen for both BOs.
For BO /SAPYL/YARD_ORDER a BAdI /SAPYL/BADI_DG_DETERMINE_YO is used. The interface provides
data of Yard Order Root, Yard Order Item, and products. BAdI is triggered in the determination
DET_PRODUCT_GET_PRODUCT_T of BO /SAPYL/YARD_ORDER, node PRODUCT.
For BO /SAPYL/YARD_TU a BAdI /SAPYL/BADI_DG_DETERMINE_TU is used. The interface provides data of
the nodes ROOT, SR_ACT and products. BAdI is triggered in the determination
DET_PRODUCT_GET_PRODUCT_T of BO /SAPYL/YARD_TU, node PRODUCT.
During check-in/check-out posting checks should happen that control whether the entrance/leaving the yard is
allowed or not. To support this functionality a BAdI /SAPYL/DG_CHECK_CICO is used. Within this BAdI, the DG
For extending Fiori (SAPUI5) application, you can use the concept of extension points. The main idea of this
approach is to have some special tags in the code (called extension points), where new Views or Fragments can
be inserted.
Apart from specifying new Views/Fragments/Controllers, you need to make some changes in the component file,
which contain basic information of Views/Controllers available in the application. For that, you need to extend
Component.js file.
You can find additional information about the used concepts in [SCNFIORIEXT].
Currently, in Yard Task application you can extend the following functionalities:
Form fields that are defined in TasksTab.view.xml
New tabs can be added to Details.view.xml
Extended component can have description of Views (Fragments) and Controllers, which is used in extended
application. The main idea is to create new Component.js file, which can be used as a starting point for the
application. This new Component.js should inherit from the standard app’s Component.js.
Additional Information: Example: Component Configuration
In the example below, initial configuration for form fields/tabs extension is placed:
jQuery.sap.declare("com.sap.cd.yl.ui.manage.tasks.customer.Component");
jQuery.sap.require("com.sap.cd.yl.ui.manage.tasks.Component");
com.sap.cd.yl.ui.manage.tasks.Component.extend("com.sap.cd.yl.ui.manage.tasks.customer
.Component", {
metadata : {
As shown in this example, you can also use some custom formatter. As those fields are created for displaying the
data, this will be better if only Label and Text controls will be added.
fieldNameInEntity is the name of a new property added to YardTaskSet entity
To see how you can enhance the translation texts, refer to Handling Localized Texts for Extended Applications
For further information, see View Extension.
The configuration of this extension point was mentioned in section 2 Technical Enhancements. In the
configuration, it is specified that the fragment should use specific fragment. The content of the fragment is as
follows:
<core:FragmentDefinition
xmlns="sap.m"
xmlns:l="sap.ui.layout"
xmlns:mvc="sap.ui.core.mvc"
xmlns:core="sap.ui.core">
<IconTabFilter
id="customTabFilter"
text="Custom Tab"
icon="sap-icon://expand"
key="customTab">
<content>
<mvc:XMLView id="CustomTabContent"
viewName="com.sap.cd.yl.ui.manage.tasks.view.CustomTabContent"/>
</content>
</IconTabFilter>
</core:FragmentDefinition>
<mvc:View
controllerName="com.sap.cd.yl.ui.manage.tasks.view.CustomTabContent"
xmlns:mvc="sap.ui.core.mvc"
xmlns:l="sap.ui.layout"
xmlns="sap.m">
You need to also create an appropriate controller (CustomTabContent) if some events need to be handled for the
view.
sap.ui.controller("com.sap.cd.yl.ui.manage.tasks.view.CustomTabContent", {
onInit: function() {
},
press: function(){
},
onExit: function() {
}
});
Currently, in Self Check-In application you can extend the following functionalities:
New steps can be added to Wizard View
Replace a step in Wizard View
Replace or add content in a step fragment
Add a new form in Summary View
Replace or add content in a form in Summary View
New UI controls can be added to the header bar in Wizard and Summary Views
New UI controls can be added to the footer bar in Summary View
Extended component can have description of Views (Fragments) and Controllers, which is used in extended
application. The main idea is to create new Component.js file, which can be used as a starting point for the
application. This new Component.js should inherit from the standard app’s Component.js.
Additional Information: Example: Component Configuration
In the example below, initial configuration for form fields/tabs extension is placed:
jQuery.sap.declare("com.sap.cd.yl.ui.selfcheckin.customer.Component");
jQuery.sap.require("com.sap.cd.yl.ui.selfcheckin.Component");
com.sap.cd.yl.ui.selfcheckin.Component.extend("com.sap.cd.yl.ui.selfcheckin.customer.C
omponent", {
metadata : {
"customizing": {
"sap.ui.viewExtensions": {
"com.sap.cd.yl.ui.selfcheckin.view.Wizard": {
"customFirstWizardStep": {
"className": "sap.ui.core.Fragment",
"fragmentName":
"com.sap.cd.yl.ui.selfcheckin.view.fragments.CustomFirstStep",
"type": "XML"
}
},
"com.sap.cd.yl.ui.selfcheckin.view.fragments.AdditionalInfo": {
"customAdditionalInfoFields": {
"className": "sap.ui.core.Fragment",
"fragmentName":
"com.sap.cd.yl.ui.selfcheckin.view.fragments.CustomInfo",
"type": "XML"
}
}
}
}
}
});
For the described extended Component, there is an assumption used that Component is placed in a folder named
customer and this module is visible for SAPUI5. In Fiori Launchpad, you need to specify an appropriate
component path in navigation targets configuration. See Customizing Navigation Targets.
A new step can be added in any place within Wizard.view.xml. Content needs to be specified according to
enhancement requirements.
In the example above you can find that title is connected to Resource Model (i18n). To see how you can enhance
the translation texts, refer to Handling Localized Texts for Extended Applications
For further information, see View Extension.
It is required to create a new controller (CustomController) in order to handle view/fragment events and data
binding.
sap.ui.controller("com.sap.cd.yl.ui.selfcheckin.controller.CustomController", {
onInit: function() {
},
onExit: function() {
}
});
In order to replace a step In Wizard.view.xml, extension points with default content are specified:
<core:ExtensionPoint name="customInfoWizardStep">
<WizardStep id="selfCheckInAdditional" title="{i18n>additionalInfoTitle}">
<content>
...
</content>
</WizardStep>
</core:ExtensionPoint>
In the example below, the fragment is shown (this fragment needs to be created corresponding to the path
defined in extended Component.js):
<core:FragmentDefinition
xmlns="sap.m"
xmlns:core="sap.ui.core">
<WizardStep title="{i18n>newAdditionalInfoStepTitle}">
<content>
...
</content>
</WizardStep>
</core:FragmentDefinition>
For more information regarding extension points with default content see View Extension.
Each step is represented by a separate fragment. At this moment, three are available:
Identification.fragment.xml, AdditionalInfo.fragment.xml and Questionnaire.fragment.xml.
It is possible to add new UI elements to each fragment or completely redesign existing functionality with new
content.
fieldNameInModel is the name of a new property added to local JSON model and contains a value of added
field.
For further information, see View Extension.
In the example below, the fragment is shown (this fragment needs to be created corresponding to the path
defined in extended Component.js):
<core:FragmentDefinition
xmlns="sap.m"
xmlns:form="sap.ui.layout.form"
A new form can be added in any place within Summary.view.xml. Content needs to be specified according to
enhancement requirements.
For further information, see View Extension.
In order to replace content of a form In Summary.view.xml, extension points with default content are specified:
<form:content>
<core:ExtensionPoint name="customSummaryIdentification">
<Label id="idSummaryIdent" text="{ui>/identificationLabel}"/>
<Text text="{ui>/selectedNumber}"/>
</core:ExtensionPoint>
</form:content>
In the example below, the fragment is shown (this fragment needs to be created corresponding to the path
defined in extended Component.js):
<core:FragmentDefinition
xmlns="sap.m"
xmlns:core="sap.ui.core">
<Label text="New Field" />
<Text text="{ui>/fieldNameInModel}"/>
</core:FragmentDefinition>
As those fields are responsible only for displaying the data, this will be better if only Label and Text controls will be
added. fieldNameInModel is the name of a new property added to local JSON model.
To add additional fields and leave already implemented content, it is needed to copy existing fields and adjust
them according to new requirements. For instance, the example of this implementation:
<core:FragmentDefinition
xmlns="sap.m"
xmlns:core="sap.ui.core">
<Label id="idSummaryIdent" text="{ui>/identificationLabel}"/>
<Text text="{ui>/selectedNumber}"/>
Extension points for new UI controls to be added to the header bar are specified In Wizard.view.xml and
Summary.view.xml:
<core:ExtensionPoint name="customWizardHeaderExt"/>
<core:ExtensionPoint name="customSummaryHeaderExt"/>
For instance, new button can be added with the following structure (this fragment needs to be created
corresponding to the path defined in extended Component.js):
<core:FragmentDefinition
xmlns="sap.m"
xmlns:core="sap.ui.core">
<Button text="New Header Button" press="newHeaderPressEventHandler"/>
</core:FragmentDefinition>
Extension points for new UI controls to be added to the footer bar are specified only In Summary.view.xml:
<core:ExtensionPoint name="customSummaryFooterExt"/>
In the example below, the fragment is shown (this fragment needs to be created corresponding to the path
defined in extended Component.js):
<core:FragmentDefinition
xmlns="sap.m"
xmlns:core="sap.ui.core">
<Button text="New Footer Button" press="newFooterPressEventHandler"/>
</core:FragmentDefinition>
SAP Yard Logistics for S/4HANA was augmented with Virtual Data Model (VDM) in order to meet the
requirements of the product which is part of S/4HANA Business Suite. This Model contains Basic CDS views
which can be used by application developers as a starting point for creation of new reporting functionality and
analytical applications.
9.1.1 Concept
Core Data Services (CDS) is an infrastructure that developers can use to create semantically rich (persistent)
data models. It enhances SQL to allow defining and consuming these data models in applications, thereby
improving productivity, consumability, performance and interoperability.
9.1.2 Annotations
A CDS annotation (or annotation for short) enables you to add ABAP and component-specific metadata to the
source code of any CDS entity.
A CDS data definition is an ABAP repository object. It is created using the CDS DDL of the ABAP CDS in data
definition language (DDL) source code.
Data definitions define CDS entities that can be accessed as a data type in ABAP programs and as a data source in
reading ABAP SQL statements.
ABAP Core Data Services (CDS) has its own authorization concept CDS access controls using a data control
language (DCL). The authorization concept of ABAP CDS uses conditions defined in CDS and can draw upon
classical (PFCG) authorizations to check the authorizations of users.
The CDS authorization concept coexists with the classical authorization concept of Application Server ABAP (AS
ABAP). You can use the concepts together or independently from another. The classical authorization concept is
All nodes of Yard Logistics Business Objects are presented by CDS views. Each CDS view contains all persistent
fields of the Business Object node. Transient nodes and fields are not included in the model since it only consists
from Basic Views which should contain only raw data directly from DDIC tables/views. Key field of each CDS view
is db-key of corresponding node of Business Object. Node hierarchy is reflected by CDS views associations and
annotations.
Example: Yard Order and Yard Order Item CDS views are linked via associations and annotations.
define view I_YardOrder
as select from /sapyl/yo_hdr
/* Business Object related Node Associations*/
association [0..*] to I_YardOrderItem as _YardOrderItem on
$projection.YardOrderUUID = _YardOrderItem.YardOrderUUID
Main master data tables of the Yard Logistics solution are also covered by CDS views. Associations to this master
data views are provided in the views which present Business Object Nodes.
Example: Yard Number CDS view as association to field Yard
/* Foreign Key and Text Associations */
association [0..1] to I_YardNumber as _YardNumber on
$projection.Yard = _YardNumber.Yard
If the field of CDS view has set of values listed in the domain, then the association with this field is created and
additional domain view defined.
Example: Yard Order Lifecycle Status CDS view.
association [0..1] to I_YardOrderLifecycleStatus as _YardOrderLifecycleStatus on
$projection.YardOrderStatus = _YardOrderLifecycleStatus.YardOrderLifecycleStatus
Domain view:
@EndUserText: {label: 'Yard Order Lifecycle Status'}
@Analytics: {dataCategory: #DIMENSION,
dataExtraction: {enabled: true}}
@ObjectModel: {representativeKey: 'YardOrderLifecycleStatus',
usageType: {serviceQuality: #A,
sizeCategory: #S,
dataClass: #CUSTOMIZING}}
@VDM: {viewType: #BASIC}
@AbapCatalog: {compiler: {compareFilter: true},
/* Associations */
_Text
}
where
SAPDataDictionaryDomain = '/SAPYL/D_YO_LIFECYCLE_STATUS';
For each master data or domain view corresponding text view is created and linked via association.
Example: Yard Order Lifecycle Status Text CDS view.
@EndUserText: {label: 'Yard Order Lifecycle Status Text'}
@ObjectModel: {representativeKey: 'YardOrderLifecycleStatus',
dataCategory: #TEXT,
usageType: {serviceQuality: #A,
sizeCategory: #S,
dataClass: #CUSTOMIZING}}
@VDM: {viewType: #BASIC}
@AbapCatalog: {compiler: {compareFilter: true},
sqlViewName: 'IYOLIFESTATUST'}
@AccessControl: {authorizationCheck: #NOT_REQUIRED}
@ClientHandling.algorithm: #SESSION_VARIABLE
/* Associations */
_YardOrderLifecycleStatus,
_Language
}
where
SAPDataDictionaryDomain = '/SAPYL/D_YO_LIFECYCLE_STATUS';
The Yard Logistics CDS view, which presents the business object node has its own access control defined with
same name as the CDS view to which it is related. Access controls are linked to the authorization objects that
were initially created for the BOBF model in former releases. Yard order related views are linked to the
/SAPYL/YO authorization object and its attributes, Yard task views are linked to /SAPYL/YT the authorization
object and attributes, Yard transportation unit related views are linked to /SAPYL/YTU the authorization object
and attributes.
Example: Yard order access control:
@EndUserText.label: 'Authorization for I_Yard_Order'
@MappingRole: true
define role I_Yardorder {
grant select on I_Yardorder
where ( Yard,
YardOrderType,
YardDocumentCategory ) =
aspect pfcg_auth ( /SAPYL/YO,
/SAPYL/YN,
/SAPYL/YOT,
/SAPYL/DC,
ACTVT = '03',
BO_SERVICE = '*' );
}
All views that are modeled as dependent form Yard Order view has inherited Access
Control:
CDS views and authorizations are stored in package VDM_SAPYL, we can see the detail in ADT (ABAP
Development Tool).
A CDS view extension is a transportable extension of a CDS view that can be used to add fields from the entities
used by the view (and other clauses) to the view without making modifications.
You can use the following CDS view extensions to extend CDS entities:
CDS Views Extension: to add new elements to a CDS view from its underlying data source or define new
associations for the CDS view.
Metadata Extensions: to overwrite existing or add new CDS annotations to a one or more elements or
parameters of a CDS entity.
You can find additional information about the used concepts in [HELPCDS].
Business Rule Framework plus (BRFplus) provides a comprehensive application programming interface(API) and
user interface (UI) for defining and processing business rules. It allows you to model rues in an intuitive way and to
reuse these rules in different applications.
Here are some examples of scenarios in which applications use BRFplus:
Validation of data and detection of invalid data and states
Matching responsibilities, suitable products, and locations
Calculation of costs, overhead, and risks
BRFplus as a technical configuration engine
Major BRFplus components include application, function, catalog, expression, action, data object.
The interface between a business rule modeled with BRFplus and an application using that rule is provided by a
BRFplus function. The function serves as a container for the entire business logic of a rule, no matter how complex
it may be. Rules are implemented as expressions which are assigned to a function. The rule input is known as
context and the rule output is called result. Context and result consist of data objects of one of the following types:
element, structure, and table.
BRFplus supports features such as simulation, trace, transport, XML export and import.
Within SAP Yard Logistics, you can use BRFplus to create and process yard orders and yard tasks. You can define
rulesets in BRFPlus for creating yard tasks and executing follow-up actions on them. That helps decouple
technical and business aspects of your interfaces, thus enabling business users to perform error handling.
BRFplus in Yard Logistics makes step-by-step decisions to process flow for an overweight load based on defined
business ruleset. For instance, a loaded truck is routed to a weighbridge in order to check the compliance of the
gross weight with the local rules. During the validation some overweight is determined and the move to departure
is denied. A Yard Task back to the loading will be automatically created based on the defined business ruleset.
With the rich set of functionalities of business rulesets, it's possible to trigger easy and complex follow-up
process, for example including calling of additional actions via function modules. You can create Yard Tasks with
different item assignments during any planning processes, which can significantly improve processing in the yard.
In order to support the customers and to illustrate the BRFplus capabilities, SAP Yard Logistics comes with some
sample rues, that could be used as basis for custom specific rulesets. Please do not change them or use them for
business purposes. It is just an example. User can copy the current example to customer namespace and provide
own master data.
TRCK TRCK X
TRCK MV01 X
In transaction BRF+, go to application /SAPYL/DYN_YT_SYS and enable rulesets on tab Assigned Rulesets for each function
from the following table:
Yard Order CreatIn Create CreatIn CreatO CheckI CompI ActvOu ActDyn
No. Type bYR OutYR bYO utYO nIYO nbYO tbYO CR
TRCK TRCK X
BADI: /SAPYL/YO_DYNAMIC_YT_OPERATION
In Customizing for Yard Logistics, the path is as below:
In the BAdI, you can call the BRFplus function to return the execution result of the ruleset and perform the yard
task creation and status change. Fallback class is embedded. You can create your own implementation.
BADI: /SAPYL/YT_DYNAMIC_YT_OPERATION
In the BAdI, you can call the BRFplus function to return the execution result of the ruleset and perform the yard
task creation and status change. Fallback class is embedded. You can create your own implementation.
BADI: /SAPYL/BADI_DET_GENER_OPPOS_YO
With UI adaptation at runtime (RTA), key users can adapt the UI of UI5 apps in the SAP Fiori launchpad to fit the
particular tasks and processes at their company - intuitively and without having to create new code, at runtime of
the apps.
11.1.1 Prerequisites
The app contains SmartForm or ObjectPage controls with stable IDs, these can be adapted at runtime.
You run the app on a desktop computer or laptop in Google Chrome or in Microsoft Internet Explorer version
11 or higher.
Your administrator has assigned you to the authorization role SAP_UI_FLEX_KEY_USER.
UI Adaptation at runtime provides keyboard shortcuts to improve accessibility and speed up your work.
If you work with a test and productive system, as recommended, transport your adaptations to the productive
system to make them available for all users of the app. In the productive system, the transport function is inactive
as your adaptations are available when you exit the adaptation mode.
RTA has been enabled for UI5 apps: Self Check-In, Yard Task Execution, Ad hoc Yard Task and Berth Planning in
SAP Yard Logistics 2009 for SAP S/4HANA and SAP Yard Logistics 2021 for SAP S/4HANA. The Berth Planning
app is available in SAP Yard Logistics 2021 for SAP S/4HANA only.
Select the Adapt UI option from the right corner of the user menu to start the UI adaptation. If this button is not
displayed, contact your user administrator to add the role SAP_UI_FLEX_KEY_USER for your user.
1) UI Adaptation: Only when this option is selected, the key user can start the UI adaptation. Actions like
Rename, Add: Field, Remove and Cut etc. can be performed by right-clicking on the UI elements. For
allowed actions, please refer to [FIORIRTA].
Please be aware that different UI elements may have different allowed actions based on its type, the
manner of its implementation, and its data binding etc.
2) Navigation: Navigate between different tabs, collapse or expend UI elements etc.
3) Save & Exit: Save the UI adaptation and exit.
4) Save As: Save the UI adaptation as a variant with which a new tile can be created and deployed in the Fiori
Launchpad
5) Manage App Variants: Manage the variant from step 4).
The information contained herein may be changed without prior notice. Some software products marketed by SAP SE and its distributors contain proprietary software components of other software vendors.
National product specifications may vary.
These materials are provided by SAP SE or an SAP affiliate company for informational purposes only, without representation or warranty of any kind, and SAP or its affiliated companies shall not be liable
for errors or omissions with respect to the materials. The only warranties for SAP or SAP affiliate company products and services are those that are set forth in the express warranty statements
accompanying such products and services, if any. Nothing herein should be construed as constituting an additional warranty.
In particular, SAP SE or its affiliated companies have no obligation to pursue any course of business outlined in this document or any related presentation, or to develop or release any functionality
mentioned therein. This document, or any related presentation, and SAP SE’s or its affiliated companies’ strategy and possible future developments, products, and/or platform directions and functionality
are all subject to change and may be changed by SAP SE or its affiliated companies at any time for any reason without notice. The information in this document is not a commitment, promise, or legal
obligation to deliver any material, code, or functionality. All forward-looking statements are subject to various risks and uncertainties that could cause actual results to differ materially from expectations.
Readers are cautioned not to place undue reliance on these forward-looking statements, and they should not be relied upon in making purchasing decisions.
SAP and other SAP products and services mentioned herein as well as their respective logos are trademarks or registered trademarks of SAP SE (or an SAP affiliate company) in Germany and other
countries. All other product and service names mentioned are the trademarks of their respective companies. See www.sap.com/copyright for additional trademark information and notices.