• smod包含具体的增强(具体实施对象) / CMOD 包含一组smod编写的增强


    从标题来看,CMOD 是树木,smod 是树枝。

    1.1 SMOD包含具体的增强,而CMOD是包含一组SMOD编写的增强.
    1.2 User exits (Function module exits)是sap提供出口,它的命名规则如下:
    EXIT_ 示例:
    sd的VA01事务,对应的程序是SAPMV45A ,
    你会在程序里查到(用CALL CUSTOMER-FUNCTION字符串)如下代码:
    
    CALL CUSTOMER-FUNCTION '003' 
     exporting
      xvbak = vbak 
      xvbuk = vbuk
      xkomk = tkomk 
     importing 
      lvf_subrc = lvf_subrc
     tables 
      xvbfa = xvbfa 
      xvbap = xvbap 
      xvbup = xvbup. 
    
    则exit calls function module的名称就是: EXIT_SAPMV45A_003 
    
    2、先试用SMOD建立一个SAP增强
    2.1、选择一个增强,如:SDVFX001 ,点击修改,进入sap增强维护屏幕;
    2.2、点击“组件”按钮,进入组件维护屏;
    2.3、将光标移到“功能模块名”,输入模块名,如:EXIT_SAPLV60B_001;
    2.4、选择“代码修改”按钮进入函数模块;
    2.5、双击函数模块的包含单元,进入包含单元加入自定义代码并激活保存;
    
    3、使用CMOD建立增强项目
    3.1、输入自定义的项目名,点击“创建”;
    3.2、进入增强项目,选择“配置增强”,进入增强配置屏幕;
    3.3、输入增强名如:SDVFX0013.4、保存,并退出;
    
    4、使用CMOD将增强项目激活,便大工告成。
    
    ***如何查找*判断是否存在相应增强的定义(SMOD) 
    select single name from modsapa 
        into mod0-name 
    where name = 'PPCO0002'. 
    
    if sy-subrc = 0. 
    endif. 
    
    select single * 
      from tadir 
      into ps_tadir_db 
    where pgmid = 'R3TR' 
        and object = 'SMOD' 
        and obj_name = 'PPCO0002'. 
    
    ***判断是否存在相应增强项目的定义(CMOD) 
    
    SELECT SINGLE name 
       FROM MODATTR 
          into mod0-name 
     WHERE NAME = 'PPCO0002'.. 
    
    ***提取增强的定义的组件 (可以用此反查增强定义)
    select * from modsap where name = 'PPCO0002'.
    
    ***判断该增强是否移植到BADI实现
    
    *Enhancement & has already been migrated in Business Add-In definition 
    
    select single migrated badi_def 
       into (migrated, exit_name) 
      from modsapa 
      where name = modname.
    
     if sy-subrc = 0 and migrated = seex_true. 
       message s621 with modname exit_name. 
       check mode ne 'CHAM'. 
     endif. 
     
    MODTYP 类型:
    E : 功能退出
    S : 屏幕
    T : 表
    C : GUI代码
    sap增强存在 MODSAP 表内
    *获取增强组件的参见函数MOD_SAP_MEMBER_TEXT*获得退出功能模块的信息

    BW 中的SMOD 是进入组件的输入界面,CMOD是进入项目的输入界面:

    CMOD和SMOD的区别?smod进入是直接输入组件的rsap0001的输入界面,cmod进入的是项目的输入界面。
    sap 的所有enhancement的用户出口都在smod里和cmod里面 ,用户可以创建project然后去激活sap提供给用户的用户出口,
    我们服务器已经创建了一个bw67的project,其中激活了rsap0001, 所以cmod和smod都可以调用rsap0001。 smod是对所有的enhancement exit的操作,
    而cmod里可以为部分特定的exit做一个项目,也就是集合,
    并且可以通过项目去访问这些事先设定好的exit,就是在一个建立好的项目中所用到的exit就不能再被另外一个项目用了。
    比如我再建立一个项目,用到rsap0001的时候,就会提示一行德文,猜测它的意思是已经被BW67用掉了。 一个bw系统的用户出口时定死的,rsap0001对应的就是数据源增强,
    rsr00001对应的就是变量增强,被用户分配到某个project以后,就能不再被其他project使用了。
  • 相关阅读:
    CSP 模拟17
    晚测7
    CSP 模拟16
    CSP 模拟14
    CSP 模拟13
    Cypress系列(67)- 环境变量设置指南
    Cypress系列(66)- 测试运行最佳实践
    Cypress系列(65)- 测试运行失败自动重试
    Cypress系列(64)- 数据驱动策略
    Cypress系列(63)- 使用 Custom Commands
  • 原文地址:https://www.cnblogs.com/rainysblog/p/6555858.html
Copyright © 2020-2023  润新知