Transaction SPI_TOOLS
The central transaction to reach all the SPI related tools is SPI_TOOLS.
From there you can access:
- Metadata Browser – to visualize the metadata of your application
- Service Provider Browser – to execute/test your SP via a generic UI
- Activation of Runtime Checks – to activate additional SPI runtime checks (on system/ABBID/user level) to identify inconsistencies/errors within your application (recommended during the whole development and test phase)
SPI Metadata Browser
The transaction code of the SPI Metadata Browser is MDB
The main target of it is to visualize the SPI metadata model of applications in a comprehensible way and to analyze them for completeness and reasonableness.
The user interface of the browser looks like the following:
At the top of the screen an input field (A) enables the user to choose an ABBID for building up its metadata structure inside the tree area on the left hand side of the screen (C). The detail area (D) is for displaying the corresponding metadata attributes. With the two navigation buttons (B) the user is able to switch between two different views: The 'Attribute View' (shown above) and the 'Metadata Inspector View' for displaying results of various checks (shown below).
How to Use the SPI Metadata Browser
- Insert one ABBID into the considering input field (A) or use button 'Multiple ABBID selection' next to the input field to select more than one ABBID at the same time.
Use Button 'Execute' or press F8 to start with building up the tree structure. - Inside the tree area (C) expanding and collapsing nodes is possible via the toolbar buttons or single click on nodes. The tree displays nodes, sub nodes, actions and queries. The root node is the ABBID itself.
- Select a desired node from the tree and press button 'Details' at the tree toolbar. The node and all its subordinate nodes will be loaded into the detail area (D). Now the metadata attributes are visible. At the bottom part of the detail area you can switch between actions, queries and initialization operations via button (The buttons are only active if queries or initialization operations are available for the nodes).
All underlined fields (links) allow forward navigation e.g. to have a look at structure and table type definitions or class definitions. Grey fields give a hint that the attribute isn't available for the version of the metadata provider (The version can be found on the top list under 'ABBID Attributes'). - Check if errors, warnings or information are available for the metadata of the chosen ABBID.
The icon of navigation button 'Metadata Inspector' refers to the checks results. - Press button 'Metadata Inspector'.
The various checks are divided in different categories. Incorrect nodes or nodes with warnings and information are added to the corresponding check category. The colored columns give information about the number of available errors. The user has the possibility to get information of the check results by using the 'Information' icon. In fields of column 'ABBID' and 'Node' forward navigation to the Metadata Provider class is available.
Below you see a screenshot of the Metadata Inspector:
SPI Browser
The transaction code of the Service Provider Infrastructure Browser is SPB.
The main target of this browser is to provide an application independent test interface for Service Providers.
Thereby it helps to speed up the backend implementation because it simplifies the testing of new backend functionality.
Additionally it helps to identify gaps or issues which might not become visible by using an application specific UI. Thereby the SPB supports in building a backend that is really decoupled from the UI.
The user interface of the browser looks like the following:
At the top of the screen the Application Building Block ID (ABBID) input field (A) enables the user to choose an ABBID for building up its hierarchical metadata node model inside the tree area on the left hand side of the screen (B). Once the tree area is loaded, the transactional operation controls (C) appear, allowing the user to call SAVE, CHECK_BEFORE_SAVE and CLEAN_UP methods. In the main ALV area (E) the result set of the executed operation is displayed, if available. Using the Exporting Parameters Bar (D) further information can be acquired regarding the operation processed. The Log Area (F) contains messages from the Service Provider class and the SPI Browser.
How to Use the SPI Browser
- Insert an ABBID existing in the current system into the corresponding field either manually, or the F4 help can be used to obtain information about the possible input values. Press Enter, or double click on the text appearing in the input field.
- Select a node operation by right clicking on the node in the tree, and choosing an item from the context menu.
A popup opens up with the title of the selected operation. Enter input data to the popup ALV.
Table lines can be inserted and removed using the standard ALV toolbar (default number of lines is 10).
Press Execute at the bottom of the modal window.How To Set Additional Parameters
- Retrieve and Retrieve by Association operations also have a locking indicator (IV_LOCK) that can be set using the checkbox below the ALV.
- In case of the ACTION, if an action structure is defined in the metadata provider, the button appears next to the execute button. By clicking on it, in a modal window the action parameters can be set.
- The result set is displayed in the main ALV area (E). The main ALV toolbar consists of dynamic buttons, with the names of the supported operations, actions and queries on the specific node. If lines are selected when selecting an operation from the toolbar, the selected data is transmitted to the popup.
The status icon (green light) in the Exporting Parameters Bar (D) indicates the general outcome of the called operation (EV_FAILED). If further parameters are available as well, the corresponding buttons become active. Clicking on them provides the information in a modal window.
SP Service Classes
The ABAP class /PLMB/CL_SPI_APPL_ACCESS_UTILS and /PLMB/CL_SPI_QUERY_UTIL offers reusable services (mainly relevant for backend implementations). This page gives an overview about the most used methods. For a complete overview please have a look at the classes itself.
SP Factory /PLMB/CL_SPI_REUSE_SP
SPI offers a reusable Service Provider that eases and standardizes Service Provider implementation. This service consists of two main parts:
- An abstract Service Provider implementation (class /PLMB/CL_SPI_REUSE_SP) from which the application specific Service Provider has to inherit and
- A node access interface (/PLMB/IF_SPI_NODE_ACCESS) which is implemented per node of the metadata model (reuse and inheritance concepts are of course possible and often advisable)
The idea of this approach is to separate a Service Provider implementation into two parts. Transactional methods (e.g. SAVE and CLEAN_UP) are implemented in the application's Service Provider (by implementing the foreseen abstract methods of the reusable Service Provider), while the node specific methods (e.g. RETRIEVE and UPDATE) are implemented in node specific classes implementing the node access interface. This results into a clean structuring of coding and proper delegation of responsibilities. SPI handles the administration of the various node instances (= factory) and also ensures e.g. that each node instance use its correct Collector instance, which is especially important if nodes are instantiated multiple times.
Provided functionality:
- Node Factory – no instance handling and management required on application side anymore
- Forwarding of messages to the correct Collector instance
- Calculation and population of export parameters of the application access interface /PLMB/IF_SPI_APPL_ACCESS, like EV_FAILED and ET_INDEX_FAILED based on the provided messages
Note: usage of this concept does not have an impact on the implementation of the Metadata Provider
Implementation Guide
Implement the Node Access Interface /PLMB/IF_SPI_NODE_ACCESS
Different approaches are possible – also depending on the complexity of the application's node model (see Metadata Provider):
- For each node separate classes are created, each implementing the node access interface
- One node super class is defined that implements the node access interface and all node implementations inherit from this class
- The method signature of the node access interface is very similar to the application access interface /PLMB/IF_SPI_APPL_ACCESS, only small deviations exist:
- The node name is not part of the method signature, since one node class implementation represents already a specific node
- The methods RETRIEVE and INSERT provide an optional import parameter IV_PARENT_NODE_NAME to identify whether an INSERT/RETRIEVE by association is required, rather than having two parameters IV_NODE_NAME and IV_TARGET_NODE_NAME
- The method INITIALIZE provides the Collector and Metadata Provider instances, as well as the node name for which this class is called (the latter is only relevant in exceptional cases where e.g. a node implementation handles multiple nodes or in very generic implementations)
Implement the Application's Service Provider
- Create a class inheriting from the SPI reuse Service Provider /PLMB/CL_SPI_REUSE_SP
- Implement the three (transactional) methods CLEAN_UP, CHECK_BEFORE_SAVE and SAVE provided by the super class; note: relevant are the 'protected abstract' methods and not the ones part of the application access interface /PLMB/IF_SPI_APPL_ACCESS that are also visible in the application Service Provider, these methods are all implemented 'final' by the reuse SP
- Implement the method DEFINE_NODE_CLASS_ASSIGNMENT: this method returns the (node) class names per metadata node name, e.g. if the metadata node "CARRIER" is implemented by class CL_ND_CARRIER than this combination must be returned by the method (for all nodes); note: if the data is returned incomplete, e.g. a node is missing, this results in an exception
- Maintain your Service Provider class name in the ABBID table
Class /PLMB/CL_SPI_APPL_ACCESS_UTILS
Message Handling
EVALUATE_MESSAGES
This method allows filling the SPI parameter EV_FAILED (failed indicator) and ET_INDEX_FAILED (both e.g. available in the SP Update and Delete methods...) based on a message table.
The logic is as follows: if the message table contains at least one error message without a message index (field MSG_INDEX) the failed indicator is set. For error messages with message index an entry is written to the index failed table.
This method is very helpful in Service Provider implementations to supply the export parameters of the interface methods based on the message table received from the backend (e.g. BO) call.
Method signature:
Parameter | Data Type | Description |
---|---|---|
IT_MESSAGE | /PLMB/T_SPI_MSG | Messages (mandatory) |
EV_FAILED | /PLMB/SPI_FAILED_IND | Failed indicator |
ET_INDEX_FAILED | /PLMB/T_SPI_INDEX_FAILED | Failed indices |
EVALUATE_MESSAGES_RETRIEVE
This method fulfills the same purpose as EVALUATE_MESSAGES but is specialized for the RETRIEVE call. A RETRIEVE call can typically cause messages due to lock errors (if the lock flag was set) or due to data read errors. This method converts both message tables into the SPI specific index failed table type (reason code and index, not only index!) of the RETRIEVE method.
Method signature:
Parameter | Data Type | Description |
---|---|---|
IT_MESSAGE_LOCK | /PLMB/T_SPI_MSG | Messages caused by locking |
IT_MESSAGE_RETRIEVE | /PLMB/T_SPI_MSG | Messages caused by data read (mandatory) |
ET_MESSAGE_COMBINED | /PLMB/T_SPI_MSG | Combined message table (for handover to SPI Collector) |
EV_FAILED | /PLMB/SPI_FAILED_IND | Failed indicator |
ET_INDEX_FAILED | /PLMB/T_SPI_RTR_INDEX_FAILED | Failed indices in RETRIEVE format |
ADD_MESSAGES
Adds an import table of messages to a given changing table of existing message with following (optional) additional functionality:
- Filtering of messages based on a given message severity, e.g. all messages "below" error are ignored
- Adjustment of the message index
- Adding a field name as message reference
- Calculation of the new overall severity
Use case: within one method you call several other methods that return messages. Those have to be added to an overall message table.
Method signature:
Parameter | Data Type | Description |
---|---|---|
IV_SUPPRESS_SEVERITY_UP_TO | /PLMB/SPI_MSG_SEVERITY | Specifies the severity for which messages with a "lower" message type shall be ignored/filtered |
IV_MSG_INDEX | /PLMB/SPI_MSG_INDEX | (New) message index with which the imported messages are added to the changing table |
IV_FIELDNAME | FIELDNAME | (New) field name with which the imported messages are added to the changing table |
IV_SEVERITY | /PLMB/SPI_MSG_SEVERITY | Overall severity of the import message table, this parameter must be supplied if CV_SEVERITY is requested |
IT_MESSAGE | /PLMB/T_SPI_MSG | Table of messages to be added to the message table specified by CT_MESSAGE (mandatory) |
CV_SEVERITY | /PLMB/SPI_MSG_SEVERITY | Old/current severity that needs to be updated based on the added messages (theoretically CV_SEVERITY could be "lower" than IV_SEVERITY, but based IV_SUPPRESS_SEVERITY_UP_TO all import messages where filtered, in that case CV_SEVERITY is of course not adapted (mandatory) |
CT_MESSAGE | /PLMB/T_SPI_MSG | Table of messages (mandatory) |
ADD_SYST_MESSAGE
This method adds a message that is contained in the SY fields to a table of messages and adjusts the severity if needed.
Method signature:
Parameter | Data Type | Description |
---|---|---|
IV_MSG_INDEX | /PLMB/SPI_MSG_INDEX | Index of the data table (which is not handed over to this method) the message refers to |
IV_FIELDNAME | FIELDNAME | Field the message refers to |
CT_MESSAGE | /PLMB/T_SPI_MSG | Table of messages |
CV_SEVERITY | /PLMB/SPI_MSG_SEVERITY | Message severity |
SET_MESSAGE
This method offers a subset of the functionality that is covered by method ADD_SYST_MESSAGE.
CONVERT_SYMSG
This method offers a subset of the functionality that is covered by method ADD_SYST_MESSAGE.
COMBINE_MESSAGE_TABLES
This method combines two message tables (source and target). For the source table an index needs to be supplied with which the messages are added to the target table. Note: initial indices of source messages are respected and not overwritten by IV_INDEX_TARGET.
Method signature:
Parameter | Data Type | Description |
---|---|---|
IV_INDEX_TARGET | IV_INDEX_TARGET | Message index to be set in target message table (mandatory) |
IT_MESSAGE_SOURCE | /PLMB/T_SPI_MSG | Source message table (to be added to target message table) (mandatory) |
CT_MESSAGE_TARGET | /PLMB/T_SPI_MSG | Target message table (containing existing message plus the source table message) (mandatory) |
CONVERT_BAPIRET
This method converts a message table in the BAPIRET format to the SPI message format.
Method signature:
Parameter | Data Type | Description |
---|---|---|
IS_BAPIRET | BAPIRET2 | BAPIRET structure |
IT_BAPIRET | BAPIRETTAB | BAPIRET table |
CT_MESSAGE | /PLMB/T_SPI_MSG | Message table enhanced with BAPIRET messages (mandatory) |
CONVERT_EXCEPTION_TO_MSG
This method converts an exception (CX_ROOT or inherited) in to the SPI message format (table of message type /PLMB/T_SPI_MSG).
Method signature:
Parameter | Data Type | Description |
---|---|---|
IO_EXCEPTION | CX_ROOT | Exception instance (mandatory) |
IV_FIELDNAME | FIELDNAME | Fieldname the exception refers to |
IV_MSG_IDX | /PLMB/SPI_MSG_INDEX | Message index to be set in ET_MESSAGES |
ET_MESSAGES | /PLMB/T_SPI_MSG | Resulting message table |
CHANGE_MESSAGE_TYPE
This method allows changing message types in a message table. For example error messages should be "downgraded" to warning messages. As default the "from" message type is preset with 'E' (error message) and the "to" message type with 'W' (warning message).
Method signature:
Parameter | Data Type | Description |
---|---|---|
IV_FROM_TYPE | SYMSGTY | From message type |
IV_TO_TYPE | SYMSGTY | To message type |
CT_MESSAGE | /PLMB/T_SPI_MSG | Messages to be adjusted (mandatory) |
SET_MSG_INDEX
This method allows setting a new message index to a given message table.
Method signature:
Parameter | Data Type | Description |
---|---|---|
IV_INDEX | /PLMB/SPI_MSG_INDEX | New message index (mandatory) |
CT_MESSAGE | /PLMB/T_SPI_MSG | Messages to be adjusted (mandatory) |
GET_SEVERITY
This method calculates the overall severity of a message table, the "highest" message type wins: S < I < W < E < A/X.
Method signature:
Parameter | Data Type | Description |
---|---|---|
IT_MESSAGE | /PLMB/T_SPI_MSG | Messages (mandatory) |
EV_SEVERITY | /PLMB/SPI_MSG_SEVERITY | Overall severity of the message table |
ADJUST_MESSAGE_SEVERITY
This method updates a given message severity based on a second one (the "higher" message severity wins: S < I < W < E < A/X)
Use case: within one method you call several other methods that return a message severity. At the end of this method an aggregated message severity (based on all calls) needs to be returned.
Method signature:
Parameter | Data Type | Description |
---|---|---|
IV_SEVERITY | /PLMB/SPI_MSG_SEVERITY | New severity that needs to be considered (mandatory) |
CV_SEVERITY | /PLMB/SPI_MSG_SEVERITY | Old/current severity that needs to be updated (mandatory) |
CALC_RELEVANT_SEVERITY_LEVEL
This method calculates the severity level for a given message type/severity, e.g. the severity level for message type 'W' would be 'SIW'.
Method signature:
Parameter | Data Type | Semantic |
---|---|---|
IV_SEVERITY_UP_TO | /PLMB/SPI_MSG_SEVERITY | Relevant severity / message type (mandatory) |
EV_SEVERITY_LEVEL | STRING | Resulting severity level (mandatory) |
ADD_INSERT_MSG_TO_COLLECTOR
This method adds messages that occurred during an insert via method ADD_MESSAGE_ENH to the given Collector while using the appropriate reference type.
Method signature:
Parameter | Data Type | Description |
---|---|---|
IV_NODE_NAME | /PLMB/SPI_NODE_NAME | Node name |
IT_MESSAGE | /PLMB/T_SPI_MSG | Table of messages |
IT_IMPORT_DATA | INDEX TABLE | Import node data of INSERT |
IT_EXPORT_DATA | INDEX TABLE | Export node data of INSERT |
IT_NODE_ID_REL | /PLMB/T_SPI_NODE_REL | Relationship between rows of IT_IMPORT_DATA and IT_EXPORT_DATA |
IO_COLLECTOR | /PLMB/IF_SPI_COLLECTOR |
Data Conversion
CONVERT_DATA_TO_XSTRING
This method converts the given data to an X-String.
This is needed to be able to use a common format whenever the data type cannot be set statically.
To extract the data again method CONVERT_XSTRING_TO_DATA can be used.
Example: The SPI uses the X-String conversion when combining the node ID with the message information. The data type of the message is known at design time but the node ID has a dynamic type, so therefore to fill both information into one structure an X-String component is used for the node ID.
Method signature:
Parameter | Data Type | Description |
---|---|---|
IG_DATA | ANY | Data that will be converted to an X-String |
IV_COMPRESSION_ON | BOOLE_D | Allows compression of the data |
EV_XSTRING | /PLMB/SPI_XSTRING | Resulting X-String |
CONVERT_XSTRING_TO_DATA
This method extracts the data that was converted to an X-String via method CONVERT_DATA_TO_XSTRING.
Method signature:
Parameter | Data Type | Description |
---|---|---|
IV_XSTRING | /PLMB/SPI_XSTRING | X-String which contains the data |
EG_DATA | ANY | Data that was extracted from the X-String |
CONVERT_STRUCTURE_TO_XSTRING
This method offers the same functionality as method CONVERT_DATA_TO_XSTRING.
CONVERT_XSTRING_TO_STRUCTURE
This method offers the same functionality as method CONVERT_XSTRING_TO_DATA.
CNV_SEL_OPTIONS_TO_STRUCTURE
This method provides a simple conversion of QUERY select options to a data structure, which only supports sign 'I' and option 'EQ'.
The select options are filled into the according fields of the data structure.
When a duplicate select option is handed over or one that is not supported a message type 'X' is returned.
Method signature:
Parameter | Data Type | Description |
---|---|---|
IT_SELECT_OPTIONS | /PLMB/T_SPI_SELECTION_PARAM | Select options |
ES_QUERY_DATA | ANY | Structure with fields that match the select options |
ES_MESSAGE | /PLMB/S_SPI_MSG | Table of messages |
CNV_STRUCTURE_TO_SEL_OPTIONS
This method provides a simple conversion of a data structure to QUERY select options.
All fields of the structure that are not blank are added to the select options using sign 'I' and option 'EQ'.
Method signature:
Parameter | Data Type | Description |
---|---|---|
IS_QUERY_DATA | ANY | Structure whose fields should be converted to select options |
ET_SELECT_OPTIONS | /PLMB/T_SPI_SELECTION_PARAM | Select options |
ES_MESSAGE | /PLMB/S_SPI_MSG | Table of messages |
Metadata Related
GET_COMPONENT_DETAILS
This method provides to a given RTTI structure description object the component details that are for example used in the Metadata Provider.
Method signature:
Parameter | Data Type | Description |
---|---|---|
IO_STRUCTDESCR | CL_ABAP_STRUCTDESCR | RTTI structure description |
CT_COMPONENT_DETAILS | /PLMB/T_SPI_COMPONENT_DETAILS | Component details |
GET_OPERATION_CATEGORY
This method provides a set of flags that indicate the supported operations which are defined via the given operation group.
Method signature:
Parameter | Data Type | Description |
---|---|---|
IV_OPERATION_GROUP | /PLMB/SPI_OPERATION_GROUP | Operation Group |
ES_OPERATION_CATEGORY | /PLMB/S_SPI_OPR_CATEGORY | Flags that indicate the supported operations |
SET_OPERATION_CATEGORY
This method returns an operation group according to the given set of flags that indicate the supported operations.
Method signature:
Parameter | Data Type | Description |
---|---|---|
IS_OPERATION_CATEGORY | /PLMB/S_SPI_OPR_CATEGORY | Flags that indicate the supported operations |
RV_OPERATION_GROUP | /PLMB/SPI_OPERATION_GROUP | Operation Group |
GET_SIDEEFFECT_CATEGORY
This method provides to a given side-effect all affected groups of nodes that will be invalidated.
Method signature:
Parameter | Data Type | Description |
---|---|---|
IV_SIDEEFFECT | /PLMB/SPI_SIDEEFFECT | Side-effect |
EV_MYSELF | BOOLE_D | Indicates that the side-effect will invalidate the node itself |
EV_CHILD | BOOLE_D | Indicates that the side-effect will invalidate the node's children |
EV_PARENT | BOOLE_D | Indicates that the side-effect will invalidate the node's parents |
EV_SIBLING | BOOLE_D | Indicates that the side-effect will invalidate the node's sibling and their children |
EV_OTHERS | BOOLE_D | Indicates that the side-effect will invalidate all other ABBs |
EV_ALL | BOOLE_D | Indicates that the side-effect will invalidate all nodes of the own ABB |
SET_SIDEEFFECT_CATEGORY
This method provides the according side-effect to the given invalidation requirements.
Method signature:
Parameter | Data Type | Description |
---|---|---|
IV_MYSELF | BOOLE_D | Indicates that the side-effect should invalidate the node itself |
IV_CHILD | BOOLE_D | Indicates that the side-effect should invalidate the node's children |
IV_PARENT | BOOLE_D | Indicates that the side-effect should invalidate the node's parents |
IV_SIBLING | BOOLE_D | Indicates that the side-effect should invalidate the node's sibling and their children |
IV_OTHERS | BOOLE_D | Indicates that the side-effect should invalidate all other ABBs |
IV_ALL | BOOLE_D | Indicates that the side-effect should invalidate all nodes of the own ABB |
RV_SIDEEFFECT | /PLMB/SPI_SIDEEFFECT | Side-effect |
GOS Related
PERS_AREA_SET
This method triggers writing of services data.
Method signature:
Parameter | Data Type | Description |
---|---|---|
IV_PERS_AREA | /PLMB/GOS_PERS_AREA | Personal Area / Service name; constants have to be defined by the application that created the services; for services already shipped by GOS/SPI itself following constant is available: /PLMB/IF_GOS_C=>GS_C_PERS_AREA-... (mandatory) |
IV_OTYPE_NAME | /PLMB/GOS_OBJECT_TYPE | Object type name (mandatory) |
IT_NODE_ID | INDEX TABLE | Table of node IDs; GOS will internally convert these IDs according to the defined GOS key conversion into the GOS object ID format |
IT_OBJECT_ID | /PLMB/T_GOS_INTERNAL_KEY | GOS object IDs (internal key format) |
CT_MESSAGE | /PLMB/T_SPI_MSG | Message table in SPI format (mandatory) |
Usage of Optional ID Parameters
It is mandatory to either supply the relevant object IDs in GOS format (IT_OBJECT_ID) or in node ID format (IT_NODE_ID), which can be handy when the call is implemented in the Service Provider, where typically the ID information is present in node ID and not GOS object ID format.
PERS_AREA_DELETE
This method deletes services data. The parameters match the ones of method PERS_AREA_SET.
GET_URL_FOR_ICON
This method provides a URL to the given icon.
Method signature:
Parameter | Data Type | Description |
---|---|---|
IV_ICON | /PLMB/GOS_ICON | Icon |
EV_ICON_URL | STRING | URL |
ADD_GOS_MESSAGES
This method offers the same functionality as method ADD_MESSAGES described above. The only difference is that the import table refers to GOS conversion messages. The changing table however is a regular SPI message table.
This method is very helpful if messages from a GOS conversion call need to be added to a "standard" SPI table.
GET_GOS_SEVERITY
This method calculates the overall severity of a GOS conversion message table, the "highest" message type wins: S < I < W < E < A/X.
Method signature:
Parameter | Data Type | Description |
---|---|---|
IT_MESSAGE | /PLMB/T_GOS_CNVMSG | GOS conversion Messages (mandatory) |
EV_SEVERITY | /PLMB/SPI_MSG_SEVERITY | Overall severity of the message table |
Miscellaneous
GET_USER_TEXT
This method provides user details like first name and last name for a list of users.
Method signature:
Parameter | Data Type | Description |
---|---|---|
IT_USR_NAMES | /PLMB/T_SPI_USR_NAME_ID | Table of users |
ET_USER_LIST | /PLMB/T_SPI_USR_NAMES | Details about users like first name and last name |
ET_USER_NAME_DISPLAY | /PLMB/T_SPI_USERNAME | Details about users like full name |
EV_MSG_SEVERITY | /PLMB/SPI_MSG_SEVERITY | Message severity |
CT_MESSAGE | /PLMB/T_SPI_MSG | Table of messages |
IS_ABB_EXISTENT
This method checks if a certain Application Building Block ID (ABBID) exists.
Method signature:
Parameter | Data Type | Description |
---|---|---|
IV_ABBID | /PLMB/SPI_ABBID | ABBID to be checked |
RV_RESULT | BOOLE_D | Indicates if the ABBID exists |
Class /PLMB/CL_SPI_QUERY_UTIL
FILL_RESULT
This method processes a query result and enables self-programmed SP queries with standard functions:
- Extract node IDs from query result data
- Build relation between node ID records and result records (needed if node IDs retrieved with a sorted table)
- Do mapping if fieldnames of the ID structure are different to the fieldnames of the result structure
- Sort of result data
- Paging
Method signature:
Parameter | Data Type | Description |
---|---|---|
IT_MAPPING | INDEX TABLE | Mapping of node ID fieldnames with result fieldnames |
IS_OPTIONS | /PLMB/S_SPI_QUERY_OPTIONS | paging and Sort order |
ET_NODE_ID | INDEX TABLE | Node IDs extracted from CT_NODE_DATA |
ET_NODE_ID_REL | /PLMB/T_SPI_NODE_REL | Relation between node ID records and result data |
CT_NODE_DATA | INDEX TABLE | Result data possibly changed by post-processing |
EXPAND_SHLP_METADATA
This method creates the metadata according to a given DDIC search help while expanding collective search helps.
Method signature:
Parameter | Data Type | Description |
---|---|---|
IV_SHLPNAME | SHLPNAME | Name of a DDIC search help |
IT_ID_COMPONENTS | /PLMB/T_SPI_F4_PARAM_MAP | Mapping between node ID components and DDIC search help export parameters |
IT_SHLPNAME_RANGE | GTY_T_SHLPNAME_RANGE | Range to filter DDIC search helps |
ET_QUERY_METADATA | /PLMB/T_SPI_F4_QUERY | DDIC search help query metadata |
Constants
All fixed values that are used within the area of the SPI are defined at ABAP OO constant interfaces.
Metadata Related Constants – /PLMB/IF_MDP_C
This interface offers constants that are needed when defining or consuming metadata.
Constant | Description |
---|---|
GC_C_ACTION_NODE_NAME | Default node name for 'action' node (obsolete) |
GS_C_ACTION_ID_RELEVANCE | Relevance of Node IDs for ACTION calls |
GS_C_CARDINALITY | Cardinality of a node |
GS_C_CRITERIA_ENTRY_KIND | Definition for QUERY criteria processing |
GS_C_KEY_KIND | Key kind of an ABAP table type, e.g. used when defining Dynamic Metadata |
GS_C_OPERATION_GROUP | |
GS_C_OPERATION_TYPE | Operation Types, like 'ACTION' or 'INSERT', e.g. used for defining initialization operations |
GS_C_OPTION | ABAP select options (EQ, GE...), e.g. used when defining query metadata |
GS_C_SIDEEFFECT | Side-effects, e.g. 'MYSELF_PARENT' |
GS_C_SUPPORTED_SIGN | Supported sign in select options (I, E), e.g. used when defining query metadata |
GS_C_TABLE_KIND | ABAP table type, e.g. used when defining Dynamic Metadata |
GS_C_UPDATE_RELEVANT | Update relevance of a metadata node |
GS_C_VERSION | Metadata Version, e.g. 'VERSION_703' |
GC_C_SIDEEFFECT | Side-effects, e.g. 'MYSELF_PARENT' (obsolete) |
Service Provider Related Constants – /PLMB/IF_SPI_C
This interface offers constants that are used within the Service Provider or when calling it.
Constant | Description |
---|---|
GC_GENERIC_SP_NAME | Name of the generic Service Provider (only used SPI internally) |
GC_TIME_ZONE_UTC | UTC time zone |
GS_C_ACCESS_METH | Service Provider method codes |
GS_C_CLEANUP_REASON | Reason code for CLEAN_UP calls |
GS_C_INVALIDATION_SCOPE | Scope of node invalidation on ID level |
GS_C_INVALIDATION_REASON | Reason for node invalidation |
GS_C_INVALID_NODE_PROCESSING | Definition of the node invalidation processing when instantiating a Connector |
GS_C_MESSAGE_PROCESSING | Definition of the message processing when instantiating a Connector |
GS_C_METHOD_NAME | Service Provider method names |
GS_C_MODE | Mode (Display, Change, Insert) |
GS_C_MSGTY | Message types (for SY-MSGTY) |
GS_C_MSG_REF_TYPE | |
GS_C_MSG_VARIABLE | Message variables |
GS_C_OPERATION_CATEGORY | |
GS_C_OPERATION_TYPE | Operation Types, like 'ACTION' or 'INSERT', e.g. used for controlling operation properties |
GS_C_OPERATION_PROPERTY | |
GS_C_OPR_PRPTY_REF_TYPE | |
GS_C_PROPERTY | |
GS_C_PROPERTY_MERGE_RULE | |
GS_C_PROPERTY_PROCESSING | Definition of the properties processing when instantiating a Connector |
GS_C_PRPTY_REF_TYPE | |
GS_C_QUERY_OPTIONS | QUERY paging operators (obsolete) |
GS_C_REASON_CODE | Reason codes for RETRIEVE errors |
GS_C_REFERENCE_TYPE | All Reference Types |
GS_C_SEVERITY_CATEGORY | Message severity category (e.g. 'ERROR_OR_WORSE' ~ 'EAX' ), helpful when evaluating messages based on a "minimum" message type |
GS_C_SIGN | Sign of QUERY select options |
GS_C_TARGET | |
GS_C_PAGING_SUPPORTED | Paging of QUERY supported |