Sap Payroll Cluster Repair   Whitepaper V1.0
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

Sap Payroll Cluster Repair Whitepaper V1.0

  • 3,310 views
Uploaded on

Have you ever had problems with your payroll cluster? These applications will allow you to make repairs.

Have you ever had problems with your payroll cluster? These applications will allow you to make repairs.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
3,310
On Slideshare
3,300
From Embeds
10
Number of Embeds
3

Actions

Shares
Downloads
50
Comments
0
Likes
1

Embeds 10

http://www.lmodules.com 6
https://www.linkedin.com 3
http://www.linkedin.com 1

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Payroll Cluster Repair Payroll Cluster Repair - Whitepaper - Author: Andreas Mau andreas@kdssc.com Klaus-Dieter Spatz klaus@kdssc.com KDS Software & Consulting, Inc 3715 Jefferson Court Redwood City, CA 94062 NOTICE KDS Software & Consulting, Inc., reserves the right to claim the following document as intellectual property. No part of this document may be reproduced or transmitted in any form or for any purpose without the express permission of KDS Software & Consulting, Inc.. The information contained herein may be changed without prior notice. 07/09/09 Page 1
  • 2. Payroll Cluster Repair Table of Contents 1 HR CLUSTERS ............................................................................................................. 3 1.1 Introduction ................................................................................................................. 3 2 PAYROLL CLUSTER REPAIR ..................................................................................... 6 2.1 Rx and B2 Cluster Check and Repair ......................................................................... 6 2.2 Customer Priorities ..................................................................................................... 6 3 DEFINITION AND SPECIFICATIONS........................................................................... 7 3.1 Definition..................................................................................................................... 7 3.2 Application .................................................................................................................. 8 3.2.1 Cluster Check...................................................................................................... 8 3.2.1.1 Find defect Clusters .................................................................................................................................... 9 3.2.1.2 Handling exception CONNE_IMPORT_ILL_OBJECT_TYPE.................................................................... 10 3.2.2 Cluster Repair (Reconstruction)...................................................................... 10 3.2.2.1 Repair cluster ............................................................................................................................................ 10 3.2.2.2 Create empty cluster ................................................................................................................................. 10 3.2.2.3 Restrictions and Limitations ...................................................................................................................... 11 3.3 2.4 Transport of Single Cluster entries from Backup ................................................ 11 3.4 Performance ............................................................................................................. 11 3.5 Reliability .................................................................................................................. 12 3.6 Durability................................................................................................................... 12 3.7 Simplicity and Aesthetics .......................................................................................... 12 4 SERVICEABILITY AND MAINTENANCE ................................................................... 13 5 APPENDIX .................................................................................................................. 14 5.1 ZPTT_MAU_03......................................................................................................... 14 5.2 ZPT_MAU_04 ........................................................................................................... 16 07/09/09 Page 2
  • 3. Payroll Cluster Repair 1 HR Clusters 1.1 Introduction The HR module utilizes so called clusters to store information in a variety of areas. Some of the cluster tables are PCL1, PCL2, PCL3, PCL4, and PCL5, as shown in Fig. 1. Clusters can be understood as a deep structure that contains multiple tables. Cluster tables are compressed and therefore allow saving database space. In HR they are used to store long texts, notes related to infotypes and of course payroll results and payroll directories. PCL1 TX Infotype texts TE Travel expenses TA General data for accounting of travel expenses PCL2 ID Interface toolbox – directory of interface results ZL Time wage types and work schedule RU Payroll results (US) PCL3 TY Applicant data texts AP Applicant actions PCL4 P2 Log for RPCALX0 and RPTIME00 U1 Tax reporter forms for US PCL5 PY Payroll data for personnel cost planning CP Planning run data for personnel cost planning STXL TX Notes related to infotypes Fig. 1.: Component diagram of a Payroll Posting Outsourcing Solution All these tables have a predefined structure. The structure of one of these tables is shown in Fig. 1. 07/09/09 Page 3
  • 4. Payroll Cluster Repair Fig. 2.: Structure of PCL1 The tables that store clusters have the following fields in common: RELID – This is a two-character field that identifies the cluster, e.g., TX, RX, etc. SRTFD – This field denotes the key passed by the application program while importing and exporting data stored in a particular cluster. This is similar to key fields for a database table that uniquely identify a record. Generally, the key is comprised of the fields mentioned between RELID and SRTF2 in the table definition. In the case of table PCLX , there is only one – field SRTFD. However, in the case of table STXL, fields TDOBJECT, TDNAME, TDID, and TDSPRAS collectively make up the key. SRTF2 – This serves an additional or a duplicate key field. This field is utilized when the fields SRTFD and RELID alone are not sufficient for uniquely identifying a table record. If a record is more than one line long, then a new row is inserted with a different SRTF2. For the first (or the only) row, this field has a value of 0. If the cluster data corresponding to the same SRTFD value extends over multiple lines, new rows are inserted with an incremented value of SRTF2 such as 1, 2, 3 and so on. The system judges the size of data and the possible increment in the SRTF2 field value, so the developer need not worry about it. CLUSTR – This field shows the size (in bytes) of the data stored in a particular table row CLUSTD – This contains the actual data, for instance the infotype text, stored in compressed form Storing data in the form of clusters lets you create logical partitions within one database table. A single table may be used for storing data from different functional areas. This relieves the 07/09/09 Page 4
  • 5. Payroll Cluster Repair developer from creating separate tables (and programming update functions) for data belonging to each application area. For example, PCL1 table comprises of clusters TX and TE for storing infotype text and data of travel expenses, respectively. A two-character ID in field RELID identifies each cluster. Via clusters, a single table may be used to store data (such as long text related to a variety of application areas) under a separate cluster ID with a single key value. Otherwise, this information (e.g., long text, internal tables, and flat data structures) would have to be stored in separate table. Data may be exported to and imported from the table via the usage of EXPORT and IMPORT statements, respectively. For more information about these two ABAP commands, refer to the SAP documentation (SAP Library>mySAP Technology Components>SAP Web Application Server>ABAP Programming and Runtime (BC-ABA)>The ABAP Programming Language>Saving Data Externally>Saving Data Objects as Clusters>Data Clusters in the Database). You may use the following code in your ABAP programs to import data from a cluster. IMPORT ITAB1 ITAB2 STRUC1............. FROM DATABASE TABNAME(CLUSTER_ID) ID KEY. The data objects (residing in the cluster) that you want to access must be specified after the IMPORT keyword. While importing, it is unnecessary to access all the data objects stored in the cluster. The table name (TABNAME), cluster key (KEY), and cluster ID must also be mentioned in order to access the desired data. Moreover, you need to create the correct key (KEY) before calling the IMPORT statement. When the IMPORT statement is executed, the data (in compressed form) that corresponds to the cluster key is read from the field CLUSTD. This data is decompressed (and converted) to its original form and then made available to the calling program. On the execution of an EXPORT statement, data is compressed and then stored in the database. Use your ABAP program and the following custom code to export data to the database: EXPORT ITAB1 ITAB2 STRUC1 TO DATABASE TABNAME(CLUSTER_ID) ID KEY. 07/09/09 Page 5
  • 6. Payroll Cluster Repair 2 Payroll Cluster Repair 2.1 Rx and B2 Cluster Check and Repair In general any hardware based caused of defective database entries cannot be repaired. Damage of database content may have happened in single entries leading to incorrect data which cannot be corrected. Reconciliation of historic records may find errors in single entries. The procedures in this document can help to partially restore defective data but do not implicate correctness of all historic data. Usage of the programs herein should only be the very last resort to reconstruct and repair lost and damaged cluster entries. Basic  Finds defective clusters  Repairs clusters to a certain degree  Can create empty dummy cluster entries Custom Options  Optional: Load lost cluster results  Optional: Allow to store simulation results 2.2 Customer Priorities Here a comprehensive list of high customer priorities for Payroll Cluster Repair: 1. Easy to use applications 2. Fast determination of defective payroll clusters 3. Ability to monitor payroll results and details 4. Ability to extend the use of existing SAP components rather than solution replacements 5. Efficient performance 6. Standard look and feel of resulting applications 07/09/09 Page 6
  • 7. Payroll Cluster Repair 3 Definition and Specifications 3.1 Definition Two programs have been created to allow cluster checking and repair for RQ and B2 clusters. These are: ZP_TT_MAU_03 Cluster RQ check and repair Fig. 3.: Cluster Repair 1 The selection is also the key of the cluster entry, where the key in cluster table PCL2 for cluster RQ is a concatenation of Personnel number + Sequence number. 07/09/09 Page 7
  • 8. Payroll Cluster Repair ZP_TT_MAU_04 Cluster B2 check and repair Fig. 4.: Cluster Repair 2 The selection is also the key of the cluster entry, where the key in cluster table PCL2 for cluster B2 is a concatenation of Personnel number + Accounting year + Accounting period + digit ‘1’. 3.2 Application 3.2.1 Cluster Check The cluster check programs have an option “Find defect clusters” which allows finding defective clusters except those which cause an exception. Clusters with this exception are not recoverable as the cluster dictionary reference has been completely compromised and does not allow a reconstruction. In general repair of cluster entries should only be done via transport of the entry from a backup copy as described in section “Transport of Single Cluster entries from Backup”. 07/09/09 Page 8
  • 9. Payroll Cluster Repair Add-On Options Payroll Cluster Repair Payroll /KDSSC/… Results Cluster View Payroll Directory Fig. 5.: Data flow diagram of the Payroll Cluster Repair 3.2.1.1 Find defect Clusters Running the program will result in a list of defect cluster entries. These can be looked up with cluster programs RPCLSTRx and RPCLSTB2 for the respective cluster. Running these pro- grams and checking the cluster entries of the list will result in a short dump with the respective cluster error/exception. For repair of single cluster entries refer to section “ Transport of Single Cluster entries from Backup”. A short dump will occur if the exception happened. Make sure that you exclude all personnel numbers that still have this exception from the run using the selection options. After all EEs causing short dumps have been excluded run the program again for the entire selection to get a final list. Remember to record all short dump key as well. A system administrator may choose to use this report to search for cluster defects on a regular basis should there be problems with cluster data in general. It is recommended to search for the cause of the database problems before continuing any activities. Continuation of daily activities should only happen if a production down cannot be prevented otherwise. 07/09/09 Page 9
  • 10. Payroll Cluster Repair 3.2.1.2 Handling exceptions If a short dump occurs with the exception you can retrieve the personnel key 1. On the short dump screen hit the “debugging” button. 2. For RQ cluster: by typing rx-key in the field content and hit enter. Write the entire key down. The first 8 digits are the personnel number, the next 5 are the sequence number. 3. For B2 cluster: by typing b2-key in the field content and hit enter. Write the entire key down. The first 8 digits are the personnel number, the next 6 are the year and period. 4. Exclude the entire personnel number causing the short dump from the next run by using the selection option (exclusion list) and run the program again either from this personnel number or entirely again. 5. Record all occurrences of this exception including the keys as described above. 3.2.2 Cluster Repair (Reconstruction) USE EXTREM CAUTION, PREFERABLY SKIP TO THE NEXT SECTION The incorrect use of this option may lead to further data loss. In general clusters should not be reconstructed with this method if an intact backup copy is available. This method should only be used to reconstruct a cluster if a backup copy is NOT available. If a backup copy of the cluster is available please skip this section and follow the steps in section „Transport of Single Cluster entries from Backup“. 3.2.2.1 Repair cluster This option allows to reconstruct damaged cluster entries by ignoring the danged portion of the entry. This reconstruction will have some data loss and is never a complete reconstruction. For complete reconstruction always use copies from a backup. After reconstruction a retro calculation may find differences which have to be carefully reviewed as the data may show differences to the original. 3.2.2.2 Create empty cluster In case the cluster cannot be reconstructed as described above this option allows to at least create an empty cluster which can be filled 07/09/09 Page 10
  • 11. Payroll Cluster Repair 3.2.2.3 Restrictions and Limitations Usage of this option may result in further loss of data if used incorrectly. Examples are: incorrect key specifications or range selections resulting in deletion of other data. The cluster repair does not allow an exact repair. There may be data losses in entire result tables or single entries may be damaged and show wrong data. Always restore data only as described in the next section. 3.3 2.4 Transport of Single Cluster entries from Backup In case of total cluster destruction the original result cannot be reconstructed via repair and retro calculations. It is always recommended to use a backup copy to repair single results. For this the backup copy has to be restored to a different system in the same client as the original. If the production system is PRD client 010. Then the backup should be restored to a separate system BCK client 010. Otherwise the transport of single cluster entries will not work. The following steps are needed 1. Restore backup to separate system where PRD client (production system) = BCK client (backup system) 2. Create an workbench transport via transaction SE09. 3. Edit the transport entry and add an entry: R3TR TABU PCL2. 4. Add table keys for the damaged cluster entries only. Check your entries by utilizing transaction SE16 for cluster table PCL2 and the respective keys. Note that the key requires you to enter the client (e.g. ‘010’), the cluster (e.g. ‘RQ’), the cluster key (e.g. eeeeeeeesssss). Expertise in transporting table entries is required for this step! 5. CAUTION: During the transport confirm that only the entries selected are being transported! 6. Import the transport in the corruptive system. 7. Run the cluster check again for the entire population without any selections and make sure there are no further corruptions in the system. Should there be additional defects commence as described above until no further defects are found. 3.4 Performance The application will perform very fast. Only in the case that massive incoming posting data needs to be analyzed will performance be impacted. 07/09/09 Page 11
  • 12. Payroll Cluster Repair 3.5 Reliability To approach software reliability1 we utilize the best engineering methods to improve software reliability of our solutions. Before the deployment of software solutions, testing, verification and validation will be performed. Software testing in form of unit and acceptance tests is used to minimize the possibility of defect occurrences after release and therefore improve our software reliability. After deployment of our software solutions, field data will be gathered and analyzed to improve the software and provide updates as necessary. 3.6 Durability We achieve software durability2 through an pragmatic approach that combines object oriented techniques (OOTs) with formal description techniques (FDTs). OOTs help system analysts and designers to bring modularization and structure to the programs to permanently commit data changes. The main focus of FDTs is to ensure the correctness of the final system by the provision of extensive validation and verification methods. 3.7 Simplicity and Aesthetics It is a requirement that the solution will be easy to use and to maintain. There should be no special knowledge needed to run the application. All of this should ultimately lead to a good user-perceived quality of the solution. 1 According to ANSI, Software Reliability is defined as: the probability of failure-free software operation for a specified period of time in a specified environment. Software Reliability is an important attribute of software quality, together with functionality, usability, performance, serviceability, capability, installability, maintainability, and documentation. Software Reliability is usually hard to achieve, because the software complexity tends to be high. 2 In computer science, durability is the property that guarantees that transactions that are successfully committed will survive permanently and will not be undone by system failure. 07/09/09 Page 12
  • 13. Payroll Cluster Repair 4 Serviceability and Maintenance As defined in the Solution Definition and Specifications above various objects are to be created to allow proper configuration of the solution. 07/09/09 Page 13
  • 14. Payroll Cluster Repair 5 Appendix 5.1 ZPTT_MAU_03 REPORT zptt_mau_03 . TABLES: pcl1, pcl2. DATA: pn-paper TYPE paper. INCLUDE rpc2rqq0. "Cluster RQ data definition INCLUDE rpc2rx09. "Cluster RX data definition internat. part INCLUDE rpppxd00. "Data definition buffer PCL1/PCL2 DATA: BEGIN OF COMMON PART buffer. INCLUDE rpppxd10. "Common part buffer PCL1/PCL2 DATA: END OF COMMON PART. INCLUDE rpppxm00. "Buffer handling routine DATA: gl_pernr TYPE p_pernr, gs_rgdir TYPE pc261, gt_rgdir TYPE pc261 OCCURS 0, gs_data TYPE hrpy_rgdir, gt_data TYPE hrpy_rgdir OCCURS 0. SELECTION-SCREEN BEGIN OF BLOCK s01 WITH FRAME TITLE text-001. SELECT-OPTIONS: s_pernr FOR gl_pernr NO INTERVALS. PARAMETERS: s_seqnr TYPE cdseq. SELECTION-SCREEN END OF BLOCK s01. SELECTION-SCREEN BEGIN OF BLOCK s02 WITH FRAME TITLE text-002. PARAMETERS: s_find TYPE xfeld RADIOBUTTON GROUP rd1 DEFAULT 'X', s_repair TYPE xfeld RADIOBUTTON GROUP rd1, s_repai2 TYPE xfeld RADIOBUTTON GROUP rd1, s_test TYPE xfeld DEFAULT 'X'. SELECTION-SCREEN END OF BLOCK s02. INITIALIZATION. CALL FUNCTION 'POPUP_TO_INFORM' EXPORTING titel = 'CAUTION' txt1 = 'CAUTION: This report allows to repair defective' txt2 = 'RQ clusters.' txt3 = ' ' txt4 = ' ' EXCEPTIONS OTHERS = 0. START-OF-SELECTION. * show progress indicator 07/09/09 Page 14
  • 15. Payroll Cluster Repair CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' EXPORTING percentage = 30 text = 'Checking clusters ...'. SELECT * FROM pcl2 WHERE relid = 'Rx'. gl_pernr = pcl2-srtfd(8). CHECK gl_pernr IN s_pernr. * initialize buffer * refresh cluster tables before accessing new result IF ( s_repair = 'X' ) OR ( s_find = 'X' ). * set keys rx-key-pernr = pcl2-srtfd(8). " '01900117'. rx-key-seqno = pcl2-srtfd+8(5). " '00176' . IF NOT s_seqnr IS INITIAL. CHECK rx-key-seqno = s_seqnr. ENDIF. * import result without exceptions ... rp-imp-c2-rq. ENDCATCH. ELSEIF s_repai2 = 'X'. IF s_seqnr IS INITIAL. EXIT. ENDIF. * set keys rx-key-pernr = pcl2-srtfd(8). " '01900117'. rx-key-seqno = pcl2-srtfd+8(5). " '00176' . IF NOT s_seqnr IS INITIAL. CHECK rx-key-seqno = s_seqnr. ENDIF. rx-key-seqno = s_seqnr. " '00176' . * import result directly from PCL2 ... sy-subrc = 1. ENDIF. IF sy-subrc <> 0. * show progress indicator CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' EXPORTING percentage = 60 text = pcl2-srtfd. * WRITE: / pcl2-srtfd(8), pcl2-srtfd+8(5). CLEAR: gs_data. gs_data-pernr = pcl2-srtfd(8). gs_data-seqnr = pcl2-srtfd+8(5). ... 07/09/09 Page 15
  • 16. Payroll Cluster Repair MOVE-CORRESPONDING gs_rgdir TO gs_data. APPEND gs_data TO gt_data. IF ( s_repair = 'X' ) OR ( s_repai2 = 'X' ). * BREAK-POINT. * export result to itself (in case of s_repai2 tables and * structures will be empty!!!) ... * import result from buffer as additional check before update * update cluster IF s_test IS INITIAL. ... ENDIF. ENDIF. ENDIF. ENDSELECT. * Call ABAP/4 List Viewer CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY' EXPORTING i_callback_program = sy-cprog i_structure_name = 'HRPY_RGDIR' i_save = 'A' " A = All => Standard & User TABLES t_outtab = gt_data. 5.2 ZPT_MAU_04 REPORT zptt_mau_04 . TABLES: pcl1, pcl2. DATA: pn-paper TYPE paper. DATA: pn-begda TYPE begda. DATA: pn-endda TYPE endda. INCLUDE rpc2rqq0. "Cluster RQ data definition INCLUDE rpc2rx09. "Cluster RX data definition internat. part INCLUDE rpppxd00. "Data definition buffer PCL1/PCL2 DATA: BEGIN OF COMMON PART buffer. INCLUDE rpppxd10. "Common part buffer PCL1/PCL2 DATA: END OF COMMON PART. INCLUDE rpppxm00. "Buffer handling routine *INCLUDE rpc2ps00. *INCLUDE rpcfdc10. 07/09/09 Page 16
  • 17. Payroll Cluster Repair *INCLUDE rpcfdc09. INCLUDE rpc2b201. INCLUDE rpc2b202. INCLUDE rptdat00. " common part otables, additional fields DATA: gl_pernr TYPE p_pernr, gs_data TYPE pc2b0, gt_data TYPE pc2b0 OCCURS 0. SELECTION-SCREEN BEGIN OF BLOCK s01 WITH FRAME TITLE text-001. SELECT-OPTIONS: s_pernr FOR gl_pernr NO INTERVALS. SELECT-OPTIONS: s_pabrj FOR gs_data-pabrj NO INTERVALS, s_pabrp FOR gs_data-pabrp NO INTERVALS. SELECTION-SCREEN END OF BLOCK s01. SELECTION-SCREEN BEGIN OF BLOCK s02 WITH FRAME TITLE text-002. PARAMETERS: s_find TYPE xfeld RADIOBUTTON GROUP rd1 DEFAULT 'X', s_repair TYPE xfeld RADIOBUTTON GROUP rd1, s_repai2 TYPE xfeld RADIOBUTTON GROUP rd1, s_test TYPE xfeld DEFAULT 'X'. SELECTION-SCREEN END OF BLOCK s02. INITIALIZATION. CALL FUNCTION 'POPUP_TO_INFORM' EXPORTING titel = 'CAUTION' txt1 = 'CAUTION: This report allows to repair defective' txt2 = 'B2 clusters.' txt3 = ' ' txt4 = ' ' EXCEPTIONS OTHERS = 0. START-OF-SELECTION. * show progress indicator CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' EXPORTING percentage = 30 text = 'Checking clusters ...'. SELECT * FROM pcl2 WHERE relid = 'B2'. gl_pernr = pcl2-srtfd(8). CHECK gl_pernr IN s_pernr. * initialize buffer * set keys b2-key = pcl2-srtfd. CHECK b2-key-pabrj IN s_pabrj. CHECK b2-key-pabrp IN s_pabrp. * finalize B2 key PERFORM check_cluster_b2. ENDSELECT. * Call ABAP/4 List Viewer CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY' EXPORTING 07/09/09 Page 17
  • 18. Payroll Cluster Repair i_callback_program = sy-cprog i_structure_name = 'PC2B0' i_save = 'A' " A = All => Standard & User TABLES t_outtab = gt_data. *---------------------------------------------------------------------* * FORM check_cluster_b2 * *---------------------------------------------------------------------* * ........ * *---------------------------------------------------------------------* FORM check_cluster_b2. * refresh cluster tables before accessing new result ... IF ( s_repair = 'X' ) OR ( s_find = 'X' ). * import result without exceptions ... ELSEIF s_repai2 = 'X'. * import result directly from PCL2 PERFORM pcl2_exp_imp USING 'READ'. sy-subrc = 1. ENDIF. IF sy-subrc <> 0. * show progress indicator CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' EXPORTING percentage = 60 text = pcl2-srtfd. * WRITE: / pcl2-srtfd(8), pcl2-srtfd+8(5). CLEAR: gs_data. MOVE-CORRESPONDING b2-key TO gs_data. APPEND gs_data TO gt_data. IF ( s_repair = 'X' ) OR ( s_repai2 = 'X' ). * BREAK-POINT. * export result to itself ... * import result from buffer as additional check before update * update cluster IF s_test IS INITIAL. ... ENDIF. ENDIF. ENDIF. ENDFORM. 07/09/09 Page 18
  • 19. Payroll Cluster Repair Disclaimer Some software products marketed by KDSSC contain proprietary software components of other software vendors. TM ® ® PDF , Adobe , Adobe Acrobat , and other related products are trademarks or registered trademarks of Adobe Systems, Inc. SAP, R/3, mySAP, mySAP.com, xApps, xApp, and other SAP products and services mentioned herein as well as their respective logos are trademarks or registered trademarks of SAP AG in Germany and in several other countries all over the world. ® ® ® ® ® ® ® Microsoft , WINDOWS , NT , EXCEL , Word , PowerPoint and SQL Server are registered trademarks of Microsoft Corporation. ® HTML, DHTML, XML, XHTML are trademarks or registered trademarks of W3C , World Wide Web Consortium, Massachusetts Institute of Technology. ® ® JAVA is a registered trademark of Sun Microsystems, Inc., JAVASCRIPT is a registered trademark of Sun Microsystems, Inc., used under license for technology invented and implemented by Netscape. All other products and services mentioned within this document are the trademarks of their respective companies. 07/09/09 Page 19