代码之家  ›  专栏  ›  技术社区  ›  John Stauffer

在源代码管理中管理ABAP源代码

  •  8
  • John Stauffer  · 技术社区  · 16 年前

    目前,我们的产品涵盖了大量的技术,包括Java、PL/SQL、VB.NET和ABAP等。我们有一个相当成熟的源代码控制和构建系统,为除ABAP之外的所有语言建立,ABAP仍处于石器时代。由于SAP在其中建立了一个构建系统,因此我们的工程师在SAP环境中进行所有开发—导出—传输和检查 那些 进入源代码管理。由于我们支持许多SAP版本,因此很难跟踪版本并跨4.6、4.7、5.0等迁移代码。

    我的理想过程是将ABAP代码检查到文本文件中的源代码控制中,然后将其加载到SAP中,并在构建过程中生成传输。SAP工程师认为没有支持此模型的工具。

    如果您在源代码管理系统中管理ABAP代码,那么您的流程是什么样子的?是否有工具(最好是命令行)可用于将ABAP代码加载到SAP中?您的工程师如何管理代码/测试/调试周期?它们编码吗? 在里面 然后在完成时导出代码,还是在外部编辑器中编辑?

    5 回复  |  直到 13 年前
        1
  •  6
  •   Stefan Egli    16 年前

    为此,我使用了saplink(在前面的答案中提到)。还有一个名为“zake”的相关项目,据说可以自动执行某些任务,但我从未使用过它。我只是手动将代码导出到所谓的slinkees(它们包含单个对象,如函数组;另一方面,金块包含多个对象)。

    使用某些外部源代码管理系统的原因:

    • 与非ABAP源代码的相关性(因为我们的软件由.NET和ABAP代码组成)
    • 托管/维护SAP并不是我们擅长的工作,因此很高兴知道您的代码放在了一个安全的地方。

    但有一件事:要使用saplink,至少需要620

        2
  •  5
  •   Dom    16 年前

    我对SAP系统的ABAP堆栈之外的版本控制的好处感兴趣。

    我从未见过有人使用外部源代码控制的ABAP,因为它是内置的。我也从未见过有人在SAP系统之外编写ABAP代码。它真的不适合这个模型。

    SAP的ABAP堆栈是一个单一的开发系统环境。所有开发人员登录到一个系统并在那里进行开发。系统自动记录版本,并将更改的对象分组为传输。传输只是已更改对象的列表。导出传输之后,每个对象的版本号都会增加,您将获得其他系统的包。

    ABAP堆栈也没有真正的“构建”概念。你所做的一切都是一个补丁。

        3
  •  1
  •   community wiki 3 revs, 2 users 92% Taryck    13 年前

    Hy

    正如dom告诉你的,SAP有自己的版本管理。但是,为了在传输释放之间进行定期保存,您可以使用以下工具:

    可以使用这些工具将ABAP组件提取到XML中。我确实不建议将自动导入SAP,原因有很多: #这些工具没有保证 #不是所有的ABAP组件都可以这样处理 #如果在高效的SAP系统上执行此操作,您将失去SAP担保。

    但是,使用像(Google代码)这样的工具来详细显示软件更改可能会很有趣,这在ABAP对象上可能会更复杂。

    我使用zap link_提取器程序在zap-link框架上开发了这个框架,该程序在SAP组件发生更改时将其导出到XML中。这将阻止XML文件更改(新文件但内容相同),并防止被Mercurial等工具检测为更改。

    希望它有帮助。

    请记住,您应该使用SAP工具来更改SAP组件。SAP顾问可能会向您详细解释。

    Taryck。 [ http://www.steria.com 斯特里亚(法国)]

        4
  •  0
  •   Techboy    16 年前

    还检查SAP CTS+,它用于管理ABAP和基于Java的组件的传输和版本控制。

    https://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/e0249083-c0ab-2a10-78b8-b7a7854b1070

        5
  •  0
  •   Noah    15 年前

    至少,应该在SAP开发系统中进行修改和测试。没有人使用ABAP的外部编辑器。(SAP Java在另一方面……)没有理由为什么你不能保持SAP代码的备份,或者直接作为文本文件,或者,(最好)用SAPLink或传输转储文件。(询问您的基础人员有关传输文件的信息)。请注意,如果您使用文本文件路径,可能会遗漏诸如字段文本等存储在数据库中其他位置的内容。