{"text_format":"1","workbook":"xlsx","n_sheets":3,"sheets":["SE16","Instructions","Materials"],"not_rendered":{"charts":0,"images":1,"macros":1,"external_links":0,"defined_names":0,"comments":0,"pivot_tables":0},"unopened":[],"bounds":{"document_bytes":16777216,"sheet_cells":100000,"rows_first":2000,"rows_last":500,"rows_between":2000,"halvings":0,"cell_chars":16384,"cell_head_chars":4096},"cells_cut":0,"cells_raw":0,"read":"whole","date_system":"1900"}

{"sheet":"SE16","index":0,"n_rows":11,"n_cols":5,"rows_kept":11,"cut":false,"hidden":false,"merged":[]}
["Put the description of your server here. ","Tables"]
[null,"MARA","MATNR,LAISO,MEINS,MATKL,WGBEZ,WGBEZ60,MTART,PRDHA,ERSDA,LAEDA,SPART,LABOR,MSTAE,NORMT,FERTH,LVORM,TEMPB,BEGRU,IHIVI,ILOOS,PROFL,/BAY0/AAUVP,RMATP,GEWEI,NTGEW,BRGEW,VOLUM,VOLEH,GROES","Materials/A:A"]
[null,"MAKT","MATNR,SPRAS,MAKTX","Materials/A:A"]
[null,"MEAN","MATNR,EAN11,LFNUM,EANTP,HPEAN,MEINH","Materials/A:A"]
[null,"MVKE","MATNR,VKORG,VTWEG,MVGR1,MVGR2,MVGR3,MVGR4,MVGR5,VRKME,LVORM","Materials/A:A"]
[null,"SetCellValue","MARA/A1","OBJEK"]
[null,"INOB","CUOBJ,KLART,OBTAB,OBJEK","MARA/A:A"]
[null,"SetCellValue","INOB/A1","OBJEK"]
[null,"ZeroPadCells","INOB/A:A",18]
[null,"AUSP","OBJEK,ATINN,KLART,ATWRT,ATFLV","INOB/A:A","INOB/B:B"]
[null,"CABN","ATINN,ATNAM","AUSP/B:B"]

