在传统SAP开发环境中,代码管理往往是个令人头疼的问题。我见过太多团队还在用邮件发送代码片段,或者直接把程序导出成.txt文件存到共享文件夹。更糟糕的是,有些项目交接时直接让新人用SE38一个一个程序查看复制。这种工作方式不仅效率低下,而且极易出错。
abapgit的出现彻底改变了这个局面。它就像是给ABAP世界带来了现代软件开发的工作方式。想象一下,你可以像Java或Python开发者那样,用版本控制管理ABAP代码,进行团队协作。我最近参与的一个跨国SAP项目就深刻体会到了这一点 - 德国总部的开发团队和中国本地的实施团队通过abapgit实现了无缝代码同步,再也不用担心谁改了哪个程序没通知其他人。
首先强调一个我踩过的坑:千万不要直接从GitHub复制粘贴代码!ABAP代码中有很多特殊字符,直接复制粘贴大概率会导致程序无法激活。正确做法是:
这里有个小技巧:如果你没有权限访问外网,可以请有权限的同事下载后,通过SAP的"本地文件"上传功能分享给你。我遇到过不少客户系统是隔离网络环境,这个方法很实用。
第一次运行abapgit时,可能会遇到各种报错。根据我的经验,90%的问题都是这两个:
建议在测试系统先尝试,不要直接在生产环境安装。我曾经在一个客户那里花了3小时才搞定安装,就是因为他们的生产系统权限设置特别严格。
假设你要交接一个完整的模块,比如MM模块的所有自定义开发。在abapgit界面:
这里有个重要提示:abapgit默认会排除SAP标准对象,但如果你不确定哪些是自定义的,可以先在SE80中查看包结构。我曾经导出过一个包,结果发现漏了几个关键的增强点,就是因为它们被误认为是标准对象。
有时候你只需要迁移部分程序,比如几个关键的报表。在abapgit中:
建议配合SAP的Where-Used List功能,确保不会漏掉依赖项。我有个惨痛教训:迁移了一个报表但忘了它的自定义函数组,结果在新系统根本无法运行。
在跨国项目中,我们通常这样工作:
关键点:每次传输前在abapgit中做diff比较,确保没有遗漏变更。我们团队制定了一个规则 - 任何传输都必须附带abapgit的commit hash,这样追溯起来特别方便。
虽然abapgit支持完整Git功能,但考虑到ABAP开发特点,我建议简化分支模型:
注意:ABAP程序没有像Java那样的编译过程,所以合并冲突处理要特别小心。建议团队约定修改规范,比如每个开发人员只修改自己负责的程序。
这是abapgit最强大的功能之一。导出SmartForms时要注意:
我曾经遇到一个案例:SmartForms在测试系统正常,但生产系统显示乱码,就是因为忘了导出语言相关的文本元素。
处理大型包时(超过500个对象),建议:
对于超大型项目,可以考虑按功能模块拆分多个仓库。某汽车客户的项目我们就采用了这种方案,效果很好。
根据我参与的20+个项目经验,总结出这个checklist:
代码部分:
配置部分:
文档部分:
特别提醒:一定要在新系统做完整的集成测试。有次我们漏测了一个BAdI实现,导致月结时出现严重问题。
在实际项目交接中,abapgit配合这个checklist,可以将交接时间缩短60%以上。最近一个MM模块的交接,传统方式需要2周,我们用这套方法4天就完成了。