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 44358x 44358x 1x 1x 4612x 4612x 4612x 4612x 1x 1x 2x 2x 2x 1x 1x 174x 174x 174x 174x 174x 1x 1x 10396x 10396x 10396x 1x 1x 4860x 4860x 4860x 1x 1x 169x 169x 169x 1x 1x 6x 6x 6x 1x 1x 187x 187x 187x 1x 1x 1x 1x 5224x 2267x 2267x 2957x 2957x 2957x 5224x 2896x 2896x 2896x 2896x 2896x 2896x 2896x 2896x 2896x 61x 61x 61x 5224x 96x 34x 96x 19x 19x 96x 61x 61x 61x 61x 5224x 5224x 5224x 5224x 5224x 5224x 5224x 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()] = {entry: t.ENTRY ? unescape(t.ENTRY) : "", maxLength: parseInt(t.LENGTH, 10)};
}
}
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,
};
}
}
|