@abaplint/runtime
Version:
Transpiler - Runtime
38 lines • 1.56 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.modifyDatabase = modifyDatabase;
const types_1 = require("../types");
const insert_database_1 = require("./insert_database");
const update_database_1 = require("./update_database");
async function modifyDatabase(table, options, context) {
if (options.table instanceof types_1.FieldSymbol) {
options.table = options.table.getPointer();
}
if (options.values instanceof types_1.FieldSymbol) {
options.values = options.values.getPointer();
}
if (options.table) {
let subrc = 0;
let dbcnt = 0;
for (const row of options.table.array()) {
const insertSubrc = await (0, insert_database_1.insertDatabase)(table, { values: row }, context);
if (insertSubrc !== 0) {
await (0, update_database_1.updateDatabase)(table, { from: row }, context);
}
subrc = Math.max(subrc, abap.builtin.sy.get().subrc.get());
dbcnt += abap.builtin.sy.get().dbcnt.get();
}
abap.builtin.sy.get().subrc.set(subrc);
abap.builtin.sy.get().dbcnt.set(dbcnt);
}
else if (options.values) {
const subrc = await (0, insert_database_1.insertDatabase)(table, { values: options.values }, context);
if (subrc !== 0) {
await (0, update_database_1.updateDatabase)(table, { from: options.values }, context);
}
}
else {
throw new Error("modifyDatabase todo");
}
}
//# sourceMappingURL=modify_database.js.map