Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 40369x 40369x 1x 1x 4292x 4292x 4292x 4292x 1x 1x 1x 1x 1x 1x 1x 198x 198x 198x 198x 198x 1x 1x 8219x 8219x 8219x 1x 1x 4491x 4491x 4491x 1x 1x 196x 196x 196x 1x 1x 2x 2x 2x 1x 1x 1x 1x 4690x 1933x 1933x 2757x 2757x 2757x 4690x 2726x 2726x 2726x 2726x 2726x 2726x 2726x 2726x 31x 31x 4690x 53x 15x 15x 53x 31x 31x 31x 31x 4690x 4690x 4690x 4690x 4690x 4690x 1x | import {ABAPObject} from "./_abap_object"; import {ABAPFile} from "../abap/abap_file"; import {DynproList, parseDynpros} from "./_dynpros"; import {xmlToArray, unescape} from "../xml_utils"; export class Program extends ABAPObject { private parsedXML: { isInclude: boolean, isModulePool: boolean, description: string | undefined, dynpros: DynproList, } | undefined; public getType(): string { return "PROG"; } public getSequencedFiles(): readonly ABAPFile[] { const main = this.getMainABAPFile(); if (main === undefined) { return []; } return [main]; } public getDescription(): string | undefined { this.parseXML(); return this.parsedXML?.description; } public getAllowedNaming() { return { maxLength: 40, allowNamespace: true, }; } public setDirty(): void { this.parsedXML = undefined; super.setDirty(); } public isInclude(): boolean { this.parseXML(); return this.parsedXML!.isInclude; } public isModulePool(): boolean { this.parseXML(); return this.parsedXML!.isModulePool; } public getDynpros(): DynproList { this.parseXML(); return this.parsedXML!.dynpros || []; } //////////////////////////// private parseXML() { if (this.parsedXML !== undefined) { return; } const file = this.getXMLFile(); const parsed = this.parseRaw2(); if (parsed === undefined) { this.parsedXML = { isInclude: false, isModulePool: false, description: undefined, dynpros: [], }; return; } let description = ""; for (const t of xmlToArray(parsed.abapGit?.["asx:abap"]["asx:values"]?.TPOOL?.item)) { if (t?.ID === "R") { description = t.ENTRY ? unescape(t.ENTRY) : ""; } } const dynpros = parseDynpros(parsed); this.parsedXML = { isInclude: file ? file.getRaw().includes("<SUBC>I</SUBC>") : false, isModulePool: file ? file.getRaw().includes("<SUBC>M</SUBC>") : false, dynpros: dynpros, description: description, }; } } |