Multilingual XML Approach

Hi,
I need to discuss one thing regarding multilingual implementation for an application. The requirement is given below.
1. only master data(user entry) of the application will support multilingual.
2. Application will support 'n' languages becuase it will be installed for each country.
Our Approach:
1. We created one column with datatype XMLTYPE and store data as XML. The data is stored like below.
  <ROOT>
<ROW LANG_ID="22">JROEMVRTFK</ROW>
<ROW LANG_ID="34">سشيشي</ROW>
<ROW LANG_ID="4">نههلت</ROW>
  </ROOT>
where LANG_ID is the language id of language master table.
2. We created one index for XMLTYPE data type.
     CREATE INDEX <<index_name>> ON <<table_name>> (<<column_name>>) INDEXTYPE IS XDB.XMLINDEX PARAMETERS ('PATHS (INCLUDE (/ROOT/ROW))');
3. We created 10,000 rows into that table.
Why this Approach:
Let's take an example. Assume that, Client 1 wants the application to support 3 languages. Client 2 wants , the application to support 4 languages and so on. For a column based approach our database patch will differ for each client. So for Client 3, who wants support for 2 languages the system will be isolated from our base version of database.
Performance:
1. From the performance aspect, the query execution will be 4 times slower than the traditional column wise approach. The query will look like:
               SELECT
TRIM(EXTRACT(VALUE(c), '/ROW/@LANG_ID')) LANG_ID,
                        TRIM(EXTRACT(VALUE(c), '/ROW/text()')) STATE_NAME
               FROM
STATE_MASTER d,
                        TABLE(XMLSEQUENCE(EXTRACT(d.STATE_NAME,'/ROOT/ROW'))) c
                WHERE
                                  EXTRACT(VALUE(c), '/ROW/text()').GETSTRINGVAL() LIKE ‘ACN%’
Question:
1.  Is it the correct approach?
2. If not what will be the approach for supporting 'n' languages for a single database.
3. How to improve the performance?

