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 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 4x 4x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 4x 3x 3x 1x 1x 1x 1x 1x 1x 1x 4x 1x 4x 4x 4x 4x 4x 4x 4x 1x 1x | import {UnknownType, VoidType} from "../abap/types/basic";
import {AbstractType} from "../abap/types/basic/_abstract_type";
import {DDIC} from "../ddic";
import {IObjectAndToken} from "../_iddic_references";
import {IRegistry} from "../_iregistry";
import {AbstractObject} from "./_abstract_object";
export class MaintenanceAndTransportObject extends AbstractObject {
private parsedXML: {
area?: string,
objectName?: string,
objectType?: string,
} | undefined;
public setDirty() {
super.setDirty();
this.parsedXML = undefined;
}
public getType(): string {
return "TOBJ";
}
public getDescription(): string | undefined {
// todo
return undefined;
}
public getAllowedNaming() {
return {
maxLength: 31,
allowNamespace: true,
};
}
public getArea(): string | undefined {
this.parse();
return this.parsedXML?.area;
}
public getObjectName(): string | undefined {
this.parse();
return this.parsedXML?.objectName;
}
public getObjectType(): string | undefined {
this.parse();
return this.parsedXML?.objectType;
}
public parseType(reg: IRegistry): AbstractType {
this.parse();
const references: IObjectAndToken[] = [];
const ddic = new DDIC(reg);
if (this.parsedXML?.objectName && this.parsedXML.objectType === "S") {
const found = ddic.lookupTableOrView2(this.parsedXML.objectName);
if (found) {
references.push({object: found});
reg.getDDICReferences().setUsing(this, references);
return found.parseType(reg);
} else if (ddic.inErrorNamespace(this.parsedXML.objectName)) {
return new UnknownType(this.parsedXML.objectName + " not found");
} else {
return VoidType.get(this.parsedXML.objectName);
}
} else if (this.parsedXML?.objectType !== "S" && this.parsedXML?.objectName){
return VoidType.get(this.parsedXML.objectName);
} else {
return new UnknownType("Parsing error");
}
}
public parse() {
if (this.parsedXML) {
return {updated: false, runtime: 0};
}
const start = Date.now();
this.parsedXML = {};
const parsed = super.parseRaw2();
if (parsed === undefined
|| parsed.abapGit === undefined
|| parsed.abapGit["asx:abap"]["asx:values"] === undefined) {
return {updated: false, runtime: 0};
}
this.parsedXML.area = parsed.abapGit["asx:abap"]["asx:values"].TOBJ?.TVDIR?.AREA;
this.parsedXML.objectName = parsed.abapGit["asx:abap"]["asx:values"].OBJH?.OBJECTNAME;
this.parsedXML.objectType = parsed.abapGit["asx:abap"]["asx:values"].OBJH?.OBJECTTYPE;
const end = Date.now();
return {updated: true, runtime: end - start};
}
}
|