CO01生产订单屏幕增强

1、文档介绍

本文档介绍在生产订单抬头页签中增强字段

2、实现方法

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

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.
"--------------------@斌将军--------------------

3、特殊处理

当增强字段多,又要分工厂显示不同的增强字段,可以通过画两个屏幕,在不同工厂时调用不同的屏幕,方法如下

在原本的100屏幕中,只画一个子屏幕区域

并定义9001和9002两个子屏幕,在这两个屏幕中放入不同的增强字段

在TOP中定义屏幕变量

 在100的屏幕流中判断工厂

"--------------------@斌将军--------------------
MODULE status_0100 OUTPUT.
  "新增代码
  FIELD-SYMBOLS: <zfs_werks>  TYPE aufk-werks.

  ASSIGN ('(SAPLCOKO1)CAUFVD-WERKS') TO <zfs_werks>.

  IF <zfs_werks> = '3060'.
    gv_sid1 = '9002'."
  ELSE.
    gv_sid1 = '9001'."
  ENDIF.
ENDMODULE.
"--------------------@斌将军--------------------

 在100屏幕流中调用子屏幕,展示不同子屏幕内容即可

 

定期更文,欢迎关注

posted @ 2021-10-22 14:46  斌将军  阅读(749)  评论(0编辑  收藏  举报