The rewritten XML approach :
-- master table with Binary XMLType column
create table state_master (id integer, xml_state_name xmltype)
xmltype column xml_state_name store as securefile binary xml;
-- structured XMLIndex
create index state_master_sxi on state_master (xml_state_name)
indextype is xdb.xmlindex
parameters (q'~
  XMLTABLE state_master_xt
  '/ROOT/ROW'
  PASSING xml_state_name
  COLUMNS lang_id    number         PATH '@LANG_ID'
        , state_name varchar2(4000) PATH '.'
~'
-- secondary index on LANG_ID
create index state_master_xt_lang_id_i on state_master_xt (lang_id);
SQL> insert into state_master values (
  2    1
  3  , xmlparse(document '<ROOT><ROW LANG_ID="1">Hello</ROW><ROW LANG_ID="2">Bonjour</ROW></ROOT>')
  4  );
1 row created.
SQL> insert into state_master values (
  2    2
  3  , xmlparse(document '<ROOT><ROW LANG_ID="1">Goodbye</ROW><ROW LANG_ID="2">Au revoir</ROW></ROOT>')
  4  );
1 row created.
SQL> set autotrace on explain
SQL> set lines 200
SQL>
SQL> select t.id, x.lang_id, x.state_name
  2  from state_master t
  3     , xmltable('/ROOT/ROW' passing t.xml_state_name
  4         columns lang_id    number         path '@LANG_ID'
  5               , state_name varchar2(4000) path '.'
  6       ) x
  7  ;
  ID    LANG_ID STATE_NAME
   1          1 Hello
   1          2 Bonjour
   2          1 Goodbye
   2          2 Au revoir
Execution Plan
Plan hash value: 1735897579
| Id  | Operation                    | Name                     | Rows  | Bytes | Cost (%CPU)| Time  |
|   0 | SELECT STATEMENT             |                          |     4 |   144 |     5   (0)| 00:00:01 |
|   1 |  NESTED LOOPS                |                          |       |       |            |       |
|   2 |   NESTED LOOPS               |                          |     4 |   144 |     5   (0)| 00:00:01 |
|   3 |    TABLE ACCESS STORAGE FULL | STATE_MASTER             |     2 |    30 |     3   (0)| 00:00:01 |
|*  4 |    INDEX RANGE SCAN          | SYS166533_166534_RID_IDX |     2 |       |     0   (0)| 00:00:01 |
|   5 |   TABLE ACCESS BY INDEX ROWID| STATE_MASTER_XT          |     2 |    42 |     1   (0)| 00:00:01 |
Predicate Information (identified by operation id):
   4 - access("T".ROWID="SYS_SXI_1"."RID")
SQL>
SQL>
SQL>
SQL>
SQL> select t.id, x.state_name
  2  from state_master t
  3     , xmltable('/ROOT/ROW' passing t.xml_state_name
  4         columns lang_id    number         path '@LANG_ID'
  5               , state_name varchar2(4000) path '.'
  6       ) x
  7  where x.lang_id = 1
  8  ;
  ID STATE_NAME
   1 Hello
   2 Goodbye
Execution Plan
Plan hash value: 1089002068
| Id  | Operation                    | Name                      | Rows  | Bytes | Cost (%CPU)| Time  |
|   0 | SELECT STATEMENT             |                           |     2 |    72 |     4   (0)| 00:00:01 |
|   1 |  NESTED LOOPS                |                           |     2 |    72 |     4   (0)| 00:00:01 |
|   2 |   TABLE ACCESS BY INDEX ROWID| STATE_MASTER_XT           |     2 |    42 |     2   (0)| 00:00:01 |
|*  3 |    INDEX RANGE SCAN          | STATE_MASTER_XT_LANG_ID_I |     2 |       |     1   (0)| 00:00:01 |
|   4 |   TABLE ACCESS BY USER ROWID | STATE_MASTER              |     1 |    15 |     1   (0)| 00:00:01 |
Predicate Information (identified by operation id):
   3 - access("SYS_SXI_1"."LANG_ID"=1)

Similar Messages

  • Does XML approach for passing parameters in the query make the query slow?

    Hi,
    I am using XML approach for passing parameters in a query. This is running very slow but when I pass comma separated values in parameter, it runs very fast.
    So it concludes that we should not use XML approach for passing parameters. Please confirm me that Am I right or wrong?
    I have also googled to clear my doubt but not get solution till now. please help me.
    Regards,
    Sachin

    914014 wrote:
    Hi,
    I am using XML approach for passing parameters in a query. This is running very slow but when I pass comma separated values in parameter, it runs very fast.
    So it concludes that we should not use XML approach for passing parameters. Please confirm me that Am I right or wrong?
    I have also googled to clear my doubt but not get solution till now. please help me.
    Regards,
    SachinShow us what you are doing, create a simple yet complete example we can run on our Oracle instances.
    Then we will know exactly what you mean, and can comment appropriately.
    Cheers,

  • Jdom and multilingual xml files

    The J2EE application we are developing has to be multilingual and the user has to be able to edit the text. To do this, we created custom tags that use jdom to read an xml file that gets parsed as a String in the database. Everything works fine exept for when I try inserting special characters into the xml string, like � or �, for other languages and then try to parse the xml string into an org.jdom.Document. I did a google search and found on http://www.jdom.org/pipermail/jdom-interest/2003-April/011870.html that jdom "reject[s] all characters beyond the basic multilingual plane." I cannot find anywhere if using DOM or SAX2 will allow me to use multilingual characters. Does anyone know how I can parse the xml string into an xml document while still being able to use special characters? Thanks in advance.

    Those characters are firmly near the beginning of the basic multilingual plane. Your problem is more ordinary than that: you have to create your XML file in the same encoding you declare it to be in. If your XML prologue looks like this:<?xml version="1.0" ?>then you have implicitly declared it to be encoded in UTF-8 (or perhaps UTF-16). In that case you must tell your text editor to save it in the UTF-8 encoding. But if your text editor is one of those that doesn't understand encodings then you need to specify the encoding it does use. If it's ISO-8859-1, which is the Western European Latin script, then change the prologue to look like this:<?xml version="1.0" encoding="ISO-8859-1" ?>And read this: http://skew.org/xml/tutorial/

  • Binding data when using xml data files

    Hello,
    I am pretty new to Flex4 and hope you hang on with my question. MAny thanks:
    I built an application first with PHP connection into a database which essentially listed IP of my company in a grid.
    One could filter the IP depending of technology, type of Ip and so on.
    When clicking in the grid, the details with many more fileds would apprear. This was working niceley as I had my services defined and needed only to drag services in the right place and add here and there some changes in the code
    Now, I wanted to do the same with an xml file instead of a mySQL database so to deploy it a little easier.
    I have the grid and the filtering working nicely.
    But I cannot create the data binding for the details.
    Below is the code. See the line before last where I tested if I could access to the  descriptipn fuield in my arrayCollection (coming from my xml)
    CAn anyone help me, please
    many thanks in advance and best regards
    Peter
    <?xml version="1.0" encoding="utf-8"?>
    <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
       xmlns:s="library://ns.adobe.com/flex/spark"
       xmlns:mx="library://ns.adobe.com/flex/mx"
       applicationComplete="myServ.send()" width="900" height="500">
    <fx:Script>
    <![CDATA[
    import mx.collections.ArrayCollection;
    import mx.controls.Alert;
    import mx.events.ListEvent;
    import mx.rpc.events.FaultEvent;
    import mx.rpc.events.ResultEvent;
    import spark.events.TextOperationEvent;
    [Bindable]
    private var myIPList:ArrayCollection;
    protected function myServ_faultHandler(event:FaultEvent):void
    Alert.show("Something went wrong", "Cannot load data");
    protected function myServ_resultHandler(event:ResultEvent):void
    if(event.result.test.IP is ArrayCollection){
    this.myIPList = event.result.test.IP as ArrayCollection;
    }else{
    var buffer:ArrayCollection = new ArrayCollection([event.result.test.IP]);
    this.myIPList = buffer;
    this.searchInput.enabled = false;
    this.searchInputTechnology.enabled = false;
    this.searchInputProvider.enabled = false;
    // serach for IP
    protected function searchInput_changeHandler(event:TextOperationEvent):void
    this.myIPList.filterFunction = filterFunc;
    this.myIPList.refresh();
    private function filterFunc(item:Object):Boolean
    if(String(item.IP).toLowerCase().indexOf(this.searchInput.text.toLowerCase()) > -1){
    return true;
    }else{
    return false;
    //  Search for Technology
    protected function searchInputTechnology_changeHandler(event:TextOperationEvent):void
    this.myIPList.filterFunction = filterFuncTechnology;
    this.myIPList.refresh();
    private function filterFuncTechnology(item:Object):Boolean
    if(String(item.Technology).toLowerCase().indexOf(this.searchInputTechnology.text.toLowerCa se()) > -1){
    return true;
    }else{
    return false;
    //  Search for Provider
    protected function searchInputProvider_changeHandler(event:TextOperationEvent):void
    this.myIPList.filterFunction = filterFuncProvider;
    this.myIPList.refresh();
    private function filterFuncProvider(item:Object):Boolean
    if(String(item.Provider).toLowerCase().indexOf(this.searchInputProvider.text.toLowerCase() ) > -1){
    return true;
    }else{
    return false;
    protected function myDG_changeHandler(event:ListEvent):void
    Alert.show("I Clicked. It should now be possible to see details, damned");
    ]]>
    </fx:Script>
    <fx:Declarations>
    <s:HTTPService id="myServ" url="IP.xml" fault="myServ_faultHandler(event)" result="myServ_resultHandler(event)"/>
    </fx:Declarations>
    <mx:DataGrid id="myDG" change="myDG_changeHandler(event)" x="37" y="134" width="814" height="159" dataProvider="{this.myIPList}">
    <mx:columns>
    <mx:DataGridColumn headerText="IP" dataField="IP"/>
    <mx:DataGridColumn headerText="short description" dataField="detail"/>
    <mx:DataGridColumn headerText="type" dataField="type"/>
    <mx:DataGridColumn headerText="Provider" dataField="Provider"/>
    <mx:DataGridColumn headerText="Technology" dataField="Technology"/>
    </mx:columns>
    </mx:DataGrid>
    <s:HGroup x="33" y="74" width="152" height="41" verticalAlign="middle">
    <mx:Spacer width="100%">
    </mx:Spacer>
    <s:Label text="IP"/>
    <s:TextInput id="searchInput" change="searchInput_changeHandler(event)" width="103"/>
    </s:HGroup>
    <s:HGroup x="686" y="74" width="153" height="41" verticalAlign="middle">
    <mx:Spacer width="100%">
    </mx:Spacer>
    <s:Label text="Technology"/>
    <s:TextInput id="searchInputTechnology" change="searchInputTechnology_changeHandler(event)" width="94"/>
    </s:HGroup>
    <s:HGroup x="519" y="74" width="153" height="41" verticalAlign="middle">
    <mx:Spacer width="100%">
    </mx:Spacer>
    <s:Label text="Provider"/>
    <s:TextInput id="searchInputProvider" change="searchInputProvider_changeHandler(event)" width="94"/>
    </s:HGroup>
    <s:Label x="135" y="38" text="IP Road Map" fontSize="29" color="#524E4E"/>
    <s:TextArea id="myText" x="37" y="315" width="204" text="{this.myIPList}" height="164"/>
    <mx:Image x="33" y="18" width="74" height="57" id="STLogo" source="file:/Users/peterhirt/Pictures/stlogo.png"/>
    </s:Application>
    Here at tzhe end I append one record out of the xml files I used
    <?xml version="1.0" encoding="utf-8" ?>
    <test>
        <IP>
            <IP>USB2 PHY</IP>
            <detail>single port </detail>
            <type>USB</type>
            <Provider>TR&amp;D</Provider>
            <Technology>65lp</Technology>
            <maturity_status>MAT20</maturity_status>
            <status_date>Q4/09</status_date>
            <next_Maturity>MAT30</next_Maturity>
            <next_Date></next_Date>
            <HED>y</HED>
            <HED_criticality>2</HED_criticality>
            <HED_MAT20_request>Q4/09</HED_MAT20_request>
            <CCI></CCI>
            <CCI_criticality></CCI_criticality>
            <_CCI_MAT20_request></_CCI_MAT20_request>
            <APG></APG>
            <APG_criticality></APG_criticality>
            <APG_MAT20_request></APG_MAT20_request>
            <STE></STE>
            <STE_criticality></STE_criticality>
            <STE_MAT20_request></STE_MAT20_request>
            <IMS></IMS>
            <IMS_criticality></IMS_criticality>
            <IMS_MAT20_request></IMS_MAT20_request>
        </IP>

    Hi Kevin,
    the current XML export version is admittedly not suitable for handling HTML data, as it doesn´t put any data inside CDATA sections.
    How can I strip out this HTML using the XML export?
    I´m not aware of this functionality, but I´m sure it would have to be integrated into the respective "includes" files in order to become effective.
    However, you might consider using the manual "converting database queries to XML" approach explained on this page: http://labs.adobe.com/technologies/spry/samples/utils/query2xml.html -- this will give you notably more freedom to e.g. preprocess some data before it´s getting stuffed inside an XML node.
    I am pulling RSS feeds from news sites and storing the rss items in a database
    Would it be possible to rather sanitize the data before it´s getting stored in the database ?
    Cheers,
    Günter Schenk
    Adobe Community Expert, Dreamweaver

  • Can't specify XML Schema root in MDM Syndicator

    Hello:  I am using MDM 5.5 SP3, and I am trying to use Syndicator to output multilingual XML product descriptions.  The XSD I am attempting to use is pasted below.
    When I attempt to specify the Destination Properties and select the XSD file I have loaded into the repository via the Console, I am unable to select the "Root" (it is grayed out).  I am unable to use the XSD in any way within Syndicator because the "OK" button is grayed out...I assume because Root has not been specified.
    Any suggestions?
    Thank you - Matt
    <?xml version="1.0"?>
    <xs:schema xmlns:xs="http://www.w3.org/2000/10/XMLSchema">
    <xs:element name="ProdDescription" maxOccurs="unbounded">
      <xs:complexType>
        <xs:sequence>
          <xs:element name="ProdCatalogNum" type="xs:string"/>
          <xs:element name="Description" type="xs:string" maxOccurs="unbounded">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="Language" type="xs:string"/>
                <xs:element name="Value" type="xs:string"/>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
    </xs:element>
    </xs:schema>
    I also tried this variant with no success.  Changes are <b>in bold</b> and notes are <u>underlined</u>.
    <?xml version="1.0"?>
    <xs:schema xmlns:xs="http://www.w3.org/2000/10/XMLSchema">
    <b><xs:element name="root">
      <xs:complexType>
        <xs:choice maxOccurs="unbounded">
          <xs:element ref="ProdDescription" />
        </xs:choice>
      </xs:complexType>
    </xs:element></b>
    <xs:element name="ProdDescription"> <u>previously: maxOccurs="unbounded"</u>
    <xs:complexType>
        <xs:sequence>
          <xs:element name="ProdCatalogNum" type="xs:string"/>
          <xs:element name="Description" type="xs:string" maxOccurs="unbounded">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="Language" type="xs:string"/>
                <xs:element name="Value" type="xs:string"/>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
    </xs:element>
    </xs:schema>

    I solved my problem:  here is the updated XSD:
    I believe it was mostly due to the <b>bolded</b> line:
    <?xml version="1.0"?>
    <b><xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"></b>
         <xsd:element name="ProdDescription" type="ProdDescType"/>
         <xsd:complexType name="ProdDescType">
              <xsd:sequence>
                   <xsd:element name="ProdCatalogNum" type="xsd:string"/>
                   <xsd:element name="Description" type="DescriptionType" maxOccurs="unbounded"/>
              </xsd:sequence>
         </xsd:complexType>
         <xsd:complexType name="DescriptionType">
              <xsd:sequence>
                   <xsd:element name="Language" type="xsd:string"/>
                   <xsd:element name="Value" type="xsd:string"/>
              </xsd:sequence>
         </xsd:complexType>
    </xsd:schema>

  • Document contains too many nodes error when extracting xml tag name

    I Have a large xml file in which the tag contains ~: as the value.
    Now I am trying to extract all the tags which have ~: as the value and store that column using the following query and insert into a table.
    insert into space_md select distinct xmltype(extract(value(x), '/').getstringval()).getrootelement() COLUMN_NAME
    from gt_xmltype_tab gt, TABLE(XMLSequence(extract(gt.xmlfile1, '/ROWSET/ROW/*'))) x
    where instr(extract(value(x),'/').getstringval(),'~:') > 1;
    The xml file was generated using dbms_xmlgen.getxml. Table has 48 columns and around 4000 rows.
    My above insert query gave me an error of 31186 too many nodes error.
    I am using oracle version 10.2.0.3.
    Following are the set of commands I ran....
    SQL> insert into gt_xmltype_tab(xmlfile1)
    values(XMLType(bfilename('BKUP_RES','QC.xml'),nls_charset_id('AL32UTF8'))); 2
    1 row created.
    SQL> SQL>
    SQL> insert into restore_space_metadata select distinct 'QC', xmltype(extract(value(x), '/').getstringval()).getrootelement() COLUMN_NAME
    2 from gt_xmltype_tab gt, TABLE(XMLSequence(extract(gt.xmlfile1, '/ROWSET/ROW/*'))) x
    3 where instr(extract(value(x),'/').getstringval(),'~:') > 1;
    insert into restore_space_metadata select distinct 'QC', xmltype(extract(value(x), '/').getstringval()).getrootelement() COLUMN_NAME
    ERROR at line 1:
    ORA-31186: Document contains too many nodes
    Is there a better way of extracting the xml tag element name based on the xmltag content?
    There is one other table which has 172 columns but only 100 rows so it doesnt create any problem on that table.
    But this QC table has less columns but many many rows...
    Any suggestions

    There is a requiremnent of taking centain type of data backup and restore it.
    It was implemented on flat file approach which was giving errors.
    So it was implemented using XML approach.
    Read data, store in xml file and read from xml file and load it into table.
    Further, found that dbms_xmlstore is not able to handle tag only with whitespace
    and tried to use the loading xml file into xmltype table column and extract data.
    XMLTYPE column also has same problem of ignoring whitespace when used with extractvalue functions.
    So for the workaround I update xmlfile having only one more more whitespace in the tag to have ~: character once.
    After restoring data from xml to table I would run update qeury to update ~: to " ".
    Now instead of running blind update for all the tables and all the columns from ~: to " " I thouhgt whyy not create a xml file of tag having ~:
    along with its tablename.
    and thats where I found the problem of too many nodes...
    THe insert query you saw is populating table for table_name and column_name with tag having only ~: in it.
    I hope this gives you the fair idea of stuff I am doing.

  • XML serializing/deserializing versus parsing

    Hi all,
    This is not a strictly java question but after reading many discussions and creative solutions offered by different members of this forum, i feel that the right audience for my question are the folks in this very forum. Moderator, if you feel this question makes sense in a different forum, where it might get better responses feel free to move it.
    We are starting off on a new b2b web services project. Everyone in the group agreed that in order to appropriately serve the consumers in our space the best format to use is XML. We are java based and our first consumer is also java based, but we see in the future that our services will be consumed by other types of consumers as well. There seems to be a deep divide in how the xml structure should look like. There are two schools of thoughts. The first one (which is the popular one) is to have loosely typed tag names. Something like this
    <header>
    <map>
    <entry>
    <string>CUSTOMERNAME</string>
    <string>Mahesh</string>
    </entry>
    </map>
    </header>
    The idea being, we could dump regular marshalling/unmarshalling/parsing techniques in favor of a serializing/deserializing tool (Like XStream). The argument here is that we don't worry about a schema/parsing etc and always deal with some sort of generic collection. The other argument is that parsing is more heavier (in terms of performance) than serializing/deserializing.
    I believe that (i belong to the other less popular school of thought) any xml structure should have a real structure (strongly typed tag names). The problems i have with the proposed structure are
    1. They are not self describing, i.e. no wsdl
    2. They cant be parsed with a SAX parser (since there are no tag names, i dont think they can be parsed with a SAX parser, but if anyone here disagrees please correct me)
    3. Since regular parsing is out of the question, you cant predict how your consumers are using it.
    4. I think that the only place to use a serializing/deserializing technique is when you control both end points (producer and consumer).
    What i wanted to find out from the audience here is what they think of the pros/cons of the XML structure described above. Specifically in terms of
    1. Usablity
    2. Scalability
    3. Performance
    The generic structure is also being pitched as the 'next gen' way of defining and using XML. Is that true? Maybe i am just getting old and need to catch up.
    Any thoughts/comments are appreciated.

    user13698018 wrote:
    >
    What? Of course you can parse that "unstructured XML" with a SAX parser, why shouldn't you be able to do that? It's still XML after all.
    >
    You are right, it can be parsed. What i meant to say was i wont be able to extract information from it easily. For e.g. if i have to read the customer name what tag event will i look for? If i look for the event that fires off when i encounter tag name 'string' that will only give me the tag name and not the value. I have to come up with some sort of counter mechanism to disregard the first tag event and look at the second event. Is my assumption correct?Well, parsing the "freeform" XML with SAX requires a few tricks but can result in code that does pretty much the same thing.
    Since the information is exactly the same in both (except that one is a bit more verbose), I don't see any major differences in how it can be parsed.
    The only (seeming) difference is that for "strictly defined" XML you'll need to pre-define which tags/properties exist. But even that can be avoided by clever use of xs:any and allowing other namespaces (i.e. allow a mydata:favoriteColor tag inside your myStrictSchema:person tag).
    Once you do those, the two formats become even more equivalent: some of the advantages of having strictly-formed XML are lost (because you have to handle "unknown" tags again), while some of the disadvantages are lost as well (yeah! extensibility without modifying the core standard).
    In my (partially humble) opinion, the "free form XML" approach is often used when people are too lazy to investigate the wide variety of tools available via official XML techniques.
    >
    3. Since regular parsing is out of the question, you cant predict how your consumers are using it.
    >
    What i meant here was, if my consumers find regular parsing techniques difficult to parse they will resort to short cuts to extract the information (like regex to pull information) and that will make it difficult to predict how consumers are using the xml and hence make it difficult to plan for changes in the future. Am i over thinking here?That's always a possible problem and won't be avoided by any choice in data format. They will try it with "strict XML" and they will try it with "freeform XML". If you have some kind of consulting function, then you can try to communicate the dangers of this approach, but in the end you can hardly force people to "do it the right way".
    Which one would you use?I'd prefer the strictly specified one usually. But I don't know enough about the problem domain to give a qualified answer.

  • Dynamic parameter with an IMPORT statement

    Hello experts. I hope you can help me with this issue:
    I have a report performing an EXPORT statement into a Buffer:
      EXPORT I_USER    FROM P_USER
                    I_NAME    FROM P_NAME
                    I_SURNAME FROM P_SURNAM
               TO DATA BUFFER V_XPARVALUES.
    Then it calls the first FM where a type I program is created by using INSERT REPORT... This dynamic-generate INCLUDE has the explicits declaration for variables: I_USER, I_NAME, I_SURNAME.
    Afeter the dynamic Include generation, it calls a second FM, wich has the reference to the dynamic Include created before with the data declaration. The only thing remain is to IMPORT all the data from the buffer V_XPARVALUES:
    The following code lines are within a LOOP. wa_param-paramname has the name of the variable (I_USER, I_NAME I_SURNAME).
        ASSIGN (wa_param-paramname) TO
          FROM DATA BUFFER v_xparvalues.
    but what I need to achieve is dynamic parameters in the IMPORT statement.
    Had anybody came across this problem?
    I hope I have been clear with the explanation.
    Regards,
    Andrés Sarcevic.

    IMPORT/EXPORT scope didn't work out. Instead, I used CALL TRANSFORMATION and XML approach, besides some ABAP creativity.

  • Overriding spring configuration in J2EE deployment plan?

    I would like some suggestions on how to solve this problem:
    Background:
    We are developing an application with a web interface and a couple of EJB's, which will be deployed on WebLogic 9.2. We are using Spring 1.2.8. We are using a ContextSingletonBeanfactoryLocator to have a shared application context between the web app and the EJB's.
    We have some configuration values (server names, URLs, directories etc), which we would like to modify at deployment time, depending on the environment (local/dev/test/uat/prod). However, we definitely do not want to build different .ear files for each environment.
    The problem:
    The normal way to do this (when not using spring) is to place these in a deployment descriptor (e.g. web.xml or ejb-jar.xml) and then override them with a deployment plan at deployment time. But a deployment plan cannot override values in an arbitrary file (such as applicationContext.xml)
    Approach A:
    I use a PropertyPlaceholderConfigurer or similar to load an "c:\myapp.environment.properties" file, which was placed in the filesystem outside of the ear, and which was different in all environments. This is simple to implement, but in a distributed environment with many servers and many applications, it will be a pain to maintain this file.
    Approach B:
    Much like approach A, but put the property file in a separate application library and load it from the classpath. Then maintain a different version of this app library for each environment. This makes it simpler to ensure it's deployed to all managed servers - but it's a bit more complicated to maintain.
    Approach C:
    Use an extended ContextLoaderListener servlet so that it automatically deployed a PropertyPlaceholderConfigurer bean which expanded all context-params. E.g.
    <pre>
    <!-- web.xml -->
    <context-param>
    <param-name>remoteServerName</param-name>
    <param-value>myRemoteServerInDev</param-value>
    </context-param>
    <context-param>
    <param-name>fileDirectory</param-name>
    <param-value>c:\files</param-value>
    </context-param>
    <listener>
    <listener-class>
    dk.pfa.ConfiguringContextLoaderListener
    </listener-class>
    </listener>
    </pre>
    In my applicationContext.xml, I would then have <property name="serverName" value="${remoteServerName}"/>
    For production, I could override the web.xml in the deployment plan to set remoteServerName to "prodRemoteServer".
    The problem is that I cannot be sure that this servlet actually gets to configure the shared application context - an EJB may initialise first.
    I could put similar logic in each and every EJB, using <env-entry> in ejb-jar.xml instead of <context-param> in web.xml. This seems to invite trouble, since I would then have to ensure that the deployment plan had overridden values for all these entries as well .
    Finally I have the option of making an application lifecycle listener class - but that cannot access the web.xml, ejb-jar.xml or any other deployment-plan-overridable files, where I can put user-defined values .
    So what is the best practice? Or just a reasonable approach?
    Surely, I cannot be the first to face this problem, but if somebody has solved it, they forgot to mention it to Google

    I would vote for A or B

  • OLE2 and DDE package books

    Hi All,
    I need to fully understand OLE2 and DDE package. Pressing F1 provides very limited help for me. Anyone here have or know some links of any reading materials(e-books, documentation)?
    Please share... I'm drowned with my tasks here.
    Thanks!

    DDE is seriously outdated and should only be considered as a last resort. As for OLE2, concern yourself not with learning the OLE2 package, but instead, with understanding OLE automation. The OLE2 package is just a wrapper that makes it possible to manipulate OLE automation servers from PL/SQL. Once you understand OLE, using OLE2 should come easily.
    I learned OLE automation as a Visual Basic developer, before ever working with Oracle, and found it to be fairly straightforward. The easiest and cheapest way to learn OLE automation is by using Microsoft's Visual Basic for Applications IDE -- an Office component. Search this forum using keywords VBA and Tutorial, and you will find information that should hopefully prove helpful.
    As for Mark's assertion that XML provides a simpler solution, there are important differences between the XML and OLE approaches. The XML approach involves simply creating a document, whereas the OLE approach involves instructing the OLE server application to create a document. XML might be perfect, for example, if you wish to create Word documents on a *NIX server.  On the other hand, when your environment permits it, OLE makes it possible to leverage application functionality, like Excel's data analysis functions.
    Eric Adamson
    Lansing, Michigan

  • Converting ECC to 4.6c version

    Hi friends,
        I have a requirement where we need to downgrade the smartform which is in ECC5.0 into 4.6 version. I was trying to do it manually by looking at the ECC one but I find quite a few things which are different. Most imp thing is the table. When I create a table node I am not able to see 3 subnodes (main, header, footer) automatically in 4,6. Is there any other way to directly conver ecc to 4.6 ? or we need to do it manually only ?
    Please suggest.
    Thanks in advance.
    Reddy

    I found one program and which will download and upload the smartform.
    Note : i did not test it and i am not sure how it works.
    ZSMART FORM UPLOAD DOWNLOAD
    De SAP ABAP en castellano
    Saltar a navegación, búsqueda
    REPORT zquality LINE-SIZE 150 NO STANDARD PAGE HEADING.
    *Program : ZSMART_FORM_UPLOAD_DOWNLOAD *
    *Description : This utility/tool can download or upload smartform and *
    smartstyles. *
    *=================================================
    =====================*
    Abhishek is not responsible for any damages caused by the use or *
    misuse of this program and can not provide any warranty with this *
    program. Use it entirely at your own risk. *
    Incase you don't remember the key or your key has expired, Please *
    drop me a mail at [email protected] with your installation number. A *
    new key will be allocated to you. *
    *=================================================
    =====================*
    CHANGE LOG *
    | Date | Ver | Name | Description |
    *|----
    |----
    |----
    |----
    |*
    | 30.04.2003| VER 1.01 | ABHISHEK | Created |
    | 30.01.2004| VER 1.02 | ABHISHEK | Modified |
    | 09.02.2004| VER 2.00 | ABHISHEK | Modified (Released) |
    | | | | |
    *&===== TABLES =====
    TABLES: stxfadm,
            stxsadm.
    DATA: v_pass,
    g_ans,
    v_abhi(16),
    g_ins00(14) VALUE ' ',
    BEGIN OF tab OCCURS 0,
    line(72),
    END OF tab,
    tname LIKE sy-repid.
    *&===== SELCTION SCREEN =====
    SELECTION-SCREEN BEGIN OF BLOCK smart1 WITH FRAME TITLE text-001.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 4(20) text-101.
    PARAMETERS: p_fname LIKE stxfadm-formname DEFAULT 'ZTEST2'.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 4(20) text-102.
    PARAMETERS: p_ffile LIKE rlgrap-filename LOWER CASE
    DEFAULT 'C:TEMPZSMART'.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF BLOCK ind1 WITH FRAME TITLE text-002.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 4(20) text-103.
    PARAMETERS: p_ft RADIOBUTTON GROUP abh1.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 4(20) text-104.
    PARAMETERS: p_fu RADIOBUTTON GROUP abh1.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 4(20) text-105.
    PARAMETERS: p_fd RADIOBUTTON GROUP abh1.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN END OF BLOCK ind1.
    SELECTION-SCREEN END OF BLOCK smart1.
    SELECTION-SCREEN SKIP 2.
    SELECTION-SCREEN BEGIN OF BLOCK smart2 WITH FRAME TITLE text-003.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 4(20) text-106.
    PARAMETERS: p_sname LIKE stxfadm-formname DEFAULT 'ZTEST2'.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 4(20) text-102.
    PARAMETERS: p_sfile LIKE rlgrap-filename LOWER CASE
    DEFAULT 'C:TEMPZSMART'.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF BLOCK ind2 WITH FRAME TITLE text-002.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 4(20) text-103.
    PARAMETERS: p_st RADIOBUTTON GROUP abh2.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 4(20) text-104.
    PARAMETERS: p_su RADIOBUTTON GROUP abh2.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 4(20) text-105.
    PARAMETERS: p_sd RADIOBUTTON GROUP abh2.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN END OF BLOCK ind2.
    SELECTION-SCREEN END OF BLOCK smart2.
    SELECTION-SCREEN SKIP 2.
    SELECTION-SCREEN BEGIN OF BLOCK abhi WITH FRAME TITLE text-004.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(70) text-107.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 5(15) text-108.
    PARAMETERS: p_key(8).
    SELECTION-SCREEN COMMENT 30(16) text-109.
    PARAMETERS: p_ins(14).
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN END OF BLOCK abhi.
    *&===== AT-SELCTION-SCREEN BEFOR OUTPUT =====
    AT SELECTION-SCREEN OUTPUT.
      PERFORM sub_installation.
      PERFORM sub_get_set_para.
      PERFORM sub_pass.
    *&===== AT-SELCTION-SCREEN =====
    AT SELECTION-SCREEN.
      CLEAR v_pass.
      PERFORM set_para.
      PERFORM sub_validation.
    *&===== MACRO =====
      DEFINE checkabap.
        data: begin of l_tab occurs 0,
        line(72),
        end of l_tab,
        l_lines like sy-index.
        read report sy-repid into l_tab.
        describe table l_tab lines l_lines.
        if l_lines <> 0 .
          vmess ' Program has been modifid externally !!'.
        endif.
      END-OF-DEFINITION.
      DEFINE vmess.
        if v_pass = space.
          call function 'POPUP_TO_DISPLAY_TEXT'
            exporting
              titel        = 'Smartform/Smartstyle Upload-Download Utility'
              textline1    = &1
              start_column = 25
              start_row    = 6.
          v_pass = 'X'.
        endif.
      END-OF-DEFINITION.
      DEFINE abhishek.
        tab-line = &1.
        translate tab-line using v_abhi.
        append tab.
        clear tab.
      END-OF-DEFINITION.
      DEFINE app.
        itab-id = &1. itab-key = &2. itab-entry = &3.
        append itab.
        clear itab.
      END-OF-DEFINITION.
    *&===== START-SELCTION-SCREEN =====
    START-OF-SELECTION.
      IF v_pass = space.
        PERFORM sub_warning.
        IF g_ans = '1'.
          REFRESH tab. CLEAR tab.
          abhishek: 'report ztabhi.'.
          PERFORM form1000000.
          GENERATE SUBROUTINE POOL tab NAME tname.
          IF sy-subrc = 0.
            PERFORM sub_000005
            IN PROGRAM (tname) USING p_key v_abhi g_ins00 IF FOUND .
          ELSE.
            vmess 'Error!! Trying to copy this Utility, Please install'.
          ENDIF.
          REFRESH tab. CLEAR: tab, tname.
          abhishek: 'report ztabhi.'.
          PERFORM form100000.
          PERFORM form100001.
          PERFORM form100002.
          PERFORM form100003.
          PERFORM form100004.
          PERFORM form100005.
          GENERATE SUBROUTINE POOL tab NAME tname.
          IF sy-subrc = 0.
            SET PARAMETER ID 'ABH1' FIELD p_key.
            IF p_fu = 'X'.
              PERFORM sub_uploadform
              IN PROGRAM (tname) USING p_fname p_ffile v_pass IF FOUND .
            ELSEIF p_fd = 'X'.
              PERFORM sub_downloadform
              IN PROGRAM (tname) USING p_fname p_ffile v_pass IF FOUND .
            ENDIF.
            IF p_su = 'X'.
              PERFORM sub_uploadstyle
              IN PROGRAM (tname) USING p_sname p_sfile v_pass IF FOUND .
            ELSEIF p_sd = 'X'.
              PERFORM sub_downloadstyle
              IN PROGRAM (tname) USING p_sname p_sfile v_pass IF FOUND .
            ENDIF.
          ELSE.
            vmess 'ERROR: Either the key is wrong or Program has been
    modified'.
          ENDIF.
        ELSE.
          vmess 'Action Cancelled'.
        ENDIF.
      ENDIF.
    *& Form form1000000
    FORM form1000000.
      abhishek:
      'FORM SUB_000005 USING P_KEY V_ABHI G_INS00. ',
      'Data: L_xyz like sy-datum,',
      ' l_check(4) .',
      'ZVABHI G_INS00.',
      'ENDFORM.'.
    ENDFORM. " form1000000
    *& Form form100001
    FORM form100001.
      abhishek:
      ' DEFINE DATADECS.',
      ' DATA: BEGIN OF T_&1 OCCURS 0.',
      ' INCLUDE STRUCTURE &1.',
      ' DATA: END OF T_&1.',
      ' SELECT * INTO TABLE T_&1 FROM &1 WHERE STYLENAME = P_?NAME.',
      ' END-OF-DEFINITION.',
      ' DEFINE DOWNLOADALL.',
      ' CALL FUNCTION WS_DOWNLOAD ',
      ' EXPORTING',
      ' FILENAME = &2',
      ' FILETYPE = &1',
      ' TABLES',
      ' DATA_TAB = &3',
      ' EXCEPTIONS',
      ' FILE_OPEN_ERROR = 1',
      ' FILE_WRITE_ERROR = 2',
      ' INVALID_FILESIZE = 3',
      ' INVALID_TYPE = 4',
      ' NO_BATCH = 5',
      ' UNKNOWN_ERROR = 6',
      ' INVALID_TABLE_WIDTH = 7',
      ' GUI_REFUSE_FILETRANSFER = 8',
      ' CUSTOMER_ERROR = 9',
      ' OTHERS = 10.',
      ' END-OF-DEFINITION.',
      ' DEFINE UPLOADALL.',
      ' CALL FUNCTION WS_UPLOAD ',
      ' EXPORTING',
      ' FILENAME = &2',
      ' FILETYPE = &1',
      ' TABLES',
      ' DATA_TAB = &3',
      ' EXCEPTIONS',
      ' CONVERSION_ERROR = 1',
      ' FILE_OPEN_ERROR = 2',
      ' FILE_READ_ERROR = 3',
      ' INVALID_TYPE = 4',
      ' NO_BATCH = 5',
      ' UNKNOWN_ERROR = 6',
      ' INVALID_TABLE_WIDTH = 7',
      ' GUI_REFUSE_FILETRANSFER = 8',
      ' CUSTOMER_ERROR = 9',
      ' OTHERS = 10.',
      ' END-OF-DEFINITION.',
      ' DEFINE ABHI_SPEC1.',
      ' DATA: BEGIN OF T_&1 .',
      ' INCLUDE STRUCTURE &1.',
      ' DATA: END OF T_&1.',
      ' CLEAR: L_CHAR, L_NO, .',
      ' L_NO = L_NO + DD03L-INTLEN.',
      ' ENDIF.',
      ' ENDSELECT.',
      ' APPEND %_%A@.',
      ' CLEAR %_%A@.',
      ' ENDLOOP.',
      ' END-OF-DEFINITION.',
      ' DEFINE VMESS.',
      ' IF V_PASS = SPACE.',
      ' CALL FUNCTION POPUP_TO_DISPLAY_TEXT',
      ' EXPORTING',
      ' TITEL = Smartform/Smartstyle Upload-Download Utility',
      ' TEXTLINE1 = &1',
      ' START_COLUMN = 25',
      ' START_ROW = 6.',
      ' V_PASS = X.',
      ' ENDIF.',
      ' END-OF-DEFINITION.'.
    ENDFORM. " form100001
    *& Form form100000
    FORM form100000.
      abhishek:
    *&===== TABLES =====
      'TABLES: STXFADM,',
      ' STXSADM,',
      ' DD03L.',
    *&===== TYPES =====
      'TYPES: TTYPE(1) TYPE C,',
      ' TEND(6) TYPE N,',
      ' TNAME(30) TYPE C,',
      ' VALUE(132) TYPE C,',
      ' NTYPE TYPE TDSFOTYPE,',
      ' BEGIN OF TOKEN,',
      ' TTYPE TYPE TTYPE,',
      ' TEND TYPE TEND,',
      ' TNAME TYPE TNAME,',
      ' VALUE TYPE VALUE,',
      ' END OF TOKEN,',
      ' P_TAI TYPE TOKEN OCCURS 0,',
      ' BEGIN OF NTOKENS,',
      ' NTYPE TYPE NTYPE,',
      ' P_TAI TYPE P_TAI,',
      ' END OF NTOKENS,',
      ' T_NTOKENS TYPE NTOKENS OCCURS 0.',
    *&===== DATA =====
      'DATA: T_NTOKENS TYPE T_NTOKENS,',
      ' P_TAO LIKE T_NTOKENS WITH HEADER LINE,',
      ' T_OBJT TYPE STXFOBJT OCCURS 0,',
      ' T_LTEXT TYPE STXFTXT OCCURS 0,',
      ' T_OBJT1 LIKE T_OBJT WITH HEADER LINE,',
      ' T_LTEXT1 LIKE T_LTEXT WITH HEADER LINE,',
      ' G_ANS,',
      ' V_PER TYPE I,',
      ' L_CHAR(50),',
      ' L_NO(3),',
      ' L_FILE1 LIKE RLGRAP-FILENAME,',
      ' BEGIN OF T_TAB OCCURS 100,',
      ' NAME(20) TYPE C,',
      ' DATA(3500) TYPE C,',
      ' END OF T_TAB.',
    *&===== FIELD-SYMBOLS =====
      'FIELD-SYMBOLS: .'.
    ENDFORM. " form100000
    *& Form form100002
    FORM form100002.
      abhishek:
      'FORM SUB_UPLOADFORM using P_#NAME p_ffile v_pass.',
      ' DATA: I_FORMNAME(30),',
      ' P_TA` LIKE P_TA^-P_TA` WITH HEADER LINE.',
      ' CLEAR: L_FILE1,',
      ' %_%A@.',
      ' REFRESH: %_%A@.',
      ' REFRESH: %_%^KE?, %_@!%, %_L%EX%, P_TA, %_^@!%1, %_L%EX%1.',
      ' CLEAR: %_%^KE?, %_@!%, %_L%EX%, P_TA, %_^@!%1, %_L%EX%1.',
      ' CONCATENATE P_fFILE ~f!o@r#m$.ABHI INTO L_FILE1.',
      ' I_FORMNAME = P_#NAME .',
      ' UPLOADALL DAT L_FILE1 %_%A@.',
      ' IF SY-SUBRC <> 0.',
      ' VMESS ERROR in Uploading: Please check the file path.',
      ' ENDIF.',
      ' LOOP AT %_%A@.',
      ' IF %_%A@-NAME = STXFOBJT.',
      ' %_^@!%1 = %_%A@-DATA.',
      ' IF %_^@!%1-FORMNAME <> SPACE.',
      ' %_^@!%1-FORMNAME = I_FORMNAME.',
      ' ENDIF.',
      ' APPEND %_^@!%1.',
      ' CLEAR %_^@!%1.',
      ' ELSEIF %_%A@-NAME = STXFTXT.',
      ' %_L%EX%1 = %_%A@-DATA.',
      ' IF %_L%EX%1-FORMNAME <> SPACE.',
      ' %_L%EX%1-FORMNAME = I_FORMNAME.',
      ' ENDIF.',
      ' APPEND %_L%EX%1.',
      ' CLEAR %_L%EX%1.',
      ' ELSEIF %_%A@-NAME = STXFADM.',
      ' STXFADM = %_%A@-DATA.',
      ' IF STXFADM-FORMNAME <> SPACE.',
      ' STXFADM-FORMNAME = P_#NAME.',
      ' STXFADM-FIRSTUSER = SY-UNAME.',
      ' STXFADM-LASTUSER = SY-UNAME.',
      ' STXFADM-DEVCLASS = $TMP.',
      ' ENDIF.',
      ' ELSE.',
      ' AT NEW NAME.',
      ' P_TA^-NTYPE = %_%A@-NAME.',
      ' REFRESH P_TA`. CLEAR P_TA`.',
      ' ENDAT.',
      ' P_TA` = %_%A@-DATA.',
      ' IF P_TA^-NTYPE =SF.',
      ' IF P_TA`-TNAME = FORMNAME.',
      ' P_TA`-VALUE = P_#NAME.',
      ' ELSEIF P_TA`-TNAME = DEVCLASS.',
      ' P_TA`-VALUE = $TMP.',
      ' ELSEIF P_TA`-TNAME = FIRSTUSER.',
      ' P_TA`-VALUE = SY-UNAME.',
      ' ELSEIF P_TA`-TNAME = FIRSTDATE.',
      ' P_TA`-VALUE = SY-DATUM.',
      ' ELSEIF P_TA`-TNAME = FIRSTTIME.',
      ' P_TA`-VALUE = SY-UZEIT.',
      ' ELSEIF P_TA`-TNAME = LASTUSER.',
      ' P_TA`-VALUE = SY-UNAME.',
      ' ELSEIF P_TA`-TNAME = LASTDATE.',
      ' P_TA`-VALUE = SY-DATUM.',
      ' ELSEIF P_TA`-TNAME = LASTTIME.',
      ' P_TA`-VALUE = SY-UZEIT.',
      ' ENDIF.',
      ' ENDIF.',
      ' APPEND P_TA`.',
      ' AT END OF NAME.',
      ' P_TA^-P_TA`[] = P_TA`[].',
      ' APPEND P_TA^.',
      ' CLEAR P_TA^.',
      ' ENDAT.',
      ' ENDIF.',
      ' ENDLOOP.',
      ' %_%^KE?[] = P_TA^[].',
      ' %_@!%[] = %_@!%1[].',
      ' %_L%EX%[] = %_L%EX%1[].',
      ' MODIFY STXFADM .',
      ' EXPORT %_%^KE? %_^@!% %_L%EX%',
      ' TO DATABASE STXFCONTS(XX) ID I_FORMNAME.',
      ' IF SY-SUBRC = 0.',
      ' VMESS FORM UPLOAD: Sucessfully completed.',
      ' ELSE.',
      ' VMESS ERROR in Exporting the Form .',
      ' ENDIF.',
      'ENDFORM.'.
    ENDFORM. " form100002
    *& Form form100003
    FORM form100003.
      abhishek:
      'FORM SUB_DOWNLOADFORM using P_#NAME p_ffile v_pass. ',
      ' DATA: I_FORMNAME(30). ',
      ' CONSTANTS C_TEXT_FORM VALUE F. ',
      ' CLEAR: L_FILE1,',
      ' %_%A@. ',
      ' REFRESH: %_%A@. ',
      ' REFRESH: %_~%^KE~?, %_^@!%, %_L%EX%, P_TA^. ',
      ' CLEAR: %_~%^KE~?, %_^@!%, %_L%EX%, P_TA^. ',
      ' CONCATENATE P_fFILE ~f!o@r#m$.ABHI INTO L_FILE1.',
      ' I_FORMNAME = P_#NAME . ',
      ' IMPORT %_~%^KE~? %_^@!% %_L%EX% ',
      ' FROM DATABASE STXFCONTS(XX) ID I_FORMNAME.',
      ' IF SY-SUBRC <> 0. ',
      ' SELECT * FROM STXFOBJT INTO TABLE %_^@!% ',
      ' WHERE FORMNAME = I_FORMNAME. ',
      ' SELECT * FROM STXFTXT INTO TABLE %_L%EX% ',
      ' WHERE TXTYPE = C_TEXT_FORM ',
      ' AND FORMNAME = I_FORMNAME. ',
      ' IMPORT %_~%^KE~? FROM DATABASE STXFCONT(XX) ID I_FORMNAME. ',
      ' ENDIF.',
      ' P_TA^[] = %_~%^KE~?[]. ',
      ' LOOP AT P_TA^. ',
      ' LOOP AT P_TA^-P_TA` INTO %_%A@-DATA. ',
      ' %_%A@-NAME = P_TA^-NTYPE. ',
      ' APPEND %_%A@. ',
      ' CLEAR %_%A@. ',
      ' ENDLOOP. ',
      ' ENDLOOP.' ,
      ' LOOP AT %_^@!% INTO %_%A@-DATA. ',
      ' %_%A@-NAME = STXFOBJT. ',
      ' APPEND %_%A@. ',
      ' CLEAR %_%A@. ',
      ' ENDLOOP. ',
      ' LOOP AT %_L%EX% INTO %_%A@-DATA. ',
      ' %_%A@-NAME = STXFTXT. ',
      ' APPEND %_%A@. ',
      ' CLEAR %_%A@. ',
      ' ENDLOOP. ',
      ' SELECT SINGLE * FROM STXFADM WHERE FORMNAME = P_#NAME. ',
      ' %_%A@-DATA = STXFADM. ',
      ' %_%A@-NAME = STXFADM. ',
      ' APPEND %_%A@. ',
      ' CLEAR %_%A@.' ,
      ' DOWNLOADALL DAT L_FILE1 %_%A@. ',
      ' IF SY-SUBRC = 0. ',
      ' VMESS FORM DOWNLOAD: Sucessfully completed. ',
      ' ELSE. ',
      ' VMESS ERROR in Downloading: Please check the file path . ',
      ' ENDIF. ',
      'ENDFORM. '. " SUB_DOWNLOADFORM
    ENDFORM. " form100003
    *& Form form100004
    FORM form100004.
      abhishek:
      'FORM SUB_UPLOADSTYLE USING P_?NAME P_SFILE V_PASS.',
      ' CLEAR: L_FILE1,',
      ' %_%A@.',
      ' REFRESH: %_%A@.',
      ' CONCATENATE P_SFILE ~s!t@l#y$e.ABHI INTO L_FILE1.',
      ' UPLOADALL DAT L_FILE1 %_%A@.',
      ' IF SY-SUBRC <> 0.',
      ' VMESS ERROR in uploading the File .',
      ' ENDIF.',
      ' ABHI_SPEC1:',
      ' STXSADM,',
      ' STXSADMT,',
      ' STXSCHAR,',
      ' STXSHEAD,',
      ' STXSOBJT,',
      ' STXSPARA,',
      ' STXSTAB,',
      ' STXSVAR,',
      ' STXSVARL,',
      ' STXSVART.',
      ' IF SY-SUBRC = 0.',
      ' VMESS STYLE UPLOAD: Sucessfully completed.',
      ' ELSE.',
      ' VMESS ERROR in uploading the Style .',
      ' ENDIF.',
      'ENDFORM. '.
    ENDFORM. " form100004
    *& Form form100005
    FORM form100005.
      abhishek:
      'FORM SUB_DOWNLOADSTYLE USING P_?NAME P_SFILE V_PASS.',
      ' CLEAR: L_FILE1,',
      ' %_%A@.',
      ' REFRESH: %_%A@.',
      ' CONCATENATE P_SFILE ~s!t@l#y$e.ABHI INTO L_FILE1.',
      ' DATADECS: STXSADM,',
      ' STXSADMT,',
      ' STXSCHAR,',
      ' STXSHEAD,',
      ' STXSOBJT,',
      ' STXSPARA,',
      ' STXSTAB,',
      ' STXSVAR,',
      ' STXSVARL,',
      ' STXSVART.',
      ' ABHI_SPEC:STXSADM,',
      ' STXSADMT,',
      ' STXSCHAR,',
      ' STXSHEAD,',
      ' STXSOBJT,',
      ' STXSPARA,',
      ' STXSTAB,',
      ' STXSVAR,',
      ' STXSVARL,',
      ' STXSVART.',
      ' DOWNLOADALL DAT L_FILE1 %_%A@.',
      ' IF SY-SUBRC = 0.',
      ' VMESS STYLE DOWNLOAD: Sucessfully completed.',
      ' ELSE.',
      ' VMESS ERROR in Downloading the File .',
      ' ENDIF.',
      'ENDFORM. '.
    ENDFORM. " form100005
    *& Form sub_get_set_para
    FORM sub_get_set_para.
      p_ins = g_ins00.
      GET PARAMETER ID 'ABH1' FIELD p_key.
      GET PARAMETER ID 'ABH2' FIELD p_sfile.
      GET PARAMETER ID 'ABH3' FIELD p_sname.
      GET PARAMETER ID 'ABH4' FIELD p_ffile.
      GET PARAMETER ID 'ABH5' FIELD p_fname. checkabap.
    ENDFORM. " sub_get_set_para
    *& Form set_para
    FORM set_para.
      SET PARAMETER ID 'ABH2' FIELD p_sfile.
      SET PARAMETER ID 'ABH3' FIELD p_sname.
      SET PARAMETER ID 'ABH4' FIELD p_ffile.
      SET PARAMETER ID 'ABH5' FIELD p_fname.
    ENDFORM. " set_para
    *& Form SUB_VALIDATION
    FORM sub_validation.
      IF p_key = space.
        vmess 'Please Enter the key.'.
      ELSE.
        v_abhi+0(1) = '@'.
        v_abhi1(1) = p_key0(1).
        v_abhi+2(1) = '`'.
        v_abhi3(1) = p_key1(1).
        v_abhi+4(1) = '!'.
        v_abhi5(1) = p_key2(1).
        v_abhi+6(1) = '~'.
        v_abhi7(1) = p_key3(1).
        v_abhi+8(1) = '^'.
        v_abhi9(1) = p_key4(1).
        v_abhi+10(1) = '%'.
        v_abhi11(1) = p_key5(1).
        v_abhi+12(1) = '#'.
        v_abhi13(1) = p_key6(1).
        v_abhi+14(1) = '?'.
        v_abhi15(1) = p_key7(1).
      ENDIF.
      IF p_st = 'X' AND p_ft = 'X'.
        vmess 'Please Select Upload Download Indicator.'.
      ENDIF.
      IF p_ft = space.
        PERFORM sub_val_form.
      ENDIF.
      IF p_st = space.
        PERFORM sub_val_style.
      ENDIF.
    ENDFORM. " SUB_VALIDATION
    *& Form SUB_VAL_FORM
    FORM sub_val_form.
      DATA: l_file1(20),
      l_file2(20).
      IF p_fname = space.
        vmess 'Please enter the form name'.
      ENDIF.
      IF p_fname+0(1) <> 'Z'.
        IF p_fu = 'X'.
          vmess 'Form name should start with Z only'.
        ENDIF.
      ENDIF.
      IF p_ffile = space.
        vmess 'Please enter the file name'.
      ENDIF.
      SPLIT p_ffile AT '.' INTO l_file1 l_file2.
      IF l_file2 <> space.
        vmess 'Dont enter the extention with file name'.
      ENDIF.
      IF p_fu = 'X'.
        SELECT SINGLE * FROM stxfadm WHERE formname = p_fname.
        IF sy-subrc = 0.
          vmess 'Form already exists'.
        ENDIF.
      ENDIF.
      IF p_fd = 'X'.
        SELECT SINGLE * FROM stxfadm WHERE formname = p_fname.
        IF sy-subrc <> 0.
          vmess 'Form does not exists'.
        ENDIF.
      ENDIF.
    ENDFORM. " SUB_VAL_FORM
    *& Form SUB_VAL_STYLE
    FORM sub_val_style.
      DATA: l_file1(20),
      l_file2(20).
      IF p_sname = space.
        vmess 'Please enter the Style name'.
      ENDIF.
      IF p_sname+0(1) <> 'Z'.
        vmess 'Style name should start with Z only'.
      ENDIF.
      IF p_sfile = space.
        vmess 'Please enter the file name'.
      ENDIF.
      SPLIT p_sfile AT '.' INTO l_file1 l_file2.
      IF l_file2 <> space.
        vmess 'Dont enter extention with file name'.
      ENDIF.
      IF p_su = 'X'.
        SELECT SINGLE * FROM stxsadm WHERE stylename = p_sname.
        IF sy-subrc = 0.
          vmess 'Style already exists'.
        ENDIF.
      ENDIF.
      IF p_sd = 'X'.
        SELECT SINGLE * FROM stxsadm WHERE stylename = p_sname.
        IF sy-subrc <> 0.
          vmess 'Style does not exists'.
        ENDIF.
      ENDIF.
    ENDFORM. " SUB_VAL_STYLE
    *& Form SUB_WARNING
    FORM sub_warning.
      DATA: l_line1(50),
      l_line2(50),
      l_line3(50),
      l_title(50).
      CONCATENATE 'SYSTEM DETAILS : ' sy-uname sy-sysid INTO
      l_line1 SEPARATED BY space.
      IF p_fu = 'X'.
        CONCATENATE 'Upload Form : ' p_fname INTO l_line2
        SEPARATED BY space.
      ENDIF.
      IF p_fd = 'X'.
        CONCATENATE 'Download Form : ' p_fname INTO l_line2
        SEPARATED BY space.
      ENDIF.
      IF p_su = 'X'.
        CONCATENATE 'Upload Style : ' p_sname INTO l_line3
        SEPARATED BY space.
      ENDIF.
      IF p_sd = 'X'.
        CONCATENATE 'Download Style : ' p_sname INTO l_line3
        SEPARATED BY space.
      ENDIF.
      l_title = 'Upload/Download Form and Style'.
      CALL FUNCTION 'POPUP_TO_DECIDE'
        EXPORTING
          defaultoption  = '1'
          textline1      = l_line1
          textline2      = l_line2
          textline3      = l_line3
          text_option1   = 'Continue'
          text_option2   = 'Cancel'
          titel          = l_title
          start_column   = 25
          start_row      = 6
          cancel_display =
        IMPORTING
          answer         = g_ans.
    ENDFORM. " SUB_WARNING
    *& Form sub_pass
    FORM sub_pass.
      LOOP AT SCREEN.
        IF screen-name = 'P_KEY' .
          IF p_key = space.
            screen-invisible = 1.
            MODIFY SCREEN.
          ELSE.
            screen-input = 0.
            screen-invisible = 1.
            MODIFY SCREEN.
          ENDIF.
        ENDIF.
      ENDLOOP.
    ENDFORM. " sub_pass
    ************%HG&#%#%(HMDC@!#$M<M()&87687*****************************
    *& Form SUB_Installation
    FORM sub_installation .
      DATA: l_abhishek,
      l_ques(450),
      BEGIN OF ttab OCCURS 0,
      line(61),
      END OF ttab.
      DEFINE note.
        ttab-line = &1.
        append ttab.
        clear ttab.
      END-OF-DEFINITION.
      l_ques+0(49) =
      'This utility has been checked and tested by down'.
      l_ques+49(49) =
      'loading & Uploading several Smartforms and smart'.
      l_ques+98(49) =
      'style and found OK. Extensive testing & rigorous'.
      l_ques+147(49) =
      'code review makes this utility more smart, '.
      l_ques+196(49) =
      'useful and Intelligent. '.
      l_ques+245(49) =
      'But you will be solely responsible for any '.
      l_ques+294(49) =
      'damage caused by use or misuse of this utility. '.
      l_ques+343(49) =
      'Also, you will not modify or change this'.
      l_ques+392(49) =
      'utility.'.
      note:
      'Installation Done, Successfully !!!!!! ',
      ' Thank you for installing the exiting tool ',
      ' "The Smartform/Smartstyle Upload Download Tool" ',
      'Please note down the below installation number and ',
      'the key which will be used by the program for identifying ',
      'the right access. ',
      ' INSTALLATION NUMBER: ',
      ' KEY : ',
      'After expiration of your key, if you want to extend your key, ',
      'Please drop me mail at [email protected]. ',
      'Dont forget to mention the installation number. ',
      'A New will be allocated to you with extended period. ',
      'Thank You. ',
      'Abhishek Kumar ',
      '[email protected] '.
      CALL FUNCTION 'POPUP_TO_CONFIRM'
        EXPORTING
          titlebar              = 'I Agree'
          text_question         = l_ques
          text_button_1         = 'I ACCEPT'
          text_button_2         = 'I REJECT'
          default_button        =
          display_cancel_button =
        IMPORTING
          answer                = l_abhishek
        EXCEPTIONS
          text_not_found        = 1
          OTHERS                = 2.
      IF l_abhishek = '1'.
        CLEAR l_abhishek.
        PERFORM sub_0001 USING l_abhishek.
        PERFORM sub_0002 USING l_abhishek.
        PERFORM sub_0003 USING l_abhishek.
        READ TABLE ttab INDEX 14.
        ttab-line+25(14) = g_ins00.
        MODIFY ttab INDEX 14.
        READ TABLE ttab INDEX 15.
        ttab-line+25(8) = p_key.
        ttab-line+35(23) = 'Valid for next 15 Days'.
        MODIFY ttab INDEX 15.
        IF l_abhishek = space.
          CALL FUNCTION 'POPUP_WITH_TABLE_DISPLAY'
            EXPORTING
              endpos_col   = 70
              endpos_row   = 30
              startpos_col = 10
              startpos_row = 5
              titletext    = 'Welcome'
            TABLES
              valuetab     = ttab
            EXCEPTIONS
              break_off    = 1
              OTHERS       = 2.
          PERFORM sub_0004 USING l_abhishek .
          SUBMIT (sy-repid) VIA SELECTION-SCREEN .
        ELSE.
          REFRESH ttab. CLEAR ttab.
          note:
          ' ERROR !! ',
          ' Some error has been occured, while installing the tool. ',
          'Probable reason : ',
          ' 1. Error in generating the Text Element ',
          ' 2. Error in Instalation Congiguration ',
          ' 3. Error in Inserting the report ',
          ' 4. Error in Modifying the database tables ',
          'Error Code: ',
          l_abhishek,
          'Please drop me a mail with error Code at "[email protected]": '.
          CALL FUNCTION 'POPUP_WITH_TABLE_DISPLAY'
            EXPORTING
              endpos_col   = 70
              endpos_row   = 30
              startpos_col = 10
              startpos_row = 5
              titletext    = 'Error'
            TABLES
              valuetab     = ttab
            EXCEPTIONS
              break_off    = 1
              OTHERS       = 2.
        ENDIF.
      ELSE.
        LEAVE PROGRAM.
      ENDIF.
    ENDFORM. " SUB_Installation
    *& Form sub_0001
    FORM sub_0001 USING l_abhishek.
      DATA: l_lines LIKE sy-index.
      DATA: itab LIKE textpool OCCURS 50 WITH HEADER LINE.
      READ TEXTPOOL sy-repid INTO itab LANGUAGE sy-langu.
      DESCRIBE TABLE itab LINES l_lines.
      IF itab[] IS INITIAL OR l_lines < 10.
        REFRESH itab.
        CLEAR itab.
        app: 'I' '101' 'Smart Form Name',
        'I' '102' 'File Name',
        'I' '103' 'None',
        'I' '104' 'Upload Indicator',
        'I' '105' 'Download Indicator',
        'I' '106' 'Smart Style Name',
        'I' '001' 'SmartForm Upload Download Menu',
        'I' '002' 'Specify Upload Download Indicator',
        'I' '003' 'SmartStyle Upload Download Menu',
        'I' '004' 'SFST Utility Version 1.02',
        'I' '107'
        'Created By Abhishek Kumar On 11.03.2003 Version 2.00 (XML
    approach)',
        'I' '108' 'Enter the key',
        'I' '109' 'Installation No'.
        itab-id = 'R'. itab-key = space.
        itab-entry = 'Smart Form Upload Download utility'.
        APPEND itab.
        INSERT TEXTPOOL sy-repid FROM itab LANGUAGE 'EN' STATE 'A'.
      ENDIF.
    ENDFORM.                                                    "sub_0001
    *& Form sub_0002
    FORM sub_0002 USING l_abhishek.
      DATA: l_rnd TYPE integer4,
      l_no(4) TYPE n,
      l_ktx LIKE t247-ktx,
      l_dat LIKE sy-datum.
      l_dat = sy-datum + 15.
      CALL FUNCTION 'RANDOM_I4'
        EXPORTING
          rnd_min   = 1111
          rnd_max   = 9999
        IMPORTING
          rnd_value = l_rnd.
      l_no = l_rnd.
      SELECT SINGLE ktx FROM t247 INTO l_ktx WHERE mnr = sy-datum+4(2)
      AND spras ='EN'.
      g_ins005(1) = l_ktx0(1).
      g_ins008(1) = l_ktx1(1).
      g_ins0010(1) = l_ktx2(1).
      g_ins00+4(1) = '-'.
      g_ins00+9(1) = '-'.
      g_ins000(2) = l_no0(2).
      g_ins006(2) = l_no2(2).
      g_ins00+11(1) = '0'.
      g_ins00+12(1) = 'A'.
      g_ins00+13(1) = '4'.
      g_ins002(2) = sy-datum6(2).
      CASE l_dat+4(1).
        WHEN 0.
          p_key0(1) = l_dat4(1).
          p_key1(1) = l_dat6(1).
          p_key6(1) = l_dat7(1).
          p_key4(1) = l_dat5(1).
          p_key2(2) = l_no0(2).
          p_key5(1) = l_no2(1).
          p_key7(1) = l_no3(1).
        WHEN 1.
          p_key0(1) = l_dat4(1).
          p_key1(2) = l_dat6(2).
          p_key3(1) = l_dat5(1).
          p_key4(4) = l_no0(4).
      ENDCASE.
    ENDFORM.                                                    "sub_0002
    *& Form sub_0003
    FORM sub_0003 USING l_abhishek.
      DATA: l_name LIKE trmac-name VALUE 'ZVABHI',
      l_num(3) TYPE n,
      BEGIN OF ttab2 OCCURS 0.
              INCLUDE STRUCTURE trmac.
      DATA: END OF ttab2.
      l_num = '001'.
      DEFINE aa.
        ttab2-name = l_name.
        ttab2-numm = l_num.
        ttab2-line = &1.
        append ttab2.
        clear ttab2. l_num = l_num + 1.
      END-OF-DEFINITION.
      aa:
      'if G_INS00 =  .',
      'case P_Key+0(1). ',
      ' when 1. ',
      ' l_xyz6(2) = p_key1(2).',
      ' l_check = p_key+4(4). ',
      ' when 0. ',
      ' l_xyz6(1) = p_key1(1).',
      ' l_xyz7(1) = p_key6(1).',
      ' l_check0(2) = p_key2(2). ',
      ' l_check2(1) = p_key5(1). ',
      ' l_check3(1) = p_key7(1). ',
      'Endcase. ',
      ' l_xyz4(1) = p_key0(1).',
      ' l_xyz5(1) = p_key3(1).',
      'l_xyz+0(1) = 2. ',
      'l_xyz+1(1) = 0. ',
      'l_xyz2(1) = &111(1).',
      'l_xyz3(1) = G_INS0013(1).',
      'if l_check0(2) = G_INS000(2).',
      'if l_check2(2) = G_INS006(2).',
      'if l_xyz >= sy-datum.',
      'If V_ABHI+1(1) <> B.',
      'Clear V_ABHI.',
      'V_ABHI+0(16) = @B`I!J~N^O%T#F?S|Q.',
      'Endif.',
      'Endif.',
      'Endif.',
      'Endif.',
      'Endif.'.
      READ TABLE ttab2 INDEX 1.
      ttab2-line+14(14) = g_ins00.
      MODIFY ttab2 INDEX 1.
      DELETE FROM trmac WHERE name = l_name.
      MODIFY trmac FROM TABLE ttab2.
      IF sy-subrc = 0.
      ENDIF.
    ENDFORM.                                                    "sub_0003
    *& Form sub_0004
    FORM sub_0004 USING l_abhishek.
      DATA: BEGIN OF t_prog OCCURS 0,
      line(72),
      END OF t_prog,
      l_lines LIKE sy-index.
      READ REPORT sy-repid INTO t_prog.
      DELETE t_prog FROM 805.
      DELETE t_prog INDEX 114.
      READ TABLE t_prog INDEX 36.
      t_prog-line+25(14) = g_ins00.
      MODIFY t_prog INDEX 36.
      DESCRIBE TABLE t_prog LINES l_lines.
      READ TABLE t_prog INDEX 131.
      t_prog-line+16(3) = l_lines.
      MODIFY t_prog INDEX 131.
      INSERT REPORT sy-repid FROM t_prog STATE 'A'.
      GENERATE REPORT sy-repid.
    ENDFORM.                                                     "SUB_0004
    Thanks
    Seshu

  • Some characters could not be mapped using ISO-88559-1

    I'm creating a Flash/Flex app which will load multilingual xml for all the text displayed. I tried using this example:
    http://www.adobe.com/devnet/flash/articles/filtering_data_e4x_02.html
    but got an error
    "...some characters could not be mapped using ISO-88559-1..."
    when I pasted the example xml into Flex and tried to save it. I've searched for another tutorial on creating multilingual content and using it in xml. The plan is to contract the translations to be delivered in xml. Any suggestions?

    Yvonne-
    You can have many libraries with many albums and files within them. Each library is independent, so if you upload a file to two libraries then you two copies. If you put a photo from a library in albums that live within that library, then there is only one copy in the library that each album has access to so it will show up when you view the album. This might help : http://forums.adobe.com/message/5197228#5197228.
    I found a few incomplete files in your account also. We will take care of this for you and contact you when it is complete.
    Pattie
    Some of these links might also be useful to you:
    Revel FAQ’s:
    http://forums.adobe.com/community/revel/faq
    especially:
    FAQ: Where can I learn tips and tricks about Revel? http://forums.adobe.com/message/5798092#5798092
    FAQ: How do I share my photos in Revel? http://forums.adobe.com/thread/1295026
    FAQ: How do I add (upload) files to revel? http://forums.adobe.com/thread/1162795?tstart=0

  • Catalog Loaders in ATG

    Hi All,
    What are the approaches to load a catalog in ATG , when the catalog data is from a external system.
    1) RL
    2) We need to parse the file provided by the external system and insert the data into ATG repository.
    What other approaches are used, and what is the difference in RL and Parsing the xml approach???
    Regards

    Hi,
    We create the catalog in ACC based on the catalog design / repository xml.
    Basically, productcatalog xml is the repository definition file, in which you define how the underlying data would store in your DB by mentioning tables, relations, constraints etc., ACC uses this xml to display the options while you create the catalog.
    So, the steps would be as follows.
    1. Finalize your catalog structure according to your business requirements.
    2. Design the repository / tables.
    3. Create catalog elements via ACC.
    Hope this helps.
    Keep posting any questions you still may have.
    Thanks,
    Gopinath Ramasamy

  • Pulling text from a .txt to a scroll pane or text area

    Hi-
    I'm sure there's a way to do this, but I'm not exactly fluent in ActionScript.
    Basically, my whole website's going to be in Flash, but I want to be able to update one page (sort of a news/blog page) without having to edit the Flash file every time. I'm assuming the easiest way to do this would be to set up either a scroll pane or a text box and pull the text in from a .txt file (if there's a better way, please let me know). That way I could continue to add on to the .txt file, and Flash would always pull in the current version.
    So, my issues are:
    1. I have no idea where to start with the code for something like that. Is it a LoadVar? Do I physically put a scroll pane or a text area in the frame and put the action on that, or do I put the action on the frame and have it call up a text area component?
    2. Will the text scroll automatically, or is that something else I would have to add in? I plan on adding to this text file for awhile, so it could end up being a lot of text over time.
    3. Would I be able to format the text in the .txt at all? For instance, if I hit enter to put in a paragraph break, would that register once it's pulled into Flash, or would I have to put in an html paragraph break or something? That may be a dumb question, but as I said, I'm not exactly fluent in ActionScript (or any other programming language for that matter).
    Any help is definitely appreciated!
    Thanks!
    -Geoff

    I recommend you use an xml file rather than a text file for storing your content.  The main reason being that it tends to make thing more easily organizable, as well as easier to differentiate things like titles, contents, links, images, etc.
    You could start off using a TextArea component if you want, just to keep things simple.  If you want to format things you can use the htmlText property rather than the text proiperty when assigning your content.  That will allow you more control of the presentation.
    If you want to take the xml approach, you should search Google for "AS# XML tutorial" where you substitute whatever version you plan to use for the "#".  If you plan to use AS3, there is a good tutorial here: http://www.gotoandlearn.com/play?id=64

  • Using NetConnection for a video in subdirectory

    The following code works if the FLV I'm trying to pull is in
    the same directory as the SWF. How do I target an FLV in a
    different folder?

    Hi,
    If you anticipate that the path to fla may be dynamic - you
    perhaps should create a mechanism of manipulating this data outside
    the flash and mechanism of interpreting this data inside the flash.
    I suggest to keep references to all the assets in an xml file
    where you (or your client) can store/change qualified paths.
    Another solution would be to indicate flv's location in flash
    variables (in the embed code) - so if they need to change the
    location - they do it in HTML - not inside your player.
    I prefer the first (XML) approach.
    I would like to point out that because Flash is very limited
    (for security reasons) in accessing external data one should be
    very precise in telling player where and how to get the media and
    delegate this to server side. Naturally, it brings up a content
    management issue but if your client wants a reliable thing - he
    should allocate resources for that.

Maybe you are looking for

  • New macbook pro wont accept password

    I moved everything over from my i5 MBP to a new i7 via utilities migration assistant. However the new macbook pro wont accept my password, nor will it recognise the other user account passwords. Works fine on the i5. In Disc Utilities, change passwor

  • View/print annual calendar?

    is there a way to view all of my appointments on a certain calendar for the whole year? is there a way to do it that would exclude all non-event days? say if i work mon-fri, can i view a year w/o sat & sun? can i print or email this? emac   Mac OS X

  • Cant i use a multiline conainer in a send step as

    i have multiline contained in my BPM, want to use it in a send step, i cant do that............... can't i use a multiline conainer in a send step as "Message"?? i m not able to use it in the transformation step...why so??

  • Servicegen

    Hi, I am trying to run the servicegen ant task withou running the setEnv.cmd file. My build process is very complex and I ned to include the WS generation in a standard way (run on a machine without wl install). I managed to do this withe wl6.1 stuff

  • Program error in class SAPMSSY1 method : UNCAUGHT_EXCEPTION in Report

    Hi All, This is the frequent problem we are facing in BW production. While executing the BW reports We are getting the below error. No Space left in Shared memory. Program error in class SAPMSSY1 method : UNCAUGHT_EXCEPTION in Report. An exception wi