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 106 107 108 109 110 111 112 113 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 190x 190x 1x 1x 7x 7x 1x 1x 1x 1x 4x 4x 4x 4x 4x 1x 1x 32x 32x 32x 1x 1x 20x 20x 20x 20x 20x 20x 20x 20x 20x 20x 20x 20x 20x 20x 20x 20x 1x 1x 33x 3x 3x 30x 30x 30x 30x 33x 30x 33x 33x 33x 33x 55x 55x 55x 55x 55x 55x 55x 55x 30x 30x 33x 33x 33x 33x 33x 33x 33x 33x 33x 33x 1x 1x 26x 26x 1x 1x | import {AbstractObject} from "./_abstract_object"; import {AbstractType} from "../abap/types/basic/_abstract_type"; import * as Types from "../abap/types/basic"; import {IRegistry} from "../_iregistry"; import {DDIC} from "../ddic"; import {xmlToArray} from "../xml_utils"; export interface DomainValue { language: string, low: string, high: string, description: string } export class Domain extends AbstractObject { private parsedXML: { description?: string, datatype?: string, length?: string, decimals?: string, conversionExit?: string, values?: DomainValue[], } | undefined; public getType(): string { return "DOMA"; } public getDescription(): string | undefined { return this.parsedXML?.description; } public getConversionExit(): string | undefined { return this.parsedXML?.conversionExit; } public getAllowedNaming() { return { maxLength: 30, allowNamespace: true, }; } public setDirty(): void { this.parsedXML = undefined; super.setDirty(); } public parseType(reg: IRegistry, dataElement?: string, description?: string): AbstractType { // dont cache the DOMA parsed type, they are cached on DTEL level // also note that the type carries the name of the DTEL if (this.parsedXML === undefined) { this.parse(); } if (this.parsedXML === undefined) { return new Types.UnknownType("Domain " + this.getName() + " parser error", this.getName()); } const ddic = new DDIC(reg); return ddic.textToType({ text: this.parsedXML.datatype, length: this.parsedXML.length, decimals: this.parsedXML.decimals, infoText: this.getName(), qualifiedName: dataElement, conversionExit: this.parsedXML.conversionExit, ddicName: dataElement, description: description, }); } public parse() { if (this.parsedXML) { return {updated: false, runtime: 0}; } const start = Date.now(); this.parsedXML = {}; const parsed = super.parseRaw2(); if (parsed === undefined) { return {updated: false, runtime: 0}; } const dd01v = parsed.abapGit?.["asx:abap"]?.["asx:values"]?.DD01V; const dd07v_tab = xmlToArray(parsed.abapGit?.["asx:abap"]?.["asx:values"]?.DD07V_TAB?.DD07V); const values: DomainValue[] = []; for (const ddo7v of dd07v_tab) { const value: DomainValue = { description: ddo7v?.DDTEXT, low: ddo7v?.DOMVALUE_L, high: ddo7v?.DOMVALUE_H, language: ddo7v?.DDLANGUAGE, }; values.push(value); } this.parsedXML = { description: dd01v?.DDTEXT, datatype: dd01v?.DATATYPE, length: dd01v?.LENG, conversionExit: dd01v?.CONVEXIT, decimals: dd01v?.DECIMALS, values: values, }; const end = Date.now(); return {updated: true, runtime: end - start}; } public getFixedValues() { return this.parsedXML?.values ?? []; } } |