如何编写根据当前客户/要求而变化的代码?

Posted

技术标签:

【中文标题】如何编写根据当前客户/要求而变化的代码?【英文标题】:How to write code varying according to current client/mandant? 【发布时间】:2010-11-12 07:51:49 【问题描述】:

我们目前有一个 SAP 系统,其中使用了两个不同的客户端 002 和 004。我的任务是在 ABAP 中编写一个程序来创建有关用户分配的报告。该报告在两个客户端上的作用基本相同,但我必须在两个客户端上选择不同的表。

有没有办法区分不同客户端之间的 ABAP 代码,例如:

IF client = 002.
* dothis.
ELSE.
* dothatdifferentthing.
ENDIF.

提前致谢。

【问题讨论】:

【参考方案1】:

当前客户端在 sy-mandt 字段中可用。

例如:

IF sy-mandt = '002'.
*dothis.
ELSE.
*dothatdifferentthing.
ENDIF.

【讨论】:

并且 99% 的 SAP 表在其键中包含字段 mandt 或客户端(不包含它的那些是客户端独立的),因此您可以使您的代码依赖于客户端(避免重复代码)添加'client = sy-mandt' 或 'mandt = sy-mandt' 和 'CLIENT SPECIFIED' 在每次数据库访问(读取、更新、删除...)时查看 FROM 语句的 sap 帮助 系统会自动将约束应用于 SQL 查询,因此默认情况下您只会获取 mandt = sy-mandt 的数据【参考方案2】:

另一个建议 - 尝试以面向对象的方式执行此操作,将所有公共代码填充到一个抽象超类中,并创建两个仅承载依赖于客户端的代码的子类。然后,基于 SY-MANDT,实例化任一子类。这可能有助于减少重复代码...

【讨论】:

以上是关于如何编写根据当前客户/要求而变化的代码?的主要内容,如果未能解决你的问题,请参考以下文章

如何快速进行软件需求分析?

《构建之法》1.2.3章读后感

如何使matlab中的控件和界面一起大小变化

c++编写UDP客户/服务器程序,要求:使用udp服务实现客户端与服务器交互信息.

如何编写要求输入 10 个数字的代码

如何使用JAR文件重用JMeter代码并节省时间