haul        2003/01/17 06:18:03

  Modified:    src/documentation/xdocs/developing book.xml
  Added:       src/documentation/xdocs/developing web3.xml
  Log:
  docs for web3
  
  Revision  Changes    Path
  1.12      +4 -0      xml-cocoon2/src/documentation/xdocs/developing/book.xml
  
  Index: book.xml
  ===================================================================
  RCS file: /home/cvs/xml-cocoon2/src/documentation/xdocs/developing/book.xml,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- book.xml  1 Jul 2002 19:53:45 -0000       1.11
  +++ book.xml  17 Jan 2003 14:18:02 -0000      1.12
  @@ -23,6 +23,10 @@
       <menu-item label="Developing Webapps" href="webapps/index.html"/>
     </menu>
   
  +  <menu label="Blocks">
  +    <menu-item label="Connect to SAP R/3" href="web3.html"/>
  +  </menu>
  +
     <menu label="Java">
       <external label="API (Javadoc)" href="../apidocs/index.html"/>
     </menu>
  
  
  
  1.1                  xml-cocoon2/src/documentation/xdocs/developing/web3.xml
  
  Index: web3.xml
  ===================================================================
  <?xml version="1.0" encoding="ISO-8859-1"?>
  <!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.0//EN" 
"../dtd/document-v10.dtd">
  <document>
        <header>
                <title>Web3</title>
                <subtitle>Web3 Connectivity Toolkit</subtitle>
                <authors>
                        <person name="Michael Gerzabek" email="[EMAIL 
PROTECTED]"/>
                </authors>
        </header>
        <body>
                <s1 title="About">
                        <p>
                                <link href="http://www.efp.cc/web3";>EFP 
Consulting Austria</link> produced an open-source library called Web3
                                that allows you to integrate SAP R/3 seamlessly 
into Cocoon 2. With these components you are able to call Remote 
                                Function Calls via an easy to use XML-syntax. 
For most BAPIs and Remote enabled Function Calls you simply need 
                                a text editor.
                        </p>
                        <p>This toolkit offers you ...</p>
                                <ul>
                                        <li>... synchron communication to any 
SAP system above release 3.1H.</li>
                                        <li>... easy to use ABAP function calls 
from outside R/3 with a se37-like markup-syntax.</li>
                                </ul>
                        <note>
                                The following guide helps you to setup cocoon 
with your SAP R/3. Reasonably this guide cannot answer
                                all questions dealing with your environment. 
For further questions be advised to contact your favorite SAP Consultant.
                        </note>
                </s1>
                <s1 title="Installing SAP R/3 (TM) JavaConnector">
                        <p>
                                        Be sure to proper install the 
appropriate SAP Java-Connector from <link 
href="http://service.sap.com/connectors";>
                                        www.sap.com</link>. To install the 
connector refer to the included documentations.
                        </p>
                </s1>
                <s1 title="Configuring cocoon.xconf">
                        <p>
                                        With Web3 you have a flexible Toolkit 
where you can connect to multiple R/3 System within one single Cocoon-
                                        Instance. Enter your backend 
configuration into cocoon.xconf like this:
                        </p>
                        <s2 title="Items">
                                <table>
                                        <caption>Configuration 
elements</caption>
                                        <tr>
                                                <th>Element</th>
                                                <th>Description</th>
                                        </tr>
                                        <tr>
                                                <td>web3</td>
                                                <td>Declare your logger 
here.</td>
                                        </tr>
                                        <tr>
                                                <td>pool</td>
                                                <td>The pool element is the 
logical unit of all your SAP settings.</td>
                                        </tr>
                                        <tr>
                                                <td>client</td>
                                                <td>The systems client you log 
onto.</td>
                                        </tr>
                                        <tr>
                                                <td>user, password, 
language</td>
                                                <td>...</td>
                                        </tr>
                                        <tr>
                                                <td>route</td>
                                                <td>The route to your SAP 
system. Please refer to your <link href="http://help.sap.com";>SAP help</link> 
to prepare the connection string.</td>
                                        </tr>
                                        <tr>
                                                <td>system</td>
                                                <td>The system-number of your 
SAP system you log onto.</td>
                                        </tr>
                                        <tr>
                                                <td>gateway, program-id</td>
                                                <td>Are mandatory and not used 
within Web3's szenario.</td>
                                        </tr>
                                </table>
                  <table>
                      <caption>Specifics on the <code>pool</code> 
element</caption>
                                        <tr>
                         <td>@trace</td><td>a <code>boolean</code> switch 
whether to use JCO's facility to trace the    communication layer or not.</td>
                      </tr>
                      <tr>
                                           <td>@level</td><td>if @trace is 
<code>true</code> set the trace-level to your prefered value. Please refer to 
the JCO's documentation about tracing.</td>
                      </tr>
                      <tr>
                                                                