{"sheet":"Instructions","index":1,"n_rows":29,"n_cols":5,"rows_kept":29,"cut":false,"hidden":false,"merged":[]}
["Start by changing the value in cell A1 on the SE16 tab to the Name of the server to which this tool will connect.  This is how the VBA code knows to which server to connect and must be the full Description from SAP Logon and not just the 3-character ID of the server.   \n\nIn the SE16 tab in Column B, put the name of the table in SAP to be extracted.  This will cause the tab to be created and populated from the table.  If specific fields are required then list those separated by comma (no spaces) in Column C.  \n\nIn columns D, E and F, feel free to include ranges in other Excel tabs that include a header that matches the field name and the values from that field in the table on which to filter.  The format is TabName/Range and there are plenty of examples in the Material Master extract code below. \n\nTo pull additional data from the table and append it to the same tab, add \"/Append\" to the name of the table in Column B.  In the example below, the AUSP table is appended with additional data to get both the 023 Batch Classifications and 001 Material Master Classifications using \"AUSP/Append\".\n\nInstead of a table name in Column B, a special function can be called to massage the data inbetween extracts.  Feel free to add any required functions to the VBA code, but these are inbuilt currently. \nSetCellValue: Used to populate the value of a single cell, usually to prepare a filter for an extract.\nZeroPadCells: Just as the name implies, this function pads numeric values in the range specified with leading zeros. \nRunCode: Used to call custom code to manipulate the data or to generate custom reports.  This is were SQL joins can be simulated to populate new tabs.  For an example, see how the RunCode command from the Material Master example below callse the GenerateClass function.  That function is in the VBA code of the SE16 tab.\n\nIf the program crashes because of a library (DLL) error or the VPN connection drops then just click the Proceed button again.  The code will pick up where it left off; it looks in column A to see which items have already been performed.\n"]
[]
[]
[]
["For Material Master reporting, use the code below.  Be sure to create a \"Materials\" tab and list the Material Master numbers to be reported in Column A with the header \"MATNR\".  Optionally, put the Sales Orgs in Column B under the header \"VKORG\" and the Characteristics in column C with the header \"ATNAM\".  The RunCode calls the VBA code that knits together the data from MARA, INOB, AUSP, CABN, CABNT, CAWN, CAWNT, KSSK, KLAH and KSML tables. \n\nThis is just some sample extract.  Feel free to include other tables or to add or remove fields from column C.  Custom reporting can be created using custom VBA functions called by the RunCode command in the B column."]
[]
["The Description of your server (not the 3-char id) goes in cell A1.","Tables"]
[null,"MARA","MATNR,LAISO,MEINS,MATKL,WGBEZ,WGBEZ60,MTART,PRDHA,ERSDA,LAEDA,SPART,LABOR,MSTAE,NORMT,FERTH,LVORM,TEMPB,BEGRU,IHIVI,ILOOS,PROFL,/BAY0/AAUVP,RMATP,GEWEI,NTGEW,BRGEW,VOLUM,VOLEH,GROES","Materials/A:A"]
[null,"SetCellValue","SE16/K1","SPRAS"]
[null,"SetCellValue","SE16/K2","EN"]
[null,"MAKT","MATNR,SPRAS,MAKTX","Materials/A:A","SE16/K:K"]
[null,"MEAN","MATNR,EAN11,LFNUM,EANTP,HPEAN,MEINH","Materials/A:A"]
[null,"MVKE","MATNR,VKORG,VTWEG,MVGR1,MVGR2,MVGR3,MVGR4,MVGR5,VRKME,LVORM","Materials/A:A","Materials/B:B"]
[null,"T179T","SPRAS,PRODH,VTEXT","SE16/K:K"]
[null,"SetCellValue","MARA/A1","OBJEK"]
[null,"INOB","CUOBJ,KLART,OBTAB,OBJEK","MARA/A:A"]
[null,"SetCellValue","INOB/A1","OBJEK"]
[null,"ZeroPadCells","INOB/A:A",18]
[null,"CABN","ATINN,ATNAM,ADZHL,ATFOR","Materials/C:C"]
[null,"CABNT","ATINN,SPRAS,ADZHL,ATZHL,ATBEZ","AUSP/B:B","SE16/K:K"]
[null,"AUSP","OBJEK,ATINN,KLART,ATWRT,ATFLV","INOB/A:A","CABN/A:A"]
[null,"AUSP/Append","OBJEK,ATINN,KLART,ATWRT,ATFLV","MARA/A:A","CABN/A:A"]
[null,"SetCellValue","INOB/A1","MATNR"]
[null,"CAWN","ATINN,ATZHL,ATWRT","AUSP/B:B"]
[null,"CAWNT","ATINN,ATZHL,SPRAS,ATWTB","AUSP/B:B","SE16/K:K"]
[null,"KSSK","OBJEK,KLART,CLINT","AUSP/A:A"]
[null,"KLAH","CLINT,KLART,CLASS,STATU","KSSK/C:C"]
[null,"KSML","CLINT,ADZHL,IMERK","KLAH/A:A"]
[null,"RunCode","GenerateClass"]

{"sheet":"Materials","index":2,"n_rows":14,"n_cols":3,"rows_kept":14,"cut":false,"hidden":false,"merged":[]}
["MATNR","VKORG","ATNAM"]
[10001234]
[{"$f":"1+A2","v":10001235}]
[{"$f":"1+A3","v":10001236}]
[10001237]
[10001238]
[10001239]
[10001240]
[10001241]
[10001242]
[10001243]
[10001244]
[10001245]
[10001246]