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 95 96 97 98 99 100 101 102 103 104 105 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 40322x 40322x 1x 1x 4396x 4396x 4396x 4396x 1x 1x 1x 1x 1x 1x 1x 164x 164x 164x 164x 164x 1x 1x 8489x 8489x 8489x 1x 1x 4638x 4638x 4638x 1x 1x 162x 162x 162x 1x 1x 2x 2x 2x 1x 1x 173x 173x 173x 1x 1x 1x 1x 4976x 2144x 2144x 2832x 2832x 2832x 4976x 2789x 2789x 2789x 2789x 2789x 2789x 2789x 2789x 2789x 43x 43x 43x 4976x 81x 25x 81x 18x 18x 81x 43x 43x 43x 43x 4976x 4976x 4976x 4976x 4976x 4976x 4976x 1x | import {ABAPObject, ITextElements} 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,
selectionTexts: ITextElements,
} | 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 || [];
}
public getSelectionTexts(): ITextElements {
this.parseXML();
return this.parsedXML!.selectionTexts;
}
////////////////////////////
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: [],
selectionTexts: {},
};
return;
}
let description = "";
const selectionTexts: ITextElements = {};
for (const t of xmlToArray(parsed.abapGit?.["asx:abap"]["asx:values"]?.TPOOL?.item)) {
if (t?.ID === "R") {
description = t.ENTRY ? unescape(t.ENTRY) : "";
} else if (t?.ID === "S" && t.KEY !== undefined) {
selectionTexts[t.KEY.toUpperCase()] = 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,
selectionTexts: selectionTexts,
};
}
}
|