【ABAP系列】SAP 销售订单的行项目里条件的增强

公众号: SAP Technical
本文作者: matinal
 

 

前言部分

大家可以关注我的公众号,公众号里的排版更好,阅读更舒适。

正文部分

如果要设置销售订单行项目里的某个类型下的金额数据

可能要用到增强来做

比如项目类别为TANN时,设置价格为空

在LV69AFZZ里面控制

代码如下:

 

  IF KOMP-PSTYV = 'TANN'.
    KOMP-MWSBP = 0.
      KOMV-KBETR = 0.
      KOMV-KWERT = 0.
      KOMV-KWERT_K = 0.
  ENDIF.


那么比如说:PR01下面有很多个数据行

 

要区分这个类型下的数据行,如何区分呢

暂时还没找到答案,谁知道,希望给个答案。

转载于:https://www.cnblogs.com/SAPmatinal/p/11181444.html

### SAP 采购订单项目字段增强ABAP 自定义开发解决方案 在 SAP 系统中,对采购订单项目的字段进增强通常需要通过增强点(Enhancement Points)或自定义开发来实现。以下是针对此需求的具体实现方法和相关代码示例。 #### 增强点的实现 如果系统提供了增强点(如引用中的 `MM06E005`),可以通过以下步骤完成: 1. **创建子屏幕** 在增强中创建一个新的子屏幕(例如 `0111`),并在其模块中添加逻辑以控制字段的输入模式。以下是实现代码: ```abap MODULE status_0111 OUTPUT. IF edit_mode = 'A'. LOOP AT SCREEN. screen-input = 0. " 禁用字段输入 MODIFY SCREEN. ENDLOOP. ENDIF. ENDMODULE. ``` 2. **数据传输到自定义屏幕** 使用增强提供的逻辑将数据传递到自定义屏幕。以下是实现代码: ```abap ZXM06U41 MOVE-CORRESPONDING i_ci_ekpo TO ekpo_ci. edit_mode = i_aktyp. ``` 3. **回传数据到主程序** 将自定义屏幕上的数据回传到主程序中。以下是实现代码: ```abap ZXM06U40 MOVE-CORRESPONDING ekpo_ci TO E_CI_EKPO. ``` 4. **激活增强** 完成上述步骤后,激活增强以确保其生效[^1]。 #### 自定义开发的实现 如果系统未提供增强点,则需要通过自定义开发来实现。以下是具体步骤: 1. **扩展采购订单表结构** 在数据库表 `EKPO` 中添加自定义字段。可以通过 SE11 创建透明表扩展或使用附加结构(Append Structure)[^2]。 2. **修改屏幕逻辑** 在采购订单屏幕逻辑中添加自定义字段的显示和输入控制逻辑。以下是示例代码: ```abap DATA: l_ci_ekpo TYPE ci_ekpo, l_ci_ekpo_db TYPE ci_ekpo_db. MOVE-CORRESPONDING e_ci_ekpo TO l_ci_ekpo_db. IF l_ci_ekpo_db <> l_ci_ekpo. MOVE-CORRESPONDING l_ci_ekpo_db TO e_ci_ekpo. edit_mode = abap_true. ENDIF. ``` 3. **BAPI 实现** 如果需要通过 BAPI 操作自定义字段,可以在 BAPI `BAPI_TE_MEPOITEM` 和 `BAPI_TE_MEPOITEMX` 中添加对应的字段。以下是示例代码: ```abap DATA: ls_mepoitem TYPE bapi_te_mepoitem, ls_mepoitemx TYPE bapi_te_mepoitemx. ls_mepoitem-z_custom_field = 'X'. " 自定义字段值 ls_mepoitemx-z_custom_field = abap_true. " 标记字段为可更新 ``` 4. **测试与部署** 完成开发后,进全面测试以确保自定义字段的功能正常,并将其部署到生产环境[^2]。 ### 注意事项 - 确保自定义字段的名称符合命名规范,避免与其他字段冲突。 - 在修改屏幕逻辑时,需仔细验证字段的输入和显示为,以免影响现有功能。 - 如果涉及数据库表扩展,需评估性能影响并进优化。 ```abap " 示例:在采购订单保存时更新自定义字段 DATA: ls_ekpo TYPE ekpo. SELECT SINGLE * FROM ekpo INTO ls_ekpo WHERE ebelp = p_ebelp. IF sy-subrc = 0. ls_ekpo-z_custom_field = 'X'. " 设置自定义字段值 UPDATE ekpo FROM ls_ekpo. ENDIF. ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值