2009-11-02 本日学习总结

本日学习总结:

 

关于T-CODE 的:

  1. se71 :格式绘制器
  2. co11n :工票输入
  3. se18 :initial screen for definitions 定义 BADI
  4. se19:initial screen for implenmentation
  5. se17 通用表
  6. se30: ABAP 运行时间分析

关于TABLE的:

  1. T134:物料类型
  2. TSTC: 事务代码表

关于方法:

  1. 物料类型被删除后: 增加回来放在表T134物料类型中
    data:itab like table of t134 with header line.
    itab-mtart = 'gaga'.
    append itab.
    modify t134 from table itab.
  2. 除去小数点后面的0:
    DATA: pd TYPE p LENGTH 8 DECIMALS 4,
             cd TYPE c LENGTH 20.
    pd = '1.23'.
    *WRITE pd TO cd NO-SIGN.
    cd = pd.
    SHIFT cd RIGHT DELETING TRAILING ' '.
    SHIFT cd RIGHT DELETING TRAILING '0'.
    WRITE cd.

关于概念:

 

   SAP 增强已经发展过几代了,建议你系统学习一下 SAP 标准教材 BC425 和 BC427。

   简单说一下我的理解:

  1. 第一代:基于源代码的增强。
    源代码增强以子程序形式发布,在 SAP 的发行版本中,使用 PERFORM 调用这些子程序,它们在发布时都是空的,集中在一些文件名倒数第二个字符为 Z 的包含程序中。用户增强时,应首先到 service marketplace 申请对象键,然后才能修改这些子程序,这些子程序可以使用程序中所有的全局数据。
    屏幕增强以客户屏幕形式发布,它们包含在标准程序中,没有什么特别规律。
    这种源代码增强和屏幕增强的说明可以从事务码 spro 后台配置中相关模块的路径里面找到。
    同时使用的针对数据表的增强是 append structure,可以在事务码 se11 中打开透明表,点击应用工具栏最右边的那个 append structure 按钮就能为数据表追加新的字段。
  2. 第二代:基于函数模块的增强。
    源代码增强以函数模块形式发布,在 SAP 的发行版本中,使用 CALL CUSTOMER-FUNCTION 调用这些函数模块,它们在发布时只有一句代码 INCLUDE xxxxxxx。用户增强时,无需申请对象键,直接双击这个包含,然后回车,就可以创建相关的包含文件,编写相应的代码了。这些函数模块中只能使用接口中传递的参数,不能使用调用程序的全局变量。
    屏幕增强也包含在函数模块所属的函数组中。
    针对数据表的增强是 CI_ 结构,这些结构以 .INCLUDE 结构的形式包含在 SAP 发布的数据表中,用户可以通过向这些结构中添加字段而对数据表进行增强。
    上述这类增强通过事务码 SMOD 进行维护,CMOD 进行实现。SMOD 中的一个增强可以包含上述的源代码、屏幕和表结构增强,按照较容易理解的逻辑结构来管理这些增强,使用相对更加便利。
  3. 第三代:基于面向对象概念的增强。
    这就是传说中的 BAdI(Business Add-Ins),源代码增强以接口形式发布,在 SAP 的发行版本中,也是通过接口的方法调用来使用。用户增强时,实际是实现一个(或多个)基于这个接口的实现类。由于接口可以有多个实现类,所以对一个增强可以有多种不同的源代码,它们通过过滤器应用于不同的业务场景。
    这种增强使用事务码 SE18 创建、SE19 实现。
    很遗憾,我对面向对象理解不深,使用 BAdI 也很少,所以不清楚它怎么实现屏幕增强。
  4. 第四代:Switch Framework。
    SAP 从 NetWeaver 7.0 以后退出的新增强体系,它对 BAdI 做出了改进,改叫新 BAdI 了。还新增 Enhancement Spot 和 Enhancement Section 以及隐式增强点的概念,基本可以在面向对象的程序里实现处处皆可增强的最高境界。
    但是由于我公司业务环境问题,我还完全没有用它做过任何实例,因此没有发言权。

 

          基于强晟的回复,补充几点:

  1. Field Exit技术:基于data element,如个屏幕的输入框参考该data element,定义激活Field Exit后,程序响应一个Function Code,可以触发该Field Exit逻辑。只支持传统的Dialog技术。详细可参考程序RSMODPRF。
  2. BTE(Business transaction Event):R/3 ERP的某几个transaction中以FUNCTION MODULE形式预留的出口,以事件event方式定义,可以被BOR(BAPI)所使用,被Workflow以事件方式触发。BAdI技术出现以前,这是唯一可以multiple实施,并且按照层次定义实施(可区分为SAP Applicatoin,Partner和Customer实施)。FIBF提供实施平台,可参考其中的文档。
  3. Enhancement framework 及 Switch Framework。准确地说,后者用来精确控制某类功能在一个系统中是否可以被启用。而前者,则提供系统功能增强定义与实施。
    从Netweaver 04s开始出现的Enhancement framework 可被认为Classic BAdI的升级,但其功能比Classic BAdI远远强大许多。
    Enhancement framework 相比Classic BAdI来说主要的新功能有:
    ->源代码增强,包括隐性增强(可以实施在某些特定地点,如FORM的开始或结束等等),系统级的支持,无需预定义;显性增强(强晟已经解释)。
    ->函数组增强,可用来增强Function Module接口参数
    ->类增强,可用来增加一个类的方法,增强方法的接口参数,以及对方法增强逻辑。
    ->语法级别的BAdI触发机制(Kernal-BAdI),BAdI不再由Exit handle来控制,而是升级称为ABAP语法级别的控制,以提供更高的执行效率。原来的BAdI因此改名Classic BAdI。
    ->框架提供了更多的管理功能,如通过Composite Enhancement Implementation合并管理若干增强实施。
    ->对系统升级后的BAdI实施提供更方便的管理。
    ->与被增强对象更紧密地结合,如Web Dynpro for ABAP编辑器中直接整合了BAdI实施。
    ->与Switch Framework的整合。
    ->兼容Classic BAdI,如可仍然使用SE18定义,SE19实施。

部分内容转自SAP中文论坛,忘记网址了,如作者有异议,请联系我

你可能感兴趣的:(workflow,function,table,SAP,structure,应用工具)