生产订单相关增强

作者:斌将军 约 5 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, PP, 开发, 生产
生产订单相关增强 - 封面图
生产订单相关增强 - 封面图

**目录**

01.CO01生产订单屏幕增强

02\. CO01/CO02生产订单组件库存地点替换

******** ** **

CO01生产订单屏幕增强

**1、生产订单客户屏幕新增字段**

生产订单相关增强 - 封面图
生产订单相关增强 - 封面图

**2、生产订单抬头AUFK表的CI_AUFK中新增屏幕字段**

生产订单相关增强 - 封面图
生产订单相关增强 - 封面图

**3、CMOD 增强分配PPCO0012**

生产订单相关增强 - 封面图
生产订单相关增强 - 封面图

修改0100屏幕,新增对应字段,其中生产订单类型设置为下拉框

生产订单相关增强 - 封面图
生产订单相关增强 - 封面图

EXIT_SAPLCOKO1_001——>ZXCO1U11

首先在ZXCO1TOP中引入增强结构COCI_AUFK(其中是上述增强到表中的字段)

生产订单相关增强 - 封面图
生产订单相关增强 - 封面图

将前台输入的数据放入增强结构中,本例还通过工厂限制增强字段是否启用,根据事务代码限制增强字段是否可编辑

生产订单相关增强 - 封面图
生产订单相关增强 - 封面图

EXIT_SAPLCOKO1_002——>ZXCO1U12

生产订单相关增强 - 封面图
生产订单相关增强 - 封面图

回到0100屏幕

生产订单相关增强 - 封面图
生产订单相关增强 - 封面图

status_0100代码如下

"-----------------------------------------@斌将军--------------------------------------------IF gv_activity = 'X'. DATA:lt_list TYPE vrm_values, ls_list TYPE vrm_value. SELECT werks,"工厂 zlxbs,"订单类型 zlxbsms"订单类型文本 (30 个字符) FROM zXX INTO TABLE @DATA(lt_ddlx) WHERE werks = @gv_werks. REFRESH:lt_list. LOOP AT lt_ddlx INTO DATA(ls_ddlx). CLEAR:ls_list. ls_list-key = ls_ddlx-zlxbs. ls_list-text = ls_ddlx-zlxbsms. APPEND ls_list TO lt_list. ENDLOOP. CALL FUNCTION 'VRM_SET_VALUES' EXPORTING id = 'COCI_AUFK-ZLXBS' values = lt_list EXCEPTIONS id_illegal_name = 1 OTHERS = 2.

"设置字段不可编辑 IF gv_edit <> 'X'. LOOP AT SCREEN. IF screen-name+(9) = 'COCI_AUFK'. screen-input = '0'. MODIFY SCREEN. ENDIF. ENDLOOP. ENDIF. ELSE. LOOP AT SCREEN. IF screen-name+(9) = 'COCI_AUFK'. screen-active = '0'. MODIFY SCREEN. ENDIF. ENDLOOP. ENDIF."-----------------------------------------@斌将军--------------------------------------------

屏幕类型需要设置为子屏幕,否则会DUMP

生产订单相关增强 - 封面图
生产订单相关增强 - 封面图

激活以上所有组件即可

CO01/CO02生产订单组件库存地点替换

** 1、生产订单组件库存地点替换 **

当生产订单维护组件点击 ** 保存 ** 时,根据对应的工厂和工作中心,到配置表中查询对应的库存地点,并将自动带出的库存地点替换

生产订单相关增强 - 封面图
生产订单相关增强 - 封面图

** 2、隐式增强 **

在函数CO_VB_ORDER_POST中添加隐式增强逻辑(此函数为异步调用)

生产订单相关增强 - 封面图
生产订单相关增强 - 封面图

参考代码

"-----------------------------------------@斌将军--------------------------------------------ENHANCEMENT 1 ZPPXXX. "active version

READ TABLE CAUFVTA INDEX 1.IF CAUFVTA-WERKS = 'XXXX'. IF AFVGTAB[] IS NOT INITIAL. SELECT OBJTY,"资源的对象类型 OBJID,"资源的对象 ID ARBPL"工作中心 FROM CRHD INTO TABLE @DATA(LT_CRHD) FOR ALL ENTRIES IN @AFVGTAB WHERE OBJID = @AFVGTAB-ARBID. IF LT_CRHD IS NOT INITIAL. "获取配置表对应的库存地点 SELECT * FROM ZXXX INTO TABLE @DATA(LT_XBC) FOR ALL ENTRIES IN @LT_CRHD WHERE ARBPL = @LT_CRHD-ARBPL AND WERKS = @CAUFVTA-WERKS. LOOP AT RESBTAB ASSIGNING FIELD-SYMBOL(<FS_RESB>) WHERE RGEKZ = 'X'. READ TABLE AFVGTAB WITH KEY AUFPL = <FS_RESB>-AUFPL APLZL = <FS_RESB>-APLZL. IF SY-SUBRC EQ 0. READ TABLE LT_CRHD INTO DATA(LS_CRHD) WITH KEY OBJID = AFVGTAB-ARBID. IF SY-SUBRC EQ 0. READ TABLE LT_XBC INTO DATA(LS_XBC) WITH KEY ARBPL = LS_CRHD-ARBPL. IF SY-SUBRC EQ 0. <FS_RESB>-LGORT = LS_XBC-LGORT."库存地点 ENDIF. ENDIF. ENDIF. ENDLOOP. ENDIF. ENDIF.ENDIF.ENDENHANCEMENT."-----------------------------------------@斌将军--------------------------------------------

** 1、CO41计划订单中新增字段 **

报表中新增字段, 并可维护,当点击 **转换** 创建生产订单时,将四个字段的值,维护到生产订单对应的字段中

生产订单相关增强 - 封面图
生产订单相关增强 - 封面图

** 2、增强结构 **

在SFC_POCO中新增对应的字段

生产订单相关增强 - 封面图
生产订单相关增强 - 封面图

** 3、屏幕增强 **

找到前台屏幕对应的函数组COUP和0200屏幕,添加可编辑列

生产订单相关增强 - 封面图
生产订单相关增强 - 封面图

屏幕流中,将维护的数据抛内存,用于接下来创建生产订单使用

生产订单相关增强 - 封面图
生产订单相关增强 - 封面图
生产订单相关增强 - 封面图
生产订单相关增强 - 封面图

** 4、隐式增强 **

接收前台抛内存的数据,并将其维护到生产订单内表中

生产订单相关增强 - 封面图
生产订单相关增强 - 封面图

**

**

斌将军

关于作者:斌将军

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「生产订单相关增强.md」整理生成,仅用于内部技术分享与学习交流。