**目录**
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、隐式增强 **
接收前台抛内存的数据,并将其维护到生产订单内表中
**
**