All files / src/objects _dynpros.ts

100% Statements 56/56
92.3% Branches 12/13
100% Functions 2/2
100% Lines 56/56

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 561x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 25x 25x 4x 4x 21x 21x 21x 1x 65x 65x 65x 65x 2x 2x 2x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 2x 2x 2x 2x 2x 2x 2x 2x 2x 65x 65x
import {xmlToArray} from "../xml_utils";
 
export type DynproField = {
  name: string,
  type: string,
  length: number,
  vislength: number,
  line: number,
  column: number,
  height: number,
};
export type DynproHeader = {
  number: string,
  description: string,
  nextScreen: string,
  type: string,
  fields: DynproField[],
};
export type DynproList = DynproHeader[];
 
function parseNumber(value: string | undefined): number {
  if (value === undefined) {
    return 0;
  }
 
  return parseInt(value, 10);
}
 
export function parseDynpros(parsed: any): DynproList {
  const dynpros: DynproList = [];
  const xmlDynpros = parsed.abapGit?.["asx:abap"]?.["asx:values"]?.DYNPROS;
  if (xmlDynpros !== undefined) {
    for (const d of xmlToArray(xmlDynpros.item)) {
      const fields: DynproField[] = [];
      for (const f of xmlToArray(d.FIELDS?.RPY_DYFATC)) {
        fields.push({
          name: f.NAME,
          type: f.TYPE,
          length: parseNumber(f.LENGTH),
          vislength: parseNumber(f.VISLENGTH),
          line: parseNumber(f.LINE),
          column: parseNumber(f.COLUMN),
          height: parseNumber(f.HEIGHT),
        });
      }
      dynpros.push({
        number: d.HEADER.SCREEN,
        description: d.HEADER.DESCRIPT,
        nextScreen: d.HEADER.NEXTSCREEN,
        type: d.HEADER.TYPE,
        fields: fields,
      });
    }
  }
  return dynpros;
}