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 39174x 39174x 1x 1x 4302x 4302x 4302x 4302x 1x 1x 1x 1x 1x 1x 1x 161x 161x 161x 161x 161x 1x 1x 8349x 8349x 8349x 1x 1x 4377x 4377x 4377x 1x 1x 159x 159x 159x 1x 1x 2x 2x 2x 1x 1x 1x 1x 4539x 1771x 1771x 2768x 2768x 2768x 4539x 2737x 2737x 2737x 2737x 2737x 2737x 2737x 2737x 31x 31x 4539x 53x 15x 15x 53x 31x 31x 31x 31x 4539x 4539x 4539x 4539x 4539x 4539x 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,
};
}
}
|