VA01 销售订单 审批 状态 增强

来源:互联网 发布:程序员教程 第四版 编辑:程序博客网 时间:2024/05/01 11:00
需求:
在使用事务代码VA01创建销售订单时,在点击保存按钮后,根据销售组织(VBAK-VKORG)及订单类型(VBAK-AUART)读取自定义表,如果自定义表有值且“自动审批”标识为“X”则自动将该订单抬头-状态中的参数设置为40审批通过。

前台位置:
VA01 <wbr>销售订单 <wbr>审批 <wbr>状态 <wbr>增强

VA01 <wbr>销售订单 <wbr>审批 <wbr>状态 <wbr>增强

spro配置的地方:
VA01 <wbr>销售订单 <wbr>审批 <wbr>状态 <wbr>增强
VA01 <wbr>销售订单 <wbr>审批 <wbr>状态 <wbr>增强


VA01 <wbr>销售订单 <wbr>审批 <wbr>状态 <wbr>增强

VA01 <wbr>销售订单 <wbr>审批 <wbr>状态 <wbr>增强


看看具体的表:
VA01 <wbr>销售订单 <wbr>审批 <wbr>状态 <wbr>增强

VA01 <wbr>销售订单 <wbr>审批 <wbr>状态 <wbr>增强

VA01 <wbr>销售订单 <wbr>审批 <wbr>状态 <wbr>增强


找到增强点:
VA01 <wbr>销售订单 <wbr>审批 <wbr>状态 <wbr>增强

VA01 <wbr>销售订单 <wbr>审批 <wbr>状态 <wbr>增强

可以看看英文的描述:
VA01 <wbr>销售订单 <wbr>审批 <wbr>状态 <wbr>增强


好就是这个位置了,做隐士增强即可

大致参考代码如下:(最好别直接加在里面,封装在fm里,方便以后修改维护)
IF sy-tcode = 'VA01' OR sy-tcode = 'VA02'.
    SELECT SINGLE spbz FROMzsdtlh91070 INTO lv_spbz_flag
       WHERE vkorg = is_vbak-vkorg                                   "销售组织
         AND auart = is_vbak-auart.                                    "单据类型

    IF sy-subrc = 0.
     user_status = 'E0004'.
      CALLFUNCTION 'STATUS_CHANGE_EXTERN'
       EXPORTING
         objnr             =is_vbak-objnr
         user_status       = user_status
       EXCEPTIONS
         object_not_found   = 1
         status_inconsistent = 2
         status_not_allowed = 3
         OTHERS            = 4.
      IFsy-subrc <> 0.
* Implement suitable error handling here
     ELSE.
       RETURN.                                                   "如果审批通过,不再发送
     ENDIF.

    ENDIF. "endifsubrc

  ENDIF. "endif tcode

有时候修改状态,都是先读取 ,用STATUS_READ ,或者修改:STATUS_CHANGE
但是新建的时候,其实库表里是没有的,
所以使用STATUS_CHANGE_EXTERN

具体可以在项目里测试下看看哪个能达到效果

0 0
原创粉丝点击