All files / src/objects _dynpros.ts

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

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 591x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 40x 40x 6x 6x 34x 34x 34x 1x 103x 103x 103x 103x 3x 3x 3x 8x 8x 8x 8x 8x 8x 8x 8x 8x 8x 8x 3x 3x 3x 3x 3x 3x 3x 3x 3x 103x 103x  
import {xmlToArray} from "../xml_utils";
 
export type DynproField = {
  name: string,
  type: string,
  contType: 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,
          contType: f.CONT_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;
}