All files / src/objects _dynpros.ts

100% Statements 61/61
79.31% Branches 23/29
100% Functions 2/2
100% Lines 61/61

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 621x 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 114x 114x 114x 114x 4x 4x 1x 1x 3x 4x 8x 8x 8x 8x 8x 8x 8x 8x 8x 8x 8x 3x 4x 4x 4x 4x 4x 4x 4x 4x 114x 114x  
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)) {
      if (d?.HEADER === undefined) {
        continue;
      }
      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;
}