{"text_format":"1","workbook":"xlsx","n_sheets":2,"sheets":["CL20N","Instructions"],"not_rendered":{"charts":0,"images":1,"macros":1,"external_links":0,"defined_names":1,"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":"CL20N","index":0,"n_rows":1,"n_cols":6,"rows_kept":1,"cut":false,"hidden":false,"merged":[]}
["Q01 [Quality Assurance]","OBJEK","KLART","CLASS","Characteristic","ATWRT"]

{"sheet":"Instructions","index":1,"n_rows":2,"n_cols":1,"rows_kept":2,"cut":false,"hidden":false,"merged":[]}
["Start by changing the value in cell A1 on the CL20N tab to the Name of the server to which this tool will connect.  This is how the VBA code knows in which server the data will be loaded and must be the full Description from SAP Logon and not just the 3-character ID of the server.   \n\nIn column E of the CL20N tab, put the Description of the Characteristic instead of the ATNAM value of the Characteristic.  The CL20N transaction does not include in any addressable object the ATNAM of the Characteristic--only the Description.\n\nAn easy way to convert source data with ATNAM to source data with Description is to tease the CABN and CABNT tables from the target server and past those data into the source spreadsheet.  Then, with some easy VLOOKUPs, the Descriptions of the Characteristics can be knit into the source data to replace the ATNAM values.\n\nFor a good way to tease these data out of a source SAP server, see this article.  If SLT or another SQL-based copy of the source data is available then the SQL Code below can be doctored to extract the data. https://www.saplsmw.com/How_to_generate_a_report_with_all_material_characteristic_values\n\nThis tool comes with no warranty, expressed or implied.  Always test thoroughly in a sandbox to ensure that the tool is doing what is desired.  Always back up data before changes are made."]
["\n\nselect INOB.OBJEK,klah.KLART,klah.CLASS,\n  case when cabnt.ATBEZ is null then ''\n  else cabnt.ATBEZ\n  end\n  as Description,\n  case when ausp.ATWRT is null then ''\n  else ausp.ATWRT\n  end\n  as ATWRT\n\n from SAP_P01_100.dbo.inob \n join SAP_P01_100.dbo.kssk on (kssk.objek=inob.cuobj and kssk.klart=inob.klart)\n join SAP_P01_100.dbo.klah on (kssk.clint=klah.clint and kssk.klart=klah.klart)\n left outer join SAP_P01_100.dbo.ausp on (kssk.objek=ausp.objek and ausp.klart=kssk.klart)\n left outer join SAP_P01_100.dbo.cabn on (ausp.atinn=cabn.atinn)\n left outer join SAP_P01_100.dbo.cabnt on (cabnt.atinn=cabn.atinn and cabnt.spras='E')\n left outer join SAP_P01_100.dbo.cawn on (cawn.atwrt = ausp.atwrt and cawn.atinn = ausp.atinn) \n left outer join SAP_P01_100.dbo.cawnt on (cawnt.atzhl = cawn.atzhl and cawnt.atinn = ausp.atinn and cawnt.spras = 'E')\n where inob.OBJEK in (\n'000000000190084512',\n'000000000189572762',\n'000000000187841863',\n'000000000112881631',\n'000000000130012266',\n'000000000163883059',\n'000000000163804876',\n'000000000163866952',\n'000000000188083954'\n)\norder by INOB.OBJEK"]