UNPKG

trm-core

Version:

TRM (Transport Request Manager) Core

138 lines (137 loc) 6.14 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.analyze = void 0; const trm_commons_1 = require("trm-commons"); const systemConnector_1 = require("../../systemConnector"); exports.analyze = { name: 'analyze', filter: (context) => __awaiter(void 0, void 0, void 0, function* () { if (Object.keys(context.output.sapEntries).length > 0) { return true; } else { trm_commons_1.Logger.info(`Package ${context.rawInput.packageData.manifest.name} has no SAP entries`, !context.rawInput.printOptions.information); return false; } }), run: (context) => __awaiter(void 0, void 0, void 0, function* () { trm_commons_1.Logger.log('Analyze step', true); var logTable = []; var entriesCount = 0; var tableFields = []; Object.keys(context.output.sapEntries).forEach(tableName => { var aFields = []; context.output.sapEntries[tableName].forEach(o => { entriesCount++; Object.keys(o).forEach(field => { if (!aFields.includes(field)) { aFields.push(field); } }); }); tableFields.push({ tableName, fields: aFields }); }); trm_commons_1.Logger.info(`Package ${context.rawInput.packageData.manifest.name} has ${entriesCount} SAP entries`, !context.rawInput.printOptions.information); if (entriesCount === 0) { return; } for (const table of Object.keys(context.output.sapEntries)) { var tableExists; try { tableExists = yield systemConnector_1.SystemConnector.checkSapEntryExists('TADIR', { pgmid: 'R3TR', object: 'TABL', obj_name: table }); } catch (e) { tableExists = false; } if (!tableExists) { context.runtime.missingTables.push(table); trm_commons_1.Logger.error(`Required ${context.output.sapEntries[table].length} entries in ${table}, but table was not found`, !context.rawInput.printOptions.information); } else { var printTableHead = ['Table name']; var printTableData = []; var tableData; printTableHead = printTableHead.concat(tableFields.find(o => o.tableName === table).fields); printTableHead.push('Status'); for (const tableEntry of context.output.sapEntries[table]) { tableData = [table]; var entryStatus; try { const exists = yield systemConnector_1.SystemConnector.checkSapEntryExists(table, tableEntry); if (exists) { entryStatus = `OK`; context.runtime.entriesStatus.good.push({ table, tableEntry }); } else { entryStatus = `NOT FOUND`; context.runtime.entriesStatus.bad.push({ table, tableEntry }); } } catch (e) { trm_commons_1.Logger.error(e.toString(), true); trm_commons_1.Logger.error(`Error during check of SAP entry ${JSON.stringify(tableEntry)}`, true); entryStatus = `Unknown`; context.runtime.entriesStatus.bad.push({ table, tableEntry }); } Object.keys(tableEntry).forEach(field => { const pushIndex = printTableHead.findIndex(headerName => headerName === field); tableData.splice(pushIndex, 0, tableEntry[field]); }); tableData.push(entryStatus); printTableData.push(tableData); } logTable.push({ header: printTableHead, data: printTableData }); } } logTable.forEach(t => { trm_commons_1.Logger.table(t.header, t.data, !context.rawInput.printOptions.entriesStatus); }); context.output.sapEntriesStatus = {}; context.runtime.entriesStatus.good.forEach(o => { if (!context.output.sapEntriesStatus[o.table]) { context.output.sapEntriesStatus[o.table] = []; } context.output.sapEntriesStatus[o.table].push({ status: true, entry: o.tableEntry }); }); context.runtime.entriesStatus.bad.forEach(o => { if (!context.output.sapEntriesStatus[o.table]) { context.output.sapEntriesStatus[o.table] = []; } context.output.sapEntriesStatus[o.table].push({ status: false, entry: o.tableEntry }); }); }) };