Registration

Dear SAP Community Member,
In order to fully benefit from what the SAP Community has to offer, please register at:
http://scn.sap.com
Thank you,
The SAP Community team.
Skip to end of metadata
Go to start of metadata

Disclaimer

The information in this document is confidential and proprietary to SAP and may not be disclosed without the permission of SAP. Except for your obligation to protect confidential information, this document is not subject to your license agreement or any other service or subscription agreement with SAP. SAP has no obligation to pursue any course of business outlined in this document or any related document, or to develop or release any functionality mentioned therein. This document, or any related document and SAP's strategy and possible future developments, products and or platforms directions and functionality are all subject to change and may be changed by SAP 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. This document is provided without a warranty of any kind, either express or implied, including but not limited to, the implied warranties of merchantability, fitness for a particular purpose, or non-infringement. This document is for informational purposes and may not be incorporated into a contract. SAP assumes no responsibility for errors or omissions in this document, except if such damages were caused by SAP’s intentional or gross negligence.

Please be aware that the API will change and that you may have to re-develop your code.

Purpose

While the Gateway based Process Management API allows read and write access to solution data from outside the system, the ABAP classed based API can be used for enhancement implementations in the system or for building onw ABAP reports. Both the Process Management API and the ABAP classed based API are only different facades for the same low level APIs of Solution Documentation. This means that the same authorizations and consistency rules are checked, the same notification mechanisms are executed, and also history data are written when these APIs are used.

Warning

Direct SQL access to Solution Documentation tables is not at all recommended, neither for reading nor for writing. Direct table access may cause unsolvable data base inconsistencies and irreversible data loss.

Overview

The API is located in package AI_SMUD_INTERFACE_API and can be accessed via factory class CL_SMUDE_API. This class returns objects that are documented by their interfaces with name IF_SMUDE_*. The documentation is written in ABAP Doc. (Exception: Solutions can be read with IF_SLANE_READ with factory class CL_SLANE_API). When you use ABAP Development Tools in Eclipse for programming you get the ABAP Doc documentation by F2 on the method name. In the SAP GUI based ABAP development tools you need to display the Interface Section via Goto menu to see the comments starting with "!. You should use the constants provided by class CL_SMUDE_CONSTANTS in your code. For using the API it is essential to understand that solution documentation has a generic database that is configured by a mode. The model can be viewed with ABAP report SMUD_MODEL_BROWSER. The tree structure is build by elements that point to their parent elements. Elements can have simple, multiple and language dependent attributes. Some elements e.g. process steps have a reference to an original element in the library. Key attributes are handled in a special way, since they identify an element uniquely. That's why it is not possible to change the Logical Component Group at an element with unique key handling. With ABAP reports RSMUD_UIGEN_NODE_INFO you can activate a UI plug-in which provides branch IDs, element IDs, parent and reference IDs in SOLDOC. With report RSMUD_SOLADM_NODE_INFO you can display branch and Logical Component Group IDs in SOLADM. We recommend also to view the local test classes of the implementing classes ( CL..._IMPL). They document the usage and the error handling of the API methods.

Important API terms

API termMeaning
ROOT_OCCBranch
SLAN or PLANSolution
OCCOccurrence = Node = Element
SETInternal table sorted by key for faster read access
LISTInternal table with individual sorting for UI purposes

Exceptions

The following exception classes may be raised by our APIs. The error texts can be determined by calling ~get_text( ).  

Never catch CX_ROOT or CX_SMUD_ASSERT_D . If you do, you might convert exceptions that should lead to a dump. This makes it very difficult for support to find the root cause. 

Class
Description
Catchable?
Example
Status
CX_SMUDEBase exception class of SOLDOCYes 
RELEASED

CX_SMUDE_FAILURE

General error; The execution of you method failed and was interrupted by the underlying layer.YesYou tried to edit an element which is already locked by another user.
RELEASED
CX_SMUDE_CONNECTIONConnection error. Can be ignored if managed system data are not required.YesThe RFC connection used did not work properly.
RELEASED
CX_SMUD_ASSERT_D

Internal error which causes a program termination.

You must not catch this error as it ensures internal consistency!

NoYou tried to call methods with insufficient or invalid data.
INTERNAL

Search Helps

You can also use the DDIC search helps 

SH_SLAN
SMUD_SH_SBRA
SMUD_SH_SCOPE
SMUD_SH_SLAN_SBRA
SMUD_SH_VIEW
SMUDE_SH_SITES

API Behavior

If you are not sure if a certain context is valid you should check it before you call an API method. Otherwise an exeption with no check of the RAISING clause will be thrown by the API. Our read APIs don't do an implicit display check on object level just on solution level. If you show elements at a UI you should call IF_SMUDE_NODE_READ~FILTER_NODE_BULK with option i_filter_by_auth. The option i_filter_groups can be used to remove the invisible group elements of SOLDOC. You should not remove group nodes if you need to build a hierarchy. 

Elements you have already read with IF_SMUDE_NODE_READ can be filtered with IF_SMUDE_NODE_READER without DB access.

If a user has the right to do an operation on our data is checked in so called precon-checks. We offer separate interface IF_SMUDE_NODE_WRITE_PRECON_CHK to do the precon-checks explicitly in our write API. Our write APIs do an implicit precon-check.

We only provide bulk methods to grant optimum performance for mass operations.

We use 22 character GUIds at the API. When you use these GUIds in special contexts e.g. in a URL, in HTML, in Json ... you need to escape it using the ABAP Escape Function. since these GUIds use the characters '{' and '}' which are not allowed in some contexts. It is not possible to convert externally created GUIDs into 22 character GUIDs.

  • No labels