GBS now working!

This commit is contained in:
2026-05-06 08:41:53 +02:00
parent 99a4bc662a
commit 13c0bf5518
@@ -6,6 +6,8 @@ using System.Text;
using static CompControl.ErpConnector.Utility.Models.SAP_CompControl_Models;
using static CompControl.ErpConnector.Utility.Models.SAP_BAPI_Models;
using System.Threading;
using Newtonsoft.Json;
//using System.Text.Json;
namespace CompControl.SapFrameworkConnector
{
@@ -17,6 +19,7 @@ namespace CompControl.SapFrameworkConnector
public static ApiResultBestellungen GetBestellung(string poNo, bool useDetailsAlternative = false)
{
ApiResultBestellungen result = new ApiResultBestellungen();
ApiResultBestellungen resultSAG = new ApiResultBestellungen();
BAPI_PO_GETDETAIL_IMPORT import = new BAPI_PO_GETDETAIL_IMPORT() { PURCHASEORDER = poNo, ITEMS = "X" };
BAPI_PO_GETDETAIL_EXPORT details = new BAPI_PO_GETDETAIL_EXPORT();
if (useDetailsAlternative) { details = BAPI_PO_GETDETAILS1(import); _log.Debug($"using BAPI_PO_GETDETAILS-1 !!!"); }
@@ -100,33 +103,54 @@ namespace CompControl.SapFrameworkConnector
result.MessageTechnical = result.MessageShort = ermsg;
}
// ==> MAYBE NEVER NEEDED: Lieferplan is also delivered with PO_DETAILS with sufficient rights
//if (result.GrDataItems.Count == 0) //If no Items were found take a look at SAG instead of PO
//{
// _log.Debug($"Could not find any PO Items, will now try and search for SAG '{poNo}'");
// try
// {
// BAPI_SAG_GETDETAIL_IMPORT sagInput = new BAPI_SAG_GETDETAIL_IMPORT();
// sagInput.PURCHASINGDOCUMENT = poNo;
// sagInput.SHIPPING_DATA = "X";
// sagInput.SCHEDULE_DATA = "X";
// sagInput.ITEM_DATA = "X";
// BAPI_SAG_GETDETAIL_EXPORT sagDetails = BAPI_SAG_GETDETAIL(sagInput);
try
{
BAPI_SAG_GETDETAIL_IMPORT sagInput = new BAPI_SAG_GETDETAIL_IMPORT();
sagInput.PURCHASINGDOCUMENT = poNo;
sagInput.SHIPPING_DATA = "X";
sagInput.SCHEDULE_DATA = "X";
sagInput.ITEM_DATA = "X";
BAPI_SAG_GETDETAIL_EXPORT sagDetails = BAPI_SAG_GETDETAIL(sagInput);
// //TODO: Add logic if RFC works!
// //foreach ()
// //{
//TODO: Add logic if RFC works!
if (sagDetails.SCHEDULE.Count > 0) //Only if any Items were returned!
{
List<GrDataItem> newGrList = new List<GrDataItem>();
foreach (GrDataItem gr in result.GrDataItems)
{
bool atLeastOnePosFound = false;
foreach (BAPIMEOUTSCHEDULE schedule in sagDetails.SCHEDULE)
{
GrDataItem grCopy = JsonConvert.DeserializeObject<GrDataItem>(JsonConvert.SerializeObject(gr)); //Kopierpfusch
// //}
// }
// catch (Exception ex)
// {
// string ermsg = $"GetBestellung SAG: General Error, please check LOG of ErpConnector!";
// _log.Error(ermsg + $" => {ex}");
// result.ErrorNumber = 900;
// result.MessageTechnical = result.MessageShort = ermsg;
// }
//}
if (schedule.ITEM_NO.Equals(gr.OrderPos))
{
_log.Debug($"Matching SAGSCHEDULE => PosNo={schedule.ITEM_NO}, SchedLine={schedule.SCHED_LINE}, Qty={schedule.QUANTITY}, Date={schedule.DELIVERY_DATE}");
if (schedule.DELIVERY_DATE.Trim().Equals("")) { schedule.DELIVERY_DATE = "01.01.2199"; }
string day = schedule.DELIVERY_DATE.Substring(0, 2);
string month = schedule.DELIVERY_DATE.Substring(3, 2);
string year = schedule.DELIVERY_DATE.Substring(6, 4);
DateTime delDate = new DateTime(Convert.ToInt32(year), Convert.ToInt32(month), Convert.ToInt32(day));
grCopy.OrderQuantity = schedule.QUANTITY;
grCopy.Schedule = schedule.SCHED_LINE;
grCopy.ExpectedDeliveryDate = delDate;
newGrList.Add(grCopy);
}
}
}
result.GrDataItems = newGrList;
}
}
catch (Exception ex)
{
string ermsg = $"GetBestellung SAG: General Error, please check LOG of ErpConnector!";
_log.Error(ermsg + $" => {ex}");
result.ErrorNumber = 900;
result.MessageTechnical = result.MessageShort = ermsg;
}
_log.Debug($"Result of GetBestellung now consists of {result.GrDataItems.Count} GrDataItems and {result.ManufacturerDataItems.Count} ManufacturerDataItems...");