Sap Connect Plugin
Get and include information from an SAP system
Introduction
With this plugin, information can be drawn from an SAP system (usually a development system) and merged dynamically into existing TWiki topics. The main type of information retrieved this way is documentation of ABAP repository objects (DDIC and code).
Necessary for this plugin to work is the existence of a request handler
ZCL_TWIKI_CONNECT on SAP site, which can be called anonymously. This topic contains an SAP transport order with the necessary objects for importing class ZCL_TWIKI_CONNECT and its dependencies.
Syntax rules
Object ID's
Documentation objects are adressed with a special
ID parameter. It contains the two-letter shorthand for docu types and, separated with dots, the name of the concrete object:
TYPE.NAME[.NAME2]
The
ID parameter is case insensitive.
The two-letter docu
TYPE conforms to the docu types as defined in table
TDCLT :
| Type |
stands for |
RE |
Report or Function Module |
FU |
Function Module or Function Module Parameter |
CL |
Class |
CO |
Method |
DE |
Data Element |
TX |
General Docu Text (maintained with transaction SE61 ) |
NAME denotes the name of the program / function module / data element / ... For function groups, take the name of their main program:
SAPLZUTIL for function group
ZUTIL.
NAME2 is an optional
subobject name, to be used for
- method names with Type
CO, or
- parameter names, when adressing the documentation of a particular interface parameter of a function module.
Examples:
-
FU.Z_TEST.IV_PARAM1 Interface parameter IV_PARAM1 of function module Z_TEST
-
RE.SAPLZUTIL Function group ZUTIL
-
RE.ZZ_TESTREPORT Program ZZ_TESTREPORT
-
CL.ZCL_XML_HELPER Class ZCL_XML_HELPER
Include SAP Documentation
For including SAP documentation into a TWiki topic, use the variable
%INCLSAPDOCU{}% . For example,
the documentation of function module
Z_CONVERT_ITF can be embedded into the current context
with the following instruction:
%INCLSAPDOCU{"fu.z_convert_itf"}%
Include ABAP code
For including ABAP code into a TWiki topic, the varriable
%INCLSAPCODE{}% may be used.
With the following statement, the code of function module
Z_CONVERT_ITF will be embedded into the page:
%INCLSAPCODE{"fu.z_convert_itf"}%

