需求:

在使用事务代码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>增强

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

大致参考代码如下:(最好别直接加在里面,封装在fm里,方便以后修改维护)

IF sy-tcode = 'VA01' OR sy-tcode = 'VA02'.

    SELECT SINGLE spbz FROM zsdtlh91070 INTO lv_spbz_flag

        WHERE vkorg = is_vbak-vkorg                                          "销售组织

          AND auart = is_vbak-auart.                                            "单据类型

    IF sy-subrc = 0.

      user_status = 'E0004'.

      CALL FUNCTION '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.

      IF sy-subrc <> 0.

* Implement suitable error handling here

      ELSE.

        RETURN.                                                             "如果审批通过,不再发送

      ENDIF.

    ENDIF. "endif subrc

  ENDIF. "endif tcode

有时候修改状态,都是先读取 ,用STATUS_READ ,或者修改:STATUS_CHANGE

但是新建的时候,其实库表里是没有的,

所以使用STATUS_CHANGE_EXTERN

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

欢迎关注订阅号:SAP学习记录 (SAPlearning )



PO <wbr><wbr>text <wbr><wbr>copy <wbr><wbr>rules <wbr><wbr>:copy <wbr><wbr>PR <wbr><wbr>item <wbr><wbr>text <wbr><wbr>to <wbr><wbr>PO