<td>@size</td><td>denotes the pool-size of your sap connection pool. Be aware 
that this is a hard-limited pool.</td>
                      </tr>
                                </table>
                        </s2>
                        <p>
                                A configuration in your cocoon.xconf would look 
like this:
                        </p>
  
                                <source><![CDATA[<web3 logger="core.web3">
        <backend name="indy">
                <pool level="0" size="10" trace="false">
                        <client>100</client>
                        <user>user</user>
                        <password>secret-passphrase</password>
                        <language>DE</language>
                        <route>indy</route>
                        <system>00</system>
                        <gateway>sapgw00</gateway>
                        <program-id>USR-GR02</program-id>
                </pool>
        </backend>
        <backend name="hugo">
        ...
  </web3>]]></source>
  
                </s1>
  
                <s1 title="Test the installation">
                        <p>
                                After you configured your Web3 environment you 
may want to test your connection. In SAP world there is a typical
                                Remote Function available called 
RFC_SYSTEM_INFO. It returns some basic configuration data about your SAP-System.
                                To call this Remote Function point your browser 
<link href="../../samples/web3/info.xml">here</link>. 
                        </p>
                </s1>
  
                <s1 title="Implementing your own RFC's">
                        <p>Now that you've established your own Web3-connection 
you may want to test some extra Functions. First of all you have
                        to setup your markup with the right Namespace</p>
                        <source><![CDATA[<page 
xmlns:rfc="http://efp.cc/Web3-Rfc/2.0";>
        ...
  </page>]]></source>
                        <p>After doing so you can enter RFC-mappings with the 
following syntax. You will see this is a very easy task and you will enjoy
                        using Web3 to do the stuff for you within your SAP 
environment :)</p>
                        <s2 title="Web3 rfc-Syntax">
                                <p>
                                        Data definitions (metadata) are created 
and managed in the ABAP Dictionary. The ABAP Dictionary permits a central 
                                        description of all the data used in the 
system without redundancies. New or modified information is automatically 
provided 
                                        for all the system components. This 
ensures data integrity, data consistency and data security.
                                </p>
                                <p>
                                        The syntax used within this markup 
builds upon these facts. So do not wonder if you find the corresponding logical
                                        units in the Cocoon frontend.
                                </p>
                                <table>
                                        <caption>Markup</caption>
                                        <tr>
                                                <th>Element</th>
                                                <th>Description</th>
                                        </tr>
                                        <tr>
                                                <td>
                                                        <link 
href="#rfc_include">rfc:include</link>
                                                </td>
                                                <td>Starts a mapping for the 
specified RFC.</td>
                                        </tr>
                                        <tr>
                                                <td>
                                                        <link 
href="#rfc_import">rfc:import</link>
                                                </td>
                                                <td>Container element for 
structures and fields.</td>
                                        </tr>
                                        <tr>
                                                <td>
                                                        <link 
href="#rfc_tables">rfc:tables</link>
                                                </td>
                                                <td>Container element for 
tables.</td>
                                        </tr>
                                        <tr>
                                                <td>
                                                        <link 
href="#rfc_structure">rfc:structure</link>
                                                </td>
                                                <td>Container element for 
fields.</td>
                                        </tr>
                                        <tr>
                                                <td>
                                                        <link 
href="#rfc_table">rfc:table</link>
                                                </td>
                                                <td>Container element for 
structures.</td>
                                        </tr>
                                        <tr>
                                                <td>
                                                        <link 
href="#rfc_field">rfc:field</link>
                                                </td>
                                                <td>The data-fields.</td>
                                        </tr>
                                </table>
                        </s2>
  
                        <anchor id="rfc_include"/>
                        <s2 title="rfc:include">
                                <p>First when you start to map a RFC keep in 
mind to get the parameters from your SAP system. Therefore you
                                may want to use se37 where all relevant 
parameters are listed. The <code>@name</code> has to be the name of
                                the RFC you want to map. </p>
                                <p>Since many RFC's return hierarchical data 
split into tables you will encounter some
                                problems in xslt when rendering these data to 
trees. So you may implement 
<code>org.apache.cocoon.components.web3.Web3Streamer</code> to get a proper XML 
to work with. You can set your own streamer in the
                                <code>@streamer</code>.</p>
                                <table>
                                        <caption>Attributes</caption>
                                        <tr>
                                                <th>Attribute</th>
                                                <th>Description</th>
                                        </tr>
                                        <tr>
                                                <td>
                                                        @name
                                                </td>
                                                <td>The name of the SAP RFC</td>
                                        </tr>
                                        <tr>
                                                <td>
                                                        @streamer
                                                </td>
                                                <td>The class-name of your 
function streamer. Most of the time you won't need to implement it anyway.</td>
                                        </tr>
                                </table>
                                <p/>
                        </s2>
                        <anchor id="rfc_import"/>
                        <s2 title="rfc:import">
                                <p>
                                        When requesting a RFC you have to fill 
