Web Template Tech Comparison (including fastm)

1. Preface
In the Java Web Application, the Page Generation Part may be the most tedious and painful part.
All other layers can be well structured. Only the Page Generation Part is mixed and bad structured.
This article first introduces and compares various Template Techs, and next introduces a Open Source Template project ? fastm written by the Author (namely me, ).
fastm is a PHP Java Port and Enhancement.
I hope fastm will free all Java Web Programmers from the tedious and painful page-making work.
2.Template Tech Comparison
The page in this article means XML, HTML, WML, etc, all of which can be displayed in the browser.
According to the Logic location, Template Tech can be categorized as two categories.
(1) One category is that, the page itself contains the ?if, else, for? logic.
Such as, JSP+TagLib, Velocity, XML+XSLT (XSLT contains logic), Tapestry, etc.
The logic in the page is not full developed as an OO Programming Language like Java.
The logic in the page can not utilize the ?Object?, ?Class?, ?Package? such Object-Oriented features.
So Template Techs of this category have no good structures, and have no good reusability.
(2) Another category is that, the page itself contains no logic.
Such as, XMLC, DOM+XPath, Echo, PHP, JDynamiTe, fastm, etc.
In this category, because the logic only exists in the Java Code, so the Template?s structure and reusability is as good as the Java Program.
Below will detail and compare these Template Techs.
2.1. JSP + TagLib
JSP+TagLib is the standard Template Tech of Sun company.
Advantages:
Authoritative; Standard; Many users; All kinds of TagLibs from 3rd parts.
Because JSP is Servlet and uses java code, Java code in JSP is very powerful and flexible, and can use all advantages of Java Language.
TagLib can help reuse the Page Components and help drive out the ?Java Code? pollution.
Disadvantages:
The disadvantages of JSP are obvious. Java Code and HTML are mixed together. This is the notorious Java Code Pollution problem, which makes many programmers headache.
Even TagLib can not solve this problem completely.
What is more, programmers and HTML editors can not work on the same file. Every time HTML editors edit the page, programmers have to add the Java code and TagLib to the page again.
The HTML page mixed with Java Code and TagLib can not be correctly displayed in the Browser or HTML Edition tools such as Dream Weaver and Front Page.
If you do not run the Web Server, you can not see the result of the JSP. You can not see the Layout, Style, and the content.
On the efficiency, flexibility, structure, reusability, JSP and TagLib are at the 2 ends.
If you use many TagLib in the JSP, the JSP is well structured and more like XML, and the page component can be reused. But the compiled result of TagLib is big, slow and low efficient. The TagLib is not flexible. It can only do limited things. TagLib code must conform to the TagSupport definition so that the TagLib code itself can not be well reused. The writing of TagLib is not a happy work.
If you use a lot Java Code in the JSP, the page structure will be bad and unmanageable. If your code scattered in a big HTML, it will be a nightmare. It is painful to find corresponding ?{? and ?}?. Except the ?Include File? or ?jsp:include?, the mixed Java Code and HTML can not be reused at all.
2.2. Velocity
http://jakarta.apache.org/velocity/
Velocity is a template tool. Velocity template consists of HTML and Velocity Scripts and Variables.
Advantages:
Velocity scripts start with #, and Velocity Variables starts with $. These do not conflict with the element definition of HTML, WML and XML.
A simple Velocity page without branch or loop logic can be correctly displayed in the HTML Edition tools such as Dream Weaver and Front Page.
Disadvantages:
Same as JSP, Velocity template mixes the logic with the HTML. If the Velocity template contains complex branch or loop logic, it can not be correctly displayed in the HTML Edition tools such as Dream Weaver and Front Page.
In the big HTML, to find corresponding ?#if? and ?#end? is also a painful work. Except the ?Include File?, the mixed Velocity code and HTML can not be reused at all.
2.3.XML + XSLT
http://cocoon.apache.org/
Cocoon project uses the way of XML + XSLT. Java Program only outputs the XML data. Cocoon chooses proper XSL file to transform the XML data to HTML, WML, etc.
Advantages:
Programmers do not need to consider the page layout and structure at all. They only generate the XML data. One XML data can be transformed to different style pages with different XSL file.
In the aspect of separation of data and presentation, the way of XML + XSLT may be the best.
Disadvantages:
Slow. The speed of XSLT is slow.
Because no HTML file, you can see the layout, style, content at all if you do not run the XSLT to transform the XML.
XSL is not an easy language. Without the ?What you see is what you get? edition tool, the learning cost of XSL is much higher than HTML.
2.4. Tapestry
http://jakarta.apache.org/tapestry/
Tapestry extends the HTML element. Tapestry uses these extended HTML element to represent the branch or loop logic, component, and variable.
Advantages:
Tapestry template only contains the HTML element and can be displayed in the HTML edition tool such as Dream Weaver and Front Page. Same as Velocity, Tapestry template contains branch and loop logic. Whether the Tapestry template can be CORRECTLY displayed in the HTML edition tool, depends on the complexity of the logic.
The page component of Tapestry has the quite reusability.
Disadvantages:
Complex. The template definition and usage of Tapestry is complex. Due to complexity, so the speed is slow.
I have no real experience of using Tapestry. Here I dare not say more. 
2.5. XMLC
http://xmlc.enhydra.org/
XMLC compiles HTML, WML files to Java DOM classes. Programmers do not care about the page (or just define id for some HTML element). Programmers only need to operate the DOM structure to created dynamic result.
XMLC creates operation method for every HTML element with id defined.
Advantages:
The template is just the pure HTML, no any logic. The template can be correctly displayed in the HTML edition tool such as Dream Weaver and Front Page.
Java Code processes the DOM structures. The Java Code has the good structure and reusability. The DOM node is the HTML element, and can be reused well as the Page Component. You can put any DOM node to any DOM structure.
Because the Java DOM class is created in the compiling time, there is no need to dynamic XML parsing. The DOM building speed is fast.
Disadvantages:
Every time you changed the HTML page, you need recompile the HTML to the Java DOM class. Many HTML is not the well-structured XML document (XHTML), and can not be correctly compiled as the DOM structure.
The Java DOM structure can not be reused in the Multiple-Thread environment. Every HTTP Request needs to operate one exclusive DOM structure. The memory cost is big.
After the DOM is changed, it is difficult to reset the DOM to initial status for next reuse. If the HTML file is big, the memory cost will be very big.
XMLC is not flexible or powerful enough in some aspects. For example, as we know, many JavaScript is confined in the XML Comments. As below:
<SCRIPT LANGUAGE="Javascript" type="text/javascript">
<!--
function aa{
//-->
</SCRIPT>
If we need to dynamically create the JavaScript Code, it is difficult for XMLC to deal with the XML Comments which it self is not a DOM structure.
2.6. DOM + XPath
As we said above, XMLC functions at the compilation time.
We can also use the way of building DOM at the Run Time. And we can use XPath to locate the target node and operate them.
NekoHTML(http://www.apache.org/~andyc/neko/doc/html/) is an HTML Parser.
NekoHTML uses Xerces Native Interface of Apache Xerces ( http://xml.apache.org/xerces2-j/index.html) to parse the HTML and can fix some unmatched tags to make a well-structured XHTML DOM.
XPathAPI of Apache Xcerse can help to locate DOM nodes easily. Please refer NeckHTML document for the DOM + XPath usage.
Advantages:
It has the same advantages as XMLC.
Run Time DOM building can reflect the page change in time.
Disadvantages:
It has the same disadvantages as XMLC.
Run Time DOM building costs more time than XMLC. We may have a way to reuse the DOM. We use the first-time built DOM as the Standard DOM. We never operate on the Standard DOM. Every time request comes, we deep copy the Standard DOM to get a new clean DOM, and use it. Thus every HTML only needs to be parsed once. Only when the HTML changes, the Standard DOM needs to be re-parsed and rebuilt.
Using XPath to locate DOM node is not fast. It may need to iterate the whole DOM structure.
2.7. Echo
http://sourceforge.net/projects/echo
Echo project does not need template at all. Programmers write Swing-like code, and Echo outputs the HTML result.
Advantages:
No need to consider HTML. Swing-like code is the real UI component with the great reusability.
Disadvantages:
Echo hides the HTML and automatically generates many JavaScript and HTML which are difficult to maintain. The way is not flexible enough for Web program.
2.8. PHP
PHP template is a great design. PHP template uses the XML Comment to mark the Dynamic block, and uses ?{? and ?}? to mark the Variable.
Advantages:
XML Comment will not be displayed in the HTML or XML edition tools. ?{?and ?}? are not the reserved word of XML. So PHP template is a valid HTML too, and can be displayed correctly in the HTML edition tools. Programmers and HTML editors can work on same files. What you see, is what you get.
Simple, easy to use, flexible (even as flexible as the Java Code of JSP).
Disadvantages:
Compared to other template techs, PHP has few short comings.
One thing to mention, the Java Script code included in the XML Comment:
<SCRIPT LANGUAGE="Javascript" type="text/javascript">
<!--
function aa{
//-->
</SCRIPT>
We can not use XML Comment in the XML Comment. So we have to use {} to mark the Dynamic part.
2.9 JDynamiTe
https://sourceforge.net/projects/jdynamite
From all aspects, I believe PHP is the best Template tech.
One colleague of mine introduced the PHP template to me. I was highly interested. And I want to port the PHP to Java. First I searched on the internet and found the JDynamiTe (Java Dynamic Template) (https://sourceforge.net/projects/jdynamite) open source project which ported the PHP to Java.
JDynamiTe Template is similar as PHP Template with a little extension and as same simple as PHP. I read its sample and like it at once.
But I found that JDynamiTe has one shortcoming. Same as the XML DOM, JDynamiTe Template can be changed. One JDynamiTe Template can not be used in the Multiple Thread multiple thread.
Every time request comes, JDynamiTe needs to parse the HTML to get a template DOM in the structure. And you need to set values on the template DOM, and get the result. After that, the template DOM can not be used if you do not reset it to the initial status.
If HTML is big, it will cost much time to read and parse the HTML.
So I decide to implement my own high efficient reusable project ? fastm (fast template).
2.10. fastm
http://sourceforge.net/projects/fastm
http://sourceforge.net/projects/lightweb
fastm template is similar as PHP template, and same as the JDynamicTe template.
fastm template can be said as the Multiple-Thread port of JDynamicTe.
In the fastm, the Template DOM (parsed from HTML) and the ValueSet DOM (the values for the template) are separated.
Every HTML only needs to be parsed once to a Read-Only template DOM. Since it is Read-Only, it is Thread Safe. One Template DOM can be used in a Multiple-Thread environment.
The Template DOM can be combined with different ValueSet DOM to generate different results.
The fastm parser reads the HTML line by line. The parsing speed is very fast.
fastm is faster than the way of JSP + TagLib.
fastm may be slower than pure JSP without TagLib. Also it is possible that fastm may be faster then pure JSP. JSP (namely Servlet) writes the HTML line by line to the HTTP Response, the Net transfer efficiency is not high (of course, JSP may uses the HTTP Response Buffer). fastm writes the whole block of page into the HTTP Response once. The socket layer can take the full advantage to optimize the transfer efficiency.
fastm support dynamic JavaScript Code generation, which is difficult in PHP or JDynamicTe.
Except XML Comment, fastm support JavaScript Comment too. For example:
// BEGIN DYNAMIC: special_code
// END DYNAMIC: special_code
This block is marked as the Dynamic block.
fastm emulates the PHP and JDynamic. My original creation is to separate the Template DOM and ValueSet DOM. The separation of Template DOM and ValueSet DOM is a great advance based on the PHP & DOM concept.
fastm is implemented with JDK1.4 without any 3rd part lib. Both the code size and the Runtime Size are very small.
Among all the Java Template Techs I know, I believe fastm is the best way in all aspects?fast, easy to use, flexible, and powerful.
I hope fastm will solve the painful Page Generation problem and will be popular among the Java programmers of the world.

Deep insight of fastm Design Idea
1. PHP (&fastm) marks the HTML as simple DOM
PHP template is a beautiful design. It uses Begin-End in the XML Comment to mark the HTML or WML as different blocks. And it can marks blocks in any block.
This way will mark an HTML page as a Tree Structure similar as DOM. But XML DOM is too heavy -- every element is a DOM node. The DOM node type may be complex. For example, in an HTML DOM, every HTML element is a DOM node, like Body, Table, TR, TD, Form, Input, etc.
PHP template is a light-weight DOM. PHP template only has 3 kinds of node � static text, variable, Begin-End block. Only the Begin-End block can contains other nodes.
The design is so neat, powerful, easy and general. PHP Template can be used to define any well-structured or bad structured HTML, WML, even XUL, XAML files.
And in the HTML edition tools, what you see is what you get. I do not know any other Template Tech can be so great.
After many painful experiences of using all kinds of Template Techs, I get to know the PHP Template Tech through my colleague�s introduction. I feel very happy and only regret that I know it so late.
fastm Template copied the idea of the PHP Template and made a little of extension.
fastm template�s BEGIN-END DYNAMIC block corresponds to PHP Template�s Begin-End block.
Let�s look at the HTML block below.
<select name=�zipcode�>
     <!-- BEGIN DYNAMIC: zipcodes -->
     <option value=�{zipcode}�>{zipcode}</option>
     <!-- END DYNAMIC: zipcodes -->
</select>
As we can see, this block contains one Dynamic block (zipcodes). The Dynamic block (zipcodes) contains two same variables {state}. The other parts are static text.
The DOM structure of the HTML block is as below:
[Static Text] <select name=�zipcode�>
[Dynamic Block] zipcodes --
| --- [Static Text] <option value=�
| --- [Variable] {zipcode}
| --- [Static Text] �>
| --- [Variable] {zipcode}
| --- [Static Text] </option>
[Static Text] </select>
2. ValueSet DOM is a Great Advance of DOM Concept
The key feature of Template DOM is Read-Only, unchangeable.
Every time request comes, PHP needs to parse the PHP template to get a PHP Template DOM. Then PHP code sets values for the DOM to get the result.
PHP Template DOM is changeable.
HTML (WML&#65292;XML) DOM is designed to be changed HTML DOM itself is both Template and Data. Program operates on the DOM node to get the result.
Changeable DOM can not be used in the Multiple-Thread environment. Every thread must get its own DOM copy to operate and get result. If the most part of the Page is static text, this way will waste a lot of spaces and times.
fastm Template DOM is Read-Only, unchangeable. One fastm Template DOM can be used in the Multiple-Thread environment.
Since we can not change the fastm Template DOM, how we set values for the Template DOM and how we get the result from it?
fastm introduced the concept of ValueSet. ValueSet is a tree-structure Data Set used to match the Read-Only Template DOM to generate the dynamic result.
Programmers must build the whole ValueSet DOM in advance, and combine the ValueSet DOM with the Template DOM to get the result.
The usage of fastm is like below:
(1) In the life of the program, the fastm template only needs to be parsed once to a Template DOM.
The parsing of fastm template is very fast, much faster then JSP compilation, Velocity
Parsing, XML DOM parsing, even faster than XML SAX parsing. And the result Template DOM size is only a little more than the original source template file.
(2) The code creates different ValueSet DOM and matches them to the Read-Only Template DOM to generate dynamic results.
Due to the simple structure of Template DOM, the matching is very fast, usually faster than the fastest pure JSP/Servlet. The ValueSet DOM space efficiency is less than the pure JSP/Servlet, but the ValueSet DOM size can be optimized to be close to the pure JSP/Servlet.
For example, let�s build a ValueSet DOM for the above Template DOM (the �zipcode select� one).
String[] zipcodes = {�361005�, �100008�};
IValueSet top = new ValueSet(); // corresponding to that whole HTML block
List items = new ArrayList(); // corresponding to the Dynamic Block -- zipcodes
for(int i = 0; i < zipcodes.length; i++){
     IValueSet item = new ValueSet();
     item.setVariable(�{zipcode}�, zipcodes);
     items.add(item);
top.setDynamicValueSets(�zipcodes�, items);
We combine the ValueSet DOM with the Template DOM and generate the following result.
<select name=�zipcode�>
     <option value=�361005�>361005</option>
     <option value=�10008�>100008</option>
</select>
As we can see, the relation between Template DOM �Dynamic block� node and ValueSet DOM node is not one-to-one, but one-to-many. One �Dynamic block� node maps a list of ValueSets. How many ValueSets are in the list, how many times the �Dynamic block� node will be displayed.
Compared to the TabLib, the advantage of fastm is obvious. Several lines of code or a method can do the work of one or several TagLib.
The separation of ValueSet DOM from Template DOM is a great advance of idea.
After all, in one page, the static part is much more than the dynamic part. Template DOM represents the static part, and it is parsed only once and kept only one copy. ValueSet DOM represents the dynamic part, and it can be created at any time.
The separation of ValueSet DOM from Template DOM is a more thorough separation of presentation from Data, even more thorough than the way of XML/XSLT. In the way of XML/XSLT, the XML is the pure data; But the XSLT is not the pure presentation since it contains the logic. In the fastm, ValueSet DOM is the pure data, no any logic; Template DOM is the pure presentation, no any logic.
One Template DOM can be used to match many ValueSet DOM. Vice versa, one ValueSet DOM can be used to match many Template DOM.
For example, we have following HTML block.
<table>
     <!-- BEGIN DYNAMIC: zipcodes -->
     <tr><td>{zipcode}</td></tr>
     <!-- END DYNAMIC: zipcodes -->
</table>
We match the above �top� ValueSet to this template and get the following result.
<table>
     <tr><td>361005</td></tr>
     <tr><td>100008</td></tr>
</table>
3. ValueSet DOM is the reusability center
The reusability center of JSP is TagLib.
The reusability center of XML DOM is the DOM node operations.
In the fastm, the Template DOM is Read-Only, so the reusability center is the ValueSet DOM operations, such as the above code to generate the ValueSet.
Same as the XML DOM, Template DOM can be used in the whole or be used as blocks.
Through ValueSet, you can compose blocks of any Template DOM together and get the result. It is very easy to implement the Tile or Portal in fastm.

Similar Messages

  • Implement IP File Upload to a web template (with queries) - HTML Coding?

    Dear experts,
    we have implemented integrated planning - file upload.
    now we want to create a web template , which should include some queries AND also the file upload in a separat tab in this template.
    following link (file upload) should be included in the web template:
    http:///sap/bc/webdynpro/sap/zrsplf_file_upload?planning_sequence=ZACOMK_01_PS1&sap-client=200&sap-language=DE
    I don´t have any html-knowledge.
    Is there a standard html-coding available, which I could use and implement in a container item?
    many thanks for your help!!
    best regards
    Roland

    Thanks so much, Rick! That post was exactly what I needed -- and now I have another resource to search for next time.
    There is one little caveat, for anyone else who needs to use this. I had to change the line that sets the Content-Type header to use a semicolon instead of a comma. After this change, the resulting HTTP request is identical to the one generated by WebKit for form submission.
    NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary];

  • Migrating Web Template from 3.x to 7.0

    We have a set of Web Templates that we created in BW 3.5 system. Now it has been upgraded to Bi 7.0
    I can still see the template in Web Application Designer (WAD) 3.5 but when I open WAD 7.0, I can't find these Web Templates.
    How Can I migrate these 3.x Web templates to 7.0 Web Templates?
    TIA
    Abhishek

    Open WAD and do a search with 3x web template tech name. Open your template and save it in WAD 7. Until you save in WAD 7, web template will remain in 3x.
    Also try opening the template through program
    RS_TEMPLATE_MAINTAIN and check if they work fine...
    Did you guys have Java stack installed or ABAP stack? If it's ABAP stack, you can't use web template in WAD 7.0. You have to use it in 3x WAD.
    assign points if it helps..
    Edited by: ashok saha on Mar 13, 2008 2:20 PM

  • How to include BW Web Templates in a BSP ?

    Hi guys,
    I am new to BSP stuff.  Can anybody throw some light on how to include a BW Web Template in a BSP application?  Any documentation available in this direction? 
    Thanks in advance.
    Cheers,
    Ramana.

    Hi,
    Check the forums,
    Create BSP from WAD Web Template in BW
    BW WEB Template  inside a BSP
    Skipping login screen when clicking a  BW Web Template link in a BSP
    Regards,
    Azaz Ali

  • How to include two charts in one web template

    I need to dispaly two charts which are based on same query and on characteristic 1 vs KF's and the other on characteristic 2 vs KF's in one web template.
    How can this be done?
    Thanks in advance,
    Murali.

    When you execute the query in the bex analyzer, perform th enavigation stpes to reach to your desired layout of data. Then from the Save button on the bex toolbar, choose Save > Save View Global. Give it a technical name and  a description. Then log back into the WAD and assign the view as the data provider (Note there are 2 buttons over there: One for query and the other for View)
    Hope this helps...

  • Getting error with Web Templates in BI 7.0

    Hi Everyone,
    We have upgraded BW3.5 to BW7.0. When we are executing any Web Template in browser we are getting this error-
    RSBOLAP 018 Java system error:call FM RSWR_TEMPLATE_PROCESS_PROXY to ProgId CHWSXID01.....
    For your information we have installed EP Usage and BI on the portal but Portal is not configured to the BI. Is it necessary to configure Portal to the BI?
    After this when we are login to the portal we are getting this error-
    500 Internal Server Error
    BEx Web Application
    Failed to process request; contact your system administrator
    Error Summary
    Exception occured while processing the current request; this exception cannot be handled by the application or framework
    If the information on this page does not help you locate and correct the cause of the problem, contact your system administrator
    To facilitate analysis of the problem, keep a copy of this error page Hint: Most Web browsers allow you to select all content, and copy and paste it into an empty document (such as in an email or simple text file)
    Root Cause
    The initial exception that caused the request to fail was: 
    Cannot find BI master system
    com.sap.ip.bi.base.service.connection.ConnectionException: Cannot find BI master system
    at com.sap.ip.bi.base.service.connection.impl.GenericConnectionPool.getMasterSystemAlias(GenericConnectionPool.java:81)
    at com.sap.ip.bi.base.service.connection.impl.GenericConnectionPool.getMasterSystemConnection(GenericConnectionPool.java:60)
    at com.sap.ip.bi.base.application.impl.Application.createService(Application.java:459)
    at com.sap.ip.bi.base.application.impl.Application.getProperty(Application.java:679)
    at com.sap.ip.bi.base.application.impl.Application.startApplicationStep(Application.java:279)
    Details: Full Exception Chain
    System Environment
    Server
    BI Java     Release: 7 - Patch level: 0000000013 - Description: BI Web Applications Java - Additional info:  - Production mode: true
    BI ABAP     unknown
    Java Virtual Machine     Java HotSpot(TM) 64-Bit Server VM - Hewlett-Packard Company - 1.4.2 1.4.2.14-070618-19:48-PA_RISC2.0W PA2.0W (aCC_AP)
    Operating System     HP-UX - PA_RISC2.0W - B.11.11
    Deployed SCAs
    SCA     Version     SP     Patch     Compiled     Deployed
    ADSSAP     7.00     13     0     2007-08-12 01:18:54 CEST     2007-11-17 02:43:53 CET
    BASETABLES     7.00     13     0     2007-08-12 01:36:38 CEST     2007-11-17 01:22:45 CET
    BI-BASE-S     7.00     13     0     2007-08-12 12:03:10 CEST     2007-12-08 09:58:16 CET
    BI-IBC     7.00     13     0     2007-08-12 12:03:28 CEST     2007-12-08 09:58:26 CET
    BI-REPPLAN     7.00     13     0     2007-08-09 07:49:39 CEST     2007-12-08 10:01:05 CET
    BI-WDALV     7.00     13     0     2007-08-09 07:49:47 CEST     2007-12-08 09:58:55 CET
    BIWEBAPP     7.00     13     0     2007-08-12 12:05:56 CEST     2007-12-08 09:43:55 CET
    BI_MMR     7.00     13     0     2007-08-12 01:37:49 CEST     2007-11-17 02:44:46 CET
    BI_UDI     7.00     13     0     2007-08-11 19:04:00 CEST     2007-11-17 02:46:49 CET
    CAF     7.00     13     0     2007-08-09 09:23:15 CEST     2007-11-17 02:53:13 CET
    CAF-KM     7.00     13     0     2007-08-09 07:54:22 CEST     2007-12-08 10:21:28 CET
    CAF-UM     7.00     13     0     2007-08-09 09:23:24 CEST     2007-11-17 02:54:18 CET
    CORE-TOOLS     7.00     13     0     2007-08-12 01:41:21 CEST     2007-11-17 01:19:15 CET
    EP-PSERV     7.00     13     0     2007-09-06 14:03:50 CEST     2007-12-08 10:02:22 CET
    EP-WDC     7.00     13     0     2007-08-12 12:41:08 CEST     2007-12-08 10:03:50 CET
    EPBC     7.00     13     0     2007-08-12 12:37:44 CEST     2007-12-08 08:07:23 CET
    EPBC2     7.00     13     0     2007-08-12 12:38:06 CEST     2007-12-08 10:03:56 CET
    JLOGVIEW     7.00     13     0     2007-08-12 00:16:00 CEST     2007-11-17 01:19:52 CET
    JSPM     7.00     13     0     2007-08-12 00:17:00 CEST     2007-12-06 16:41:39 CET
    KM-KW_JIKS     7.00     13     0     2007-08-12 01:45:19 CEST     2007-11-17 02:54:37 CET
    KMC-BC     7.00     13     0     2007-08-12 12:41:47 CEST     2007-12-08 10:05:28 CET
    KMC-CM     7.00     13     0     2007-08-12 12:43:04 CEST     2007-12-08 10:06:52 CET
    KMC-COLL     7.00     13     0     2007-08-12 12:43:35 CEST     2007-12-08 10:07:49 CET
    LM-PORTAL     7.00     13     0     2007-08-09 07:58:38 CEST     2007-12-08 10:07:59 CET
    LM-SERVICE     6.40     10     0     2004-12-23 01:42:43 CET     2007-11-17 01:18:14 CET
    LM-TOOLS     7.00     13     0     2007-09-06 10:46:34 CEST     2007-11-17 03:05:32 CET
    NET-PDK     7.00     13     0     2007-08-12 12:45:34 CEST     2007-12-08 09:51:51 CET
    RTC     7.00     13     0     2007-08-12 12:48:07 CEST     2007-12-08 09:51:56 CET
    RTC-STREAM     7.00     13     0     2007-08-12 12:48:07 CEST     2007-12-08 10:08:05 CET
    SAP-EU     7.00     13     0     2007-08-09 08:01:01 CEST     2007-12-08 10:19:31 CET
    SAP-JEE     7.00     13     0     2007-08-12 01:53:11 CEST     2007-11-17 01:24:19 CET
    SAP-JEECOR     7.00     13     0     2007-09-07 08:23:34 CEST     2007-11-17 01:27:06 CET
    SAP_JTECHF     7.00     13     0     2007-08-12 01:56:44 CEST     2007-11-17 01:28:18 CET
    SAP_JTECHS     7.00     13     0     2007-08-12 01:59:51 CEST     2007-11-17 02:32:48 CET
    UMEADMIN     7.00     13     0     2007-08-09 09:39:47 CEST     2007-11-17 03:06:23 CET
    UWLJWF     7.00     13     0     2007-08-12 12:52:23 CEST     2007-12-08 10:08:51 CET
    VCBASE     7.00     13     0     2007-08-12 12:52:34 CEST     2007-12-08 10:22:05 CET
    VCFLEX     7.00     13     0     2007-08-12 12:53:39 CEST     2007-12-08 10:21:32 CET
    VCFRAMEWORK     7.00     13     0     2007-08-12 12:53:51 CEST     2007-12-08 10:21:42 CET
    VCKITBI     7.00     13     0     2007-08-12 12:23:20 CEST     2007-12-08 10:22:10 CET
    VCKITGP     7.00     13     0     2007-08-12 12:53:51 CEST     2007-12-08 10:22:15 CET
    VCKITXX     7.00     13     0     2007-08-12 12:53:51 CEST     2007-12-08 10:22:19 CET
    WDEXTENSIONS     7.00     13     0     2007-08-09 08:05:30 CEST     2007-12-08 10:24:17 CET
    Full Exception Chain
    Log ID     00306EF4B9BB0076000000120000327700044245C894263C
    com.sap.ip.bi.base.service.connection.ConnectionException: Cannot find BI master system
         at com.sap.ip.bi.base.service.connection.impl.GenericConnectionPool.getMasterSystemAlias(GenericConnectionPool.java:81)
         at com.sap.ip.bi.base.service.connection.impl.GenericConnectionPool.getMasterSystemConnection(GenericConnectionPool.java:60)
         at com.sap.ip.bi.base.application.impl.Application.createService(Application.java:459)
         at com.sap.ip.bi.base.application.impl.Application.getProperty(Application.java:679)
         at com.sap.ip.bi.base.application.impl.Application.startApplicationStep(Application.java:279)
         at com.sap.ip.bi.base.application.impl.Application.initialization(Application.java:259)
         at com.sap.ip.bi.base.application.ApplicationFactory.createApplication(ApplicationFactory.java:172)
         at com.sap.ip.bi.base.application.ApplicationFactory.createApplication(ApplicationFactory.java:65)
         at com.sap.ip.bi.webapplications.runtime.impl.Page.constructPage(Page.java:942)
         at com.sap.ip.bi.webapplications.runtime.impl.Page.<init>(Page.java:761)
         at com.sap.ip.bi.webapplications.runtime.controller.impl.Controller.createPage(Controller.java:511)
         at com.sap.ip.bi.webapplications.runtime.controller.impl.Controller.doProcessRequest(Controller.java:972)
         at com.sap.ip.bi.webapplications.runtime.controller.impl.Controller.processRequest(Controller.java:864)
         at com.sap.ip.bi.webapplications.runtime.jsp.portal.services.BIRuntimeService.handleRequest(BIRuntimeService.java:488)
         at com.sap.ip.bi.webapplications.runtime.jsp.portal.components.LauncherComponent.doContent(LauncherComponent.java:22)
         at com.sapportals.portal.prt.component.AbstractPortalComponent.serviceDeprecated(AbstractPortalComponent.java:209)
         at com.sapportals.portal.prt.component.AbstractPortalComponent.service(AbstractPortalComponent.java:114)
         at com.sapportals.portal.prt.core.PortalRequestManager.callPortalComponent(PortalRequestManager.java:328)
         at com.sapportals.portal.prt.core.PortalRequestManager.dispatchRequest(PortalRequestManager.java:136)
         at com.sapportals.portal.prt.core.PortalRequestManager.dispatchRequest(PortalRequestManager.java:189)
         at com.sapportals.portal.prt.component.PortalComponentResponse.include(PortalComponentResponse.java:215)
         at com.sapportals.portal.prt.pom.PortalNode.service(PortalNode.java:645)
         at com.sapportals.portal.prt.core.PortalRequestManager.callPortalComponent(PortalRequestManager.java:328)
         at com.sapportals.portal.prt.core.PortalRequestManager.dispatchRequest(PortalRequestManager.java:136)
         at com.sapportals.portal.prt.core.PortalRequestManager.dispatchRequest(PortalRequestManager.java:189)
         at com.sapportals.portal.prt.core.PortalRequestManager.runRequestCycle(PortalRequestManager.java:753)
         at com.sapportals.portal.prt.connection.ServletConnection.handleRequest(ServletConnection.java:240)
         at com.sapportals.portal.prt.dispatcher.Dispatcher$doService.run(Dispatcher.java:524)
         at java.security.AccessController.doPrivileged(Native Method)
         at com.sapportals.portal.prt.dispatcher.Dispatcher.service(Dispatcher.java:407)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.sap.engine.services.servlets_jsp.server.servlet.InvokerServlet.service(InvokerServlet.java:156)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:401)
         at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:266)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:387)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:365)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:944)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:266)
         at com.sap.engine.services.httpserver.server.Client.handle(Client.java:95)
         at com.sap.engine.services.httpserver.server.Processor.request(Processor.java:175)
         at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:33)
         at com.sap.engine.core.cluster.impl6.session.MessageRunner.run(MessageRunner.java:41)
         at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
         at java.security.AccessController.doPrivileged(Native Method)
         at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:100)
         at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:170)
    Helpful answers will be rewarded....
    Thanks and Regards,
    Pankaj

    Single Sign On is optional.
    What would happen is that the user that's using the Web Application Designer will have to have access to Portals, and the portal Sign On screen will appear once that user executes a Web Template.
    It also depends on the Portal Strategy and the Security Strategy of your client. For example, the portal may only grant access to those used IDs in the Active Directory, so if your BEx WAD user is not defined in Active Directory that user will not have access to portals, and will not be able to execute the Web Template.
    Cheers.

  • Need HTML code to call template from an existing web template

    Hi all,
    Can someone help me with a HTML code which can call another web template from a field of a table.
    I have a web template which includes table as web item.The template when executed displays the data of query view in the form of table.One of the field in the table is Europe.Now my requirement is when i click on that field Europe,it should open up another template which is present in the system.
    Please provide me with a HTML code which can do this.
    Regards,
    Suchitra

    Hi all,
    Can someone help me with a HTML code which can call another web template from a field of a table.
    I have a web template which includes table as web item.The template when executed displays the data of query view in the form of table.One of the field in the table is Europe.Now my requirement is when i click on that field Europe,it should open up another template which is present in the system.
    Please provide me with a HTML code which can do this.
    Regards,
    Suchitra

  • Need help w/BW user authorization to see Web Templates thru portal

    Hello,
    We have designed Web Templates in BW which we intend to use through the SAP Portal. When these web templates are accessed via a URL which also passes a generic CPIC UserID/Password (created on the BW server), the template is fully functional and does not prompt the user for any further authentication. When we try to call up this same URL via the portal (including the CPIC User ID and password information), the report under /sap/bw/BEx comes up fine, but we are prompted for logins for nearly every object under the /MIME/ repository called by the Web Template. We have already set the /sap/bw/BEx/MIME service (ICF) to be an anonymous service (using the same UserID and Password that we are passing in the URL). So, to me it seems like additional role needs to be assigned to this user. Any ideas?
    Here is the error message we get:
    Logon failed
    What has happened?
    Call of URL http://xxxxxxxx:8002/sap/bw/Mime/BEx/JavaScript/epcfproxy.js terminated due to error in logon data.
    Note
    Logon performed in system T04 .
    Logon performed for client 020, user , and language EN. 
    What can I do?
    Check that you have entered the client, user, and password correctly.
    If you do not yet have a user ID, contact your system administrator.
    Error Code: ICF-LE-http-c:020-l:E-T:1-C:6-U:-P:-L:4
    HTTP 401 - Unauthorized
    Your SAP Internet Communication Framework Team
    Thanks in advance for your help!
    Regards,
    Abu Sadeq

    Hi abu,
    DId you solved your problem. if yes please help me. i am facing the same issue
    Thanks
    Sarang

  • How to embed multiple queries in one web template

    Hi,
    I've a requirement wherein I need to embed two queries in one web template. The first query displays order quantity from a particular customer and the second query displays other information for that customer. Most of my web templates i've contains only one query which i've created using 0ADHOC template saving this as diff template and modifying it. But this is the first time I have got this type of requirement wherein the user drills down on a particular customer for order quantity and then goes for other information from other query.
    Does anyone out there has any idea or suggestion as to how to do this ? One more thing I need to pass the values from one query to another which is akin to RRI concept while staying in the same web template.
    Your suggestions/advices are highly appreciated.
    Thanks in Advance,
    Rash.

    Hi Rash,
    You can do this by including 2 table web items in your template and assiging the 2 different queries as different dataproviders to each. You can try to create a drop down box to filter the customer and in its properties set DataProvider1 and DataProvider2 as the affected data targets.
    Hope this helps...

  • How to print a web template in background

    Hi experts,
    i want to print a web template which includes 4-5 Queries over a background job for different Profit Centers (for example, for all Profit Centers that are in Region Europe)?
    How can i simply achieve this ?
    Thanks.

    Hi Arun,
    web template have a variable, that is Profit Center
    Now user wants to give on web, only Region = Europe, not Profit Center. (Region is an attribute of PC)
    Then he wants to have for each Profitcenters in Europa (let say 50 PCs) a seperate printout.
    Now he should call the report 50 times for each profit center should click on Print Button...
    Cheers

  • How to get the standard Menu of Query Designer into Web Template

    Hi Experts,
    is there a way on how to put the standard menu within Bex Query Designer (after executing a Query with the Query Designer you get into ad-hoc reporting with a menu including several functions like print, show as..., properties, etc) into an individual Bex Web Template?
    Copy & Paste source code will not work I guess because of several javascript functions I don't have access to.
    Thanks & Best regards
    Tobias

    BEx queries are displayed on the web using standard web template 0ANALYSIS_PATTERN or some customized version base don your implementation.
    You can either include the 0ANALYSIS_Pattern web template in your custom template or use Save as to create a new template with 0ANALYSIS_Pattern  AS THE STARTING POINT.

  • Fix table header line of Query in default web template WAD 7.0

    Dear all,
    I would appreciate if somebody could help me to set parameters to fix the header line of a Web-Item DataProvider (Query) in the default web template 0ANALYSIS_PATTERN for the BEx Web Analyser. I mean I want to see the header line with the characteristics and key figures description even if I scroll down in the query. 
    My idea was to create a second frame in the template and to fill it with the same DataProvider just with the header of the Query. The problem is that the performance of the query would be badder if we load two Dataprovider/Query instead of one.
    Many thanks in advance for your answer and help!!!
    Best regards
    Abdel

    Hi Dion,
    Thank you very much for your answer! I have tried to find a paramter in the web application designer to do that, but without success. Now I have included a new container with the same Analysis Web Item, but it does not function! May you have a better idea??
    Thank you very much in advance for your help. I'll also post my question in a BI-Forum as you suggested. 
    Best Regards
    Abdel

  • Calling a function module out of a web template

    Hi experts,
    I need to call an ABAP function module out of a web template including a query with the variable values of the query as input parameters. There shall be button, which starts the funtion module, if the user clicks it. I don't need to transfer any other data just the variables. I have no idea how to accomplish that.
    I experimented with implementing interface IF_BICS_CONS_WEBITEM_CUST_EXIT but this does not seem to help me, as the initialize method is called when starting the web template and I did not manage to bind it or the execute method to that button. Besides I was getting shortdumps when starting the web template with the customer extension web item. I declared it as ABAP_CLASS_NAME exit and set the right class name. Variable Container Access and Navigational State Access is on, Result Set Access is off.
    Is there any other possibility to do this? Perhaps with BSP?
    Can I call an ABAP function module with Javascript out of the template? If yes, which command can I use to do it?
    Thank you very much in advance
    Edited by: Markus Maier on Aug 17, 2009 4:15 PM
    Edited by: Markus Maier on Aug 17, 2009 4:32 PM

    Hi Markus,
    if you are on BI 7.0 or higher I recommend using Integrated Planning for this requirement. If you implement a fox formula you can easily get the current variable value and execute the function module. You can execute the fox formula upon button click.
    If you need more information just let us know.
    Brgds,
    Marcel

  • Error while loading the Web template "0ANALYSIS_PATTERN" (return value "4")

    I activated all 0* objects in BTMP  and checked that they are all activated, but I found errors when opening the BEx Web Analyzer
    Error messages :
    Error while loading the Web template "0ANALYSIS_PATTERN" (return value "4")
    ERROR: Command type SWITCH_AXES of object not recognized
    ERROR: Parameter GENERAL_TEXT_ELEMENT not recognized; check your metadata
    So I ran RS_TEMPLATE_MAINTAIN_70 (0ANALYSIS_PATTERN) version D report to check and choose validate.
    Error messages :
    Template Include Item HEADER_TEMPLATE unresolved or empty. Close and reopen template.     
    Template Include Item FOOTER_TEMPLATE unresolved or empty. Close and reopen template.          
    Width of object item:GROUP_ITEM:GROUP_ITEM_1 is very small (1amp;1)          
    Query  does not exist in the BI System (Object QU )
    Cannot instantiate data provider
    I also ran RS_TEMPLATE_MAINTAIN_70 (0ANALYSIS_PATTERN) version A and got the following errors:
    Command type SWITCH_AXES of object  not recognized
    Command type SWITCH_AXES of object  not recognized
    Command type SWITCH_AXES of object  not recognized
    Parameter GENERAL_TEXT_ELEMENT not recognized; check your metadata
    Parameter GENERAL_TEXT_ELEMENT of object item:GROUP_ITEM:GROUP_ITEM_1 not recognized
    Command type SWITCH_AXES of object item:GROUP_ITEM:GROUP_ITEM_1 not recognized
    Command type SWITCH_AXES of object item:GROUP_ITEM:GROUP_ITEM_1 not recognized
    Command type SWITCH_AXES of object item:GROUP_ITEM:GROUP_ITEM_1 not recognized
    Command SWITCH_AXES cannot be located in parameter ACTION
    Command SWITCH_AXES cannot be located in parameter ACTION
    Command SWITCH_AXES cannot be located in parameter ACTION
    Parameter GENERIC_TEXT_BINDING of object item:GROUP_ITEM:GROUP_ITEM_1 cannot be higher-level node of GENERAL_TEXT_ELEMENT
    Item item:GROUP_ITEM:GROUP_ITEM_1 of type DROPDOWN_ITEM cannot be a parent node of DATA_PROVIDER_REF
    Item item:GROUP_ITEM:GROUP_ITEM_1 of type CHART_ITEM cannot be a parent node of VISIBLE
    Item item:GROUP_ITEM:GROUP_ITEM_1 of type CHART_ITEM cannot be a parent node of LEGEND_POSITION
    Item item:GROUP_ITEM:GROUP_ITEM_1 of type CHART_ITEM cannot be a parent node of LEGEND_VISIBLE
    Item item:GROUP_ITEM:GROUP_ITEM_1 of type CHART_ITEM cannot be a parent node of LEGEND_ONLY
    Invalid parameter value  for parameter ACTION in object item:GROUP_ITEM:GROUP_ITEM_1
    Invalid parameter value  for parameter ACTION in object item:GROUP_ITEM:GROUP_ITEM_1
    Invalid parameter value  for parameter ACTION in object item:GROUP_ITEM:GROUP_ITEM_1
    bi-Tag bi:item has unknown attribute key. Please check your spelling
    bi-Tag bi:item has unknown attribute key. Please check your spelling
    bi-Tag bi:item has unknown attribute key. Please check your spelling
    bi-Tag bi:item has unknown attribute key. Please check your spelling
    What could be the problem?

    hi,
      Please look into this note let me it helps...url=https://websmp202.sap-ag.de/~form/handler?_APP=01100107900000000342&_EVENT=REDIR&_NNUM=917950&_NLANG=E]Note 917950 - SAP NetWeaver 2004s: Setting Up BEx Web[/url]
    check this link as well for [<a href="https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/ca6de811-0c01-0010-43b2-c64584eef943">Bex Web Configuration</a>
    wht is the SP Level?
    Nagesh Ganisetti.

  • Web template - Drop Down Box options - Issue

    <b>Requirement:</b> We need drop downboxes for Fiscal Period and Version in our web template. When the query is run, users will choose one fiscal period and one budget version (there are multiple budget versions - 1. Original Budget, 2. Revised Budget 3. Consensus)
    After the query is run, users should be able to see data for any of the past 6 periods and any of the budget versions. So in the drop down list for fiscal period, he should see previous 6 periods and in the drop down for Budgets, they should see all the budget versions.
    If the read mode is set to "Posted values", then only the values user chooses for the variables  at run time will be shown. If the read mode is set to "Dimension table" it'll show all the available periods from the transactional data, which is unacceptable. We also tried the option "Can be changed during Query Navigation" but it will not work the version drop down box as it'll show all the available versions (actual, plan, forecast along with the different budgets)...
    So, is there any other way of solving this issue? By any Javascript?
    <i>This is what I did for the Fiscal Period drop down, but then the solution is not complete.</i>
    For the Fiscal Period variable, I created a new variable and checked the option "Can be changed during Navigation". Then the drop down will be populated with all the possible values. This is how the Fiscal year/ Period combo will work. We'll have two variables. Fiscal year is fixed and we won't have a drop down box for it. So user can not change the year after the query is run. But he can see data for any of the 12 periods of the year he selected.
    But there is a catch. This is not exactly what we are looking for. For example, if the user initially selects Year 2005 and period 10, then he can see all the previous 9 period of year 2005 (also periods 11 and 12). No problem there. But If the user initially selects year 2005 and Period 1, then he expects to see previous periods. But since year is fixed, when he selects period 12 from the drop down list, it'll show him period 12 of 2005 instead of 2004.
    To avoid that problem, we can also put a drop down box for year, but that will become too complicated, as the all the possible years will show up in the drop down. Still trying to figure out a solution around it. Also same problem arises for Version. We only want to see two versions of the Budget. But it'll show them all the possible versions including forecast, actual etc.
    Any insight is highly appreciated.
    Gova

    Hi.
    I has the same problem working on BID.
    Either you need to save the template with a new name or do it under BIP.
    It worked after for me.
    That's why I only do my templates under BIP now.
    I guess a new support package corrects this error.
    Olivier

Maybe you are looking for