diff --git a/CompControl.SapFrameworkConnector/App.config b/CompControl.SapFrameworkConnector/App.config
index afb52f9..ffd6259 100644
--- a/CompControl.SapFrameworkConnector/App.config
+++ b/CompControl.SapFrameworkConnector/App.config
@@ -60,15 +60,15 @@
-
+
-
+
-
+
@@ -124,7 +124,7 @@
-
+
@@ -148,7 +148,7 @@
-
+
@@ -178,6 +178,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/CompControl.SapFrameworkConnector/CompControl.SapFrameworkConnector.csproj b/CompControl.SapFrameworkConnector/CompControl.SapFrameworkConnector.csproj
index ffdc9f5..564355f 100644
--- a/CompControl.SapFrameworkConnector/CompControl.SapFrameworkConnector.csproj
+++ b/CompControl.SapFrameworkConnector/CompControl.SapFrameworkConnector.csproj
@@ -37,20 +37,23 @@
4
-
- packages\CompControl.4.0.3.2\lib\net472\CompControl.dll
+
+ packages\CompControl.4.0.3.5\lib\net472\CompControl.dll
-
- packages\CompControl.ErpConnector.Utility.1.0.6\lib\netstandard2.0\CompControl.ErpConnector.Utility.dll
+
+ packages\CompControl.ErpConnector.Utility.1.0.7-beta.13\lib\netstandard2.0\CompControl.ErpConnector.Utility.dll
- packages\CompControl.ProductionControl.Utility.1.0.0-beta.18\lib\netstandard2.0\CompControl.ProductionControl.Utility.dll
+ packages\CompControl.ProductionControl.Utility.1.0.0-beta.38\lib\netstandard2.0\CompControl.ProductionControl.Utility.dll
-
- packages\CompControl.StockControlWMS.1.0.2.19-beta.1\lib\netstandard2.0\CompControl.StockControlWMS.dll
+
+ packages\CompControl.StockControlWMS.1.0.3\lib\netstandard2.0\CompControl.StockControlWMS.dll
- packages\CompControl.StockControlWMS.API.Client.1.0.3-beta.1\lib\netstandard2.0\CompControl.StockControlWMS.API.Client.dll
+ packages\CompControl.StockControlWMS.API.Client.1.0.4\lib\netstandard2.0\CompControl.StockControlWMS.API.Client.dll
+
+
+ packages\CompControl.TraceControl.Utility.2.0.2\lib\netstandard2.0\CompControl.TraceControl.Utility.dll
packages\Dapper.2.1.66\lib\net461\Dapper.dll
@@ -58,8 +61,8 @@
packages\Dapper.Contrib.2.0.78\lib\net461\Dapper.Contrib.dll
-
- packages\FirebirdSql.Data.FirebirdClient.10.3.3\lib\net48\FirebirdSql.Data.FirebirdClient.dll
+
+ packages\FirebirdSql.Data.FirebirdClient.10.3.4\lib\net48\FirebirdSql.Data.FirebirdClient.dll
packages\Ionic.Zip.1.9.1.8\lib\Ionic.Zip.dll
@@ -157,8 +160,14 @@
packages\Microsoft.AspNetCore.WebUtilities.2.3.0\lib\netstandard2.0\Microsoft.AspNetCore.WebUtilities.dll
-
- packages\Microsoft.Bcl.AsyncInterfaces.9.0.9\lib\net462\Microsoft.Bcl.AsyncInterfaces.dll
+
+ packages\Microsoft.Bcl.AsyncInterfaces.9.0.10\lib\net462\Microsoft.Bcl.AsyncInterfaces.dll
+
+
+ packages\Microsoft.Data.Edm.5.8.5\lib\net40\Microsoft.Data.Edm.dll
+
+
+ packages\Microsoft.Data.OData.5.8.5\lib\net40\Microsoft.Data.OData.dll
packages\Microsoft.Extensions.Configuration.8.0.0\lib\net462\Microsoft.Extensions.Configuration.dll
@@ -238,6 +247,12 @@
packages\Microsoft.Net.Http.Headers.2.3.0\lib\netstandard2.0\Microsoft.Net.Http.Headers.dll
+
+ packages\Microsoft.OData.Core.7.9.4\lib\net45\Microsoft.OData.Core.dll
+
+
+ packages\Microsoft.OData.Edm.7.9.4\lib\net45\Microsoft.OData.Edm.dll
+
packages\Microsoft.Owin.4.2.3\lib\net45\Microsoft.Owin.dll
@@ -247,6 +262,9 @@
packages\Microsoft.Owin.Hosting.4.2.3\lib\net45\Microsoft.Owin.Hosting.dll
+
+ packages\Microsoft.Spatial.7.9.4\lib\net45\Microsoft.Spatial.dll
+
packages\Newtonsoft.Json.13.0.4\lib\net45\Newtonsoft.Json.dll
@@ -289,11 +307,23 @@
packages\Serilog.Sinks.File.6.0.0\lib\net471\Serilog.Sinks.File.dll
-
- packages\CompControl.StockControlWMS.1.0.2.19-beta.1\lib\netstandard2.0\StockControlWMS.dll
+
+ packages\Simple.OData.Client.6.0.1\lib\net461\Simple.OData.Client.Core.dll
-
- packages\CompControl.StockControlWMS.API.Client.1.0.3-beta.1\lib\netstandard2.0\StockControlWMS.API.Client.dll
+
+ packages\Simple.OData.Client.6.0.1\lib\net461\Simple.OData.Client.Dynamic.dll
+
+
+ packages\Simple.OData.Client.6.0.1\lib\net461\Simple.OData.Client.V3.Adapter.dll
+
+
+ packages\Simple.OData.Client.6.0.1\lib\net461\Simple.OData.Client.V4.Adapter.dll
+
+
+ packages\CompControl.StockControlWMS.1.0.3\lib\netstandard2.0\StockControlWMS.dll
+
+
+ packages\CompControl.StockControlWMS.API.Client.1.0.4\lib\netstandard2.0\StockControlWMS.API.Client.dll
@@ -323,8 +353,14 @@
True
True
-
- packages\System.IO.Pipelines.9.0.9\lib\net462\System.IO.Pipelines.dll
+
+
+ packages\System.IO.Compression.ZipFile.4.3.0\lib\net46\System.IO.Compression.ZipFile.dll
+ True
+ True
+
+
+ packages\System.IO.Pipelines.9.0.10\lib\net462\System.IO.Pipelines.dll
@@ -333,8 +369,8 @@
packages\Microsoft.AspNet.WebApi.Client.6.0.0\lib\net45\System.Net.Http.Formatting.dll
-
- packages\System.Net.Http.Json.9.0.9\lib\net462\System.Net.Http.Json.dll
+
+ packages\System.Net.Http.Json.9.0.10\lib\net462\System.Net.Http.Json.dll
@@ -372,11 +408,14 @@
packages\System.Security.Principal.Windows.5.0.0\lib\net461\System.Security.Principal.Windows.dll
-
- packages\System.Text.Encodings.Web.9.0.9\lib\net462\System.Text.Encodings.Web.dll
+
+ packages\System.Spatial.5.8.5\lib\net40\System.Spatial.dll
-
- packages\System.Text.Json.9.0.9\lib\net462\System.Text.Json.dll
+
+ packages\System.Text.Encodings.Web.9.0.10\lib\net462\System.Text.Encodings.Web.dll
+
+
+ packages\System.Text.Json.9.0.10\lib\net462\System.Text.Json.dll
packages\System.Threading.Channels.8.0.0\lib\net462\System.Threading.Channels.dll
diff --git a/CompControl.SapFrameworkConnector/Jenkinsfile b/CompControl.SapFrameworkConnector/Jenkinsfile
index 59af789..ca70a7e 100644
--- a/CompControl.SapFrameworkConnector/Jenkinsfile
+++ b/CompControl.SapFrameworkConnector/Jenkinsfile
@@ -31,23 +31,19 @@ pipeline {
}
}
-// stage('Info') {
-// steps {
-// dir("${env.PROJECT_DIR}") {
-// echo "msbuild -version: "
-// bat 'msbuild -version'
-// echo "dotnet msbuild -version: "
-// bat 'dotnet msbuild -version'
-// }
-// }
-// }
-
- stage('Pack') {
+ stage('Build') {
steps {
dir("${env.PROJECT_DIR}") {
bat 'dotnet clean'
bat 'if exist bin\\Release rmdir /s /q bin\\Release'
bat "\"${tool 'MSBuild_2022'}\\MSBuild.exe\" CompControl.csproj /p:Configuration=Release"
+ }
+ }
+ }
+
+ stage('Pack') {
+ steps {
+ dir("${env.PROJECT_DIR}") {
bat 'nuget pack . -Properties Configuration=Release -OutputDirectory bin\\Release'
}
}
diff --git a/CompControl.SapFrameworkConnector/Standard/SapStandardFunctions.cs b/CompControl.SapFrameworkConnector/Standard/SapStandardFunctions.cs
index 273dcd2..61529d5 100644
--- a/CompControl.SapFrameworkConnector/Standard/SapStandardFunctions.cs
+++ b/CompControl.SapFrameworkConnector/Standard/SapStandardFunctions.cs
@@ -5,7 +5,6 @@ using System.Collections.Generic;
using System.Text;
using static CompControl.ErpConnector.Utility.Models.SAP_CompControl_Models;
using static CompControl.ErpConnector.Utility.Models.SAP_BAPI_Models;
-using System.Security;
using System.Threading;
namespace CompControl.SapFrameworkConnector
@@ -101,6 +100,34 @@ 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);
+
+ // //TODO: Add logic if RFC works!
+ // //foreach ()
+ // //{
+
+ // //}
+ // }
+ // 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...");
return result;
@@ -216,9 +243,9 @@ namespace CompControl.SapFrameworkConnector
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
- public static ApiResultDefault ExecuteGoodsMovement(GoodsMovementParameters par)
+ public static ApiResultStringItems ExecuteGoodsMovement(GoodsMovementParameters par)
{
- ApiResultDefault result = new ApiResultDefault();
+ ApiResultStringItems result = new ApiResultStringItems();
try
{
@@ -267,6 +294,19 @@ namespace CompControl.SapFrameworkConnector
_log.Debug(sb.ToString());
BAPI_GOODSMVT_CREATE_EXPORT export = ZBAPI_GOODSMVT_CREATE(import);
//BAPI_TRANSACTION_COMMIT();
+
+ bool errorOccurred = false;
+ string sapMessage = "";
+ foreach (BAPIRET2 ret in export.RETURN) { if (ret.TYPE.Trim().Equals("E")) { errorOccurred = true; sapMessage += $"{ret.MESSAGE} "; } }
+ if (errorOccurred)
+ {
+ result.ErrorNumber = 900;
+ result.MessageTechnical = result.MessageLong = result.MessageShort = $"{sapMessage}";
+ }
+ else //In case of success return Materialbeleg as String
+ {
+ result.StringItems.Add(export.MATERIALDOCUMENT);
+ }
}
catch (Exception ex)
{
@@ -578,7 +618,7 @@ namespace CompControl.SapFrameworkConnector
temp.PO_PR_QNT = row.GetDecimal("PO_PR_QNT");
temp.SERIAL_NO = row.GetString("SERIAL_NO").TrimStart('0') ?? "";
temp.WITHDR_QTY = row.GetDecimal("WITHDR_QTY");
- export.PO_ITEM_HISTORY_TOTAL.Add(temp);
+ export.PO_ITEM_HISTORY_TOTALS.Add(temp);
}
IRfcTable po_item_hist = func.GetTable("PO_ITEM_HISTORY");
@@ -603,7 +643,7 @@ namespace CompControl.SapFrameworkConnector
export.PO_ITEM_HISTORY.Add(temp);
}
- _log.Debug($"BAPI_PO_GETDETAILS: Received {poItemBuffer.Count} PO_ITEMS, {export.PO_ITEM_HISTORY_TOTAL.Count} PO_ITEM_HISTORY_TOTALS, {export.PO_ITEM_HISTORY.Count} PO_ITEM_HISTORY");
+ _log.Debug($"BAPI_PO_GETDETAILS: Received {poItemBuffer.Count} PO_ITEMS, {export.PO_ITEM_HISTORY_TOTALS.Count} PO_ITEM_HISTORY_TOTALS, {export.PO_ITEM_HISTORY.Count} PO_ITEM_HISTORY");
}
catch (Exception ex) { errorMsg += "CI: SAP Other Exception: " + ex; }
}
@@ -695,7 +735,7 @@ namespace CompControl.SapFrameworkConnector
temp.PO_PR_QNT = row.GetDecimal("ORDER_QTY");
temp.SERIAL_NO = row.GetString("SERIAL_NO")?.TrimStart('0') ?? "";
temp.WITHDR_QTY = row.GetDecimal("WITHDRAWAL_QTY");
- export.PO_ITEM_HISTORY_TOTAL.Add(temp);
+ export.PO_ITEM_HISTORY_TOTALS.Add(temp);
}
// Tables: POHISTORY
@@ -721,7 +761,7 @@ namespace CompControl.SapFrameworkConnector
export.PO_ITEM_HISTORY.Add(temp);
}
- _log.Debug($"BAPI_PO_GETDETAIL1: Received {poItemBuffer.Count} POITEM, {export.PO_ITEM_HISTORY_TOTAL.Count} POHISTORY_TOTALS, {export.PO_ITEM_HISTORY.Count} POHISTORY");
+ _log.Debug($"BAPI_PO_GETDETAIL1: Received {poItemBuffer.Count} POITEM, {export.PO_ITEM_HISTORY_TOTALS.Count} POHISTORY_TOTALS, {export.PO_ITEM_HISTORY.Count} POHISTORY");
}
catch (Exception ex) { errorMsg += "CI: SAP Other Exception: " + ex; }
}
@@ -731,6 +771,94 @@ namespace CompControl.SapFrameworkConnector
return export;
}
+ private static BAPI_SAG_GETDETAIL_EXPORT BAPI_SAG_GETDETAIL(BAPI_SAG_GETDETAIL_IMPORT import)
+ {
+ string errorMsg = "";
+ BAPI_SAG_GETDETAIL_EXPORT export = new BAPI_SAG_GETDETAIL_EXPORT();
+
+ if (import != null)
+ {
+ try
+ {
+ RfcDestination dest = RfcDestinationManager.GetDestination(ConfigHelper.ActiveSapDestinationName);
+ IRfcFunction func = dest.Repository.CreateFunction("BAPI_SAG_GETDETAIL"); //Create Function with BAPI_PO_GETDETAIL1
+ func.SetValue("PURCHASINGDOCUMENT", import.PURCHASINGDOCUMENT?.Trim().PadLeft(10, '0')); //Set Value to function
+
+ // Set optional parameters
+ func.SetValue("SHIPPING_DATA", import.SHIPPING_DATA);
+ func.SetValue("ITEM_DATA", import.ITEM_DATA);
+ func.SetValue("SCHEDULE_DATA", import.SCHEDULE_DATA);
+ func.Invoke(dest); //Invoke function at Sap destination
+
+ IRfcStructure structHead = func.GetStructure("HEADER");
+ export.HEADER = new BAPIMEOUTHEADER();
+ export.HEADER.COMP_CODE = structHead.GetString("COMP_CODE");
+ export.HEADER.DOC_TYPE = structHead.GetString("DOC_TYPE");
+ export.HEADER.NUMBER = structHead.GetString("NUMBER");
+ export.HEADER.STATUS = structHead.GetString("STATUS");
+ export.HEADER.VENDOR = structHead.GetString("VENDOR");
+ _log.Debug($"SAG HEAD => COMP_CODE={export.HEADER.COMP_CODE}, DOC_TYPE={export.HEADER.DOC_TYPE}, NUMBER={export.HEADER.NUMBER}, STATUS={export.HEADER.STATUS}, VENDOR={export.HEADER.VENDOR}");
+
+ // RETURN-Tabelle prüfen
+ IRfcTable returnTable = func.GetTable("RETURN");
+ foreach (IRfcStructure row in returnTable)
+ {
+ _log.Error($"RETURN => Type={row.GetString("TYPE")}, ID={row.GetString("ID")}, Number={row.GetString("NUMBER")}, Message={row.GetString("MESSAGE")}");
+ }
+
+ // Tables: SCHEDULE
+ IRfcTable schedule_table = func.GetTable("SCHEDULE");
+ _log.Debug($"Schedule Rows: {schedule_table.RowCount}");
+ foreach (IRfcStructure row in schedule_table)
+ {
+ BAPIMEOUTSCHEDULE sched = new BAPIMEOUTSCHEDULE();
+ sched.DELETE_IND = row.GetString("DELETE_IND");
+ sched.DELIVERY_DATE = row.GetString("DELIVERY_DATE");
+ sched.ITEM_NO = row.GetString("ITEM_NO");
+ sched.QUANTITY = row.GetDecimal("QUANTITY");
+ sched.REQ_CLOSED = row.GetString("REQ_CLOSED");
+ sched.SCHED_LINE = row.GetString("SCHED_LINE");
+ export.SCHEDULE.Add(sched);
+ }
+
+ // Tables: SHIPPING
+ IRfcTable shipping_table = func.GetTable("SHIPPING");
+ _log.Debug($"Shipping Rows: {shipping_table.RowCount}");
+ foreach (IRfcStructure row in shipping_table)
+ {
+ BAPIMEPOSHIPPEXP ship = new BAPIMEPOSHIPPEXP();
+ ship.DEL_CREATE_TIME = row.GetDecimal("DEL_CREATE_TIME").ToString();
+ ship.DLV_PRIO = row.GetString("DLV_PRIO");
+ ship.PLND_DELRY = row.GetDecimal("PLND_DELRY");
+ ship.PO_ITEM = row.GetString("PO_ITEM");
+ ship.SRC_DLV_NO = row.GetString("SRC_DLV_NO");
+ export.SHIPPING.Add(ship);
+ }
+
+ // Tables: ITEM
+ IRfcTable item_table = func.GetTable("ITEM");
+ _log.Debug($"Item Rows: {item_table.RowCount}");
+ foreach (IRfcStructure row in item_table)
+ {
+ //BAPIMEPOSHIPPEXP ship = new BAPIMEPOSHIPPEXP();
+ //ship.DEL_CREATE_TIME = row.GetDecimal("DEL_CREATE_TIME").ToString();
+ //ship.DLV_PRIO = row.GetString("DLV_PRIO");
+ //ship.PLND_DELRY = row.GetDecimal("PLND_DELRY");
+ //ship.PO_ITEM = row.GetString("PO_ITEM");
+ //ship.SRC_DLV_NO = row.GetString("SRC_DLV_NO");
+ //export.ITEM.Add(ship);
+ }
+
+ _log.Debug($"BAPI_SAG_GETDETAIL: Received {export.SHIPPING.Count} SHIPPING items and {export.SCHEDULE.Count} SCHEDULE items");
+ }
+ catch (Exception ex) { errorMsg += "CI: SAP Other Exception: " + ex; }
+ }
+ else { _log.Debug("Error, IMPORT for BAPI_SAG_GETDETAIL was NULL! "); }
+
+ if (!errorMsg.Equals("")) { _log.Debug(errorMsg); }
+
+ return export;
+ }
private static BAPI_OBJCL_GETCLASSES_EXPORT BAPI_OBJCL_GETCLASSES(BAPI_OBJCL_GETCLASSES_IMPORT import)
{
diff --git a/CompControl.SapFrameworkConnector/Standard/StandardApiController.cs b/CompControl.SapFrameworkConnector/Standard/StandardApiController.cs
index 7382fc6..135effc 100644
--- a/CompControl.SapFrameworkConnector/Standard/StandardApiController.cs
+++ b/CompControl.SapFrameworkConnector/Standard/StandardApiController.cs
@@ -23,7 +23,7 @@ namespace CompControl.SapFrameworkConnector
try
{
- result = SapStandardFunctions.GetBestellung(filterBestellungen.OrderNo);
+ result = SapStandardFunctions.GetBestellung(filterBestellungen.OrderNo); //Maybe use true?
if (result.IsSuccessful) { _log.Debug(result); } //Action was successful => log for debug
else { _log.Error(result); } //An error occurred
@@ -135,7 +135,7 @@ namespace CompControl.SapFrameworkConnector
[HttpPut]
public async Task ExecuteGoodsMovement([FromBody] SAP_CompControl_Models.GoodsMovementParameters par, CancellationToken cancellationToken)
{
- ApiResultDefault result = new ApiResultDefault(); //New ApiResult to return via Web
+ ApiResultStringItems result = new ApiResultStringItems(); //New ApiResult to return via Web
_log.Debug("ExecuteGoodsMovement received ");
try
@@ -149,7 +149,7 @@ namespace CompControl.SapFrameworkConnector
{
string sm = $"ExecuteGoodsMovement: An unexpected error occured => " + ex;
_log.Error(sm);
- result = new ApiResultDefault //Default ApiResult on error
+ result = new ApiResultStringItems //Default ApiResult on error
{
ErrorNumber = 101,
MessageShort = sm,
diff --git a/CompControl.SapFrameworkConnector/packages.config b/CompControl.SapFrameworkConnector/packages.config
index 94bc7f7..fdf2235 100644
--- a/CompControl.SapFrameworkConnector/packages.config
+++ b/CompControl.SapFrameworkConnector/packages.config
@@ -1,13 +1,14 @@
-
-
-
-
-
+
+
+
+
+
+
-
+
@@ -44,8 +45,10 @@
-
+
+
+
@@ -73,9 +76,12 @@
+
+
+
@@ -89,15 +95,17 @@
+
-
+
+
-
+
@@ -107,8 +115,9 @@
-
-
+
+
+