`
Daniel_Fang
  • 浏览: 46479 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Sales Order 中的User Exit开发

阅读更多

在标准SAP业务应用中常会修改标准程序和增加一些自己的功能代码来满足特定化的需求,SAP提供了一些出口对特定的程序、屏幕、MENU以及Docuement进行扩展与修改,他们并不包含任何功能,并被分离存在特定的package里所以他既不会影响标准SAP源代码也不会妨碍升级。除了通过后台配置客户化,我们常用主要有三种用户出口来进行Enhancement和Modification:   
      1,User Exit,最早的出口嵌写在标准程序里,修改起来也最为复杂。如Order处理上使用的SAPMV45A中就包含大量ZZ或YY结尾的user exit程序MV45AFZZ/MV45AIZZ。 
      2,Customer Exit,主要有三种类型Menu Exit/Screen Exit/FM Exit,首先通过CMOD来创建一个Project然后指定所需要的Enhancement,然后指定Component并激活。最后则需要加些所需代码在自动创建一个Z程序里。
      3, BADI,SE18/SE19,正如引入了OO的技术,在定义与实现在与Customer Exit两层是一样的,能客户化用户想用的标准解决方案的逻辑,对于开发者主要是通过一些方法来找到合适的BADI。

 

对于Order Business Process的MV45AFZZ中User Exit开发主要常用在下面几个Form中:

userexit_save_document

userexit_save_document_prepare

userexit_field_modification

userexit_move_field_to_vbap

当然还包括ZZ程序里的很多类似的Form,通过Google搜可以详细知道他们分别有不同的用途。

 

如常用T-code SHD0来标准的屏幕Field创建一个Variant,然后用VOV8来为不同的doc type指定不同的Variant,这样可以对屏幕Field进行控制:预设置值,必须/可选值,显示/隐藏值等等,这样非常容易设置sales order screen layout。对于更为细致的设置可以选用userexit_field_modification,例如通过权限来控制那些字段是可见或非可见的

if sy-tcode ='XXXX' and screen-name = <your screen field>.
    AUTHORITY-CHECK OBJECT 'XXX' ID 'XXXX' FIELD <screen name>.
    if sy-subrc = 0.
       screen-input = 0.     " Disable it
       screen-invisible = 1. " Hide it
       modify screen.
    endif.
endif.

 

User Exit的选用

User Exit的选用应该是非常谨慎的,如果有合适的其他出口可代替最好不好,特别是order包括inquiry/quotation/contract大量代码公用,以及SAP最为初始的源代码非常不易于Debug甚至后台运行,选用上还是根据具体的业务找合适的位置:是初始化的修改,是SAVE前的校验,是SAVE时的值的更新与增删,无外乎是对VBAP,VBAK,VBKD,VBEP,VBSN,VBUP,VEDA等等各个表的操作。

 

值的选取

值的选取不像Customer Exit和BADI,import和export的数据非常清楚,在order user exit则非常含糊,如VBAK *VBAP XVBAP YVBAK FXVEDA FYVBPF等等带* X Y FX FY的表都具有特定的意义:

X: 一般表示更新的值,

Y: 一般表示不完整的值,

FX,FY:中间变量。

另外,在条件判断上可能并没有提供相应的值,可以通过abap memory来获取;另外系统也提供了一些类似sd_vbxx_select来获取当前最新的值。

 

 

数据库问题

事实上在取值上直接通过select VBXX来获取,一些字段可能已经被更新甚至是删除以至获取的数据是过时的,这样会导致数据误操作,最终还得多从X,Y表上去检测。

同样,尽量减少Open SQL的操作(insert/delete/modify/upate),运用自身的business process来完成。

 

代码作用域

上面提到大量代码公共,在什么情况下该使用呢?适当的逻辑判断是非常有必要的,例如像我们常用的的order type(vbak-auart )外还有一些不可忽视的条件:

sy-tcode   (查看SYST)

sy-ucomm

t180-trtyp

 

测试与监控

对于user exit代码的测试,采用我们一般的测试办法问题并不大,但对memory里的数据操作,如何去检测似乎并不是一件简单的事,特别是对一些“很莫名”的问题:

(SAPLV45W)XVEDA[],类似的其他表可以查看更新后的值

ST05,通过这个t-code可以对sql进行trace,查看值是否被成功写入DB

SM13,查看update Request是否成功执行

SM21,查看system log,是否有些process被中止

以及其他的一些sm35 sm50 st01 st22 类似的SM/ST的t-code。

 

 

 

6
5
分享到:
评论

相关推荐

    SAP屠夫作品汇总

    Report painter外资公司如何出中方式报表. 234 FICO统驭和中间清算 245 Field status and Coding block subscreen 字段状态组实例 250 特别总帐标识 255 预付款处理 258 目的 258 流程 258 预付款结帐 258 发票冻结...

    最全的oracle常用命令大全.txt

    SQL&gt;select index_name,index_type,table_name from user_indexes order by table_name; 查看索引被索引的字段 SQL&gt;select * from user_ind_columns where index_name=upper('&index_name'); 查看索引的大小 ...

    ABAP Program Tips

    - **Userexit_Komkbv1_Fill**:这是一个用户退出函数模块的例子,用于填充某些字段。 - **Master_IDoc_Distribute**:负责分发主IDOC。 - **IDoc_Status_Write_To_Database**:将IDOC状态写入数据库。 - **IDoc_Type...

    ABAP_Program_Tips

    - **示例**:BAPI_SALESORDER_GETDETAIL (获取销售订单详细信息)。 ##### 3.2 对话编程 (Dialog Programming) - **3.2.1 进程值请求 – F4 (Process On Value Request – F4)** - **概述**:实现 F4 快捷键的功能...

    资深DBA对Oracle编写规范的总结

    在数据库开发过程中,遵循一套标准化的编码规范不仅能够提升代码的可读性和可维护性,还能有效降低后期优化的成本。对于个人开发者或是整个开发团队而言,一套统一且规范化的编码规则能够极大地促进代码质量的提升,...

    Oracle数据库学习日记

    - **文件操作**: SQL*Plus支持基本的文件操作,如读取文件中的命令 (`@file_name`) 和将查询结果输出到文件 (`spool file_name`)。 **1.1.9 & 交互式命令** - **变量替换**: SQL*Plus支持使用 `&variable` 来获取...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

     删除HKEY_CURRENT_USER/SOFTWARE/Microsoft/windows/CurrentVersion/Explorer/MenuOrder/Start Menu/Programs中所有以oracle 开头的键。  删除HKDY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBCINST.INI中除Microsoft ...

    mysql常用命令总结(含详细的范例)

    mysql&gt; SELECT item, MAX(price) FROM sales GROUP BY item; ``` #### 八、孪生项目的查询 **知识点18:查找所有未分发的孪生项** - **命令**:`SELECT t1.*, t2.* FROM twins t1 JOIN twins t2 ON t1.twin_id = ...

    ABAP Program Tips.pdf

    这个文档对ABAP开发从业者有很大帮助,日常开发过程中碰到的基本上都包含在这个文档里面: Table of Contents 3.4 FILE PROCESSING-----------------------------23 CHAPTER 1 USEFUL TRANSACTIONS 3 3.4.1 ...

    BURNINTEST--硬件检测工具

    - Changed the 2D test to wait for the Video Playback test in order to allow memory allocation for the Video playback test. - Changed the Memory test to wait for the Video Playback test and 3D test ...

    win 3.11 for workgroup tcpip支持

    addressing and configuration dynamically with no user intervention. DHCP depends on your network administrator to set up a DHCP server on your network. A DHCP server is scheduled to ship as part of ...

Global site tag (gtag.js) - Google Analytics