var TITEMS = [ 
 ["Introduction", "introduction.htm", "11"],
 ["ABAP Language", null, "1",
  ["Amount and Currency", null, "1",
   ["Language Dependent Formatting", "abap language/amount and currency/languagedependentformatting.htm", "11"]
  ],
  ["Dynamic Programming", null, "1",
   ["Assign Variable Type At Runtime", "abap language/dynamic programming/assignvariabletypeatruntime.htm", "11"],
   ["Dynamic Opren SQL", "abap language/dynamic programming/dynamicopensql.htm", "11"],
   ["Dynamic Program Generation", "abap language/dynamic programming/dynamicprogramgeneration.htm", "11"],
   ["Dynamic Tokens", "abap language/dynamic programming/dynamictokens.htm", "11"],
   ["Field Symbols", "abap language/dynamic programming/fieldsymbols.htm", "11"],
   ["Dynamically read fields, fieldnames and fieldcontents", "abap language/dynamic programming/dynamically read fields - fieldnames and fieldcontents.htm", "11"],
   ["Dynamic assignment of fields in a structure", "abap language/dynamic programming/dynamic assignment of fields in a structure.htm", "11"],
   ["Select with Variable", "abap language/dynamic programming/selectwithvariable.htm", "11"]
  ],
  ["Forms", null, "11"],
  ["Date and Time", null, "1",
   ["Working with weeks", "date and time/working with weeks.htm", "11"],
   ["Validate a date", "date and time/validate a date.htm", "11"],
   ["Calling F4 help for date", "date and time/calling f4 help for date.html", "11"]
  ],
  ["Other stuff", null, "1",
   ["Messages", "abap language/other stuff/messages 001.htm", "11"],
   ["ALV Grid  Using Function Modules", "abap language/other stuff/alv grid  using function modules.html", "11"],
   ["ALV Grid using ABAP Objects - Simple example", "abap language/other stuff/alv grid using objects - simple example.html", "11"],
   ["ALV Grid - Page Numbering Problem", "abap language/other stuff/alv grid - page numbering problem.html", "11"],
   ["Change documents and change pointers", "abap language/other stuff/change documents and change pointers.htm", "11"],
   ["Strings", "abap language/other stuff/strings.htm", "11"],
   ["System Variables", "abap language/other stuff/system variables.html", "11"],
   ["Trouble Shooting ABAP Programs", "abap language/other stuff/trouble shooting abap programs.html", "11"],
   ["Find the list of SAP Transaction codes", "abap language/other stuff/table with all transaction codes.htm", "11"],
   ["Locking a program so it can only ne executed once at a time", "abap language/other stuff/locking a program so it can only ne executed once at a time.htm", "11"],
   ["Program to find out all the User Exits Available for any Tcode", "abap language/other stuff/program to find out all the user exits available for any tcode.htm", "11"],
   ["RFC function module to check user id and password", "abap language/other stuff/rfc function module to check user id and password.htm", "11"]
  ]
 ],
 ["Reporting", null, "1",
  ["Report Template", "reporting/reporttemplate.htm", "11"],
  ["Calling another report from your own report", "reporting/callingreportfromreport.htm", "11"],
  ["Call a dialog screen from a report and passing data", "reporting/callingdialogscreen.htm", "11"],
  ["Call dialog screen from report and update data", "reporting/call dialog screen from report - example 2.html", "11"],
  ["Control Level Reporting", "reporting/controlevelreporting.htm", "11"],
  ["Checking if a valid line is selected before drill down", "reporting/checforvalidlines.htm", "11"],
  ["Interactive Reporting (Dril Down Reporting) - Example", "reporting/interactivereporting.htm", "11"],
  ["Dynamic line-size", "reporting/dynamiclinesize.htm", "11"],
  ["Positioned Write", "reporting/positionedwrite.htm", "11"],
  ["Managing Report Output", "reporting/managingoutput.htm", "11"],
  ["Reading mulitiple selected lines in a list", "reporting/readingmultipleselelctedlines.htm", "11"],
  ["Using a checkbox in a report", "reporting/usingcheckbox.htm", "11"],
  ["Modifying a Line in a Report", "reporting/modifyingaline.htm", "11"],
  ["NEW-LINE", "reporting/newline.htm", "11"],
  ["How to write pageno of totalpages", "reporting/pagenooftotalpage.htm", "11"],
  ["Tips and Tricks", "reporting/reportingtipsandtricks.htm", "11"],
  ["Selection Screen", null, "1",
   ["Returning to report and refresh  data after call to selection screen", "reporting/selectionscreen/refreshreport.htm", "11"],
   ["Creating F1 or F4 help", "reporting/selectionscreen/f1andf4help.htm", "11"],
   ["Clearing selection screen input", "reporting/selectionscreen/clearinput.htm", "11"],
   ["Disable Parameters in Report Selection Screen", "reporting/selectionscreen/disableparameter.htm", "11"],
   ["Tips and Tricks for Selection Screen", "reporting/selectionscreen/tipstricks_swlectionscreen.htm", "11"],
   ["Submitting another report using select-options or ranges", "reporting/selectionscreen/submitreportwithselection.htm", "11"],
   ["Validation of selection screens", "reporting/selectionscreen/validateselection.htm", "11"],
   ["Writing Select-Options in report", "reporting/selectionscreen/writingselectoptionsinreoprt.htm", "11"],
   ["Call F4 help from selection screen", "reporting/selectionscreen/call_f4_help_from_selection_screen.html", "11"]
  ]
 ],
 ["Data Dictionary", null, "1",
  ["Maintenance Views", "datadictionary/maintenanceviews.htm", "11"],
  ["Lock objects", "datadictionary/lock objects .htm", "11"],
  ["Change database table entry even if it is not allowed", "datadictionary/change database table entry even if it is not allowed.htm", "11"]
 ],
 ["Internal tables", null, "1",
  ["Free text search in a field in a internal table", "internaltables/free text search in a field in a internal table.htm", "11"],
  ["Types of Internal Tables", "internaltables/typesofinternaltables.htm", "11"],
  ["Working With Internal Tables", "internaltables/working_with_internal_tables.html", "11"]
 ],
 ["Database tables and Open SQL", null, "1",
  ["Adding Records to a Database Table", "databasetablesandopensql/addingrecordstodatabasetable.htm", "11"],
  ["Deleting Records from a Database Table", "databasetablesandopensql/deleterecordsfromdatabasetable.htm", "11"],
  ["Dynamic Opren SQL", "abap language/dynamic programming/dynamicopensql.htm", "11"],
  ["Updating database tables", "databasetablesandopensql/updating_a_databasetable.htm", "11"],
  ["Open SQL syntax examples", "databasetablesandopensql/opensqlsyntaxexamples.htm", "11"],
  ["How to read the short text for a field in a database table", "databasetablesandopensql/how to read the short text for a field in a database table.htm", "11"],
  ["Package size in SELECT statements", "databasetablesandopensql/packagesizeinselect.htm", "11"]
 ],
 ["Files", null, "1",
  ["Reading and writing files", "flatfiles/reading_and_writing_to_a_flatfile.html", "11"]
 ],
 ["Dynpro programming", null, "1",
  ["Simple example of how to make a dialog program", "dynpro programming/simple example of how to make a dialog program.htm", "11"],
  ["Update values in dynpro fields", "dynpro programming/update values in dynpro fields.htm", "11"]
 ],
 ["ABAP Objects and Control programming", null, "1",
  ["ABAP Objects", null, "1",
   ["Definitions", "abapobjects/definitions.htm", "11"],
   ["Syntax", "abapobjects/syntax.htm", "11"],
   ["Examples", null, "1",
    ["Different Examples", "abapobjects/examples.htm", "11"],
    ["Enmployee Example", "abapobjects/employee_eaxample.htm", "11"],
    ["Using Parameters in a Class", "abapobjects/example_using_parameters_in_class.htm", "11"],
    ["Converting a local class in a report to a global class", "abapobjects/converting_local_class_to_global_class.htm", "11"],
    ["How to Create an Exception Class", "abapobjects/exception_class.htm", "11"],
    ["Exception Handling in a Global Class", "abapobjects/exceptions_in_global_class.htm", "11"]
   ]
  ],
  ["Control Technology", null, "1",
   ["How to Use Controls", "abapobjects/how_to_use_controls.htm", "11"],
   ["The TextEdit control", "abapobjects/textedit_control.htm", "11"],
   ["The ALV Grid control", "abapobjects/alvgrid_control.htm", "11"],
   ["The Picture Control", "abapobjects/picture_control.htm", "11"],
   ["The SAP Toolbar control", "abapobjects/toolbar_control.htm", "11"],
   ["The SAP HTML viewer control", "abapobjects/htmlviewer_control.htm", "11"],
   ["The dialog box container and the splitter container", "abapobjects/dialog_box_container_and_splitter_container.htm", "11"]
  ]
 ],
 ["SAP Script", null, "1",
  ["Calling an ABAP sub routine", "sapscript/callingsubroutines.htm", "11"],
  ["Structure of a print program", "sapscript/structure of a print program.html", "11"],
  ["Copy Form from one Client ot Another", "sapscript/copy form from one client ot another.html", "11"],
  ["Change original language of a form", "sapscript/change original language.html", "11"],
  ["Standard Texts", "sapscript/standardtexts.htm", "11"],
  ["Format the font for one or more words on a line", "sapscript/format the font for one or more words on a line.html", "11"],
  ["Which standard texts are used by a SapScript form", "sapscript/standard_used_by_form.html", "11"],
  ["Usefull SapsScript programs", "sapscript/sapscriptusefullprograms.htm", "11"],
  ["SapScript How to get the total number of pages that will be printet", "sapscript/sapscript how to get the total number of pages that will be printet.htm", "11"],
  ["How find what is the program linked to the sapscript", "sapscript/how find what is the program linked to the sapscript .htm", "11"]
 ],
 ["IDOCs", null, "1",
  ["Define and setup for user developed IDOC", "idocs/define and setup for user developed idoc.htm", "11"],
  ["Change Pointers for a Custom Message Type", "idocs/changepointerscustommessagetype.html", "11"],
  ["Generate IDOCs from a report", "idocs/generate idocs from a report .htm", "11"],
  ["Updating IDoc data in segments", "idocs/updating idoc data in segments .htm", "11"],
  ["Master data distribution using IDOCs", "idocs/master dcata distribution using idocs.htm", "11"],
  ["How to create a function module for an IDOC", "idocs/how to create a function module for an idoc.htm", "11"],
  ["Distributing Material Master IDOC's", "idocs/distributing_material_master_idoc_using_changepointers.htm", "11"],
  ["Inbound IDOC Development", "idocs/inbound_idoc_development.htm", "11"],
  ["Sending Master Data IDOCs", "idocs/master dcata distribution using idocs.htm", "11"],
  ["How to USe a Filter in a Distribution Model", "idocs/how_to_use_a_filter_in_a_distribution model.htm", "11"],
  ["Miscellaneous tips part 1", "idocs/tips and tricks for idocs.html", "11"],
  ["Miscellanous Tips part 2", "idocs/miscellanous tips part 2.htm", "11"]
 ],
 ["Bapi Programming", null, "1",
  ["Introduction", "bapiprogramming/introduction.htm", "11"],
  ["Conventions", "bapiprogramming/conventions.htm", "11"],
  ["Example", null, "1",
   ["Introduction", "bapiprogramming/introduction.htm", "11"],
   ["Define a structures for the BAPI", "bapiprogramming/step1.htm", "11"],
   ["Write Function Module", "bapiprogramming/step2.htm", "11"],
   ["Create the API Method Using the BAPI WIZARD", "bapiprogramming/step3.htm", "11"],
   ["Final steps", "bapiprogramming/step4.htm", "11"]
  ]
 ],
 ["Call Transaction and Batch Input", null, "1",
  ["Batch Input and Call Transaction", "calltransactionandbatchinput/batchinput.html", "11"],
  ["Call transaction and Batch input - Example", "calltransactionandbatchinput/call transaction and batch input - example.htm", "11"],
  ["Formatting fields", "calltransactionandbatchinput/formattingforbatchinputandcalltransaction.html", "11"],
  ["Getting messages from call transaction", "calltransactionandbatchinput/getting messages from call transaction.htm", "11"],
  ["One or more transactions in every batch inputsession", "calltransactionandbatchinput/one or more transactions in every batch inputsession.htm", "11"],
  ["Submitting batch input from ABAP", "calltransactionandbatchinput/submitting batch input from abap.htm", "11"],
  ["What date format should be used in batch input", "calltransactionandbatchinput/what date format should be used in batch input.htm", "11"]
 ],
 ["Communication Mail amnd SAP Office", null, "1",
  ["Configuring SAP 4.6x Internet mail Gateway", "mailandcommunication/configuringinternetgateqway.htm", "11"],
  ["Setup of SCOT Internet Mail Connector", "mailandcommunication/setup of scot internet mail connector.htm", "11"]
 ],
 ["Authorizations", null, "1",
  ["Authorization groups", "authorizations/authorization groups.htm", "11"]
 ],
 ["Business Server Pages", null, "1",
  ["Concepts", "businessserverpages/bsp_concepts.htm", "11"],
  ["Tips &amp; Tricks", "businessserverpages/bsp_tricks.htm", "11"],
  ["Step by Step Example", null, "1",
   ["Part 1", "businessserverpages/step_by_step_1.htm", "11"],
   ["Part 2", "businessserverpages/step_by_step_2.htm", "11"]
  ]
 ],
 ["Enhancements to SAP Standard", null, "1",
  ["BADI", "enhancementstosapstandard/badi.htm", "11"],
  ["Business Transaction Events", "enhancementstosapstandard/business_transaction_events.html", "11"],
  ["Find User Exit for Transaction Code", "enhancementstosapstandard/find_user_exit_for_transaction code.html", "11"],
  ["Report to Find User-Exit for Transaction Code", "enhancementstosapstandard/report_to_find_userexit_for_transaction_code.html", "11"]
 ],
 ["Basis function", null, "1",
  ["Status waiting in SP01", "basis/status waiting in sp01.htm", "11"],
  ["Create Directory on Unix server", "basis/createdirectoryonunixserver.html", "11"]
 ],
 ["Performance Tuning", null, "1",
  ["Performance Tuning Checklist", "appendixes/performance_tuning.html", "11"]
 ],
 ["Application Areas", null, "1",
  ["General", null, "1",
   ["Customizing Objects Using Address Functionality", "applicationareas/general/customizing objects using address functionality.htm", "11"],
   ["Distributing Master Data using SAP standard transactions", "applicationareas/general/distributing master data using sap standard transactions.htm", "11"]
  ],
  ["FI", null, "1",
   ["FI Tables", "applicationareas/fi/fi_tables.html", "11"],
   ["FI Transaction Codes", "applicationareas/fi/fi_transactioncodes.html", "11"],
   ["Parked Documents", "applicationareas/fi/fi_parkeddocuments.html", "11"]
  ],
  ["Sales and Distribution", null, "1",
   ["Read sales document flow using a function module", "applicationareas/salesanddistribution/read_sales_document_ flow.html", "11"],
   ["Find table of Invoice History", "applicationareas/salesanddistribution/find table of invoice history.htm", "11"]
  ],
  ["HR", null, "1",
   ["HR Programming Overview", "applicationareas/hr/hr programming overview.html", "11"],
   ["Cluster tables in HR", "applicationareas/hr/cluster tables in hr.html", "11"],
   ["HR Tables", "applicationareas/hr/hr tables.htm", "11"],
   ["HR Transaction codes", "applicationareas/hr/hr transaction codes.htm", "11"],
   ["Process Infotypes", "applicationareas/hr/process infotypes.htm", "11"],
   ["Read Data from Logical Database", "applicationareas/hr/read data from logical database.htm", "11"],
   ["Read planned work schedule", "applicationareas/hr/read planned work schedule.htm", "11"],
   ["Delete info type", "applicationareas/hr/delete info type.htm", "11"],
   ["Read an info type", "applicationareas/hr/read an info type.htm", "11"]
  ],
  ["BW", null, "1",
   ["Data flow in SAP BW system", "applicationareas/bw/dataflow in a bw system.htm", "11"]
  ]
 ],
 ["JAVA for SAP", null, "1",
  ["JAVA Basics", null, "1",
   ["Structure of a Java Program", "javaforsap/javabasics/structureofjavaprogram.htm", "11"],
   ["Java Syntax", "javaforsap/javabasics/javasyntax.htm", "11"],
   ["Data Types", "javaforsap/javabasics/datatypes.htm", "11"],
   ["Objects and Classes", "javaforsap/javabasics/objects.htm", "11"],
   ["Compiling and Executing Java Programs", null, "1",
    ["Compiling and Executing a Java program", "javaforsap/javabasics/executing_a_javaprogram.htm", "11"],
    ["Calling a class in another file", "javaforsap/javabasics/calling_class_i_another_file.htm", "11"],
    ["Table example", "javaforsap/javabasics/table_example_1.htm", "11"]
   ],
   ["Graphical User Interfaces", null, "1",
    ["Graphical programming and events", "javaforsap/javabasics/graphical_programming.htm", "11"],
    ["User Interface Components with Swing", "javaforsap/javabasics/swing_components.htm", "11"],
    ["Applets", "javaforsap/javabasics/applets.htm", "11"]
   ],
   ["Tips and Tricks", "javaforsap/javabasics/tips_and_tricks.htm", "11"],
   ["Templates", "javaforsap/javabasics/templates.htm", "11"]
  ],
  ["SAP Java Connector", null, "1",
   ["Example 1: Simple RFC call", "javaforsap/javabasics/sapjava_simple_rfc.htm", "11"],
   ["Example 2: CompanyCode_GetList", "javaforsap/javabasics/sapjava_getcompanycode_list.htm", "11"],
   ["Example 3: Create Salesorder", "javaforsap/javabasics/sapjava_createsalesorder.htm", "11"],
   ["Tips and tricks for the Java connector", "javaforsap/javabasics/sap_ java_connector_tips.htm", "11"]
  ]
 ],
 ["Appendixes", null, "1",
  ["Function Modules", null, "1",
   ["Amount and Currency", "appendixes/fm_amountandcurrency.htm", "11"],
   ["Date and Time", "appendixes/fm_dateandtime.htm", "11"],
   ["Files", "appendixes/fm_files.htm", "11"],
   ["Main and SAP Office", "appendixes/fm_mailandoffice.htm", "11"],
   ["Name and Address", "appendixes/fm_nameandaddress.htm", "11"],
   ["Others", "appendixes/fm_other.htm", "11"],
   ["Pop-up Screens", "appendixes/fm_popupscreens.htm", "11"],
   ["Reports and Dynpros", "appendixes/fm_reportsanddynpros.htm", "11"],
   ["System (Logs, Directories etc.)", "appendixes/fm_system.htm", "11"],
   ["Texts", "appendixes/fm_texts.htm", "11"]
  ],
  ["Transaction Codes", "appendixes/transaction_codes.htm", "11"],
  ["SAP Tables", "appendixes/sap tables.htm", "11"]
 ]
];


var FITEMS = arr_flatten(TITEMS);

function arr_flatten (x) {
   var y = []; if (x == null) return y;
   for (var i=0; i<x.length; i++) {
      if (typeof(x[i]) == "object") {
         var flat = arr_flatten(x[i]);
         for (var j=0; j<flat.length; j++)
             y[y.length]=flat[j];
      } else {
         if ((i%3==0))
          y[y.length]=x[i+1];
      }
   }
   return y;
}

