【问题标题】: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.

提前致谢。

【问题讨论】:

    标签: abap


    【解决方案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,实例化任一子类。这可能有助于减少重复代码...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-19
      • 2023-01-11
      相关资源
      最近更新 更多