首页 > 解决方案 > 单个代码如何在 SAP 或 Dynamics NAV 等 ERP 应用程序中运行

问题描述

我试图弄清楚内部开发环境是如何实现的以及它们是如何工作的。特别是在其时代初期(1980-2000)。让我们尽量保持简单。

例如,在当今的大多数 ERP 系统中,您可以设置自己的功能并描述业务逻辑。在 SAP 中,您编写 ABAP 代码,而 Dynamics NAV 使用 C/AL。

首先,核心应用程序内部的这样一个内部开发环境是如何创建的?您可以直接编译和运行您实现的功能。它是一种通过接口动态加载DLL吗?

其次,代码是如何加载的?我所知道的是Dynamics NAV将CAL转换成C#代码(在以前的版本中可以看到)并加载它(这个主题是如何指定的?)

源代码存储在数据库中,您无法提取它。可能它是加密的,然后直接从数据库中加载出来。

我只是想知道如果您创建了几个新对象,编译并加载它,它们对其他对象是如何可见的?我的意思是,如果您创建一个加载 DLL 的简单应用程序,您将无法从其他 DLL 动态访问它们。此功能虽然在 ERP 应用程序中可用。

您可以在其他软件中看到相同的原理,客户可以使用内部脚本语言来扩展核心应用程序。

谢谢!

标签: c#abapdynamics-navsap-erp

解决方案


最新版本的 Dynamics NAV(现在称为 Business Central)的答案与产品的 C/AL 版本非常不同,但由于系统更加透明,所以答案更容易。

创建扩展时,app.json 文件定义了哪些其他扩展是依赖项;然后,开发人员将从安装它的 BC 环境下载与这些依赖项关联的“符号文件”。这使我们能够访问这些其他扩展中的事件和公共功能。

公共函数有效地为我们提供了其他扩展的 API,我们像在任何面向对象的编程语言中一样调用这些函数。

事件通过中央事件管理系统处理,我们的扩展订阅另一个扩展将要触发的事件(由与另一个扩展关联的 GUID 和事件名称标识);当这些事件发生时,事件管理进程调用我们的函数,处理任何参数和/或返回值。

在 Business Central 中,我们也以相同的方式与“基本应用程序”交互,即我们“依赖”并扩展基本应用程序,就像任何其他第 3 方扩展一样。


推荐阅读