@abaplint/transpiler
Version:
46 lines (45 loc) • 1.91 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.HandleEnqu = void 0;
const chunk_1 = require("../chunk");
class HandleEnqu {
runObject(obj, _reg) {
const filename = obj.getXMLFile()?.getFilename().replace(".xml", ".mjs").toLowerCase();
if (filename === undefined) {
return [];
}
const tableName = obj.getPrimaryTable();
const chunk = new chunk_1.Chunk().appendString(`// enqueue object
abap.FunctionModules["ENQUEUE_${obj.getName().toUpperCase()}"] = async (INPUT) => {
const lookup = abap.Classes["KERNEL_LOCK"];
if (lookup === undefined) {
throw new Error("Lock, kernel class missing");
}
const table_name = new abap.types.String({qualifiedName: "STRING"}).set("${tableName}" );
const enqueue_name = new abap.types.String({qualifiedName: "STRING"}).set("${obj.getName().toUpperCase()}");
await lookup.enqueue({table_name: table_name, enqueue_name: enqueue_name, input: INPUT.exporting});
};
abap.FunctionModules["DEQUEUE_${obj.getName().toUpperCase()}"] = async (INPUT) => {
const lookup = abap.Classes["KERNEL_LOCK"];
if (lookup === undefined) {
throw new Error("Lock, kernel class missing");
}
const table_name = new abap.types.String({qualifiedName: "STRING"}).set("${tableName}" );
const enqueue_name = new abap.types.String({qualifiedName: "STRING"}).set("${obj.getName().toUpperCase()}");
await lookup.dequeue({table_name: table_name, enqueue_name: enqueue_name, input: INPUT.exporting});
};`);
const output = {
object: {
name: obj.getName(),
type: obj.getType(),
},
filename: filename,
chunk: chunk,
requires: [],
exports: [],
};
return [output];
}
}
exports.HandleEnqu = HandleEnqu;
//# sourceMappingURL=handle_enqu.js.map