The instruction
%INCLSAPCODE% makes no sense for ID's which are not associated with ABAP code
(for example
TX). Using
%INCLSAPCODE% with such an ID will lead to an error message.
Generate a link on the SAP documentation
If you don't want to include the full documentation in the topic but would rather only offer a hyperlink to it, you can use the variable
%URLSAPDOCU{}% .
Generate a link for ABAP code display
The same as with ABAP docu display, but use variable
%URLSAPCODE{}% instead.
Optional Parameters
Surpress Header line
Adding
noheader="true" in the argument of
%INCLSAPDOCU% , the docu will be generated without the header line. Use this feature if you want to write your own header text for the documentation. When working with general texts (ID
TX ), this feature may be used to include texts into different TWiki topics.
Example:
%INCLSAPDOCU{"cl.zcl_xml_helper" noheader="true"}
This will include the documetation of class
ZCL_XML_HELPER . However, the header
---+Class ZCL_XML_HELPER which is usually generated automatically, wil be surpressed here.
Increasing Indentation Level
For increasing the indentation level, you may use the parameter
level .
The field
level may assumw values from
1 to
4 , the default is
1. The value of
level gives the number of
+ characters used for the header line ("Class ZCL_XML_HELPER"). The formats
U1,
U2,
U3 successively get further
+ characters
Example:
%INCLSAPDOCU{"cl.zcl_xml_helper" level="2"}
The documentation will begin with the header
---++ Klasse ZCL_XML_HELPER .
Destination System
With the parameter
dest , you address the SAP system from which the instructions
%INCLSAPDOCU% und
%INCLSAPCODE% draw their informations. The possible destinations are listed in TWiki variable %SAPCONNECTPLUGIN_SYSTEMS% in
TWikiPreferences, the first entry denoting the default system.
Example:
%INCLSAPDOCU{"cl.zcl_xml_helper" dest="D11"}%
The documentation of class
zcl_xml_helper will be requested from the D11 system.
Allowed Destinations And Path in the SAP System
All allowed destinations are listed in the TWiki variable %SAPCONNECTPLUGIN_SYSTEMS% in
TWikiPreferences definiert. The first entry denotes the default system. Each entry consists of a pair "
:" which is used for building the URL. The System ID's are the symbolic names of the SAP systems which may be used in the destination parameter of the INCLSAP* tags.
The ICF path containing the request handler on the SAP site is customized with variable %SAPCONNECTPLUGIN_PATH%
Example:
* Set SAPCONNECTPLUGIN_SYSTEMS = D12:migzmc04.migros.ch:1091,D11:migzmb30.migros.ch:1090,D13:migzm390.migros.ch:8000
* Set SAPCONNECTPLUGIN_PATH = /sap/bc/twiki
Resolving Subobjects
Using the parameter expand="true", you instruct the tag to include not only the documentation of the specified object but also to include all existing documentations of its subobjects. For example, all parameters of a function module or all methods of a class will contribute to the documentation, too. The parameter expand has no effect for tags other than %INCLSAPDOCU% , and even there only the types FU and CL will lead to a subobject resolution.
Example:
%INCLSAPDOCU{"cl.zcl_xml_helper" expand="true"}%
The documentation of class zcl_xml_helper will be supplemented by all existing documentations of all its methods.
Additional TWiki Content
Using the special variable INCLSAPADDI , you may retrieve arbitrary other information from the SAP system. The INCLSAPADDI splits its default argument at the first dot into two parts. The first path will be appended to the HTTP request path, while the second part will be passed as ID parameter with this request.
For your own additions, create an ABAP class implementing the interface ZIF_TWIKI_ADDITION . In our implementation on the ABAP site, the path extension of the request will be used to create an instance of the corresponding class dynamically, using ZCL_FACTORY
, our version of an object factory.
API function
The plugin contains the sub get_data_from_sap which may be used as an API for calls from other plugins, or even from scripts.
It accepts a hash with named input parameters dest, type, id and args . The syntax can be read off from the following test calls (part of the test suite in SapConnectPlugin/t/SapConnectPlugin.t ):
# Test API function
is( get_data_from_sap( type => 'transports', dest => 'D12' ),
'http://d12.migros.ch:1091/sap/bc/twiki/transports',
'get_data_from_sap() URL with no id is built properly' );
is( get_data_from_sap( type => 'transport', id => 'D12K123456' ),
'http://d11.migros.ch:1090/sap/bc/twiki/transport?id=D12K123456',
'get_data_from_sap() URL with id is built properly' );
is( get_data_from_sap( type => 'transports', args => { list_scope => 'light' } ),
'http://d11.migros.ch:1090/sap/bc/twiki/transports?list_scope=light',
'get_data_from_sap() URL with extra parameters is built properly' );
Tests
There is a set of automated tests under the Tests::More harness. It is contained in module SapConnectPlugin.t in subfolder t of the plugin.
In order to have these work as unit tests in the proper sense, the subs performing HTTP requests are replaced by echo functions at load:
*TWiki::Plugins::SapConnectPlugin::get_request = sub { return shift };
*TWiki::Plugins::SapConnectPlugin::get_topic_url_for_link = sub {
return URI->new( 'http://sapdev.mits.ch/twiki/bin/view/TWiki/Sap' . ucfirst lc shift );
};
Object List for the Plugin on SAP side
The attached twiki_sap.zip contains the data of transport order D12K961445 . To import it into your SAP system, place the data file and the cofile of the order into the R/3 transport directory, append the order to your import queue, and import it.
This is the list of objects that are contained in order D12K961445 : There are no dependencies from SAP components outside of the basis ( components SAP_ABA and SAP_BASIS ).
| Class |
ZCL_ITF_PARSER |
A SAPscript parser |
| Class |
ZCL_ITF_TO_TWIKI |
Builds TML markup code from SAPscript |
| Class |
ZCL_TWIKI_CONNECT |
The HTTP request handler for the SapConnectPlugin |
| Interface |
ZIF_TWIKI_ADDITION |
Interface for further addons using TWiki <-> SAP |
| Interface |
ZIF_WRITER |
Interface needed for implementing translators based on the SAPscript parser |
| Type Pool |
ZITF |
Contains constants for special SAPscript char sequences |
Plugin Settings
- Short description for Plugin lists
- Set SHORTDESCRIPTION = Get and include information from an SAP system
- Debug plugin: (See output in
data/debug.txt)
Plugin Info
Related Topics: TWikiPlugins, AdminDocumentationCategory, AdminToolsCategory