New drive makes existing files vanish?!

System: 14-drive XServe RAID configured as 2 7-drive RAID-5s. OSX 10.3.9.
One drive went bad, and we pulled it, expecting to swap in a new one.
With one drive removed, that half of the RAID indicates "degraded", but continues to function. However, upon physically inserting the new drive, some existing directories now show as empty.
With new drive installed, RAID Admin shows that half of the array includes just six drives, and the seventh one shows as spare -- as expected I think, prior to running the procedure to incorporate the new drive. So in theory it should be having no impact. Yet as I say, some existing directories now show as empty.
Removing that drive, and replacing it with an empty drive tray causes the files and subdirs to reappear in the directories of interest.
A message appeared at the time of trying to access the directories in questions:
Jun 13 19:45:12 brain kernel: hfs: WARNING - blocks on volume home not allocated!
(home is a volume on RAID2)
Any clues as to what might cause this? Our main concern is the we don't want to proceed to incorporate the new drive if the result is going to be a bunch of missing files.
Graham

Hi Bo.  Select the built-in container "Photos" from near the top of the Library Inspector.  This will show you all your Images when you set the Browser filter to "Show All".  Then select all.  (Easily done with the key-chord "⌘a", but also available on the Edit menu.)
Speaking generally, but with experience: all personal computer operations are done using a "noun-verb" syntax (you select the objects, and then issue a command).  I think this grew out of RPN, but I don't know.  Using our example: you first select "Photos" then issue the command "Edit ▹ Select all".  You do this so you end up with all Images selected, so you can run the command "File ▹ Relocate Originals ... " on all the Images in the Library.
The relationship between an Image and the location of its Original is independent of the location of the Image in your Library.  Moving an Image to another location (another Project), or adding it to an Album, or moving the Project it is in or any Album it is in to another Folder, does not move or any way alter the relationship between the Image and its Original.
In short, your Library structure of Projects, Albums, and Folders will be unaltered by using "File ▹ Relocate Originals ... ".  (Though, of course, the contents of any Smart Albums that use the rule "File Status" will be changed if you use either of the arguments "Managed" or "Referenced", and may be changed when you use some of the other arguments.)
Aperture allows you to relocate _any_ Image's Original at any time.  There is no need I know of to relocate them often, but if you had that need, you could.
For many thousands of files, expect "File ▹ Relocate Originals ... " to take hours to complete.  Aperture will show you a progress bar at the top of the Browser.  IME, this is usefully accurate.
Let us know how it goes.
—Kirby.
(Cross-posted with Léonie's answer.  .)

Similar Messages

  • How to uncheck "Add as a new version to existing files" inside the "Add a document" dialog

    I am working on a publishing site collection using the enterprise wiki template. Currently when users want to insert an image inside the rich text editor, they will be prompted with the following:-
    And if the user insert a picture that already exists then it will replace the existing one, which might cause the picture to be displayed inside a Wiki page which it does not belong to !!
    So is there a way to do any of the following:-
    Give the new picture a unique auto generated name?
    To un-check the   “Add as a new version to existing files” by default?
    Or to always prevent replacing images, as this can cause many conflicts !!
    Can anyone advice ?please?

    You can do it using below script
    http://webcache.googleusercontent.com/search?q=cache:51tmEQHanZoJ:vegardstromsoy.blogspot.com/2011/05/jquery-to-override-sharepoint-ootb.html+&cd=4&hl=en&ct=clnk&gl=in
    $(document).ready(function() {
        if (document.title ==
    "Upload Document") {
            $("input[id$='OverwriteSingle']").attr("checked",false);
            $("input[id$='OverwriteMultiple']").attr("checked",false);
    http://hansiandy.wordpress.com/2010/10/19/sharepoint-20072010-tips-uncheck-add-as-a-new-version-to-existing-files-checkbox-on-upload-aspx-in-moss-2007sharepoint-2010/
    If this helped you resolve your issue, please mark it Answered
    but where i should add the following jQuery :-
    $(document).ready(function() {
    if (document.title == "Upload Document") {
    $("input[id$='OverwriteSingle']").attr("checked",false);
    $("input[id$='OverwriteMultiple']").attr("checked",false);
    inside the master page or insdie the upload.aspx page ?

  • How to copy referenced photos from dodgy external drive to new drive when whole file will not copy due to error 36.

    My external WD portable passport drive must be dodgy because I can't back it up or clone it or copy 3 of my 22 photo files to a new portable drive. I get error 36 as I attempt all 3 processes. I have copied my iPhoto library, iMovie events and most of my aperture referenced photos to the new drive. But cannot copy 3 files that contain the corrupted files showing just a grey triangle. I cannot delete or move to trash the corrupted raw photos.
    How can I copy to the new drive any photos that aren't corrupted (grey triangle instead of photo or a photo that's just coloured horizontal broken lines) so I can then reconnect the referenced photos after copying them?
    I am on late 2008 MacBook Pro with lion,
    Many thanks
    Bw

    I've worked out how to copy and reconnect individual photos.
    But can see that what's happening is that heavily edited raw photos are taking ages to load. Or not loading at all. And if opened go to the spinning wheel for 5-10 minutes. I am wondering whether to compress these or take them back to the originals or any other ideas would be very welcome.
    Thank you
    BW

  • LabVIEW created .DAT file with saving only new data on existing files

    I can successfully create and save a .DAT file using LabView and Diadem.   The save command I am using (in Labview) only overwrites existing files, I would like it to save only the new data from the last save.  Overall I would like to save the data every 1hr and since my test will last for many hours, the further along in the test the longer it would take to save the full file.  I know Diadem has the capability to save in such a manner, so I have thought about after I write to Diadem have a small Diadem application save periodically, but I haven't found a way to save the .DAT file, with out any signals coming into the save function.  I have attached the example .DAT file creater and saver I am using to figure it out.  thanks for your help!

    Howdy New Guy -
    I am not sure if you are looking to append to a file, or if you would
    like to overwrite a file.  In either case, you can take a look at
    the "Append To File.vi" example for DIAdem. 
    Either way, you may be experiencing problems because you are only using
    the "DIAdem Simple File Write.vi" (found on the DIAdem >> DAT
    Files palette).  Instead, you can use the "DIAdem File Write.vi"
    (located on teh DIAdem >> DAT Files >> DAT Files Advanced
    palette).  This VI can be set to overwrite or append to file.
    I hope this helps in your development!
    Andrew W. || Applications Engineer

  • Installing on new drive and copying files to it

    I have a Macpro with a 500GB drive running 10.5.4 that contains the OS, applications and my media. I would like to put either a 1TB or 2TB drive into it and put Snow Leopard on it and transfer all of my data and files (almost 450GB) to the new drive.
    1.) How do I install the new OS on the new drive after I swap it out with the old one?
    2.) What is the best way to copy all of my media and files to the new drive after the OS is installed?
    Thanks.
    Message was edited by: rick.pearl

    Put the new drive in and keep the old one as well.
    Boot from the SL DVD and install it on the new drive.
    Once you boot in SL for the first time, use the Migration Assistant to transfer your stuff. Point it to the old drive.
    You could also clone your old drive on the new drive using Supper Dupper and then upgrade to SL. If it was me that's what I would do, because I don't like Migration Assistant. But it's your choice..

  • Appending new TextLine into existing file

    I tried to add new text lines into an existing txt file. The problem is my method add new Strings on the same line (to see it you need to open the output file with notepad).
    The method invoked is:
    public static void addText( String arg0, String path ) {
              long pos;          
              try {
                   raf = new RandomAccessFile( path , "rw" );
                   pos = raf.length();
                   raf.seek( pos ); //mi sposto alla fine del file
                   raf.writeBytes( "\n" ); // new line
                   raf.writeBytes(arg0); //
                   raf.close();
              } catch (FileNotFoundException e) {
                   // TODO Auto-generated catch block
                   e.printStackTrace();
              } catch (IOException e) {
                   // TODO Auto-generated catch block
                   e.printStackTrace();
         }

    To make your app system-independent use:
      String lineSeparator = System.getProperty("line.separator");as line separator
    []

  • 'Store images' adds new copies of existing files

    Using N73 by bluetooth, PCsuite 6.80.22 and XP-SP2
    Typical question; is a bug or a feature when 'store images' downloads images again and again to the PC?
    For example: image_630.jpg, image_630(1).jpg and image_630(2).jpg
    PC suite first searchs for NEW pictures and files but doesn't recognice that part has been already moved to PC (same folder everytime).
    This starts to consume a lot of time during synchronisation..
    -Any tricks to avoid?

    Developers tend to call all bugs "features"
    If it's any consolation it's happens for me as well, and there isn't anyway round it until they release the next version of PC Suite which will hopefully have this fixed.
    Regards,
    Edward

  • Create a new Node in existing xml file using CL_IXML

    Friends i have to create a new node on existing file of xml. using CL_IXML class methods Append child .

    Hi,
       searching information of XML I find your post.
       Post my code source that I have (at the moment) but if you think something that changed , tell me please.
    TYPE-POOLS: ixml.
    * macros
    DEFINE write_xml.
      write: / 'XML:', &1 color col_positive inverse.
    END-OF-DEFINITION.
      TYPES: BEGIN OF xml_line,
              data(256) TYPE x,
             END OF xml_line.
    data: nom_archivo(50) TYPE c,
    g_arch_enviar(128) TYPE c.
    CONSTANTS: ENCODING(5) VALUE 'UTF-8'.
      DATA: l_ixml            TYPE REF TO if_ixml,
            l_streamfactory   TYPE REF TO if_ixml_stream_factory,
            l_parser type ref to if_ixml_parser,"""
            l_istream type ref to if_ixml_istream,"""
            l_ostream         TYPE REF TO if_ixml_ostream,
            l_renderer        TYPE REF TO if_ixml_renderer,
            l_document        TYPE REF TO if_ixml_document,
            l_node type ref to if_ixml_node,"""
            l_encoding type ref to if_ixml_encoding."""
      DATA: l_value                        TYPE string,"""""""""añado data
            l_var_xmldata type string,"""
            l_var_xmldata2 type string,"""
            l_var_xmldata3 type string,"""
            l_var_xmldata4 type string,"""
            l_var_cstr type xstring,"""
            l_var_ret type i,"""
            l_var_dsn type string."""
      DATA: l_xml_table       TYPE TABLE OF xml_line,
            l_xml_size        TYPE i,
            l_rc              TYPE i.
    *l_var_xmldata = '<?xml version="1.0" encoding="utf-8"?><C dr="ñ" "></C>'.
    l_var_xmldata2 = '<?xml version="1.0" encoding="utf-8"?>'.
    l_var_xmldata3 = '<elementFormDefault="qualified"'.
    l_var_xmldata4 = 'attributeFormDefault="unqualified""></C>'.
    *CONCATENATE l_var_xmldata2 '<elementFormDefault="qualified" "></C>' INTO l_var_xmldata.
    CONCATENATE l_var_xmldata2 l_var_xmldata3 l_var_xmldata4 INTO l_var_xmldata.
    nom_archivo = 'utf8.xml'.
    * Text-001 Ruta de unix a donde enviara el Archivo.
    CONCATENATE '/tmp/' nom_archivo INTO g_arch_enviar.
    CLASS cl_ixml DEFINITION LOAD.
      TYPES: c_line(50)    TYPE c.
    DATA:         xmltab        TYPE STANDARD TABLE OF c_line,
             node      TYPE REF TO if_ixml_node,
             xml_line       TYPE c_line,
             charset       TYPE string,
             success       TYPE c.
    DATA: BEGIN OF elemento1 occurs 0,
       name(30) VALUE 'Header',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento1.
    DATA: BEGIN OF elemento2 occurs 0,
       name(30) VALUE 'MasterFiles',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento2.
    DATA: BEGIN OF elemento3 occurs 0,
       name(30) VALUE 'GeneralLedgerEntries',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento3.
    DATA: BEGIN OF elemento4 occurs 0,
       name(30) VALUE 'SourceDocuments',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento4.
    DATA: BEGIN OF elemento1A occurs 0,
       name(30) VALUE 'AuditFileVersion',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento1A.
    DATA: BEGIN OF elemento1B occurs 0,
       name(30) VALUE 'CompanyID',
       elemento1B1(30) VALUE 'ele1B1'.
    DATA END OF elemento1B.
    DATA: BEGIN OF elemento1C occurs 0,
       name(30) VALUE 'TaxRegistrationNumber',
       elemento1C1(30) VALUE 'ele1C1'.
    DATA END OF elemento1C.
    DATA: BEGIN OF elemento1D occurs 0,
       name(30) VALUE 'TaxAccountingBasis',
       elemento1D1(30) VALUE 'ele1D1'.
    DATA END OF elemento1D.
    DATA: BEGIN OF elemento1E occurs 0,
       name(30) VALUE 'CompanyName',
       elemento1E1(30) VALUE 'ele1E1'.
    DATA END OF elemento1E.
    DATA: BEGIN OF elemento1F occurs 0,
       name(30) VALUE 'CompanyAddress',
       elemento1F1(30) VALUE 'ele1F1'.
    DATA END OF elemento1F.
    DATA: BEGIN OF elemento1G occurs 0,
       name(30) VALUE 'FiscalYear',
       elemento1G1(30) VALUE 'ele1G1'.
    DATA END OF elemento1G.
    DATA: BEGIN OF elemento1H occurs 0,
       name(30) VALUE 'StartDate',
       elemento1H1(30) VALUE 'ele1H1'.
    DATA END OF elemento1H.
    DATA: BEGIN OF elemento1I occurs 0,
       name(30) VALUE 'EndDate',
       elemento1I1(30) VALUE 'ele1I1'.
    DATA END OF elemento1I.
    DATA: BEGIN OF elemento1J occurs 0,
       name(30) VALUE 'CurrencyCode',
       elemento1J1(30) VALUE 'ele1J1'.
    DATA END OF elemento1J.
    DATA: BEGIN OF elemento1K occurs 0,
       name(30) VALUE 'DateCreated',
       elemento1K1(30) VALUE 'ele1K1'.
    DATA END OF elemento1K.
    DATA: BEGIN OF elemento1L occurs 0,
       name(30) VALUE 'ProductID',
       elemento1L1(30) VALUE 'ele1L1'.
    DATA END OF elemento1L.
    DATA: BEGIN OF elemento1M occurs 0,
       name(30) VALUE 'ProductVersion',
       elemento1M1(30) VALUE 'ele1M1'.
    DATA END OF elemento1M.
    DATA: BEGIN OF elemento1N occurs 0,
       name(30) VALUE 'Telephone',
       elemento1N1(30) VALUE 'ele1N1'.
    DATA END OF elemento1N.
    DATA: BEGIN OF elemento1O occurs 0,
       name(30) VALUE 'Fax',
       elemento1O1(30) VALUE 'ele1O1'.
    DATA END OF elemento1O.
    DATA: BEGIN OF elemento1P occurs 0,
       name(30) VALUE 'Email',
       elemento1P1(30) VALUE 'ele1P1'.
    DATA END OF elemento1P.
    DATA: BEGIN OF elemento1Q occurs 0,
       name(30) VALUE 'WebSite',
       elemento1Q1(30) VALUE 'ele1Q1'.
    DATA END OF elemento1Q.
    DATA: BEGIN OF elemento1R occurs 0,
       name(30) VALUE 'HeaderComment',
       elemento1R1(30) VALUE 'ele1R1'.
    DATA END OF elemento1R.
    DATA: BEGIN OF elemento2A occurs 0,
       name(30) VALUE 'GeneralLedger',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento2A.
    DATA: BEGIN OF elemento2B occurs 0,
       name(30) VALUE 'Customer',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento2B.
    DATA: BEGIN OF elemento2C occurs 0,
       name(30) VALUE 'Supplier',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento2C.
    DATA: BEGIN OF elemento2D occurs 0,
       name(30) VALUE 'Product',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento2D.
    DATA: BEGIN OF elemento2E occurs 0,
       name(30) VALUE 'TaxTable',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento2E.
    DATA: BEGIN OF elemento2A1 occurs 0,
       name(30) VALUE 'AccountID',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento2A1.
    DATA: BEGIN OF elemento2A2 occurs 0,
       name(30) VALUE 'AccountDescription',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento2A2.
    DATA: BEGIN OF elemento2B1 occurs 0,
       name(30) VALUE 'CustomerID',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento2B1.
    DATA: BEGIN OF elemento2B2 occurs 0,
       name(30) VALUE 'CustomerTaxID',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento2B2.
    DATA BEGIN OF elemento2B3 occurs 0.
    INCLUDE STRUCTURE elemento1E.
    *   name(30) VALUE 'CompanyName',
    *   elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento2B3.
    DATA: BEGIN OF elemento2B4 occurs 0,
       name(30) VALUE 'Contact',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento2B4.
    DATA: BEGIN OF elemento2B5 occurs 0,
       name(30) VALUE 'BillingAddress',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento2B5.
    DATA: BEGIN OF elemento2B6 occurs 0,
       name(30) VALUE 'ShipToAddress',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento2B6.
    DATA: BEGIN OF elemento2B7 occurs 0.
    INCLUDE STRUCTURE elemento1N.
    *   name(30) VALUE 'Telephone',
    *   elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento2B7.
    DATA: BEGIN OF elemento2B8 occurs 0.
    INCLUDE STRUCTURE elemento1O.
    *   name(30) VALUE 'Fax',
    *   elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento2B8.
    DATA: BEGIN OF elemento2B9 occurs 0.
    INCLUDE STRUCTURE elemento1P.
    *   name(30) VALUE 'Email',
    *   elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento2B9.
    DATA: BEGIN OF elemento2B10 occurs 0.
    INCLUDE STRUCTURE elemento1Q.
    *   name(30) VALUE 'Website',
    *   elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento2B10.
    DATA: BEGIN OF elemento2C1 occurs 0,
       name(30) VALUE 'SupplierID',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento2C1.
    DATA: BEGIN OF elemento2C2 occurs 0,
       name(30) VALUE 'SupplierTaxID',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento2C2.
    DATA: BEGIN OF elemento2C3 occurs 0.
    INCLUDE STRUCTURE elemento1E.
    *   name(30) VALUE 'CompanyName',
    *   elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento2C3.
    DATA: BEGIN OF elemento2C4 occurs 0.
    INCLUDE STRUCTURE elemento2B4.
    *   name(30) VALUE 'Contact',
    *   elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento2C4.
    DATA: BEGIN OF elemento2C5 occurs 0.
    INCLUDE STRUCTURE elemento2B5.
    *   name(30) VALUE 'BillingAddress',
    *   elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento2C5.
    DATA: BEGIN OF elemento2C6 occurs 0.
    INCLUDE STRUCTURE elemento2B6.
    *   name(30) VALUE 'ShipToAddress',
    *   elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento2C6.
    DATA: BEGIN OF elemento2C7 occurs 0.
    INCLUDE STRUCTURE elemento1N.
    *   name(30) VALUE 'Telephone',
    *   elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento2C7.
    DATA: BEGIN OF elemento2C8 occurs 0.
    INCLUDE STRUCTURE elemento1O.
    *   name(30) VALUE 'Fax',
    *   elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento2C8.
    DATA: BEGIN OF elemento2C9 occurs 0.
    INCLUDE STRUCTURE elemento1P.
    *   name(30) VALUE 'Email',
    *   elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento2C9.
    DATA: BEGIN OF elemento2C10 occurs 0.
    INCLUDE STRUCTURE elemento1Q.
    *   name(30) VALUE 'Website',
    *   elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento2C10.
    DATA: BEGIN OF elemento2D1 occurs 0,
       name(30) VALUE 'ProductType',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento2D1.
    DATA: BEGIN OF elemento2D2 occurs 0,
       name(30) VALUE 'ProductCode',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento2D2.
    DATA: BEGIN OF elemento2D3 occurs 0,
       name(30) VALUE 'ProductGroup',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento2D3.
    DATA: BEGIN OF elemento2D4 occurs 0,
       name(30) VALUE 'ProductDescription',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento2D4.
    DATA: BEGIN OF elemento2D5 occurs 0,
       name(30) VALUE 'ProductNumberCode',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento2D5.
    DATA: BEGIN OF elemento2E1 occurs 0,
       name(30) VALUE 'TaxType',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento2E1.
    DATA: BEGIN OF elemento2E1A occurs 0,
       name(30) VALUE 'Description',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento2E1A.
    DATA: BEGIN OF elemento2E1B occurs 0,
       name(30) VALUE 'TaxCodeDetails',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento2E1B.
    DATA: BEGIN OF elemento2E1B1 occurs 0,
       name(30) VALUE 'TaxCode',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento2E1B1.
    DATA: BEGIN OF elemento2E1B2 occurs 0.
    INCLUDE STRUCTURE elemento2E1A.
    *   name(30) VALUE 'Description',
    *   elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento2E1B2.
    DATA: BEGIN OF elemento2E1B3 occurs 0,
       name(30) VALUE 'TaxPercentage',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento2E1B3.
    DATA: BEGIN OF elemento3A occurs 0,
       name(30) VALUE 'NumberOfEntries',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento3A.
    DATA: BEGIN OF elemento3B occurs 0,
       name(30) VALUE 'TotalDebit',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento3B.
    DATA: BEGIN OF elemento3C occurs 0,
       name(30) VALUE 'TotalCredit',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento3C.
    DATA: BEGIN OF elemento3D occurs 0,
       name(30) VALUE 'Journal',
       minOccurs(30) VALUE '0',
       maxOccurs(30) VALUE 'unbounded',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento3D.
    DATA: BEGIN OF elemento3D1 occurs 0,
       name(30) VALUE 'JournalID',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento3D1.
    DATA: BEGIN OF elemento3D2 occurs 0.
    INCLUDE STRUCTURE elemento2E1A.
    *   name(30) VALUE 'Description',
    *   elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento3D2.
    DATA: BEGIN OF elemento3D3 occurs 0,
       name(30) VALUE 'Transaction',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento3D3.
    DATA: BEGIN OF elemento3D3A occurs 0,
       name(30) VALUE 'TransactionID',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento3D3A.
    DATA: BEGIN OF elemento3D3B occurs 0,
       name(30) VALUE 'Period',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento3D3B.
    DATA: BEGIN OF elemento3D3C occurs 0,
       name(30) VALUE 'TransactionDate',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento3D3C.
    DATA: BEGIN OF elemento3D3D occurs 0,
       name(30) VALUE 'SourceID',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento3D3D.
    DATA: BEGIN OF elemento3D3E occurs 0.
    INCLUDE STRUCTURE elemento2E1A.
    *   name(30) VALUE 'Description',
    *   elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento3D3E.
    DATA: BEGIN OF elemento3D3F occurs 0,
    *INCLUDE STRUCTURE elemento2B1.
       name(30) VALUE 'GLPostingDate',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento3D3F.
    DATA: BEGIN OF elemento3D3G occurs 0.
    INCLUDE STRUCTURE elemento2B1.
    *   name(30) VALUE 'CustomerID',
    *   elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento3D3G.
    DATA: BEGIN OF elemento3D3H occurs 0,
       name(30) VALUE 'SupplierID',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento3D3H.
    DATA: BEGIN OF elemento3D3I occurs 0,
       name(30) VALUE 'Line',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento3D3I.
    DATA: BEGIN OF elemento3D3I1 occurs 0,
       name(30) VALUE 'RecordID',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento3D3I1.
    DATA: BEGIN OF elemento3D3I2 occurs 0.
    INCLUDE STRUCTURE elemento2A1.
    *   name(30) VALUE 'AccountID',
    *   elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento3D3I2.
    DATA: BEGIN OF elemento3D3I3 occurs 0,
       name(30) VALUE 'SourceDocumentID',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento3D3I3.
    DATA: BEGIN OF elemento3D3I4 occurs 0,
       name(30) VALUE 'SystemEntryDate',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento3D3I4.
    DATA: BEGIN OF elemento3D3I5 occurs 0.
    INCLUDE STRUCTURE elemento2E1A.
    *   name(30) VALUE 'Description',
    *   elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento3D3I5.
    DATA: BEGIN OF elemento3D3I5A occurs 0,
       name(30) VALUE 'DebitAmount',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento3D3I5A.
    DATA: BEGIN OF elemento3D3I5B occurs 0,
       name(30) VALUE 'CreditAmount',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento3D3I5B.
    DATA: BEGIN OF elemento4A occurs 0,
       name(30) VALUE 'SalesInvoices',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento4A.
    DATA: BEGIN OF elemento4A1 occurs 0.
    INCLUDE STRUCTURE elemento3A.
    *   name(30) VALUE 'NumberOfEntries',
    *   elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento4A1.
    DATA: BEGIN OF elemento4A2 occurs 0.
    INCLUDE STRUCTURE elemento3B.
    *   name(30) VALUE 'TotalDebit',
    *   elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento4A2.
    DATA: BEGIN OF elemento4A3 occurs 0.
    INCLUDE STRUCTURE elemento3C.
    *   name(30) VALUE 'TotalCredit',
    *   elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento4A3.
    DATA: BEGIN OF elemento4A4 occurs 0,
       name(30) VALUE 'Invoice',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento4A4.
    DATA: BEGIN OF elemento4A4A occurs 0,
       name(30) VALUE 'InvoiceNo',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento4A4A.
    DATA: BEGIN OF elemento4A4B occurs 0.
    INCLUDE STRUCTURE elemento3D3B.
    *   name(30) VALUE 'Period',
    *   elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento4A4B.
    DATA: BEGIN OF elemento4A4C occurs 0,
       name(30) VALUE 'InvoiceDate',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento4A4C.
    DATA: BEGIN OF elemento4A4D occurs 0,
       name(30) VALUE 'InvoiceType',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento4A4D.
    DATA: BEGIN OF elemento4A4E occurs 0.
    INCLUDE STRUCTURE elemento3D3I4.
    *   name(30) VALUE 'SystemEntryDate',
    *   elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento4A4E.
    DATA: BEGIN OF elemento4A4F occurs 0.
    INCLUDE STRUCTURE elemento3D3A.
    *   name(30) VALUE 'TransactionID',
    *   elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento4A4F.
    DATA: BEGIN OF elemento4A4G occurs 0.
    INCLUDE STRUCTURE elemento2B1.
    *   name(30) VALUE 'CustomerID',
    *   elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento4A4G.
    DATA: BEGIN OF elemento4A4H occurs 0,
       name(30) VALUE 'ShipTo',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento4A4H.
    DATA: BEGIN OF elemento4A4I occurs 0,
       name(30) VALUE 'ShipFrom',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento4A4I.
    DATA: BEGIN OF elemento4A4J occurs 0.
    INCLUDE STRUCTURE elemento3D3I.
    *   name(30) VALUE 'Line',
    *   elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento4A4J.
    DATA: BEGIN OF elemento4A4K occurs 0,
       name(30) VALUE 'DocumentTotals',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento4A4K.
    DATA: BEGIN OF elemento4A4J1 occurs 0,
       name(30) VALUE 'LineNumber',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento4A4J1.
    DATA: BEGIN OF elemento4A4J2 occurs 0,
       name(30) VALUE 'OrderReferences',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento4A4J2.
    DATA: BEGIN OF elemento4A4J3 occurs 0,
       name(30) VALUE 'ProductCoder',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento4A4J3.
    DATA: BEGIN OF elemento4A4J4 occurs 0.
    INCLUDE STRUCTURE elemento2D4.
    *   name(30) VALUE 'ProductDescription',
    *   elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento4A4J4.
    DATA: BEGIN OF elemento4A4J5 occurs 0,
       name(30) VALUE 'Quantity',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento4A4J5.
    DATA: BEGIN OF elemento4A4J6 occurs 0,
       name(30) VALUE 'UnitOfMeasure',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento4A4J6.
    DATA: BEGIN OF elemento4A4J7 occurs 0,
       name(30) VALUE 'UnitPrice',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento4A4J7.
    DATA: BEGIN OF elemento4A4J8 occurs 0,
       name(30) VALUE 'TaxPointDate',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento4A4J8.
    DATA: BEGIN OF elemento4A4J9 occurs 0,
       name(30) VALUE 'References',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento4A4J9.
    DATA: BEGIN OF elemento4A4J10 occurs 0.
    INCLUDE STRUCTURE elemento2E1A.
    *   name(30) VALUE 'Description',
    *   elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento4A4J10.
    DATA: BEGIN OF elemento4A4J11 occurs 0.
    INCLUDE STRUCTURE elemento3D3I5A.
    *   name(30) VALUE 'DebitAmount',
    *   elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento4A4J11.
    DATA: BEGIN OF elemento4A4J12 occurs 0.
    INCLUDE STRUCTURE elemento3D3I5B.
    *   name(30) VALUE 'CreditAmount',
    *   elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento4A4J12.
    DATA: BEGIN OF elemento4A4J13 occurs 0,
       name(30) VALUE 'Tax',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento4A4J13.
    DATA: BEGIN OF elemento4A4J14 occurs 0,
       name(30) VALUE 'SettlementAmount',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento4A4J14.
    DATA: BEGIN OF elemento4A4J2A occurs 0,
       name(30) VALUE 'OriginatingON',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento4A4J2A.
    DATA: BEGIN OF elemento4A4J2B occurs 0,
       name(30) VALUE 'OrderDate',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento4A4J2B.
    DATA: BEGIN OF elemento4A4J9A occurs 0,
       name(30) VALUE 'CreditNote',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento4A4J9A.
    DATA: BEGIN OF elemento4A4J9A1 occurs 0,
       name(30) VALUE 'Reference',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento4A4J9A1.
    DATA: BEGIN OF elemento4A4J9A2 occurs 0,
       name(30) VALUE 'Reason',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento4A4J9A2.
    DATA: BEGIN OF elemento4A4K1 occurs 0,
       name(30) VALUE 'TaxPayable',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento4A4K1.
    DATA: BEGIN OF elemento4A4K2 occurs 0,
       name(30) VALUE 'NetTotal',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento4A4K2.
    DATA: BEGIN OF elemento4A4K3 occurs 0,
       name(30) VALUE 'GrossTotal',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento4A4K3.
    DATA: BEGIN OF elemento4A4K4 occurs 0,
       name(30) VALUE 'Currency',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento4A4K4.
    DATA: BEGIN OF elemento4A4K5 occurs 0,
       name(30) VALUE 'Settlement',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento4A4K5.
    DATA: BEGIN OF elemento4A4K4A occurs 0.
    INCLUDE STRUCTURE elemento1J.
    *   name(30) VALUE 'CurrencyCode',
    *   elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento4A4K4A.
    DATA: BEGIN OF elemento4A4K4A1 occurs 0,
       name(30) VALUE 'CurrencyDebitAmount',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento4A4K4A1.
    DATA: BEGIN OF elemento4A4K4A2 occurs 0,
       name(30) VALUE 'CurrencyCreditAmount',
       elemento1A1(30) VALUE 'ele1A1'.
    DATA END OF elemento4A4K4A2.
    START-OF-SELECTION.
    *       Creating a ixml factory
            l_ixml = cl_ixml=>create( ).
    * Create factory object for data streams
    l_streamfactory = l_ixml->create_stream_factory( ).
    * Create object for input stream
    l_istream = l_streamfactory->create_istream_string( string =
    l_var_xmldata ).
    *       Creating the dom object model
            l_document = l_ixml->create_document( ).
    * Create parser
    l_parser = l_ixml->create_parser( document = l_document
    stream_factory = l_streamfactory
    istream = l_istream ).
    * create dom tree by parsing
    if l_parser->parse( ) <> 0.
    data: j(2).
    j = '9'.
    * do exception handling here
    * return.
    endif.
    *create output objetct
    * create a output stream
      l_ostream = l_streamfactory->create_ostream_itable( table = xmltab ).
      charset = 'SAP*'.
      IF NOT charset IS INITIAL.
    *   set an document encoding (optional)
        l_encoding = l_ixml->create_encoding( character_set = charset
                                          byte_order = 0 ).
        success  = l_ostream->set_encoding( encoding = l_encoding ).
      ENDIF.
    l_renderer =
    l_ixml->create_renderer( document = l_document
    ostream = l_ostream ).
      IF l_renderer->render( ) <> 0.
        WRITE: / 'ERROR: document rendering'.
        EXIT.
      ENDIF.
    call method l_ostream->close( ).
    *Writing string to file
    open dataset g_arch_enviar FOR OUTPUT in binary mode.
    transfer l_var_cstr to g_arch_enviar.
    close dataset g_arch_enviar.
    *       Fill root node with value AuditFile
    DATA: l_element_AuditFile TYPE REF TO if_ixml_element.
            l_element_AuditFile  = l_document->create_simple_element(
                        name = 'AuditFile'
                        parent = l_document ).
    DATA: CONCA TYPE STRING.
    DATA: elemento type string.
    elemento = elemento1-name.
    DATA: l_element_Header TYPE REF TO if_ixml_element.
            l_element_Header  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_AuditFile ).
    elemento = elemento1A-name.
    DATA: l_element_AuditFileVersion TYPE REF TO if_ixml_element.
            l_element_AuditFileVersion  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Header ).
    elemento = elemento1B-name.
    DATA: l_element_CompanyID TYPE REF TO if_ixml_element.
            l_element_CompanyID  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Header ).
    *The name "L_ELEMENT_TAXREGISTRATIONNUMBER" is longer than the allowed          
    *30 characters.          
    *elemento = elemento1C-name.
    *DATA: l_element_TaxRegistrationNumber TYPE REF TO if_ixml_element.
    *        l_element_TaxRegistrationNumber  = l_document->create_simple_element(
    *                    name = elemento
    *                    parent = l_element_Header ).
    elemento = elemento1D-name.
    DATA: l_element_TaxAccountingBasis TYPE REF TO if_ixml_element.
            l_element_TaxAccountingBasis  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Header ).
    elemento = elemento1E-name.
    DATA: l_element_CompanyName TYPE REF TO if_ixml_element.
            l_element_CompanyName  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Header ).
    elemento = elemento1F-name.
    DATA: l_element_CompanyAddress TYPE REF TO if_ixml_element.
            l_element_CompanyAddress  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Header ).
    elemento = elemento1G-name.
    DATA: l_element_FiscalYear TYPE REF TO if_ixml_element.
            l_element_FiscalYear  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Header ).
    elemento = elemento1H-name.
    DATA: l_element_StartDate TYPE REF TO if_ixml_element.
            l_element_StartDate  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Header ).
    elemento = elemento1I-name.
    DATA: l_element_EndDate TYPE REF TO if_ixml_element.
            l_element_EndDate  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Header ).
    elemento = elemento1J-name.
    DATA: l_element_CurrencyCode TYPE REF TO if_ixml_element.
            l_element_CurrencyCode  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Header ).
    elemento = elemento1K-name.
    DATA: l_element_DateCreated TYPE REF TO if_ixml_element.
            l_element_DateCreated  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Header ).
    elemento = elemento1L-name.
    DATA: l_element_ProductID TYPE REF TO if_ixml_element.
            l_element_ProductID  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Header ).
    elemento = elemento1M-name.
    DATA: l_element_ProductVersion TYPE REF TO if_ixml_element.
            l_element_ProductVersion  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Header ).
    elemento = elemento1N-name.
    DATA: l_element_Telephone TYPE REF TO if_ixml_element.
            l_element_Telephone  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Header ).
    elemento = elemento1O-name.
    DATA: l_element_Fax TYPE REF TO if_ixml_element.
            l_element_Fax  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Header ).
    elemento = elemento1P-name.
    DATA: l_element_Email TYPE REF TO if_ixml_element.
            l_element_Email  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Header ).
    elemento = elemento1Q-name.
    DATA: l_element_WebSite TYPE REF TO if_ixml_element.
            l_element_WebSite  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Header ).
    elemento = elemento1R-name.
    DATA: l_element_HeaderComment TYPE REF TO if_ixml_element.
            l_element_HeaderComment  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Header ).
    elemento = elemento2-name.
    DATA: l_element_MasterFiles TYPE REF TO if_ixml_element.
            l_element_MasterFiles  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_AuditFile ).
    elemento = elemento2A-name.
    DATA: l_element_GeneralLedger TYPE REF TO if_ixml_element.
            l_element_GeneralLedger  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_MasterFiles ).
    elemento = elemento2B-name.
    DATA: l_element_Customer TYPE REF TO if_ixml_element.
            l_element_Customer  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_MasterFiles ).
    elemento = elemento2C-name.
    DATA: l_element_Supplier TYPE REF TO if_ixml_element.
            l_element_Supplier  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_MasterFiles ).
    elemento = elemento2D-name.
    DATA: l_element_Product TYPE REF TO if_ixml_element.
            l_element_Product  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_MasterFiles ).
    elemento = elemento2E-name.
    DATA: l_element_TaxTable TYPE REF TO if_ixml_element.
            l_element_TaxTable  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_MasterFiles ).
    elemento = elemento2A1-name.
    DATA: l_element_AccountID TYPE REF TO if_ixml_element.
            l_element_AccountID  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_GeneralLedger ).
    elemento = elemento2A2-name.
    DATA: l_element_AccountDescription TYPE REF TO if_ixml_element.
            l_element_AccountDescription  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_GeneralLedger ).
    elemento = elemento2B1-name.
    DATA: l_element_CustomerID TYPE REF TO if_ixml_element.
            l_element_CustomerID  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Customer ).
    elemento = elemento2B2-name.
    DATA: l_element_CustomerTaxID TYPE REF TO if_ixml_element.
            l_element_CustomerTaxID  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Customer ).
    *elemento = elemento2B3-name.
    elemento = elemento1E-name.
    *DATA: l_element_CompanyName TYPE REF TO if_ixml_element.
            l_element_CompanyName  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Customer ).
    elemento = elemento2B4-name.
    DATA: l_element_Contact TYPE REF TO if_ixml_element.
            l_element_Contact  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Customer ).
    elemento = elemento2B5-name.
    DATA: l_element_BillingAddress TYPE REF TO if_ixml_element.
            l_element_BillingAddress  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Customer ).
    elemento = elemento2B6-name.
    DATA: l_element_ShipToAddress TYPE REF TO if_ixml_element.
            l_element_ShipToAddress  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Customer ).
    *elemento = elemento2B7-name.
    elemento = elemento1N-name.
    *DATA: l_element_Telephone TYPE REF TO if_ixml_element.
            l_element_Telephone  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Customer ).
    *elemento = elemento2B8-name.
    elemento = elemento1O-name.
    *DATA: l_element_Fax TYPE REF TO if_ixml_element.
            l_element_Fax  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Customer ).
    *elemento = elemento2B9-name.
    elemento = elemento1P-name.
    *DATA: l_element_Email TYPE REF TO if_ixml_element.
            l_element_Email  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Customer ).
    *elemento = elemento2B10-name.
    elemento = elemento1Q-name.
    *DATA: l_element_Website TYPE REF TO if_ixml_element.
            l_element_Website  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Customer ).
    elemento = elemento2C1-name.
    DATA: l_element_SupplierID TYPE REF TO if_ixml_element.
            l_element_SupplierID  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Supplier ).
    elemento = elemento2C2-name.
    DATA: l_element_SupplierTaxID TYPE REF TO if_ixml_element.
            l_element_SupplierTaxID  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Supplier ).
    elemento = elemento1E-name.
    *DATA: l_element_CompanyName TYPE REF TO if_ixml_element.
            l_element_CompanyName  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Supplier ).
    elemento = elemento2B4-name.
    *DATA: l_element_Contact TYPE REF TO if_ixml_element.
            l_element_Contact  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Supplier ).
    elemento = elemento2B5-name.
    *DATA: l_element_BillingAddress TYPE REF TO if_ixml_element.
            l_element_BillingAddress  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Supplier ).
    elemento = elemento2B6-name.
    *DATA: l_element_ShipToAddress TYPE REF TO if_ixml_element.
            l_element_ShipToAddress  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Supplier ).
    elemento = elemento1N-name.
    *DATA: l_element_Telephone TYPE REF TO if_ixml_element.
            l_element_Telephone  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Supplier ).
    elemento = elemento1O-name.
    *DATA: l_element_Fax TYPE REF TO if_ixml_element.
            l_element_Fax  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Supplier ).
    elemento = elemento1P-name.
    *DATA: l_element_Email TYPE REF TO if_ixml_element.
            l_element_Email  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Supplier ).
    elemento = elemento1Q-name.
    *DATA: l_element_Website TYPE REF TO if_ixml_element.
            l_element_Website  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Supplier ).
    elemento = elemento2D1-name.
    DATA: l_element_ProductType TYPE REF TO if_ixml_element.
            l_element_ProductType  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Product ).
    elemento = elemento2D2-name.
    DATA: l_element_ProductCode TYPE REF TO if_ixml_element.
            l_element_ProductCode  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Product ).
    elemento = elemento2D3-name.
    DATA: l_element_ProductGroup TYPE REF TO if_ixml_element.
            l_element_ProductGroup  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Product ).
    elemento = elemento2D4-name.
    DATA: l_element_ProductDescription TYPE REF TO if_ixml_element.
            l_element_ProductDescription  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Product ).
    elemento = elemento2D5-name.
    DATA: l_element_ProductNumberCode TYPE REF TO if_ixml_element.
            l_element_ProductNumberCode  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Product ).
    elemento = elemento2E1-name.
    DATA: l_element_TaxType TYPE REF TO if_ixml_element.
            l_element_TaxType  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_TaxTable ).
    elemento = elemento2E1A-name.
    DATA: l_element_Description TYPE REF TO if_ixml_element.
            l_element_Description  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_TaxType ).
    elemento = elemento2E1B-name.
    DATA: l_element_TaxCodeDetails TYPE REF TO if_ixml_element.
            l_element_TaxCodeDetails  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_TaxType ).
    elemento = elemento2E1B1-name.
    DATA: l_element_TaxCode TYPE REF TO if_ixml_element.
            l_element_TaxCode  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_TaxCodeDetails ).
    elemento = elemento2E1A-name.
    *DATA: l_element_Description TYPE REF TO if_ixml_element.
            l_element_Description  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_TaxCodeDetails ).
    elemento = elemento2E1B3-name.
    DATA: l_element_TaxPercentage TYPE REF TO if_ixml_element.
            l_element_TaxPercentage  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_TaxCodeDetails ).
    elemento = elemento3-name.
    DATA: l_element_GeneralLedgerEntries TYPE REF TO if_ixml_element.
            l_element_GeneralLedgerEntries  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_AuditFile ).
    elemento = elemento3A-name.
    DATA: l_element_NumberOfEntries TYPE REF TO if_ixml_element.
            l_element_NumberOfEntries  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_GeneralLedgerEntries ).
    elemento = elemento3B-name.
    DATA: l_element_TotalDebit TYPE REF TO if_ixml_element.
            l_element_TotalDebit  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_GeneralLedgerEntries ).
    elemento = elemento3C-name.
    DATA: l_element_TotalCredit TYPE REF TO if_ixml_element.
            l_element_TotalCredit  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_GeneralLedgerEntries ).
    elemento = elemento3D-name.
    *****if elemento3D-minOccurs NE ''.
    *****   elemento1 = ' minOccurs = '.
    *****   elemento2 = elemento3D-minOccurs.
    *****   CONCATENATE elemento elemento1 elemento2 INTO elemento.
    *****endif.
    *data: eleref(30),
    *elemento.
    *eleref = 'ref = '.
    *CONCATENATE eleref elemento INTO elemento.
    DATA: l_element_Journal TYPE REF TO if_ixml_element.
            l_element_Journal  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_GeneralLedgerEntries ).
    elemento = elemento3D1-name.
    DATA: l_element_JournalID TYPE REF TO if_ixml_element.
            l_element_JournalID  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Journal ).
    elemento = elemento2E1A-name.
    *DATA: l_element_Description TYPE REF TO if_ixml_element.
            l_element_Description  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Journal ).
    elemento = elemento3D3-name.
    DATA: l_element_Transaction TYPE REF TO if_ixml_element.
            l_element_Transaction  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Journal ).
    elemento = elemento3D3A-name.
    DATA: l_element_TransactionID TYPE REF TO if_ixml_element.
            l_element_TransactionID  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Transaction ).
    elemento = elemento3D3B-name.
    DATA: l_element_Period TYPE REF TO if_ixml_element.
            l_element_Period  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Transaction ).
    elemento = elemento3D3C-name.
    DATA: l_element_TransactionDate TYPE REF TO if_ixml_element.
            l_element_TransactionDate  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Transaction ).
    elemento = elemento3D3D-name.
    DATA: l_element_SourceID TYPE REF TO if_ixml_element.
            l_element_SourceID  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Transaction ).
    elemento = elemento2E1A-name.
    *DATA: l_element_Description TYPE REF TO if_ixml_element.
            l_element_Description  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Transaction ).
    elemento = elemento3D3F-name.
    DATA: l_element_GLPostingDate TYPE REF TO if_ixml_element.
            l_element_GLPostingDate  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Transaction ).
    elemento = elemento2B1-name.
    *DATA: l_element_CustomerID TYPE REF TO if_ixml_element.
            l_element_CustomerID  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Transaction ).
    elemento = elemento2C1-name.
    *DATA: l_element_SupplierID TYPE REF TO if_ixml_element.
            l_element_SupplierID  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Transaction ).
    elemento = elemento3D3I-name.
    DATA: l_element_Line TYPE REF TO if_ixml_element.
            l_element_Line  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Transaction ).
    elemento = elemento3D3I1-name.
    DATA: l_element_RecordID TYPE REF TO if_ixml_element.
            l_element_RecordID  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Line ).
    elemento = elemento2A1-name.
    *DATA: l_element_AccountID TYPE REF TO if_ixml_element.
            l_element_AccountID  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Line ).
    elemento = elemento3D3I3-name.
    DATA: l_element_SourceDocumentID TYPE REF TO if_ixml_element.
            l_element_SourceDocumentID  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Line ).
    elemento = elemento3D3I4-name.
    DATA: l_element_SystemEntryDate TYPE REF TO if_ixml_element.
            l_element_SystemEntryDate  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Line ).
    elemento = elemento2E1A-name.
    *DATA: l_element_Description TYPE REF TO if_ixml_element.
            l_element_Description  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Line ).
    elemento = elemento3D3I5A-name.
    DATA: l_element_DebitAmount TYPE REF TO if_ixml_element.
            l_element_DebitAmount  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Description ).
    elemento = elemento3D3I5B-name.
    DATA: l_element_CreditAmount TYPE REF TO if_ixml_element.
            l_element_CreditAmount  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Description ).
    elemento = elemento4-name.
    DATA: l_element_SourceDocuments TYPE REF TO if_ixml_element.
            l_element_SourceDocuments  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_AuditFile ).
    elemento = elemento4A-name.
    DATA: l_element_SalesInvoices TYPE REF TO if_ixml_element.
            l_element_SalesInvoices  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_SourceDocuments ).
    elemento = elemento3A-name.
    *DATA: l_element_NumberOfEntries TYPE REF TO if_ixml_element.
            l_element_NumberOfEntries  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_SalesInvoices ).
    elemento = elemento3B-name.
    *DATA: l_element_TotalDebit TYPE REF TO if_ixml_element.
            l_element_TotalDebit  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_SalesInvoices ).
    elemento = elemento3C-name.
    *DATA: l_element_TotalCredit TYPE REF TO if_ixml_element.
            l_element_TotalCredit  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_SalesInvoices ).
    elemento = elemento4A4-name.
    DATA: l_element_Invoice TYPE REF TO if_ixml_element.
            l_element_Invoice  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_SalesInvoices ).
    elemento = elemento4A4A-name.
    DATA: l_element_InvoiceNo TYPE REF TO if_ixml_element.
            l_element_InvoiceNo  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Invoice ).
    elemento = elemento3D3B-name.
    *DATA: l_element_Period TYPE REF TO if_ixml_element.
            l_element_Period  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Invoice ).
    elemento = elemento4A4C-name.
    DATA: l_element_InvoiceDate TYPE REF TO if_ixml_element.
            l_element_InvoiceDate  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Invoice ).
    elemento = elemento4A4D-name.
    DATA: l_element_InvoiceType TYPE REF TO if_ixml_element.
            l_element_InvoiceType  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Invoice ).
    elemento = elemento3D3I4-name.
    *DATA: l_element_SystemEntryDate TYPE REF TO if_ixml_element.
            l_element_SystemEntryDate  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Invoice ).
    elemento = elemento3D3A-name.
    *DATA: l_element_TransactionID TYPE REF TO if_ixml_element.
            l_element_TransactionID  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Invoice ).
    elemento = elemento2B1-name.
    *DATA: l_element_CustomerID TYPE REF TO if_ixml_element.
            l_element_CustomerID  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Invoice ).
    elemento = elemento4A4H-name.
    DATA: l_element_ShipTo TYPE REF TO if_ixml_element.
            l_element_ShipTo  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Invoice ).
    elemento = elemento4A4I-name.
    DATA: l_element_ShipFrom TYPE REF TO if_ixml_element.
            l_element_ShipFrom  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Invoice ).
    elemento = elemento3D3I-name.
    *DATA: l_element_Line TYPE REF TO if_ixml_element.
            l_element_Line  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Invoice ).
    elemento = elemento4A4K-name.
    DATA: l_element_DocumentTotals TYPE REF TO if_ixml_element.
            l_element_DocumentTotals  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Invoice ).
    elemento = elemento4A4J1-name.
    DATA: l_element_LineNumber TYPE REF TO if_ixml_element.
            l_element_LineNumber  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Line ).
    elemento = elemento4A4J2-name.
    DATA: l_element_OrderReferences TYPE REF TO if_ixml_element.
            l_element_OrderReferences  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Line ).
    elemento = elemento4A4J3-name.
    DATA: l_element_ProductCoder TYPE REF TO if_ixml_element.
            l_element_ProductCode  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Line ).
    elemento = elemento2D4-name.
    *DATA: l_element_ProductDescription TYPE REF TO if_ixml_element.
            l_element_ProductDescription  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Line ).
    elemento = elemento4A4J5-name.
    DATA: l_element_Quantity TYPE REF TO if_ixml_element.
            l_element_Quantity  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Line ).
    elemento = elemento4A4J6-name.
    DATA: l_element_UnitOfMeasure TYPE REF TO if_ixml_element.
            l_element_UnitOfMeasure  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Line ).
    elemento = elemento4A4J7-name.
    DATA: l_element_UnitPrice TYPE REF TO if_ixml_element.
            l_element_UnitPrice  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Line ).
    elemento = elemento4A4J8-name.
    DATA: l_element_TaxPointDate TYPE REF TO if_ixml_element.
            l_element_TaxPointDate  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Line ).
    elemento = elemento4A4J9-name.
    DATA: l_element_References TYPE REF TO if_ixml_element.
            l_element_References  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Line ).
    elemento = elemento2E1A-name.
    *DATA: l_element_Description TYPE REF TO if_ixml_element.
            l_element_Description  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Line ).
    elemento = elemento3D3I5A-name.
    *DATA: l_element_DebitAmount TYPE REF TO if_ixml_element.
            l_element_DebitAmount  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Line ).
    elemento = elemento3D3I5B-name.
    *DATA: l_element_CreditAmount TYPE REF TO if_ixml_element.
            l_element_CreditAmount  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Line ).
    elemento = elemento4A4J13-name.
    DATA: l_element_Tax TYPE REF TO if_ixml_element.
            l_element_Tax  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Line ).
    elemento = elemento4A4J14-name.
    DATA: l_element_SettlementAmount TYPE REF TO if_ixml_element.
            l_element_SettlementAmount  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Line ).
    elemento = elemento4A4J2A-name.
    DATA: l_element_OriginatingON TYPE REF TO if_ixml_element.
            l_element_OriginatingON  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_OrderReferences ).
    elemento = elemento4A4J2B-name.
    DATA: l_element_OrderDate TYPE REF TO if_ixml_element.
            l_element_OrderDate  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_OrderReferences ).
    elemento = elemento4A4J9A-name.
    DATA: l_element_CreditNote TYPE REF TO if_ixml_element.
            l_element_CreditNote  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_References ).
    elemento = elemento4A4J9A1-name.
    DATA: l_element_Reference TYPE REF TO if_ixml_element.
            l_element_Reference  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_CreditNote ).
    elemento = elemento4A4J9A2-name.
    DATA: l_element_Reason TYPE REF TO if_ixml_element.
            l_element_Reason  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_CreditNote ).
    elemento = elemento4A4K1-name.
    DATA: l_element_TaxPayable TYPE REF TO if_ixml_element.
            l_element_TaxPayable  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_DocumentTotals ).
    elemento = elemento4A4K2-name.
    DATA: l_element_NetTotal TYPE REF TO if_ixml_element.
            l_element_NetTotal  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_DocumentTotals ).
    elemento = elemento4A4K3-name.
    DATA: l_element_GrossTotal TYPE REF TO if_ixml_element.
            l_element_GrossTotal  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_DocumentTotals ).
    elemento = elemento4A4K4-name.
    DATA: l_element_Currency TYPE REF TO if_ixml_element.
            l_element_Currency  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_DocumentTotals ).
    elemento = elemento4A4K5-name.
    DATA: l_element_Settlement TYPE REF TO if_ixml_element.
            l_element_Settlement  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_DocumentTotals ).
    elemento = elemento1J-name.
    *DATA: l_element_CurrencyCode TYPE REF TO if_ixml_element.
            l_element_CurrencyCode  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_Currency ).
    elemento = elemento4A4K4A1-name.
    DATA: l_element_CurrencyDebitAmount TYPE REF TO if_ixml_element.
            l_element_CurrencyDebitAmount  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_CurrencyCode ).
    elemento = elemento4A4K4A2-name.
    DATA: l_element_CurrencyCreditAmount TYPE REF TO if_ixml_element.
            l_element_CurrencyCreditAmount  = l_document->create_simple_element(
                        name = elemento
                        parent = l_element_CurrencyCode ).
    *   Creating a stream factory
        l_streamfactory = l_ixml->create_stream_factory( ).
    *   Connect internal XML table to stream factory
        l_ostream = l_streamfactory->create_ostream_itable( table = l_xml_table ).
    *   Rendering the document
        l_renderer = l_ixml->create_renderer( ostream  = l_ostream
                                              document = l_document ).
        l_rc = l_renderer->render( ).
    *   Saving the XML document
        l_xml_size = l_ostream->get_num_written_raw( ).
        CALL METHOD cl_gui_frontend_services=>gui_download
          EXPORTING
            bin_filesize = l_xml_size
    *        filename     = 'E:     empAuditFile2.xml'                  "cambio E
            filename     = 'C:mioAuditFile21.xml'                  "cambio C
            filetype     = 'BIN'
          CHANGING
            data_tab     = l_xml_table
          EXCEPTIONS
            OTHERS       = 24.
        IF sy-subrc <> 0.
          MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                     WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
        ENDIF.
    *inicio prueba
    *Process the document
    perform process_dom using l_document.
    *WHEN
    *fin prueba
    **& Form process_dom
    form process_dom using document type ref to if_ixml_document.
    data: node type ref to if_ixml_node,
    iterator type ref to if_ixml_node_iterator,
    nodemap type ref to if_ixml_named_node_map,
    attr type ref to if_ixml_node,
    name type string,
    prefix type string,
    value type string,
    indent type i,
    count type i,
    index type i.
    data: name2 type string,
    name_root type string,
    node_parent type ref to if_ixml_node,
    node_root type ref to if_ixml_node,
    num_children type i.
    node ?= document.
    check not node is initial.
    uline.
    write: /.
    write: /' DOM-TREE'.
    write: /.
    if node is initial. exit. endif.
    *create a node iterator
    iterator = node->create_iterator( ).
    *get current node
    node = iterator->get_next( ).
    *loop over all nodes
    while not node is initial.
    indent = node->get_height( ) * 2.
    indent = indent + 20.
    num_children = node->num_children( ).
    case node->get_type( ).
    when if_ixml_node=>co_node_element.
    *element node
    name = node->get_name( ).
    nodemap = node->get_attributes( ).
    node_root = node->get_root( ).
    name_root = node_root->get_name( ).
    write: / 'ELEMENT :'.
    write: at indent name color col_positive inverse.
    write: 'NUM_CHILDREN:', num_children.
    write: 'ROOT:', name_root.
    node_parent = node->get_parent( ).
    name2 = node_parent->get_name( ).
    write: 'NAME2: ' , name2.
    if not nodemap is initial.
    *attributes
    count = nodemap->get_length( ).
    do count times.
    index = sy-index - 1.
    attr = nodemap->get_item( index ).
    name = attr->get_name( ).
    prefix = attr->get_namespace_prefix( ).
    value = attr->get_value( ).
    write: / 'ATTRIBUTE:'.
    write: at indent name color col_heading inverse, '=',
    value color col_total inverse.
    enddo.
    endif.
    when if_ixml_node=>co_node_text or
    if_ixml_node=>co_node_cdata_section.
    *text node
    value = node->get_value( ).
    write: / 'VALUE :'.
    *mjprocha
    node_parent = node->get_parent( ).
    write: at indent value color col_group inverse.
    name2 = node_parent->get_name( ).
    write: 'NAME2: ' , name2.
    endcase.
    *advance to next node
    node = iterator->get_next( ).
    endwhile.
    endform. "process_dom
    *       FORM print_tree                                               *
    FORM print_dom USING node TYPE REF TO if_ixml_node.
      DATA: iterator  TYPE REF TO if_ixml_node_iterator,
            nodemap   TYPE REF TO if_ixml_named_node_map,
            attr      TYPE REF TO if_ixml_node,
            name      TYPE string,
            prefix    TYPE string,
            value     TYPE string,
            indent    TYPE i,
            count     TYPE i,
            index     TYPE i.
      CHECK NOT node IS INITIAL.
      ULINE.
      WRITE: /.
      WRITE: /' DOM-TREE'.
      WRITE: /.
      IF node IS INITIAL. EXIT. ENDIF.
    * create a node iterator
      iterator  = node->create_iterator( ).
    * get current node
      node = iterator->get_next( ).
    * loop over all nodes
      WHILE NOT node IS INITIAL.
        indent = node->get_height( ) * 2.
        indent = indent + 20.
        CASE node->get_type( ).
          WHEN if_ixml_node=>co_node_eleme

  • Migrate .usage files to new drive

    Hi, i am a BI developer but have been asked to move usage log files for my clients Sharepoint 2010 installation to a new drive (the usage files are on the C drive at present). Please help....
    Thanks
    David

    Fixed - use central administrator, open Monitoring, Configure usage and health data collection, Log file location. 
    I had to temporarily turn the Sharepoint timer service off while the .usage files were being copied to the new drive.

  • The kerning tool appears to be stuck? Cannot make any changes to text boxes in new or existing files

    When I try to adjust the kerning in any text box, whether it be in a new or existing file, the change will not take place. It will just automatically return to either the default. Please help!

    Thanks, perhaps this might help. as you can see the kerning is set at 300 which should make the T/E very far apart they aren't. The "after" shows the kerning set at (0), even though I made the change to 300. The cursor is in the correct place, even though it doesn't appear on the screenshots.

  • Error when opening FX (new or existing file): "Adobe Photoshop CS6 Extended: Could not complte your request because of a program error."

    This randomly started happening. Every time I try to add an effect to a new file, or edit an effect on an existing file, I get this error...
    Adobe Photoshop Version: 13.0.1 (13.0.1.3 20131024.r.34 2013/10/24:21:00:00) x64
    Operating System: Windows NT
    Version: 6.2
    System architecture: Intel CPU Family:6, Model:10, Stepping:5 with MMX, SSE Integer, SSE FP, SSE2, SSE3, SSE4.1, SSE4.2
    Physical processor count: 2
    Processor speed: 2533 MHz
    Built-in memory: 24574 MB
    Free memory: 20191 MB
    Memory available to Photoshop: 22225 MB
    Memory used by Photoshop: 60 %
    Image tile size: 128K
    Image cache levels: 4
    The GPU Sniffer crashed on 2/19/2015 at 2:48:07 PM
    OpenGL Drawing: Enabled.
    OpenGL Drawing Mode: Advanced
    OpenGL Allow Normal Mode: True.
    OpenGL Allow Advanced Mode: True.
    OpenGL Allow Old GPUs: Not Detected.
    Video Card Vendor: NVIDIA Corporation
    Video Card Renderer: Quadro K2000/PCIe/SSE2
    Display: 2
    Display Bounds:=  top: 0, left: 0, bottom: 1080, right: 1920
    Display: 1
    Display Bounds:=  top: 0, left: 1920, bottom: 1080, right: 3840
    Video Card Number: 1
    Video Card: NVIDIA Quadro K2000
    OpenCL Unavailable
    Driver Version: 9.18.13.4752
    Driver Date: 20150205000000.000000-000
    Video Card Driver: nvd3dumx.dll,nvwgf2umx.dll,nvwgf2umx.dll,nvd3dum,nvwgf2um,nvwgf2um
    Video Mode: 1920 x 1080 x 4294967296 colors
    Video Card Caption: NVIDIA Quadro K2000
    Video Card Memory: 2048 MB
    Video Rect Texture Size: 16384
    Serial number: 92298701693738269349
    Application folder: C:\Program Files\Adobe\Adobe Photoshop CS6 (64 Bit)\
    Temporary file path: C:\Users\billy.CNC\AppData\Local\Temp\
    Photoshop scratch has async I/O enabled
    Scratch volume(s):
      Startup, 1.80T, 1.10T free
    Required Plug-ins folder: C:\Program Files\Adobe\Adobe Photoshop CS6 (64 Bit)\Required\
    Primary Plug-ins folder: C:\Program Files\Adobe\Adobe Photoshop CS6 (64 Bit)\Plug-ins\
    Additional Plug-ins folder: not set
    Installed components:
       A3DLIBS.dll   A3DLIB Dynamic Link Library   9.2.0.112  
       ACE.dll   ACE 2012/06/05-15:16:32   66.507768   66.507768
       adbeape.dll   Adobe APE 2012/01/25-10:04:55   66.1025012   66.1025012
       AdobeLinguistic.dll   Adobe Linguisitc Library   6.0.0  
       AdobeOwl.dll   Adobe Owl 2012/06/26-12:17:19   4.0.95   66.510504
       AdobePDFL.dll   PDFL 2011/12/12-16:12:37   66.419471   66.419471
       AdobePIP.dll   Adobe Product Improvement Program   6.0.0.1654  
       AdobeXMP.dll   Adobe XMP Core 2012/02/06-14:56:27   66.145661   66.145661
       AdobeXMPFiles.dll   Adobe XMP Files 2012/02/06-14:56:27   66.145661   66.145661
       AdobeXMPScript.dll   Adobe XMP Script 2012/02/06-14:56:27   66.145661   66.145661
       adobe_caps.dll   Adobe CAPS   6,0,29,0  
       AGM.dll   AGM 2012/06/05-15:16:32   66.507768   66.507768
       ahclient.dll    AdobeHelp Dynamic Link Library   1,7,0,56  
       aif_core.dll   AIF   3.0   62.490293
       aif_ocl.dll   AIF   3.0   62.490293
       aif_ogl.dll   AIF   3.0   62.490293
       amtlib.dll   AMTLib (64 Bit)   6.0.0.75 (BuildVersion: 6.0; BuildDate: Mon Jan 16 2012 18:00:00)   1.000000
       ARE.dll   ARE 2012/06/05-15:16:32   66.507768   66.507768
       AXE8SharedExpat.dll   AXE8SharedExpat 2011/12/16-15:10:49   66.26830   66.26830
       AXEDOMCore.dll   AXEDOMCore 2011/12/16-15:10:49   66.26830   66.26830
       Bib.dll   BIB 2012/06/05-15:16:32   66.507768   66.507768
       BIBUtils.dll   BIBUtils 2012/06/05-15:16:32   66.507768   66.507768
       boost_date_time.dll   DVA Product   6.0.0  
       boost_signals.dll   DVA Product   6.0.0  
       boost_system.dll   DVA Product   6.0.0  
       boost_threads.dll   DVA Product   6.0.0  
       cg.dll   NVIDIA Cg Runtime   3.0.00007  
       cgGL.dll   NVIDIA Cg Runtime   3.0.00007  
       CIT.dll   Adobe CIT   2.0.5.19287   2.0.5.19287
       CoolType.dll   CoolType 2012/06/05-15:16:32   66.507768   66.507768
       data_flow.dll   AIF   3.0   62.490293
       dvaaudiodevice.dll   DVA Product   6.0.0  
       dvacore.dll   DVA Product   6.0.0  
       dvamarshal.dll   DVA Product   6.0.0  
       dvamediatypes.dll   DVA Product   6.0.0  
       dvaplayer.dll   DVA Product   6.0.0  
       dvatransport.dll   DVA Product   6.0.0  
       dvaunittesting.dll   DVA Product   6.0.0  
       dynamiclink.dll   DVA Product   6.0.0  
       ExtendScript.dll   ExtendScript 2011/12/14-15:08:46   66.490082   66.490082
       FileInfo.dll   Adobe XMP FileInfo 2012/01/17-15:11:19   66.145433   66.145433
       filter_graph.dll   AIF   3.0   62.490293
       hydra_filters.dll   AIF   3.0   62.490293
       icucnv40.dll   International Components for Unicode 2011/11/15-16:30:22    Build gtlib_3.0.16615  
       icudt40.dll   International Components for Unicode 2011/11/15-16:30:22    Build gtlib_3.0.16615  
       image_compiler.dll   AIF   3.0   62.490293
       image_flow.dll   AIF   3.0   62.490293
       image_runtime.dll   AIF   3.0   62.490293
       JP2KLib.dll   JP2KLib 2011/12/12-16:12:37   66.236923   66.236923
       libifcoremd.dll   Intel(r) Visual Fortran Compiler   10.0 (Update A)  
       libmmd.dll   Intel(r) C Compiler, Intel(r) C++ Compiler, Intel(r) Fortran Compiler   10.0  
       LogSession.dll   LogSession   2.1.2.1640  
       mediacoreif.dll   DVA Product   6.0.0  
       MPS.dll   MPS 2012/02/03-10:33:13   66.495174   66.495174
       msvcm80.dll   Microsoft® Visual Studio® 2005   8.00.50727.8428  
       msvcm90.dll   Microsoft® Visual Studio® 2008   9.00.30729.1  
       msvcp100.dll   Microsoft® Visual Studio® 2010   10.00.40219.1  
       msvcp80.dll   Microsoft® Visual Studio® 2005   8.00.50727.8428  
       msvcp90.dll   Microsoft® Visual Studio® 2008   9.00.30729.1  
       msvcr100.dll   Microsoft® Visual Studio® 2010   10.00.40219.1  
       msvcr80.dll   Microsoft® Visual Studio® 2005   8.00.50727.8428  
       msvcr90.dll   Microsoft® Visual Studio® 2008   9.00.30729.1  
       pdfsettings.dll   Adobe PDFSettings   1.04  
       Photoshop.dll   Adobe Photoshop CS6   CS6  
       Plugin.dll   Adobe Photoshop CS6   CS6  
       PlugPlug.dll   Adobe(R) CSXS PlugPlug Standard Dll (64 bit)   3.0.0.383  
       PSArt.dll   Adobe Photoshop CS6   CS6  
       PSViews.dll   Adobe Photoshop CS6   CS6  
       SCCore.dll   ScCore 2011/12/14-15:08:46   66.490082   66.490082
       ScriptUIFlex.dll   ScriptUIFlex 2011/12/14-15:08:46   66.490082   66.490082
       tbb.dll   Intel(R) Threading Building Blocks for Windows   3, 0, 2010, 0406  
       tbbmalloc.dll   Intel(R) Threading Building Blocks for Windows   3, 0, 2010, 0406  
       TfFontMgr.dll   FontMgr   9.3.0.113  
       TfKernel.dll   Kernel   9.3.0.113  
       TFKGEOM.dll   Kernel Geom   9.3.0.113  
       TFUGEOM.dll   Adobe, UGeom©   9.3.0.113  
       updaternotifications.dll   Adobe Updater Notifications Library   6.0.0.24 (BuildVersion: 1.0; BuildDate: BUILDDATETIME)   6.0.0.24
       WRServices.dll   WRServices Friday January 27 2012 13:22:12   Build 0.17112   0.17112
       wu3d.dll   U3D Writer   9.3.0.113  
    Required plug-ins:
       3D Studio 13.0.1 (13.0.1.3 x001)
       Accented Edges 13.0
       Adaptive Wide Angle 13.0
       ADM 3.11x01
       Angled Strokes 13.0
       Average 13.0.1 (13.0.1.3 x001)
       Bas Relief 13.0
       BMP 13.0
       Camera Raw 8.8
       Camera Raw Filter 8.8
       Chalk & Charcoal 13.0
       Charcoal 13.0
       Chrome 13.0
       Cineon 13.0.1 (13.0.1.3 x001)
       Clouds 13.0.1 (13.0.1.3 x001)
       Collada 13.0.1 (13.0.1.3 x001)
       Color Halftone 13.0
       Colored Pencil 13.0
       CompuServe GIF 13.0
       Conté Crayon 13.0
       Craquelure 13.0
       Crop and Straighten Photos 13.0.1 (13.0.1.3 x001)
       Crop and Straighten Photos Filter 13.0
       Crosshatch 13.0
       Crystallize 13.0
       Cutout 13.0
       Dark Strokes 13.0
       De-Interlace 13.0
       Dicom 13.0
       Difference Clouds 13.0.1 (13.0.1.3 x001)
       Diffuse Glow 13.0
       Displace 13.0
       Dry Brush 13.0
       Eazel Acquire 13.0.1 (13.0.1.3 x001)
       Embed Watermark 4.0
       Entropy 13.0.1 (13.0.1.3 x001)
       Extrude 13.0
       FastCore Routines 13.0.1 (13.0.1.3 x001)
       Fibers 13.0
       Film Grain 13.0
       Filter Gallery 13.0
       Flash 3D 13.0.1 (13.0.1.3 x001)
       Fresco 13.0
       Glass 13.0
       Glowing Edges 13.0
       Google Earth 4 13.0.1 (13.0.1.3 x001)
       Grain 13.0
       Graphic Pen 13.0
       Halftone Pattern 13.0
       HDRMergeUI 13.0
       IFF Format 13.0
       Ink Outlines 13.0
       JPEG 2000 13.0
       Kurtosis 13.0.1 (13.0.1.3 x001)
       Lens Blur 13.0
       Lens Correction 13.0
       Lens Flare 13.0
       Liquify 13.0
       Matlab Operation 13.0.1 (13.0.1.3 x001)
       Maximum 13.0.1 (13.0.1.3 x001)
       Mean 13.0.1 (13.0.1.3 x001)
       Measurement Core 13.0.1 (13.0.1.3 x001)
       Median 13.0.1 (13.0.1.3 x001)
       Mezzotint 13.0
       Minimum 13.0.1 (13.0.1.3 x001)
       MMXCore Routines 13.0.1 (13.0.1.3 x001)
       Mosaic Tiles 13.0
       Multiprocessor Support 13.0.1 (13.0.1.3 x001)
       Neon Glow 13.0
       Note Paper 13.0
       NTSC Colors 13.0.1 (13.0.1.3 x001)
       Ocean Ripple 13.0
       Oil Paint 13.0
       OpenEXR 13.0
       Paint Daubs 13.0
       Palette Knife 13.0
       Patchwork 13.0
       Paths to Illustrator 13.0
       PCX 13.0.1 (13.0.1.3 x001)
       Photocopy 13.0
       Photoshop 3D Engine 13.0.1 (13.0.1.3 x001)
       Picture Package Filter 13.0.1 (13.0.1.3 x001)
       Pinch 13.0
       Pixar 13.0.1 (13.0.1.3 x001)
       Plaster 13.0
       Plastic Wrap 13.0
       PNG 13.0
       Pointillize 13.0
       Polar Coordinates 13.0
       Portable Bit Map 13.0.1 (13.0.1.3 x001)
       Poster Edges 13.0
       Radial Blur 13.0
       Radiance 13.0.1 (13.0.1.3 x001)
       Range 13.0.1 (13.0.1.3 x001)
       Read Watermark 4.0
       Reticulation 13.0
       Ripple 13.0
       Rough Pastels 13.0
       Save for Web 13.0
       ScriptingSupport 13.0.1
       Shear 13.0
       Skewness 13.0.1 (13.0.1.3 x001)
       Smart Blur 13.0
       Smudge Stick 13.0
       Solarize 13.0.1 (13.0.1.3 x001)
       Spatter 13.0
       Spherize 13.0
       Sponge 13.0
       Sprayed Strokes 13.0
       Stained Glass 13.0
       Stamp 13.0
       Standard Deviation 13.0.1 (13.0.1.3 x001)
       Sumi-e 13.0
       Summation 13.0.1 (13.0.1.3 x001)
       Targa 13.0
       Texturizer 13.0
       Tiles 13.0
       Torn Edges 13.0
       Twirl 13.0
       U3D 13.0.1 (13.0.1.3 x001)
       Underpainting 13.0
       Vanishing Point 13.0
       Variance 13.0.1 (13.0.1.3 x001)
       Variations 13.0.1 (13.0.1.3 x001)
       Water Paper 13.0
       Watercolor 13.0
       Wave 13.0
       Wavefront|OBJ 13.0.1 (13.0.1.3 x001)
       WIA Support 13.0.1 (13.0.1.3 x001)
       Wind 13.0
       Wireless Bitmap 13.0.1 (13.0.1.3 x001)
       ZigZag 13.0
    Optional and third party plug-ins: NONE
    Plug-ins that failed to load: NONE
    Flash:
       Mini Bridge
       Kuler
    Installed TWAIN devices: NONE

    Did you reset your Preferences and Photoshop tools.  Photoshop Preferences are not removed with an un-install and an Install does not install preferences.  Preferences are created  for a user id when a user ID start Photoshop  and there are no preferences for the user ID.    

  • New Album from Smart Album makes NEW VERSIONS of all files? Bug?

    Got what I think is an oddball bug here, but see if any of you have experienced it.
    Making a new album of the contents of a Smart Album with about 600 images resulted in the SBOD, a lot of time and disk activity and the creation of NEW VERSIONS of all the files populating the new album. This, of course, also doubled the number of files in the original Smart Album, since the keywords used are a match. First thinking it might be something I had not read in the manual, I grabbed the book and could not find this behavior listed…..so….my expected result is a new album with the identical contents of the Smart Album selected as the source.
    I am creating a presentation for a client whose work is in multiple projects in a ~150GB library. All images are heavily keyworded, so making Smart Albums of specific elements of the work was easy. My intended workflow to get through this mountain of pix was to make Smart Albums of specific elements, then make New Albums from each, manually edit and reorg these albums individually, then combine my edits into a single book file.
    Now the structure leading to this problem is as follows:
    1) I created a single “main” folder to store all projects and other elements and hierarchy for this client. Clicking on this folder returns some 8500 images spanning multiple projects…all as expected.
    2) At the top level of this “main” folder, I made about 20 Smart Albums to presort the main elements I wanted to include. I made the first Smart Album by clicking the icon in the top bar. The rest of the smart albums I made by duplicating the previous Smart Album, then changing keyword selection. I would select the new keywords I wanted, then de-select the ones that were from the album I had duplicated. The reason I did it that was for speed, there is little delay in displaying the items that were already searched for, and a significant delay in going from new. Anyway, somewhere in this process, I decided to organize my workflow further, so I created a new folder (calling it Smart Album Selects) at the same level as the Smart Albums, and then dragged the Smart Albums into the new Smart Album Selects folder. Still, no problem.
    3) Later in my session, I went to create another new Smart Album, and this time I did so already in the Smart Album Selects folder. When I opened the HUD to select the keywords, the Keyword area and check box were greyed out!!! Weird, I though….so I simply duplicated an existing Smart Album from my Smart Album Selects folder, opened the HUD, and sure enough, all my keywords were there. I changed the keyword selection, and went on with work. During the day I did this same operation 3 more times, making 4 Smart Albums created the same way.
    4) OK…here is the strange behavior. To make my new custom album from the Smart Album selects, I selected one of the Smart Albums, and clicked on the New Album icon. Got the expected dialog, make with 1 image or all images, selected all images, and instead of a new album popping up moments later, I got the SBOD, and the Activity Monitor said Aperture and my hard disk was cranking away. About 4-5 minutes later, Aperture became responsive again, and had created a new album. However, upon inspection, the album contained NEW VERSIONS of all the images that were in the Smart Album, about 600 files.
    5) I went back and clicked on a different Smart Album in the same spot in the hierarchy…but it was one of the first ones I had created (meaning I built this BEFORE reorganizing into the Smart Album Selects folder). Tried making a new album again, with 1 image, worked fine, popped up instantly. Tried selecting 4 images, same thing, worked fine. Selected All, made album, worked fine.
    6) Went back to the Smart Album I had the problem with, this time selected 4 images, make New Album, and sure enough the New Album had NEW VERSIONS of the pix again…OK, I went back to the top of my folder hierarchy, my “main” folder and made a brand new Smart Album by clicking the icon, and selecting keywords. Made a new album from that, no problem, popped up instantly, no new versions.
    7) I then re-made all my Smart Albums at the top of the folder hierarchy, and they all work fine creating new albums. I got back to the task at hand…hopefully there is enough data here to let the Aperture engineers find this problem…Assuming, that is it is not just me misunderstanding some element in the program.
    Sorry for the length, but has anyone else run into this??
    PowerBook G4 1.67 2GB RAM 128MB ATI Video, External FW Drives for library   Mac OS X (10.4.7)  

    Nope, all the images at this point in my workflow have been unstacked, with the non-picked members of the original stacks discarded.
    Now that it seems I am not the only one who has witnessed this behavior, what I am really trying to find out, is what is the definitive proper operation of this according to the Aperture group at Apple.
    Assuming I have opened a Smart Album with images displayed, and no images are selected.
    Is the correct behavior:
    1) Selecting New Album makes a new Untitled Album (very quickly) with the identical contents of the Smart Album....OR...
    2) Selecting New Album makes a new Untitled Album (slowly) with NEW VERSIONS of the contents of the Smart Album. (Also, depending upon the number of images, typically brings up SBOD and makes Aperture unresponsive until it is complete.)
    Now what I expected to happen was #1, as it is what happens when I select New Album when a project is selected. Given Apple's human interface creedo for intuitive operation, I think this is the most intuitive choice, because I can't think of a good reason I would want to double the number of versions of all files in an album, unless I expressly told the app to do this.
    Could an Apple guy provide the definitive answer, please...
    Thanks in advance for your help.
    PowerBook G4 1.67 2GB RAM 128MB ATI Video, External FW Drives for library   Mac OS X (10.4.7)  

  • How to make Aperture use new drive

    Hi
    I recently bought a new 3TB HDD to replace my 1TB drive which was nearly full. How do I copy my existing files across and make Aperture continue to read them from its database?
    Regards
    Mark

    Thanks, Matthew, but I don't think I gave enough details. I have my aperture library file on the main drive under ~/Pictures. The raw files from my camera are on the external 1TB drive called Elements, as referenced files. On the external drive is a system of folders like this /Volumes/Elements/Photos/Aperture/2012/06, and within that the raw files downloaded from my camera for that day.
    So the issue is how to harmonize the library on the iMac with the referenced files on the external drive.

  • New print driver impacted existing printers - why?

    Hi friends,
    Today I added a new driver to our print server which I have done many times before, only this time in adding the new driver, all other printers of the same manufacturer (Canon) stopped working, with the device on everyone's computer showing "Driver
    update needed".
    The new driver was for an iDV-ADV C5250. The printers which stopped working are all C5051's. The driver was added but at this point, no other action was taken, the driver was not used for a printer (hardware hasn't arrived yet) so the very simple step of
    adding a new driver in preparation for a new printer causes a major issue.
    To resolve it on the Windows Server 2008 R2 print server, I selected any one of the existing Canon printers and set the driver to the new driver I added. Of course this did NOT work however then setting the driver back to what it was originally did resolve
    the issue... kind of. ALL users were then required to delete and re-add the printer(s) on their computers. You can see this was not a popular fault.
    Although I resolved it, I really want to understand why this occurred. Can anyone help? I really need to make sure this doesn't happen again. I thought maybe printer isolation might help but you can't set a driver to isolated until after it's added can you?
    Thanks.

    Hi Norton_San,
    Based on your description, I understand that you add a new driver for iDV-ADV C5250 in printer server. However,
    this operation affected all other C5051 printers (stop working). If anything I misunderstand, please don’t hesitate to let me know.
    When an administrator updates a printer driver on a shared print server, the Point and Print feature automatically
    updates printer drivers from the print server to a client computer. Some printers may share driver files across several printer models or across a family of printers. An update to one of these shared driver files will cause client computers to update the drivers
    for any device that depends on the updated files.
    Hope this helps.
    Best regards,
    Justin Gu

  • I want to install an SSD as my OS drive. Can I do a copy of my existing drive straight the new drive?

    I wish to install an SSD as my OS drive. I seem to recall in my travels that it is possible to copy my existing OSD, install the SSD, Copy old drive info' to new drive and then set that to be the boot drive.
    Any directions to where I can find out how to do this would be greatly apprecciated. Providing this can be done.

    TRIM Part 2
    Trim on SSD Drives
    When I first wrote this article/thread, which was for my own benefit and was eventually turned into this thread, as it is today, trim was not available on ssd drives, when it did arrive, there were mixed idea’s on how it worked, a lot that was incorrect at the time, a lot of new users do not understand the use of Trim even today, explanations tend to very technical as trim is a complicated issue at the best of times. I found a simple explanation for the implementation of trim in late 2009, I came across it again the other day, it still holds true today so here’s the link, ( I know you are going to point me to AnandTech explanations, there are links in this thread, if your a technically minded person, then AnandTech’s articles may be a better option ) this simpler explanation is still active in late 2011. As you can see if you carry on reading and don’t turn off, how complicated it can be for a non-technical user of ssd drives. So here’s my explanation of trim. Remember this a generalization of most ssd drives, it’s a lot easier when your dealing with your own ssd drive.
    Trim and it’s association with GC ( garbage collection ) varies depending on how the controller’s "GC" handles the use of Trim ( Win7 ). Trim is activated, by deleting files in the OS ( Win7 ), it doesn’t actually trim the ssd drive, but marks the block/file header’s with a 1 making that block/file available for being re-written or written over. Trimming is actually done by the GC and will only work if the block doesn’t contain other files that haven’t been marked deleted, but this again depends on how GC is implemented, the GC can wait till the block is full, then move undeleted files to another block allowing for the block to be trimmed ( GC ), in doing this, the GC uses a lot more write amplification than it does if Trim in win7 has previously marked these blocks/files for deletion, flash memory can only be ‘written over’ if all the information in that block as been marked with 1, this allows the whole block to be re-written. GC can only erase/Trim a full block, not individual files or pages.
    What trim does is mark these blocks/files etc and make it simpler for the inbuilt GC ( garbage collection ) to recognize the blocks that are available for further use, on some controller’s this will not necessarily happen immediately, it depends on whether the controller as been designed for “idle” use, “on the fly” use or “stand by use”, GC/Trim can be brought into use in many different ways, having the computer sitting with the bios open, having the computer idling at log in, placing the computer in stand by mode, deleting files or just simple idling the computer overnight. It’s a matter of finding out how the controller in your particular ssd handles the garbage collection. You will find the most efficient way is by experimentation or by other members passing on there particular way of doing it.
    Low level formatting used on conventional HDD drives writes mainly 0’s to every cell on a SSD drive, it’s the opposite to how flash memory actually works, if you low level format with Win7 or any software that writes 0’s or 0’s and 1’s to the individual cells, you are not necessarily cleaning the ssd drive completely, ( hence the need for secure erase software ), you can actually make the performance worse.
    If you use software designed for writing 1’s to each cell, like you would if it was designed for ssd drives, this will “clean” the drive and is a good thing to do if you are selling the drive, or as a last resort, if you are having problems with your ssd drive. The downside of using this type of erasure, is that it not only takes a long time it uses high write amplification and if used regularly can reduce the flash cells life expectancy considerably, these type’s of deletions bypass most controllers durawrite capabilities ( the way controllers extend the life expectancy of the ssd’s individual MLC cells ), Durawrite ( Sandforce ), other controllers have this technology in some form or other, it increases MLC life expectancy by between 5 and up to 30 times depending on the design of the controller.
    Basically a command line program like dispart and dispar will secure erase a ssd drive either by writing to the individual ( “Cleanall“ command ) cells or simply marking the blocks to be deleted with a 1 ( “Clean” command ), you need to use the latter which takes only seconds and will return the majority of ssd's to a new state, without impacting too much on write amplification.
    That’s how I see the use of GC and Trim in win7 today ( Nov 2011 ). Note! Most ssd software, tool boxes etc use the inbuilt win7 diskpart commands, to make it easier than using the command line. There is a explanation for the use of diskpart and can be found HERE, but NOTE! It’s written with conventional hard drives in mind, not ssd drives.
    In the case of most Toolboxes provided by manufacturer’s, the OCZ Toolbox is a typical example, they are incompatible with Intel’s RST driver, you would need to use Diskpart from the command line. Also Toolboxes will in most cases, not secure erase a ssd with a OS on it or if the ssd drive is in use as the OS drive eg. ( “C:/” partition ). If you want to secure erase an OS drive you need to delete all the partitions on the drive including any hidden partitions, there’s an excellent tutorial on the Intel toolbox on LesT’s website, TheSSDReview here’s the Link.
    You will have to use Diskpart or Diskpar from the Dos prompt, you can’t be in windows with the ssd drive you intend to erase. This is mainly if the toolboxes fail to work and deleting the partitions refuses to solve the problem.
    I’m sure there are exceptions to what I have written and easier ways of explaining trim or secure erasing some types of ssd drives. All I ask is you don’t isolate passages out of context, please read the whole article, before you tell me I’m incorrect. There are a lot of more informative people out there than me on this subject, so I’m open to criticism on the subject. I want to impart only the correct facts on this thread.
    Trim and the IDE issue The Intel IDE drivers after Vista sp2 are fully compatible with the trim command , but for trim to pass through this command, the ssd controller itself has also got to be compatible with IDE mode, eg. Intel drives with the Intel controllers are ( according to Intel ) fully compatible. The Crucial M4 appears not to be, other controllers optimized for AHCI may also not be compatible. I can’t comment on the Intel 510 as I’ve only ever used them in AHCI mode.
    Wearlevelling Here’s an explanation that’s not too complicated, its from StorageSearch.com, here’s the LINK.
    Overprovisioning Also from StorageSearch.com, a simple explanation for the need for overprovisioning, same link as above. This actual link covers a number of technologies used by the ssd controller in ssd drives. Overprovisioning improves write performance, if the ssd is used in a high write situation, increasing the overprovisioning will improve performance and write endurance, in a high read situation, too much can hinder performance, in a os situation the 7% supplied on client drives, in most cases is probably adequate depending on it’s use, if there’s a lot of writing done to the drive daily, reducing the partition size, which will increase overprovisioning, by a small amount may improve performance.
    http://forums.extremeoverclocking.com/showpost.php?p=3643482&postcount=1
    Trimming SSD Performance Degradation
    Thursday, October 14, 2010
    Todays solid state drives are worlds apart from those of just 3 years ago, however they are not yet perfect.  Performance degradation can still be observed through ‘seasoning’ of the SSD as well as filling it to capacity.  SSD manufacturers have been successful in combating the effects of seasoning but performance degradation when an SSD is filled to capacity seems to be just a bit more difficult.
    Typical testing of most drives, through use of random data, will result in an observable performance drop which may start as soon as the SSD is filled past the 70% mark.  This article will describe the common characteristics of SSDs followed by a simple method to ensure that maximum performance is sustained with the drive.
    SEASONING
    Much has been said with respect to performance degradation as a result of the ssd becoming ‘seasoned’ over time.  By ‘seasoned’, we mean that the drive will eventually use up all of its empty blocks of NAND, or memory and, without TRIM, the process of writing to a drive actually becomes that of reading the block of data, understanding that it is invalid, erasing and then writing rather than simply writing to a clean block.  Performance is greater when writing to ‘clean’ memory vice memory which has previously been used and contains invalid data that has not been cleared.  The root cause of degradation is that when a non-TRIM ssd is told to delete data, it actually only marks the area as clear which leaves the invalid data intact and tricks the ssd into believing that the NAND flash is available.
    Data on a SSD cannot simply be over-written as it is done on a hard drive and this gets a bit more complicated when we erase information and the block that it is located on also contains valid information that we don’t want deleted.  The process then becomes read data, recognize the valid information, move it to another clean block, erase the present block and write.  Manufacturers have tried to combat this issue of performance degradation by creating 3 solutions to the problem which are wear leveling, TRIM and ITGC (or Garbage Collection).
    Wear leveling
    Wear leveling is the process of the ssd understanding how many times each cell of memory has been written to and then ensuring that all are all written to evenly.  After all, the life span of the ssd is dependent on the total number of writes that are written to and this has been coined as ‘write endurance’.  Unlike the hard drive which stores information in a static location, the SSD will move information around on a continuous basis without your knowledge to ensure that all cells wear evenly, thus affording a longer lifespan for the ssd.  By also doing this, the drive can ensure that only the valid information is used, leaving blocks to be cleaned up by TRIM or ITGC, again without the knowledge of the user.
    ITGC/GC  (Idle Time Garbage Collection)
    Garbage Collection (GC) is the process by which the SSD recognizes, in idle time, which cells are valid and which are not valid (or deleted) on the drive.  It then clears the blocks of the invalid data to maintain the speed of writing to ‘clean’ pages or blocks during normal operation.  GC was initially shown to be a last resort if TRIM was not available, however, recent releases are showing new methods to be very aggressive and results equal to that of TRIM are being observed.  This is a huge benefit to those using RAID systems where Garbage Collection is accomplished as TRIM is not an option.
    The SSD Review was able to discuss GC and TRIM with Crucial as it pertains to their SATA3 releases as it has been observed that their RealSSD C300 SATA3 drives do not appear to show any performance degradation over extended use.  Crucial confirmed that they had to consider that TRIM would not pass through the present release of SATA3 drivers which helped recognize that very aggressive GC would be necessary for the C300 SATA 3 SSDs success.  The subsequent result was that many forum threads were created by avid users who were questioning whether TRIM was, in fact, working in their SSDs as no performance degradation was seen even in the toughest of test beds.  To dispel a common belief, it is not the Marvell processor of the Crucial RealSSD that prevents TRIM from being passed, but rather, that of the hardware and drivers of SATA3 capable motherboards.  All Crucial SSDs are fully capable of passing TRIM direction to the OS.
    TRIM
    TRIM occurs when the ssd clears blocks of invalid data.  When you delete a file, the operating system will only mark the area of the file as free in order to trick the system into believing the space is available. Invalid data is still present in that location.  Its like ripping out a Table of Contents from a book.  Without this, one would not know what, if anything, is contained on the following pages.  TRIM follows the process of marking the area as free by clearing the invalid data from the drive.  Without this, the process of reading, identifying invalid data, deleting or moving and clearing the block before writing can actually result in performance 4 times slower than it would have normally been as a new drive.
    In recently speaking with Kent Smith, Sr. Director of Product Marketing  for SandForce, he identified that there are many variables outside of the hardware that are responsible for users not seeing the benefits of TRIM, the first of which are drivers at the OS level which have to be working optimally in order for TRIM to function correctly.  Another example occurred with early Windows 7 users testing their newly installed drives and not seeing the benefits of TRIM.  Examination of these complaints revealed that users would have originally made the Windows 7 installation on hardware that did not support TRIM and then cloned to the SSD to which TRIM was supported but would not work because of the original configuration settings.  The same could be said of cloning an OS that originally had AHCI turned off followed by a clone to the SSD where TRIM was not being passed, simply because AHCI has to activated for TRIM to function.
    ENHANCE SSD OVER PROVISIONING MANUALLY
    In our conversation, we breached the topic of SSD capacity to Mr Smith to which he replied, “Are you trying to optimize performance or maximize capacity?” which reminded us that the main purpose of the consumers transition to SSD was to maximize their system performance.  Filling a drive to capacity will hinder TRIM and GC ability which will result in performance degradation. Many drives will start to display performance changes once filled to 70% capacity.  Testing has shown that the user can very simply add to the drive, especially if it is a 7% over provisioned drive, by reducing the size of the partition, the new unallocated space of which will automatically be picked up as over provisioning and benefit the SSD in many ways.  This idea has been tackled by Fusion IO who includes a utility within their products that allows the user complete control of the size of their over provisioning.
    OWC 120Gb SSD With 16x8Gb NAND Flash = 128Gb Total (7% OP)
    Over provisioning allows more data to be moved at one time which, not only enhances GC,  but also reduces write amplification to the drive.  Write amplification is a bit tricky of an explanation but it is the measure of how many bytes are actually written when requiring storage of a certain number of bytes.  A ratio of 1:1 would be ideal but not a reality and a typical result would be an actual size of 40kb written for a typical 4kb file.  In short, maximizing over provisioning and reducing write amplification increases the performance and lifespan of the drive.  Over provisioning also provides for remapping of blocks should the bad blocks be discovered during wear leveling, which unlike a hard drive, does not reduce the end user capacity of the drive. The replaced blocks simply come from the over provisioning.
    http://thessdreview.com/ssd-guides/optimization-guides/ssd-performance-loss-and- its-solution/
    Reducing the time GC takes
    Increasing the amount of freespace available after a GC (which increases the time it takes for performance to degrade after a GC)
    It lets the FTL have a wider selection of pages to choose from when it when it need a new page to write to, which means it has a better chance of finding low write count pages, increasing the lifespan of the drive
    Now, I want to be clear, a sufficiently clever GC on a drive that has enough reserved space might be able to do very well on its own, but ultimately what TRIM does is give a drive GC algorithm better information to work with, which of course makes the GC more effective. What I showed above was a super simple GC, real drive GCes take a lot more information into account. First off they have to deal with more than two blocks, and their data takes up more than a single page. They track data locality, they only run against blocks have hit certain threshold of invalid pages or have really bad data locality. There are a ton of research papers and patents on the various techniques they use. But they all have to follow certain rules based on on the environment they work in, hopefully this post makes some of those clear.
    http://www.devwhy.com/blog/2009/8/4/from-write-down-to-the-flash-chips.html

Maybe you are looking for

  • How can I fix the stability of my wifi module

    Hello I have an Imac 27" Core i7 3.4 Ghz 8Go Ram running under Lion 10.7.2, I am using a NAS connected through wifi, Everything worked well since july 2011, but since about a week my connection wifi seemes to be very unstable and it induces the finde

  • Unable to select the created Ports(greyed out) in the import manager

    Hi , We have created some ports with specific Remote system and XML schema's and also assigned the map to it. The processing type is manual for now,since we want to load data manually using import manager from the Ready folder of the port since PI is

  • Oracle Calendar desktop client connect to oracle database

    Hi Expert, my end user want to Oracle Calendar desktop client connect to our 10G databasae. there are no TNS file in Oracle Calendar desktop client. How to configure Oracle Calendar desktop client to connect oracle database? Thanks JIm

  • Starting up Externally

    Yep, dropped my computer today. Went through a light show of colors. I hard rebooted and the apple icon (with sound) and spinning wheel came on but took longer than usual and now I'm on the Starting Mac screen, the bar loaded after a longer than usua

  • Ios game apps, access

    I planned to release a ios game using action script but, the game itself is free but certain feature like extra stage or hidden character will only be available only when user pay for it.....how do you do it using action script?