VL01N/VL02N增强-退货订单(ZRE,ZWRE,ZRD)在VL01N对于发货过账时判断成本是否为0碰到的问题

本文介绍如何在SAP VL01N发货过程中通过增强MCS50001进行特殊订单类型的判断,并利用SY-UCOMM变量来区分发货过账操作,确保特定条件下正确执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ZOR,ZWOR等类型订单在VL01N发货过账时用增强MCS50001判断,但是ZRE等类型的退货订单不会进入MCS50001这个增强,早几个月前就找过VL01N的增强,当时测试了很多都不会执行,今天下了狠心,把所有增强都打开,发现还真有个增强可以执行到。早先测试的时候看这个增强怎么也不像是用于判断的。
经测试发现该增强在VL01N新创建及发货过账的时候都会执行。而且参数只有 is_lips 和is_likp,在新建和发货过账时完全一样,业务部门要求在发货过账时才判断,根本无法用现有参数数据判断是否新建还是发货过账,又给出了一大难题。
折腾了好长时间想到直接用SY-UCOMM判断是否点击了发货过账按钮,经测试还真可以。

  *&---------------------------------------------------------------------*
*&  包括                ZXV50U07
*&---------------------------------------------------------------------*
break ypcheng.


DATA: field(30),
      ls_attyp LIKE mara-attyp,
      ls_taklv LIKE mara-taklv,
      ldc_kwert LIKE konv-kwert,
      ls_knumv LIKE vbak-knumv,
      ls_matnr LIKE vbap-matnr,
      ls_mtart LIKE mara-mtart.
DATA: ls_message(200) TYPE c.
FIELD-SYMBOLS:<f1> TYPE ANY,<f2> TYPE ANY.
break ypcheng.
IF sy-ucomm = 'WABU_T'.
  break ypcheng.
  field = '(SAPMV50A)VBAK-AUART'.
  ASSIGN (field) TO <f1>.
  IF <f1> = 'ZRE' OR <f1> = 'ZWRE' OR <f1> = 'ZRD'.
    break ypcheng.
    field = '(SAPMV50A)VBAK-KNUMV'.
    ASSIGN (field) TO <f2>.
    ls_knumv = <f2>.
    ls_message = ''.
    SELECT kwert INTO ldc_kwert FROM konv WHERE knumv = ls_knumv AND ( kschl = 'ZIV3' OR kschl = 'ZIV1' OR kschl = 'VPRS' ) AND kposn = is_lips-posnr.
      SELECT SINGLE attyp mtart INTO (ls_attyp,ls_mtart) FROM mara WHERE matnr = is_lips-matnr.
      IF ldc_kwert = 0 AND is_lips-matkl <> 'R1699' AND is_lips-matkl <> 'R9998' AND is_lips-matkl <> 'R9999' AND is_lips-lfimg > 0 AND ls_attyp <> '10' AND ls_mtart <> 'Z008'.
        CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
          EXPORTING
            input  = is_lips-matnr
          IMPORTING
            output = ls_matnr.


        CONCATENATE '当前订单' ls_matnr '商品的ZIV1/ZIV3/VPRS的价格为0,不能发货过账!' INTO ls_message.
        MESSAGE e398(00) WITH ls_message.
      ENDIF.
    ENDSELECT.

  ENDIF.

ENDIF.


转载自:http://blog.sina.com.cn/s/blog_6f99a0500100ryzl.html




/home/zrd/miniconda3/envs/habitat/lib/python3.9/site-packages/scipy/__init__.py:146: UserWarning: A NumPy version >=1.17.3 and <1.25.0 is required for this version of SciPy (detected version 1.26.4 warnings.warn(f"A NumPy version >={np_minversion} and <{np_maxversion}" error: unrecognized arguments: --~/zrd usage: datasets_download.py [-h] [--uids [UIDS ...] | --list] [--data-path DATA_PATH] [--clean | --replace | --no-replace] [--username USERNAME] [--password PASSWORD] [--no-prune] optional arguments: -h, --help show this help message and exit --uids [UIDS ...] Unique ID of the data to download. --list List available datasource uid options and exit. --data-path DATA_PATH Optionally provide a path to the desired root data/ directory. Default is "habitat-sim/data/". --clean Remove nested child directories for the datasource. --replace If set, existing equivalent versions of any dataset found during download will be deleted automatically. Otherwise user will be prompted before overriding existing data. --no-replace If set, existing equivalent versions of any dataset found during download will be skipped automatically. Otherwise user will be prompted before overriding existing data. --username USERNAME Username to use for downloads that require authentication --password PASSWORD Password to use for downloads that require authentication --no-prune Optionally disable pruning for git-lfs repo datasources. Use this if your system git version does not support forced pruning (e.g. Ubuntu 20.x).
最新发布
07-07
### SAP VL02N 修改记录中添加字段的方法 在 SAP 中,VL02N 是用于更改交货单的功能事务码。如果需要向修改记录中添加自定义字段,则可以通过增强技术实现这一目标。以下是具体方法: #### 使用 BAdI 实现字段扩展 通过 `LE_SHP_DELIVERY_PROC` 接口类中的方法 `IF_EX_LE_SHP_DELIVERY_PROC~CHANGE_DELIVERY_HEADER` 可以对交货头数据进行操作[^2]。此接口允许开发者在标准功能的基础上增加额外逻辑或更新现有字段。 对于新增字段的需求,可以按照以下方式处理: 1. **创建附加字段** 需要在透明表(如 `VBUK`, `VBUP` 或其他相关表)或者客户表(如 `Z*` 表)中定义新的字段。 2. **利用 BAdI 更新字段值** 在上述提到的 BAdI 方法中编写 ABAP 代码来填充新字段的数据。例如,在保存交货单之前设置这些字段的内容并将其写入数据库。 ```abap METHOD if_ex_le_shp_delivery_proc~change_delivery_header. DATA: lv_custom_field TYPE string. " 设置自定义字段的值 lv_custom_field = 'Custom Value'. " 将该值赋给对应的结构体成员 (假设为 EVDAT) im_evdat-custom_field_name = lv_custom_field. ENDMETHOD. ``` #### 屏幕显示增强 为了让新增加的字段能够显示在用户界面上,还需要执行屏幕增强工作。这通常涉及使用 BAdI 来定制特定页面上的控件布局和行为[^3]。例如,`LE_SHP_TAB_CUST_ITEM` 提供了一个入口点以便于调整行项目的外观与交互特性。 下面是一个简单的例子展示如何激活一个新的标签页作为扩展区域的一部分: ```abap METHOD if_ex_le_shp_tab_cust_item~activate_tab_page. ef_caption = '客制化信息'. ef_program = 'SAPLZFG_VL01N_ITEM'. ef_dynpro = '9001'. ENDMETHOD. ``` 以上代码片段会引入一个名为“客制化信息”的选项卡至默认界面之中。 #### 过账后的验证机制 当完成所有必要的业务流程之后, 如果希望确认某些条件满足与否再决定是否继续下一步骤的话, 则可能需要用到函数模块 `WS_DELIVERY_UPDATE`. 它负责实际提交变更请求并对后台对象实施最终同步动作[^1]. 开发者可以在其中加入额外校验步骤从而确保只有符合预期情形下的数据才会被正式采纳入库。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值