the import parameterlist. The import parameterlist lists all relevant parameters
                                        that have to be provided to get proper 
results from your R/3.</p>
                                <p>se37 can provide you with the relevant 
information.
                                </p>
                        </s2>
                        <anchor id="rfc_tables"/>
                        <s2 title="rfc:tables">
                                <p>
                                        Some highly complex RFC's have also 
tables in their calling interface. You may need to read the SAP documentation 
of the
                                        BAPI you gotta call and when to make 
use of one of them.
                                </p>
                        </s2>
                        <anchor id="rfc_structure"/>
                        <s2 title="rfc:structure">
                                <p>
                                        A structure comprises fields. A field 
can refer to an elementary type (via a data element or by directly specifying 
the data type and length in the structure definition), another structure or a 
table type. A structure can therefore be nested to any depth.
                                </p>
                                        <note>At the time the facility to use 
nested structures has not been tested!</note>
                        </s2>
                        <anchor id="rfc_table"/>
                        <s2 title="rfc:table">
                                <p>
                                        A table consists of a collection of 
structures with same structure type. To keep it simple we can sloppily say a 
table is like
                                        a SQL-database-table.
                                </p>
                        </s2>
                        <anchor id="rfc_field"/>
                        <s2 title="rfc:field">
                                <p>
                                        Fields, also called data elements are 
the smallest indivisible units of the complex types and are used to specify the 
types 
                                        in structures and columns of tables. A 
field describes either an elementary type or a reference type.</p>
                                <p>
                                        In ABAP exist predefined types and 
custom defined types. But don't worry about the horrible task of converting 
into the right
                                        type. This task is excellently done for 
you by the JavaConnector.
                                </p>
                                <note>
                                        Keep in mind that the communication 
format for numbers and date is US. So supply <code>Date</code> information
                                        in format YYYY-MM-DD with the slashes 
and <code>number</code> information like DDDDD.DD where the dot is the comma!
                                </note>
                        </s2>
                        <p>If you want to check your RFC mappings for 
syntactically correctness you may want to use the enclosed 
<code>dtd</code>'s.</p>
                </s1>
                <s1 title="A more complex example">
                        <p>
                                The included example demonstrates a more 
complex function call. Keep in mind that the correct execution
                                depends on the local customizing settings of 
the connected SAP System.
                        </p>
                        <source><![CDATA[<page 
xmlns:rfc="http://efp.cc/Web3-Rfc/1.0";>
    <rfc:include name="XXX" streamer="XXX">
      <rfc:import>
        <rfc:structure name="XXX">
          <rfc:field name="XXX">YYY</rfc:field>
          <rfc:field name="XXX">YYY</rfc:field>
          <rfc:field name="XXX">YYY</rfc:field>
        </rfc:structure>
        <rfc:tables>
          <rfc:table name="XXX">
            <rfc:structure name="1">
              <rfc:field name="XXX">YYY</rfc:field>
              <rfc:field name="XXX">YYY</rfc:field>
              <rfc:field name="XXX">YYY</rfc:field>
            </rfc:structure>
          </rfc:table>
        </rfc:tables>
      </rfc:import>
    </rfc:include>
  </page>]]></source>
                </s1>
                <s1 title="Setting up the sitemap">
                        <p>There are two ways to setup your Web3Transformer in 
the sitemap.</p>
                        <s2 title="Global Configuration">
                                <p>If you have to deal only with one R/3 
Instance you may
                                configure your 
<code>org.apache.cocoon.transformation.Web3RfcTransformer</code>
                                global like stated in the following sitemap 
snippet.</p>
  
                  <source><![CDATA[
  <map:transformer name="rfc" 
                   src="org.apache.cocoon.transformation.Web3RfcTransformer" 
                   logger="web3.transformation">
    <system>indy</system>
  </map:transformer>
  ]]></source>
                                </s2>
                <s2 title="Parametrized Configuration">
                                <p>If you have setup several R/3 pools you can 
parametrize the
                     
<code>org.apache.cocoon.transformation.Web3RfcTransformer</code> as stated 
next</p> 
                     <source><![CDATA[
  <map:transform type="rfc">
    <map:parameter name="backend" value="indy"/>
  </map:transform>
  ]]></source>
                        </s2>
                </s1>
                <s1 title="Further questions">
                        <p>
                                Enjoy using Web3. For further questions feel 
free to contact the author <link href="mailto:[EMAIL PROTECTED]">Michael 
Gerzabek</link>
                        </p>
                </s1>
                <figure src="images/cocoon-built.gif" alt="Built with Apache 
Cocoon"/>
        </body>
  </document>
  
  
  

----------------------------------------------------------------------
In case of troubles, e-mail:     [EMAIL PROTECTED]
To unsubscribe, e-mail:          [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to