Buen dia contodos, soy nuevo en programacion y recien entrando en enfoque de sap y tengo un error estoy intentando dar salida desde mi api generado con server layer este es mi codigo Js
// salida-sap/index.js con DocDate y TaxDate, sin DocDueDate
const express = require(‘express’);
const axios = require(‘axios’);
const router = express.Router();
require(‘dotenv’).config();
process.env[‘NODE_TLS_REJECT_UNAUTHORIZED’] = ‘0’;
const SAP_BASE_URL = process.env.SAP_BASE_URL;
const SAP_USER = process.env.SAP_USER;
const SAP_PASSWORD = process.env.SAP_PASSWORD;
const SAP_COMPANY = process.env.SAP_COMPANY;
router.post(‘/salida-sap/:docEntry’, async (req, res) => {
const docEntry = req.params.docEntry;
try {
// 1. Login al Service Layer
const loginResponse = await axios.post(${SAP_BASE_URL}/Login
, {
UserName: SAP_USER,
Password: SAP_PASSWORD,
CompanyDB: SAP_COMPANY,
});
const cookies = loginResponse.headers[‘set-cookie’];
// 2. Obtener requerimiento
const { data } = await axios.get(`http://localhost:3001/requerimiento/${docEntry}`);
const encabezado = data.encabezado;
const detalle = data.detalle;
if (!encabezado || !detalle || detalle.length === 0) {
return res.status(404).json({ error: 'Requerimiento no encontrado o sin artículos' });
}
console.log('✅ Tipo de Operación recuperado:', encabezado.U_TipoOperacion);
// 3. Armar payload completo para SAP
const payload = {
"DocType": "dDocument_Items",
"DocDate": encabezado.U_FechaReq,
"TaxDate": encabezado.U_FechaReq,
"Comments": `Salida desde requerimiento #${docEntry}`,
"U_EXX_TIPOOPER": encabezado.U_TipoOperacion,
"U_EXX_TIVTRA": encabezado.U_MotivoTraslado,
"U_EXA_MOVINV": encabezado.U_MotivoInventario,
"DocumentLines": detalle.map(item => ({
"ItemCode": item.U_ItemCode,
"Quantity": Number(item.U_Cantidad),
"WhsCode": item.U_Almacen,
"AccountCode": item.U_CuentaContable,
"Dscription": item.U_Descripcion, // ← Descripción añadida
"OcrCode": encabezado.U_Area,
"OcrCode2": encabezado.U_CCoste2,
"OcrCode3": encabezado.U_Sucursal}))
};
console.log('🧾 Payload enviado a SAP:', JSON.stringify(payload, null, 2));
// 4. Enviar a SAP
const sapResponse = await axios.post(`${SAP_BASE_URL}/InventoryGenExits`, payload, {
headers: {
'Content-Type': 'application/json',
Cookie: cookies.join('; ')
}
});
res.json({ success: true, salidaSAP: sapResponse.data });
} catch (err) {
console.error(‘ Error en salida-sap:’, err.message);
res.status(500).json({
error: ‘Error al generar salida en SAP’,
detalle: err.response?.data || err.message
});
}
});
module.exports = router;
pero tengo el error de
{
“error”: “Error al generar salida en SAP”,
“detalle”: {
“error”: {
“code”: -5002,
“message”: {
“lang”: “en-us”,
“value”: “Inventory account is not defined [DocumentLines.AccountCode][line: 1]”
}
}
}
}