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 | 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 187x 187x 1x 1x 7x 7x 1x 1x 1x 1x 4x 4x 4x 4x 4x 1x 1x 31x 31x 31x 1x 1x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 1x 1x 32x 3x 3x 29x 29x 29x 29x 32x 29x 32x 32x 32x 32x 55x 55x 55x 55x 55x 55x 55x 55x 29x 29x 32x 32x 32x 32x 32x 32x 32x 32x 32x 32x 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): 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( this.parsedXML.datatype, this.parsedXML.length, this.parsedXML.decimals, this.getName(), dataElement, this.parsedXML.conversionExit, dataElement); } 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 ?? []; } } |