Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Solutions 16 EP6
(16.2.8)
SDK and API Documentation
Contents
1 Introduction ................................................................................................ 4
1.1 About Extended ECM for SAP Solutions ............................................. 4
1.2 About this document ............................................................................ 4
Target audience......................................................................... 4
Related documentation ............................................................. 4
2 Concepts ..................................................................................................... 5
2.1 What is Extended ECM for SAP Solutions .......................................... 5
2.2 Business workspace ............................................................................ 5
2.3 Business attachment ........................................................................... 5
2.4 Business documents............................................................................ 6
2.5 Records management for SAP ............................................................ 6
3 Basic enhancements ................................................................................. 6
3.1 Introduction .......................................................................................... 6
3.2 Document property providers .............................................................. 7
Best practices .......................................................................... 10
Generic property provider ........................................................ 11
Support of Additional Attributes in GOS Attachment List ........ 12
Support of ArchiveLink PLUS attributes .................................. 13
3.3 Business object property providers ................................................... 13
Cook book for workspace property providers .......................... 15
Properties of workspace property providers ............................ 22
Best practices .......................................................................... 30
BOR API interface ................................................................... 32
Using the asynchronous methods ........................................... 32
3.4 Fiori apps for Archiving and Document Access ................................. 33
OpenText ArchiveLink PLUS Business Documents Component
33
Business Documents Perspective Views for Business Center 38
3.5 Fiori apps for Extended ECM ............................................................ 39
OpenText Extended ECM Business Workspace Component . 39
Business Workspace Perspective View for Business Center . 43
Properties ................................................................................ 43
3.6 Other Extended ECM-specific web services (APIs) .......................... 44
Enterprise Core Library Web Service ...................................... 45
Enterprise Content Library Web Service ................................. 45
Content Server Member Web Service..................................... 46
Directory Services Authentication Web Service ...................... 46
4 Business Attachment enhancements .................................................... 46
4.1 Enhancements on SAP...................................................................... 46
Introduction .............................................................................. 46
SAP BAdIs ............................................................................... 46
4.2 Enhancements on Content Server .................................................... 48
Introduction .............................................................................. 48
1 Introduction
1.1 About Extended ECM for SAP
Solutions
The purpose of Extended ECM for SAP Solutions is to integrate the SAP world
into the ECM world. In general, SAP ERP manages transactional processes.
Extended ECM for SAP Solutions extends these processes with ECM
capabilities such as document management and records management.
Target audience
The manual is written for developers who want to enrich their scenarios with
special functionality. To use it, you should have programming experience in
either OScript or ABAP. You should also be familiar with at least the Content
Server Builder or Oclipse and should be familiar with the Content Server’s
basic architectural concepts. Furthermore, you should have basic SAP
experience. For integrations with SAP Fiori you should have knowledge of the
UI development toolkit for HTML5 (SAPUI5) or at least basic understanding of
HTML5 and JavaScript.
Related documentation
For further information, see the following sources:
2 Concepts
2.1 What is Extended ECM for SAP
Solutions
With Extended ECM for SAP Solutions you can link SAP Business Suite with
its structured content and unstructured content managed by OpenText ECM.
Basically, SAP consists of so called “business objects” with data, roles,
transactions, and events, whereas the ECM world, here represented by the
Content Server, structures the content with versions, categories, and records
management.
A tight connection publishes aspects of SAP like data, roles, and events to the
unstructured content in ECM, and vice versa business object in SAP pay
attention to the ECM facets.
In principle Extended ECM for SAP Solutions has three main concepts:
Business Workspaces, Business Attachments, and Records Management for
SAP which are explained in detail below.
3 Basic enhancements
3.1 Introduction
In general, Extended ECM for SAP Solutions property providers extract the
metadata of SAP business objects in order to make them available for record
declaration, Business Workspaces, and Business Attachments. A single
metadata attribute is called “property” in the following sections.
/OTX/RM_CL_PROPERTY_PROVIDER
/OTX/RM_CL_PP_PRINTLIST /OTX/RM_CL_PP_ALINK
/OTX/RM_CL_PP_SD
Figure 1 shows that the base class for all document property providers is
/OTX/RM_CL_PROPERTY_PROVIDER. /OTX/RM_CL_PP_PRINTLIST is the
print list document property providers and /OTX/RM_CL_PP_ALINK is the
basic ArchiveLink document property providers. /OTX/RM_CL_PP_SD is a
sample property provider for links involving Sales-and-Deliveries business
objects. Any property provider for an ArchiveLink link should be a child of
/OTX/RM_CL_PP_ALINK because the ArchiveLink property provider defines
the following mandatory system properties:
• ArchiveLink.Archive ID
• ArchiveLink.Assignment Count
• ArchiveLink.Business Object Type
• ArchiveLink.Classification
• ArchiveLink.Client
• ArchiveLink.Creator†
• ArchiveLink.Description†
• ArchiveLink.Document ID
• ArchiveLink.Document Type
• ArchiveLink.Expiry Date
• ArchiveLink.Filename†
• ArchiveLink.Object ID
• ArchiveLink.Other Linkages
• ArchiveLink.Record Date
• ArchiveLink.Reserved
• ArchiveLink.Storage Date†
1 SUBPROPS stands for sub-properties and is only defined when the property
data type is a Set. A sub-property is part of a property group and is the SAP
equivalent to a Content Server set attribute.
2 Deprecated: Always set to TRUE.
Note: OpenText recommends that you always use DateTime and never use
Date. Both Date and DateTime values must be in UTC and must
have the following format: 2008-01-22T09:01:21.
Best practices
Here are some best practices for implementing document property providers:
6. Handle all errors, for example, by always verifying BAPI return codes:
IF ls_return-type IS NOT INITIAL AND ls_return-type <> 'S'.
l_error_message =
'Could not read data of Equipment ' &
'with number = &1. &2'. "#EC
NOTEXT
REPLACE '&1' IN l_error_message WITH ls_equi-equipment.
REPLACE '&2' IN l_error_message WITH ls_return-message.
CREATE OBJECT ls_equi-exception
EXPORTING
m_sap_object = ls_toav0-sap_object
m_object_id = ls_toav0-object_id
m_archiv_id = ls_toav0-archiv_id
m_arc_doc_id = ls_toav0-arc_doc_id
m_ar_object = ls_toav0-ar_object
m_ar_date = ls_toav0-ar_date
m_error_message = l_error_message.
ENDIF.
7. To perform date-time format conversion, always use the inherited utility
methods:
• CONVERT_DATS_TO_STRING
• CONVERT_DATSTIMSTZ_TO_STRING
Starting with 16.2 EP4 (2018-03; that is OTEXRL 1620_700 support package
0001) those additional attributes can be used during document declaration.
For this a SAP_BASIS release 740 and the application of SAP Note 2515351
are required.
Currently, Extended ECM for SAP Solutions does not deliver property
providers, which already convey ArchiveLink PLUS attributes to properties.
Examples for workspace property providers can be found in the SAP package
/OTX/RM_ERP that could be downloaded at OTDN. Figure 5 shows the
workspace property provides that are provided with software component
OTEXRL.
they are being used and then use the field names and values of this table as
property names and values.
Note:
Generic Property Provider /OTX/RM_GEN_PP_CL_BO replaces
/OTX/RM_GEN_PP_BO, which is obsolete with version 16 EP6 (16.2.4.).
If you model a single value attribute in a category, you need to add a data
element into you DDIC structure. To fill an attribute set, you would add a
structure to your DDIC structure. For using a multiline attribute, you need a
table with a line type of one data element. For a multiline attribute set, you
would add a table type with line type structure. If you have a set with just one
line (for instance for a nicer layout), you can handle it also like single value
attributes.
Name your components in your DDIC structure like in the fields used in the
called methods or functional modules that you use to retrieve the business
object data.
See Table 2 for the details of the attribute type conversion and special Data
Elements for generic property provider.
Multilingual attributes
The generic property provider supports multilingual attributes. These are used
in multilingual workspace names (document names in document declarations).
In the multilingual attribute structure, you add the language code / value pairs
to the LANG_VALUES table. The VALUE component can be filled with a
default value.
Please note that multilingual attributes can only be used for single attributes,
not for multiline or set attributes.
Reason for this is, that Category Attributes in Content Server are not
multilingual, therefore multilingual attributes can only be used for the
workspace names (document names in document declaration).
METHOD get_struct_name.
pr_struct_name = '/OTX/RMPPM_S_BUCKET_INFO'.
ENDMETHOD.
Alternatively, if you want to fill the DDIC structure by different methods in your
class, define an instance attribute in your class.
Take this code snipped to dynamically return DDIC structure of the attribute
me->ms_data that makes it easy to exchange the DDIC structure.
METHOD get_struct_name.
lo_str_desc ?= cl_abap_structdescr=>describe_by_data
( me->ms_data ).
lv_type_name = lo_str_desc->get_relative_name( ).
pr_struct_name = lv_type_name.
ENDMETHOD.
If you property provider provides any relation to a business object that is not yet
customized, the execution of the property provider is aborted. Therefore, our
recommendation would be to redefine the method. If you want to use cross
application business workspaces - you always need to redefine this method.
Call the super method to get the table with business property definitions and
redefine the other exporting parameters according to your needs.
METHOD get_property_defs.
ls_relation-type = 'BUS2032'.
" Sales Order
APPEND ls_relation TO pet_allowed_child_types_ext.
ENDMETHOD.
METHOD change_attr_def.
FIELD-
SYMBOLS: <ls_attr_def> TYPE REF TO /otx/rm_wsci_s_attr_
def.
ENDMETHOD.
Business property
If you want to visualize or use the metadata of business objects in the business
workspace, you can transfer the metadata as business property of the SAP
system to the category attributes in the Content Server.
Attributes can be filled with the business property delivered by the workspace
property provider that represents metadata of the SAP business object. For
that purpose, the workspace property provider delivers a list of business
properties of structure type /OTX/RM_WSCI_S_PROPERTY. It contains 4
components:
Component DEF contains the definition of a business property. Here the key,
data type, length, multi value indicator and sub-business properties for a set
are defined.
If this is too complicated, you can use the integration interface of the
generic property provider that fills the structure automatically.
METHOD get_data.
...
CLEAR ls_sales_document.
ls_sales_document-vbeln = pis_bor-id.
APPEND ls_sales_document TO lt_sales_document.
METHOD get_data.
...
" Provide users and its roles for the project
CLEAR: ls_roles_users.
LOOP AT lt_staffing ASSIGNING <fs_staffing>.
CLEAR: lv_user_id.
ls_roles_users-role = lv_role_name.
APPEND ls_roles_users TO pet_roles_users.
...
ENDMETHOD.
To automatically add the user to the business workspace role, the role needs to
exist in the business workspace. The best way would be to add the role to the
template that is used for the business workspace creation.
Relations
If a business object is related to another business object, you can create a
parent-child relation between these two business workspaces that allows users
to easily navigate to the documents in the related business workspace. A
parent-child relation is bidirectional association between two business
workspaces.
For instance, a customer could have several sales orders; so the customer's
business workspace is handled as parent and the sales order's business
workspace as child.
To use relations, the child relation and parent relation to the desired business
object type needs to be defined as allowed. You need to set the external
system ID, if the related business workspace references a business object in
another system; otherwise you can leave it empty because it is set
automatically to the system ID of the current system.
METHOD get_property_defs.
...
" Provide allowed parent and child relations for
customer
ls_relation-type = 'KNA1'.
" Customer
APPEND ls_relation TO pet_allowed_parent_types_ext.
APPEND ls_relation TO pet_allowed_child_types_ext.
ls_relation-type = 'BUS2032'.
APPEND ls_relation-
type TO pet_allowed_child_types_ext. " Sales Order
...
ENDMETHOD.
In the method that provides the properties, you need to provide information
about the relation like business object type, id and optionally external system.
Use the same external system ID like you used in in the method that defines
the property.
METHOD get_data.
...
" Provide relation to sales order
CLEAR: ls_relation.
ls_relation-type = 'BUS2032'.
ls_relation-id = lv_sales_order_id.
ls_relation-external_system_id = sy-sysid.
APPEND ls_relation TO pet_children_ext.
...
ENDMETHOD.
Please use the extended variant with appendix '_EXT' because it could handle
relations across different systems; the other one is obsolete.
A scenario could be a system landscape with two SAP systems, for instance a
SAP ERP system working with customers (KNA1) and a SAP TM system
working with business partners (BUS1006). In this business scenario, the
debtor is created in SAP ERP as customer and in SAP TM as business partner.
Since both business objects represent the same debtor, you like to have just
one business workspace for both business objects; therefore you use cross-
application business workspace concept. The customer and the business
partner share a business workspace.
METHOD get_property_defs.
...
" Provide cross application business object for
customer
ls_ident_bus_obj-type = 'BUS1006'.
" Bus. Partner
ls_ident_bus_obj-external_system_id = me->mv_sysid.
APPEND ls_ident_bus_obj
TO pet_allowed_ident_busobj_types.
...
ENDMETHOD.
In the method that provides the properties, you need to provide information
about the identical business object like business object type, id and optionally
external system. Use the same external system ID like you used in in the
method that defines the property.
METHOD get_data.
...
" Provide identical business object
CLEAR: ls_iden_bus_obj.
ls_iden_bus_obj-type = 'BUS1006'.
" Bus. Partner
ls_iden_bus_obj-external_system_id = me->mv_sysid.
ls_iden_bus_obj-id = lv_partner_id.
APPEND ls_iden_bus_obj
TO pet_identical_business_objects.
...
ENDMETHOD.
Composite workspace
If you have business object types that depends on each other and cannot stand
alone, you could use the composite workspace concept to represent this
dependency for business workspaces. Composite workspaces are similar to
nested business workspace but include additional functionality, for more
information about the functionality, see the customizing guide.
A common example could be SAP EAM, where you have the business objects
maintenance order and maintenance order operation. The maintenance order
operations have a part-of relation to the maintenance order; they cannot stand
alone.
Both property providers that are involved in the composite business workspace
need to provide the information about the composition.
In the example, you see how to provide information in the parent workspace
property provider about the children.
METHOD get_data.
...
" Provide composite children
LOOP AT lt_operation INTO ls_operation.
CLEAR: ls_child.
ls_child-type = 'AFVC_PM'.
ls_child-id = ls_operation.
" ls_child-external_system_id =
APPEND ls_child TO pet_composite_children.
ENDLOOP.
...
ENDMETHOD.
In the example, you see how to provide information in the child workspace
property provider about the parent.
METHOD get_data.
...
" Provide composite parent
CLEAR ls_parent.
IF ls_afvgd-sumnr IS INITIAL.
" operation of a task list
pes_composite_parent-type = 'BUS2007'.
pes_composite_parent-id = lv_order.
" pes_composite_parent-external_system_id =
ELSE.
" sub-operation of a operation
pes_composite_parent-type = 'AFVC_PM'.
pes_composite_parent-id = lv_operation.
" pes_composite_parent-external_system_id =
ENDIF.
...
ENDMETHOD.
The code sample shows that you can construct deep compositions; the
business workspace of the operation could be either located inside the
maintenance order or inside another operations business workspace.
Exceptions
If an exceptional situation occurs in the property provider, you can control via
the thrown exception the behavior of the Extended ECM. Either handle it like
an unwanted situation or like an accepted situation. Nevertheless, the current
process is stopped, so the business workspace is not created/updated or the
business object is not attached.
Best practices
Here are some best practices for implementing workspace property providers:
public section.
constants C_ATTR_NAME_CATEGORY type STRING value 'EQUICATGRY
'.
constants C_ATTR_NAME_SERIAL_NO type STRING value 'SERIALNO'
.
constants C_ATTR_NAME_CREATION_DATE type STRING value 'READ_C
RDAT'.
constants C_ATTR_NAME_LOCATION_CITY type STRING value 'CITY1'
.
constants C_ATTR_NAME_LOCATION_COUNTRY type STRING value 'COU
NTRY'.
constants C_ATTR_NAME_LOCATION_NAME type STRING value 'NAME1'
.
constants C_ATTR_NAME_PLAN_PLANT type STRING value 'PLANPLAN
T'.
5. Handle all errors, for example, by always verifying BAPI return codes:
IF ls_equip_return-type = c_bapi_err.
l_error_msg = ls_equip_return-message.
CREATE OBJECT <ls_bor_properties>-exception
EXPORTING
m_error_text = l_error_msg.
CONTINUE.
ENDIF.
The methods use SAP’s standard batch infrastructure, therefore please make
sure that the user context who calls these API methods has enough privileges
to schedule background job. In the opposite case you can also manually start
The methods simulate a transactional behavior. The API supports placing more
than one workspace creation/update request at the same time. In that case the
requests are bundled together and handled in a transactional manner meaning
if one creation fails in a bundle, the other eventually created workspaces are
also not visible until the failure is corrected. Please note that this behavior is
only valid if you use the corresponding asynchronous read method to get
information about a workspace.
Purpose
The app displays a business document list assigned to the SAP business
object instance defined by parameters SapObject and ObjectId. The
control is implemented with SAPUI5 and reads the ArchiveLink attachments
assigned to the given object instance. Also, legacy object relations and GOS
object relations are taken into account. The control also supports attributes of
OpenText ArchiveLink PLUS. The document status regarding OpenText
Records Management is also shown.
Startup Parameters
The following startup parameters are supported in a target mapping URL of
intent-based navigation.
SapObject: Enter the exact name of an SAP business object type (BOR type)
that exists on the SAP backend system. For example, BUS2032 for sales
orders or EQUI for equipment. Together with the parameter ObjectId this
defines the instance of a SAP BOR object for which ArchiveLink attachments
are displayed.
ObjectId: Enter the exact ID of the SAP business object instance for which
ArchiveLink attachments shall be displayed. This needs to be the exact
matching ID as stored in the ArchiveLink link tables TOAxx (TOA01, TOA02,
...). For example, 0000011660 would be a correct value to identify sales order
11660 in combination with SAP business object type BUS2032. Together with
parameter SapObject this defines the instance of a SAP BOR object for which
ArchiveLink attachments are displayed.
kp: Available since version 16 EP6 (16.2.8). A list of format patterns separated
by an underscore (_). A format pattern can be DT, DA or TI followed by a
pattern in LDML format, if the corresponding kv(integer) value is a datetime,
date or time entry. Or a format pattern can be a format specifier
[flags][width]specifier inspired by the C++ function printf.
Datetime, Date and Time patterns:
• [flags][width]specifier
• This does not correspond to the full capability of printf but it is a
simplified pattern. (JavaScript does not have a function like printf)
specifier Output
d or i Integer
c Character
s String of characters
flags Description
- Left-justify within the given field width; Right justification is the
default (see width sub-specifier).
0 Left-pads the number with zeroes (0) instead of spaces when
padding is specified (see width sub-specifier).
width Description
(number) Minimum number of characters to be printed. If the value to be
printed is shorter than this number, the result is padded with
blank spaces. The value is not truncated even if the result is
larger.
Component Properties
SapObject: Corresponds to startup parameter of the same name. Can be
used to initially define the SAP business object type when creating the
component object. Initially it also can be left empty and defined later when
calling function refresh.
True: The business document list control is wrapped in a SAPUI5 page object.
This makes sense if the control shall run as a standalone app.
Parameters
{string} sSapObject defines the SAP business object type (BOR type) of
the object instance. For example, BUS2032 for a sales order.
Code example
MyView.view.js
MyView.controller.js
Sets the count of documents in the data model and updates the counter of the
leading application by callback function cb and callback context cbInst.
cb is the callback executed during refresh and cbInst is the context in which
the callback should be executed.
Parameters:
{string} sapObject defines the SAP business object type (BOR type) of
the object instance. For example, BUS2032 for a sales order.
Code example
MyView.view.js
MyView.controller.js
Purpose
The plugin integrates the Extended ECM Business Workspace app into the
Fiori app of OpenText Business Center for SAP Solutions. Also see Integration
of ready to use perspectives into OpenText Business Center on page 102.
Dependencies
• These the new perspective views (version 02). They are compatible to item
perspectives of the Fiori task app /OTBCWUI/PF07_BC_UI_03 of Business
Center 16.3 and higher.
• Use the view otx.alplus.docs4otbcwui02.view.item.BusinessDocuments if
you want to show the list of business documents as usual. Document
display will open the document in an overlay.
• Use the views
otx.alplus.docs4otbcwui02.view.item.BusinessDocumentsSplit and
otx.alplus.docs4otbcwui02.view.item.DocumentDisplay together. The first
view lists the business documents. When a document is clicked, the
content is displayed in the area of the second view.
• Calls Fiori app /OTX/ALF_DOC_UI (see OpenText ArchiveLink PLUS
Business Documents Component )
• Does not run standalone. It can be called from the OpenText Business
Center Fiori app.
For configuration of perspectives see OpenText Business Center for SAP
Solutions - Configuration Guide (BOCP-CGD)
Purpose
The app displays a business workspace on Content Server. The business
workspace is assigned to an SAP business object instance defined by
Startup parameters
The following startup parameters are supported in a target mapping URL of
intent-based navigation.
SapObject: Enter the exact name of an SAP business object type (BOR type)
that exists on the SAP backend system. For example, BUS2032 for sales
orders or EQUI for equipment. Together with the parameter ObjectId this
defines the instance of a SAP BOR object for which the business workspace is
displayed.
ObjectId: Enter the exact ID of the SAP business object instance for which
the business workspace shall be displayed. This needs to be the exact
matching ID as stored in the reference property Number of the business
workspace stored on the related Content Server. This corresponds to the
pattern how an object ID is stored in the ArchiveLink link tables TOAxx
(TOA01, TOA02, ...).
For example, 0000011660 would be a correct value to identify sales order
11660 in combination with SAP business object type BUS2032. Together with
parameter SapObject this defines the instance of a SAP BOR object for which
the business workspace is displayed.
kp: Available since version 16 EP6 (16.2.8). A list of format patterns separated
by an underscore (_). A format pattern can be DT, DA or TI followed by a
pattern in LDML format, if the corresponding kv(integer) value is a datetime,
date or time entry. Or a format pattern can be a format specifier
[flags][width]specifier inspired by the C++ function printf.
Datetime, Date and Time patterns:
• [flags][width]specifier
• This does not correspond to the full capability of printf but it is a
simplified pattern. (JavaScript does not have a function like printf)
specifier Output
d or i Integer
c Character
s String of characters
flags Description
- Left-justify within the given field width; Right justification is the
default (see width sub-specifier).
0 Left-pads the number with zeroes (0) instead of spaces when
padding is specified (see width sub-specifier).
width Description
(number) Minimum number of characters to be printed. If the value to be
printed is shorter than this number, the result is padded with
blank spaces. The value is not truncated even if the result is
larger.
Component properties
SapObject corresponds to startup parameter of the same name. Can be
used to initially define the SAP business object type when creating the
component object. Initially it also can be left empty and defined later when
calling function refresh.
Parameters:
{string} sSapObject defines the SAP business object type (BOR type) of
the object instance. For example, BUS2032 for a sales order.
Code example
MyView.view.js
MyView.controller.js
/*
* ...
* then depending on your MVC model you get the
component object,
* which was defined in your view
* ...
*/
Properties
BSP
Application /OTX/RMF_BWS4BC_02
Relative URL
(ICF node) /sap/bc/ui5_ui5/otx/rmf_bws4bc_02
Supported
Perspective
Type item
Purpose
The plugin integrates the Extended ECM business workspace app into the Fiori
app of OpenText Business Center for SAP Solutions. Also see Integration of
ready to use perspectives into OpenText Business Center on page 102
Dependencies
• This is the new perspective view (version 02). It is compatible to item
perspectives of the Fiori task app /OTBCWUI/PF07_BC_UI_03 of Business
Center 16.3 and higher.
• Calls Fiori app /OTX/RMF_BWS_UI (see OpenText Extended ECM
Business Workspace Component)
• Does not run standalone. It can be called from the OpenText Business
Center Fiori app.
For configuration of perspectives see OpenText Business Center for SAP
Solutions - Configuration Guide (BOCP-CGD)
The interface for Open Text Directory Authentication Service is reserved for
internal use only. All other API interfaces are available for customer-specific
implementation.
The following section describes the most important web service methods.
• create_folder()
Creates a folder in Content Server
• get_children_ex()
Gets all children of a given Content Server container
• get_object_ex()
Get all attributes of a given Content Server item
• make_records()
Declare a record in Content Server (RM declaration)
Because of its general aspect, this web service has a broad usage in Extended
ECM (e.g. Business Content Window).
• create_item()
• create_variant()
• get_content_with_variant_id()
• create_variant_single_blob()
• get_content()
• Add_member_to_group()
• Get_group_by_name()
• Get_member_by_login_name()
• Remove_member_from_group()
• List_members()
This web service makes it possible to assign users to generated Content
Server groups. For more information, see Using generated groups to define
permissions for workspace folders in OpenText Extended ECM for SAP
Solutions 16.0 User Management and Access Control Scenarios (ERLK-
CUM-EN).
4 Business Attachment
enhancements
4.1 Enhancements on SAP
Introduction
Extended ECM for SAP Solutions provides the possibility to integrate custom
enhancements via BAdI during business attachment creation.
SAP BAdIs
Introduction to SAP BAdIs
Business Add-Ins (BAdIs) is an SAP enhancement technique based on ABAP
objects. They can be inserted into the SAP system to accommodate user
requirements that are too specific to be included in the standard
implementation. In Extended ECM for SAP Solutions, we created a BAdI
definition for the add-in.
In addition, the Extended ECM for SAP Solutions BAdI has implemented a filter
value. Thus, it is possible to have different implementations for different SAP
object types. The filter mechanism is done by SAP.
For the example given here, you must create an implementation for the SAP
object type KNA1.
To create an implementation:
You can find examples for the callbacks in the additional module
otsapxecmsample (execute ….func =
otsapxecmsample.SampleBusinessReference). For successful execution of the
samples you need a fully configured Content Server notification.
This allows you to write for example your own bottom-up search.
In the global $OTSAPLINK.AutomaticBusinessReferences you can find some
useful functions to use for your own automatic creation of a Business
Attachment.
For example:
IsAttrChanged(): Checks whether a trigger attribute has changed
GetKeyDefs(): Gets the key values from categories of the Content
Server item
5 Business workspace
enhancements
5.1 Enhancements on SAP
Additional business workspace tabs for SAP
objects
Introduction
You can display the Business Workspace of Content Server in SAP by the
GOS menu. Sometimes it is desired to display the Business Workspace in the
“Tabs” of an SAP object. As each SAP object type has its own infrastructure to
implement an additional tab, we provide here only 2 examples with their
specific implementation. For other SAP object types refer to the SAP
documentation.
Additional tab
Figure 19 shows the tab integration when clicking on the Workspace button
(Business Workspace for customer 300377).
2. Go to change mode and click New Entries. Then add a Screen Group
(SK here) and a meaningful description. Save the entry, and then
select that entry and click Label Tab Pages.
3. Add a function code SK_TAB and a description. Save the entry, and go
back to the SPRO screen. Click Business Add-in > Processing
Master Data Enhancements.
6. Activate that and go back to the SPRO initial screen. Click Business
Add-in > Customer Subscreens.
Create one implementation (ZCUSTOMER_LIVELINKCS here).
IF init IS INITIAL.
CREATE OBJECT container
EXPORTING
container_name = 'CUSTOM'.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDIF.
endmodule.
when 'SK_TAB'.
e_screen = '1111'.
e_program = 'ZLIVELINKSCREEN_PROG'.
endcase.
endmethod.
IF init IS INITIAL.
CREATE OBJECT container
EXPORTING
container_name = 'CUSTOM'.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDIF.
Authentication
The Content Server proceeds with user authentication, regardless of whether
the SAP server communicates with the Content Server via Web Services.
Extended ECM for SAP Solutions offers the two following authentication
scenarios:
Single sign-on
Single sign-on is the default authentication mechanism. In this scenario, SAP
users must have identical log-on names in the Content Server. The OTDS
Services grant access to the Content Server by ensuring the authentication of
SAP tokens (see Install Guide).
BAdI-based impersonation
BAdI-based impersonation enables impersonating each SAP user with a
corresponding Content Server user (i.e. OTDS user). To achieve this scenario,
an SAP developer (e.g. Open Text Global Services consultant) must implement
and activate the /OTX/RM_IMPERSONATE BAdI. This BAdI has the following
two methods:
For both methods, the substitute user name must exactly match in upper and
lower cases the corresponding Content Server user name.
Result:
DATA:
lo_interface_generic TYPE REF TO /otx/iwci_rm_wdgen_workspace,
lo_interfacecontroller TYPE REF TO if_wd_component_usage,
lh_task_factory TYPE REF TO
/sapsrm/if_cll_taskcon_factory,
l_bo_type TYPE crmt_subobject_category_db,
l_bo_guid TYPE bbp_guid,
l_bor_type TYPE swo_objtyp,
l_bor_id TYPE swo_objid,
l_is_key_initial TYPE wdy_boolean,
l_theme_id TYPE string,
l_message TYPE string.
IF l_bor_id IS INITIAL.
l_is_key_initial = abap_true.
ELSE.
l_is_key_initial = abap_false.
ENDIF.
pi_objtyp = l_bor_type
pi_is_key_initial = l_is_key_initial
pi_theme_id = l_theme_id
* pi_is_key_initial_msg = l_is_key_illegal_msg
).
For the first approach there is the “Maintain Business Content Window menu”
IMG entry. With the following entries you can manage to show or remove items
which are present in the Content Server context menu.
• Code ID: Specifies the web node command name coming from the
Content Server context menu.
• Add/Remove: Specifies whether the item should be removed or added
to the existing Business Content Window context menu.
• Description: Describes the context-menu entry. This text is shown at
the content menu. This field supports translation. If there is no text
provided, the Code Id is shown instead.
The other possibility is to create menu items which are available only on SAP
side. To do so you need to implement the /OTX/RM_GOS_CTX_MNU BAdI.
This BAdI has two methods. One to add menu items to the context menu
(PROCESS_CTX_MENU_CONSTRUCTION) and another one to react to the
triggered function codes (PROCESS_WKSP_FCODE). For further reference
please look at Sample Code provided with the BAdI definition.
Global changes
The previous changes can be made global by setting the feature fHidden to
TRUE.
The CBCategories* callbacks are listed to handle attribute updates from SAP.
The CBMove* callbacks are listed because a deletion can also be a move to
the recycle bin.
The following scheme shows the call flow when manually creating a business
workspace. The essential part is inside the NodeCreate function and is the
same for all ways (manual, automatic, LAPI) a Business Workspace is created.
Content Server
Workspace types
• Workspace location
• Workspace sub-location path
• Workspace classification
Open the Workspace Type configuration page and locate the Workspace
Creation Settings section.
In a second step you browse the Enterprise Volume and select a root
folder:
Specify a pattern
Bound to each configuration method is one the configuration controls you may
reuse for your purpose:
You can specify e.g. to which subtypes the selection is restricted and where to
start browsing.
Consists of a CS node selector (see above) and a combo box to select the
attribute.
Consists of a CS node selector (see above) and a combo box to select the set.
When you need to extend the configuration there are two possible steps to do:
• GetCBTypes:
Specify for which configuration setting(s) the configuration method
should apply.
• fDisplayName:
Specify a display name which will be shown in the method selector of
the UI.
• fId:
Specify a unique ID for the configuration method. Choose the name
carefully as this ID will be stored in the configuration DB when saving a
workspace type or business object type configuration.
• Execute:
Specify how the configuration setting will be determined from the
incoming business properties when a workspace is created. For some
settings this method simply returns an integer specifying the CS node
ID to use.
Finally set fEnabled to true, rebuild your OSpace, and restart Content Server
(or Builder), otherwise your plug-in will not become active.
• fControlName:
Specify the name of the control as html page; choose one of the
controls mentioned above.
• GetControlParameters:
Check that all required parameters are correctly passed when the
control is instantiated. Refer to the description of the corresponding
control. Most parameters have default values.
• If you use a control that supports target browse, override also the
methods _GetBrowseNodeTypes, _GetBrowseRootNode, and
_GetBrowseTitle.
• fHelpUrl:
Optionally specify a link to a help page if you want to provide editing
quick help.
• Dynamic prgCtx
• String name:
The name of the control which is generated by the calling framework.
The framework uses this name to hide or show the control depending
on user selection. Make sure that your edit control's name and ID is set
to this parameter. If your control contains multiple HTML controls
enclose them into a div tag with this name.
• Boolean visible:
Initial visible/invisible state. Typically you will set display:none for your
HTML control or DIV element if initially invisible.
• String value:
Initial control value as string. You have to define your own logic how
complex user input is mapped to a string and the reverse mapping too.
• String resultFieldName:
Name of the hidden field where the user input must be stored. User
input must be stored as string. You must use the same logic to create
this string as described above. You should write the hidden field
whenever input is changed; otherwise you cannot be sure that the
Step 1:
Start Content Server Builder and create a new OSpace. Save it to folder
c:\opentext\module\xecmextensions_1_0_0\ospace and name it
TechnicalStructure.oll.
Step 2:
Create an INI file named xecmextensions.ini for your OScript module and store
it in folder c:\opentext\module\xecmextensions_1_0_0. It should contain the
following content:
[dependencies]
requires_1={'otsapxecm',10,0}
[description]
moduleName=xecmextensions
Name=ECMLink Extensions
Version=1.0 r 0
[OSpaces]
ospace_1=technicalstructure
Step 3:
Create a new entry for your new module in opentext.ini, so the OSpace will be
loaded automatically in the future, e.g.:
[Modules]
…
module_79=xecmextensions
ospaces_xecmextensions={'technicalstructure'}
xecmextensions=_1_0_0
Step 4:
Step 5:
fControlName: The name of the editing control – reuse the simple edit control.
otsapxecm_wsconfig_editfield_control.html
Execute: How the sub-location path has to be calculated from the configured
pattern.
Function Dynamic Execute( Object prgCtx, String pattern, String
langCode, String boType, String boId, List boProperties, List
categories )
String retVal = pattern
Date now = Date.Now()
List replacements = { \
{ "[YYYY]", Str.ValueToString( Date.Year(now) ) },
\
{ "[YY]", Str.ValueToString( Date.Year(now)
)[3:4] }, \
{ "[MM]", ConvertAndFillTrailingZeros(
Date.Month(now), 2 ) }, \
{ "[DD]", ConvertAndFillTrailingZeros(
Date.Day(now), 2 ) },\
{ "[hh]", ConvertAndFillTrailingZeros(
Date.Hour(now), 2 ) }, \
{ "[mm]", ConvertAndFillTrailingZeros(
Date.Minute(now), 2 ) }, \
{ "[ss]", ConvertAndFillTrailingZeros(
Date.Second(now), 2 ) } \
}
List replacement
for replacement in replacements
retVal = Str.ReplaceAll( retVal, replacement[1],
replacement[2] )
end
return retVal
End
fEnabled
true
Final step:
If everything was done correctly, the new configuration setting will be available
upon next Content Server restart.
The more recent technique using SAPUI5 flexibility services is the preferred
technique to extend Fiori Elements-based apps for SAPUI5 versions above
1.56. Soon it will be presented in more detail in OpenText documentation. But
basically, the SAP Web IDE allows Adaptation projects to create a new app
from an already delivered Fiori element app. This allows to add new UI
elements and controllers to that app. Read Using SAPUI5 Flexibility Services
or check the Youtube video Extending a SAP Fiori Elements application using
Adaptation Projects.
For information about other ways of integration, see Other ways of integration
in SAP Fiori on page 95.
For information about using a SAP Web Dispatcher in a SAP Fiori scenario,
see Using SAP Web Dispatcher in SAP Fiori scenarios on page 105.
(SD_SO_MON). This chapter shows code snippets taken from this custom app.
Often comments were removed from the snippets to make them more compact.
Although, the original app is dated, the principles how the controls of Archiving
and Document Access or Extended ECM are integrated programmatically stay
the same.
Code exploration
The example app /OTX/RMF_EX_001 is delivered with minified sources. Here
are two options to explore the code:
• Option 1: Start the SAP Web IDE and get connected to your SAP
gateway frontend and import /OTX/RMF_EX_001 into your
development workspace.
• Option 2: Start the URL of the app in a Chrome browser and add URL
parameter sap-ui-debug=true. Press key F12 to start the
Chrome developer tools.
index.html Index web page called when the application is directly called with its ICF service
URL. It is not relevant, if the application is run from the SAP Fiori Launchpad.
It just creates a component container that is populated with its own component.
The container's runtime content is then rendered as the content of the web page.
i18n/i18n.propertie Copy of the original app's i18n.properties file. At the end, text strings for the
s additional buttons of the custom app are defined.
Component.js Contains the relevant code of the app in a minified format. That means that all
JavaScript files are merged into this file. Any extra whitespaces and comments
are removed.
• Component.js (or
cus.sd.salesorder.monitor.ECMLINK_Extension.Component)
Component of the app
• view\extSOChangeAttachmentsCustom.fragment.js (or
cus.sd.salesorder.monitor.ECMLINK_Extension.view.extSO
ChangeAttachmentsCustom)
Contains a sap.ui.jsfragment to deliver content to extension point
extSOChangeAttachments of the view
cus.sd.salesorder.monitor.view.S3New of the original app
• view\S3NewCustom.controller.js (or
cus.sd.salesorder.monitor.ECMLINK_Extension.view.S3New
Custom)
New controller that is merged with the controller of view
cus.sd.salesorder.monitor.view.S3New of the original app
Integration overview
This chapter shows an overview how the custom app integrates the additional
OpenText components with the original Fiori app.
The relevant steps are the following. Also refer to Figure 44: Integration
Overview of Extended Track Sales Orders app that illustrates the steps.
As a next step
sap.ui.component.load({
name: "cus.sd.salesorder.monitor",
url: sOriginalAppURL
});
the component loads the component of the original app
cus.sd.salesorder.monitor, which is located as BSP
application SD_SO_MON (Track Sales Order).
2. JS fragment
cus.sd.salesorder.monitor.ECMLINK_Extension.view.ext
SOChangeAttachmentsCustom is customized to fill the content of
extension point extSOChangeAttachments of view
cus.sd.salesorder.monitor.view.S3New.
3. Controller
cus.sd.salesorder.monitor.ECMLINK_Extension.view.S3N
ewCustom is customized to extend (that means to merge with)
controller cus.sd.salesorder.monitor.view.S3New.
4. At runtime the function createContent() of JS fragment
cus.sd.salesorder.monitor.ECMLINK_Extension.view.ext
SOChangeAttachmentsCustom fills in extension point
extSOChangeAttachments. In this code an sap.m.IconTabFilter
control is added for each extra tab added to the original app.
var bAlplusVisible =
cus.sd.salesorder.monitor.ECMLINK_Extension.Component.
getMetadata().getConfig().AlplusActive;
var bBwsVisible =
cus.sd.salesorder.monitor.ECMLINK_Extension.Component.getM
etadata().getConfig().BwsActive;
The visible property of each control is set to false if an initial load of the
required component failed. The boolean configuration parameter
AlplusActive is false, if the otx.alplus.documents component is not
available. Parameter BwsActive is false, if the
otx.ecmlink.businessworkspace component failed to load.
try {
oCompAl = sap.ui.getCore().createComponent({
name: "otx.alplus.documents",
id: "OtAlComp",
settings: {
AppMode: false
}
});
oComponentContainerAl = new
sap.ui.core.ComponentContainer({
component : oCompAl
});
oContAl = oComponentContainerAl;
} catch (err) {
// Generate error output
oContAl = new sap.m.Label(
{
design: sap.m.LabelDesign.Bold,
text: "{i18n>OTX_NO_COMPONENT}",
textAlign:
sap.ui.core.TextAlign.Center,
width: "100%",
visible: true
}
);
// Log an error to the console
jQuery.sap.log.error("Cannot create AL Plus component",
err.message);
}
In the try-catch-block shown above the function
sap.ui.getCore().createComponent is executed to create a new
This way the custom app is not breaking, if the Business Documents Fiori
app is not installed or is not running properly.
A second try-catch-block is executed to create a new instance of
component otx.exmlink.businessworkspace also with setting
"AppMode: false" to define, that it is not running standalone. This
component is rendering the control to show an Integration Widget of
OpenText Content Server. As in the first case, a component container is
created, that contains this component. In the case of success another
IconFilterTab icon is created, that will show the component container,
when clicked. A data reference is added to the IconFilterTab control to
make it easier to refer to the component, when the user clicks the icon. In
the case of failure, again, in place of the component container, a text
container with a text is created and the browser console log is filled with a
log message.
The expected result is:
this.getView().byId("itemsTable").attachUpdateFinished({
},
this.setCounts, oData);
oIconTab.attachSelect({ }, this.extHandleItemSelect,
oData);
var oObjectAndId =
this.fnGetObjectAndId(this.oIconTab);
It gets the values of SAP object type and identifier from the bound data.
if (!this.oIconTab.oIconTabFilterDoc ||
!this.oIconTab.oIconTabFilterBws){
this.oIconTab.oIconTabFilterDoc = {};
this.oIconTab.oIconTabFilterBws = {};
var aItems = this.oIconTab.getItems();
for (var i=0; i<aItems.length; i++ ){
if
(aItems[i].getId()==="otx.attachmentId"){
this.oIconTab.oIconTabFilterDoc = aItems[i];
} else if
(aItems[i].getId()==="otx.bwId"){
this.oIconTab.oIconTabFilterBws = aItems[i];
}
}
}
var oCompAl =
this.oIconTab.oIconTabFilterDoc.data("OtComponent");
var oObjectAndId =
this.fnGetObjectAndId(this.oIconTab);
oComp.refresh(oObjectAndId.SapObject,
oObjectAndId.ObjectId);
}
}
this.getView().byId("itemsTable").detachUpdateFinished(this.setCo
unts, oData);
var oModel;
return str;
oModel = oView.getParent().getModel("LocalDetails");
salesId = oModel.getData().SalesOrderNumber;
sSapObject = "BUS2032";
In accordance to SAP transaction VA03, the relevant SAP business object type
is BUS2032. The object identifier or object key required for ArchiveLink is the
number of the selected sales order in format of a 10-digit number with leading
zeros. (That means 0000011660 instead of 11660).
One way of getting the right runtime value of sales order is to retrieve it from
the model LocalDetails as defined by the original app.
cus.sd.salesorder.monitor.ECMLINK_Extension.view.S3NewCus
tom
In custom controller
cus.sd.salesorder.monitor.ECMLINK_Extension.view.S3NewCust
om
the keyword this refers to different objects depending on the context.
In functions onInit() and onExit() it refers to the custom controller. And
because it is customized as a controller extension of the original view,
this.getView() refers to the original view
cus.sd.salesorder.monitor.view.S3New.
The tab filter control object contains a data reference that refers to the
component object of the Fiori app (either documents app or business
workspace app). If the returned component object oComp is defined, it is
expected to have a function refresh(). This refreshes the list or business
workspace related to the defined object type and ID.
Instead of encoding the name of the target app into the URL fragment, you can
provide a navigation intent. An intent expresses what you want to do next
(rather than how to do it).
The Business Documents app of Archiving and Document Access and the
Business Workspace app of Extended ECM support this concept.
• Some SAP Fiori Elements apps have the Related Apps button
enabled (then only new configuration in the Fiori Launchpad
Content is required)
• Many SAP Fiori Elements apps use smart fields with UI
annotations or the @Consumption.semanticObject which
automatically create SmartLink controls at runtime (then only new
configuration in the Fiori Launchpad Content is required)
• Even if metadata extensions are not allowed, new attributes may
be appended to an existing CDS (Core Data Services) view, this
way allowing to use annotations.
For a distinct business object, for example a sales order, a semantic object, for
example SalesOrder, is used to make a list of actions available. For this, SAP
already defined several target mappings in Fiori UI tile catalogs. If the
corresponding authorization role is assigned to a user, the user can see and
use the target mapping.
Customizing steps
1. Choose an existing semantic object or create a new semantic object:
IMG activity SAP Netweaver > UI Technolgies > Define Navigation
Target > Define Semantic Objects. For example, ZZXECM_SO.
2. In the Launchpad designer select a catalog or create a new one:
IMG activity SAP Netweaver > UI Technolgies > Adding Apps to
SAP Fiori Launchpad (Using SAP Fiori Launchpad Designer >
SAP Fiori Launchpad Designer (Current Client)
3. Define a new target mapping for business documents:
o Intent - Semantic Object: Enter the ID of the semantic object
you created above, for example, ZZXECM_SO.
o Intent - Action: Enter the name of the action, for example,
businessdocuments.
o Target - Source of Navigation Target : Select SAPUI5 Fiori
App.
o Target - Title: Enter a meaningful title, for example, Business
Documents.
o Target - URL: Enter the relative ICF URL of the Fiori app, in
this case /sap/bc/ui5_ui5/otx/alf_doc_ui.
o Target - Component: Enter the name of the component, in
this case otx.alplus.documents.
4. Define a new target mapping for business workspace:
o Intent - Semantic Object: Enter the ID of the semantic object
you created above, for example, ZZXECM_SO
o Intent - Action: Enter the name of the action, for example,
businessworkspace.
o Target - Source of Navigation Target : Select SAPUI5 Fiori
App.
o Target - Title: Enter a meaningful title, for example, Business
Workspace.
o Target - URL: Enter the relative ICF URL of the Fiori app, in
this case /sap/bc/ui5_ui5/otx/rmf_bws_ui.
o Target - Component: Enter the name of the component, in
this case otx.ecmlink.businessworkspace.
5. In the table Parameters of the target mapping set the real key
parameter of the app, for example kv1 in the target name of a
parameter name like SalesOrder. Use the default value of parameter
SapObject to predefine the BOR object type. And also use a default
Examples
Example 1:
• The main difference is that the apps are not integrated as tiles or single
UI elements, but are called as other apps. Read the following online
guides by SAP:
SAP Fiori Launchpad for Developers - Architecture Overview and
SAP Fiori Launchpad for Developers - Navigation Concepts
See also Class sap.ushell.services.CrossApplicationNavigation for a
description of methods.
• In the case SAP Fiori Elements based apps this navigation concept of
app to app navigation can also be used.
Below is a code snippet to give you an idea how this integration method can be
used programmatically:
/*
* Your application needs the right ID's
* of the semantic object and action
* Here the values are referring to the
* target mapping definition which was
* defined for the xECM business workspace app
* in the previous chapter
*/
var sSemanticObject = "ZZXECM_SO";
var sAction = "businessworkspace";
/*
* Your application needs to calculate the
* parameters in the right format
*/
var sSapObject = "BUS2032";
var sObjectId = "0000011660";
var oCrossApplicationNavigation =
sap.ushell.Container.getService("CrossApplicationNavigation");
/* Navigate to the external target
* of our xECM business workspace app
*/
oCrossApplicationNavigation.toExternal(
{ target:
{ semanticObject : sSemanticObject,
action: sAction
},
params :
{ SapObject : sSapObject,
ObjectId : sObjectId
}
}
);
Example 2:
The SAP Fiori Elements app Sales Order FactSheet (app ID = F1814;
predefined intent SalesOrder-displayFactSheet) has functions like the list of
related apps. In this case, all links of related apps are called in the following
way:
In this example, you can create your own Fiori UI catalog in the Fiori
Launchpad Designer. Use transaction pfcg to create an authorization role to
expose the target mappings of your catalog to users.
Action = displayMyBusinessDocuments
URL = /sap/bc/ui5_ui5/otx/alf_doc_ui
ID = otx.alplus.documents
Parameters:
Example 3:
In this example, you can create your own Fiori UI catalog in the Fiori
Launchpad Designer. Use transaction pfcg to create an authorization role to
expose the target mappings of your catalog to users.
Action = displayMyBusinessWorkspace
URL = /sap/bc/ui5_ui5/otx/rmf_bws_ui
ID = otx.ecmlink.businessworkspace
Parameters:
CompanyCode kv1
AccountingDocument kv2
FiscalYear kv3
SapObject BKPF
kp 04i_010i_04i
Then an action with the title “Display Accounting Business Workspace” will be
available in the list of related apps and at other areas, where actions for
SemanticObject = AccountingDocument are used.
Security
The transfer of the SAP business object type and SAP business object ID are
not security critical: The OData services of ADA and xECM check the user's
authorization to see contents of the business documents and business
workspaces or call services, which do such an authorization check. The
business object ID does not reveal any specific data.
For example,?SapObject=BUS2032&ObjectId=11660
• Since 16 EP6 (16.2.8) the kv1, kv2, … and kp Parameter can be used
to map to more than one key value.
which item related data is displayed where in the Fiori task app. Each
perspective can have a set of views shown at specific locations at the runtime.
Starting with version 16.3 OpenText Business Center for SAP Solutions
introduced the Perspective Editor.
Prerequisites
You have OpenText Business Center for SAP Solutions 16.3 installed.
Customizing Steps
1. For information about customizing, see OpenText Business Center for
SAP Solutions: Configuration Guide.
2. In the perspective editor edit a perspective layout of perspective type
item. (You may create a new perspective based on
PF31_DEFAULT_ITEM as a template).
3. On the right side under node Views. Make a right mouse-click to select
and execute the function Add Module Views.
4. A popup is opened. To get the views of the Business Documents
app, enter the name of the BSP application =
/OTX/ALF_DOCS4BC_02
Then click OK.
5. This adds the following item views of this application under the node
Views:
o otx.alplus.doc4otbcwui02.view.item.BusinessDoc
uments
▪ At runtime the area shows a list of
existing ArchiveLink attachments known
as business documents
▪ When the user clicks on a document, the
document display is opened as an overlay
in the same browser window
o otx.alplus.doc4otbcwui02.view.item.BusinessDoc
umentsSplit
▪ The same as above, but the view
DocumentDisplay below is required to
display a document
o otx.alplus.doc4otbcwui02.view.item.DocumentDis
play
7. If you repeat step 3 to open another popup. To add the view of the the
Business Workspace app, enter the name of BSP Application =
/OTX/RMF_BWS4BC_02
Then click OK.
8. This adds the following item view of this application under the node
Views:
o otx.ecmlink.bws4otbcwui02.view.item.BusinessWo
rkSpace
9. The available view can be copied into the perspective view by drag and
drop.
10. The Business Center must provide a proper SAP business object type
and business object ID to the Business Documents app and the
Business Workspace app. This can be done in the customizing of the
work object type:
o Start the IMG hierarchy (Transaction: SPRO) on the backend.
o Select OpenText Archiving and Document Access for SAP
Solutions > Business Object Browsing4 > Fiori App
Customizing > Work Object Type > Work Object Type.
o In the next screen select the work object type, for example,
Z_TEST_BUPA.
o Create a new entry for related business object and enter the
object type, for example, BUS1006. Enter a field list to define
the key/object ID, for example, PARTNER.
Known Restrictions
• Only one Archiving and Document Access and only one Extended
ECM related view is supported for each perspective.
• Only one system origin (system alias) at a time for each item list is
supported by the Archiving and Document Access and the Extended
ECM view. The Business Center app supports multiple system origins
in one item list. The Business Documents app and the Business
Workspace app can also be initiated with arbitrary system origins. But
because the initialization is done only once for each item list, only one
4 This node is delivered in ABAP Add-On OTEXBASB and exposes the parts of
the Business Center Customizing relevant for creating business object
browsing apps.
wdisp/system_2 =
SID=EX2,EXTSRV=http://deotcontent.sapcustomer.com:80,SRCSRV=*:*,S
RCURL=/otcs;/OTCS;/img;/IMG,SSL_ENCRYPT=0
By default the SAP Web Dispatcher does not send any of these parameters.
This can be changed by customizing a "modification action". SAP describes
#-------------------------------------------------------
----------------
#-------------------------------------------------------
----------------
icm/HTTP/mod_0 =
PREFIX=/,FILE=$(DIR_GLOBAL)/icm_add_headers.txt
2. According to the file location create the text file (For example,
icm_add_headers.txt).
#
# Required, if proxy changes protocol:
5. Restart the SAP Web Disaptcher after you changed the profile and text
file.
About OpenText
OpenText enables the digital world, creating a better way for organizations to work
with information, on-premises or in the cloud. For more information about OpenText
(NASDAQ: OTEX, TSX: OTEX), visit opentext.com.
opentext.com/contact
Copyright © 2018 Open Text. All rights reserved. Trademarks owned by Open Text. 107