VA02 删除销售订单增强,根据订单类型确认是否可删除
2018-01-08 14:36
706 查看
程序:MV45AFZB,
FORM:USEREXIT_CHECK_XVBAP_FOR_DELET.
This form is called when user tries to delete an item from the sales document or by clicking Delete button and confirming the popup or tries to delete the order from the header by selecting Sales document -> Delete. This way, user will be informed immediately that item cannot be deleted. Required code is as below:
IF… “Appropriate condition to separate deletable items for other plants
IF VBAP-POSNR NE ‘000000’. “This prevents a short dump when user tries to delete the order from the header by selecting Sales document -> Delete
MESSAGE E001(00) WITH 'DELETE FAILURE'.
ENDIF.
US_EXIT = CHARX.
ENDIF.
That’s it – This way items cannot be deleted from sales documents.
也就是说针对单独的行项目删除提示没有任何问题,如果通过菜单栏 销售凭证->删除 删除整张凭证会dump
最如下改进:
FUNCTION:
第一种(整单删除校验推荐使用)
FUNCTION zsd_005_check_sotype_for_delet.
*"----------------------------------------------------------------------
*"*"本地接口:
*" IMPORTING
*" REFERENCE(IV_AUART) TYPE VBAK-AUART
*" REFERENCE(IV_VBELN) TYPE VBAP-VBELN
*" REFERENCE(IV_POSNR) TYPE VBAP-POSNR
*" REFERENCE(IV_ACTIVATE) TYPE FLAG DEFAULT 'X'
*" EXPORTING
*" VALUE(EV_US_EXIT) TYPE FLAG
*"----------------------------------------------------------------------
CHECK iv_activate = 'X'.
CHECK iv_auart = 'ZOR0'. "订单类型待确定
ev_us_exit = abap_true.
MESSAGE s001(00) WITH '该订单不允许直接删除,请使用关闭订单的方式关闭该订单'
DISPLAY LIKE 'E'.
LEAVE TO TRANSACTION 'VA02' AND SKIP FIRST SCREEN .第二种(行项目删除校验推荐使用)
MV45AFZB增强
搞定
如果删除SO的时候,需要更新自建表信息
路径:MV45AFZZ->FORM: USEREXIT_DELETE_DOCUMENT
FORM:USEREXIT_CHECK_XVBAP_FOR_DELET.
This form is called when user tries to delete an item from the sales document or by clicking Delete button and confirming the popup or tries to delete the order from the header by selecting Sales document -> Delete. This way, user will be informed immediately that item cannot be deleted. Required code is as below:
IF… “Appropriate condition to separate deletable items for other plants
IF VBAP-POSNR NE ‘000000’. “This prevents a short dump when user tries to delete the order from the header by selecting Sales document -> Delete
MESSAGE E001(00) WITH 'DELETE FAILURE'.
ENDIF.
US_EXIT = CHARX.
ENDIF.
That’s it – This way items cannot be deleted from sales documents.
也就是说针对单独的行项目删除提示没有任何问题,如果通过菜单栏 销售凭证->删除 删除整张凭证会dump
最如下改进:
FUNCTION:
第一种(整单删除校验推荐使用)
FUNCTION zsd_005_check_sotype_for_delet.
*"----------------------------------------------------------------------
*"*"本地接口:
*" IMPORTING
*" REFERENCE(IV_AUART) TYPE VBAK-AUART
*" REFERENCE(IV_VBELN) TYPE VBAP-VBELN
*" REFERENCE(IV_POSNR) TYPE VBAP-POSNR
*" REFERENCE(IV_ACTIVATE) TYPE FLAG DEFAULT 'X'
*" EXPORTING
*" VALUE(EV_US_EXIT) TYPE FLAG
*"----------------------------------------------------------------------
CHECK iv_activate = 'X'.
CHECK iv_auart = 'ZOR0'. "订单类型待确定
ev_us_exit = abap_true.
MESSAGE s001(00) WITH '该订单不允许直接删除,请使用关闭订单的方式关闭该订单'
DISPLAY LIKE 'E'.
LEAVE TO TRANSACTION 'VA02' AND SKIP FIRST SCREEN .第二种(行项目删除校验推荐使用)
FUNCTION zsd_005_check_sotype_for_delet. *"---------------------------------------------------------------------- *"*"本地接口: *" IMPORTING *" REFERENCE(IV_AUART) TYPE VBAK-AUART *" REFERENCE(IV_VBELN) TYPE VBAP-VBELN *" REFERENCE(IV_POSNR) TYPE VBAP-POSNR *" REFERENCE(IV_ACTIVATE) TYPE FLAG DEFAULT 'X' *" EXPORTING *" VALUE(EV_US_EXIT) TYPE FLAG *"---------------------------------------------------------------------- DATA: BEGIN OF lt_so OCCURS 0, posnr TYPE vbap-posnr, END OF lt_so. CHECK iv_activate = 'X'. SELECT posnr INTO CORRESPONDING FIELDS OF TABLE lt_so FROM vbap WHERE vbeln = iv_vbeln. "获取最后一条行项目的 行项目号,且只有最后一条时跳出提示窗口 SORT lt_so BY posnr DESCENDING. READ TABLE lt_so INDEX 1. IF iv_auart = 'ZXXX'. "订单类型待确定 ev_us_exit = abap_true. IF iv_posnr = lt_so-posnr. "最后一条时,跳窗提示 MESSAGE i001(00) WITH '该订单不允许直接删除,请使用关闭订单的方式关闭该订单'. ENDIF. ENDIF. ENDFUNCTION.
MV45AFZB增强
FORM USEREXIT_CHECK_XVBAP_FOR_DELET USING US_ERROR US_EXIT. * Example * IF US_ERROR NE SPACE. * MESSAGE ...... * ENDIF. * IF ....... * US_EXIT = CHARX. * ENDIF. *{ INSERT DEVK900048 1 * 删除SO时 根据订单类型确认是否可删除 CALL FUNCTION 'ZSD_005_CHECK_SOTYPE_FOR_DELET' EXPORTING iv_auart = vbak-auart iv_vbeln = xvbap-vbeln iv_posnr = xvbap-posnr * iv_activate = 'X' IMPORTING ev_us_exit = us_exit. *} INSERT ENDFORM.OK~~~
搞定
如果删除SO的时候,需要更新自建表信息
路径:MV45AFZZ->FORM: USEREXIT_DELETE_DOCUMENT
相关文章推荐
- 是同一个销售订单类型,根据不同销售组织分配不同的号码段的增强出口
- 采购订单增强(根据公司代码、采购订单类型等相关订单信息给采购订单税码设置默认值)
- BAPI:BAPI_SALESORDER_CHANGE (TCODE:VA02 销售订单修改)
- VA01销售订单增强MV45AFZZ注意点
- VA01销售订单增强MV45AFZZ注意点
- VL01N/VL02N增强-退货订单(ZRE,ZWRE,ZRD)在VL01N对于发货过账时判断成本是否为0碰到的问题
- 为Gridview的CommandField删除添加"是否确认删除?"
- Lucene 4.4 根据Int类型字段删除索引
- GridView 结合ymPrompt脚本实现的确认是否删除操作
- 关于通过使用BAPI创建销售订单(抬头信息中:含增强字段)
- JS返回是否确认删除或者其他…
- c# winform 弹出确认消息框判断是否删除?
- jquery实现弹出确认是否删除的一个简单代码
- redis 全局命令 查看所有的键,删除键,检查键是否存在,获取过期时间,键的数据结构类型
- 根据订单类型和运输方式限制字样
- 根据PackageInfo查看该包中是否有launcher类型的activity
- 查询删除的SAP销售订单
- 是否删除订单
- Java常考面试题8 深刻认识JAVA重载和重写 以及是否可以根据返回类型来区分重载
- ABAP模块-根据销售订单创建交货单BAPI