屏幕中判断必输

AT SELECTION-SCREEN OUTPUT.
  LOOP AT SCREEN.
    IF p_gre = 'X'.
      IF screen-name = 'P_BUK' OR screen-name = 'SE_EKG-LOW'. " 公司代码/采购组上线必输
        screen-required = '2'.
        MODIFY SCREEN.
        CLEAR: se_eko[]. " 清空采购组织
      ENDIF.
    ENDIF.
    IF p_alv = 'X'.
      IF screen-name = 'P_BUK' OR screen-name = 'SE_EKO-LOW'. " 公司代码/采购组织上线必输
        screen-required = '2'.
        MODIFY SCREEN.
        CLEAR: se_ekg[]. " 清空采购组
      ENDIF.
    ENDIF.
  ENDLOOP.
在SAP系统中配置销售订单屏幕字段布局,主要涉及对屏幕字段的显示、隐藏、、只读等属性的控制。根据不同的业务需求,可以采用多种方式来实现字段的布局配置。以下是几种常见的配置方法: ### 1. 使用表单设置控制字段显示 在SAP Business One(SAP B1)中,可以通过【表单设置】功能来控制销售单据中的字段显示。在销售订单界面中,存在三个主要的配置选项卡: - **表格式**:用于控制在【内容】选项卡的表格中显示哪些字段。 - **行格式**:用于控制在【内容】选项卡的行项目中显示哪些字段。 - **单据**:用于维护适用于整个销售订单的字段设置[^2]。 通过勾选或取消勾选相应的字段,可以实现字段的显示或隐藏。 ### 2. 使用隐式增强控制字段属性 在标准事务代码如 VA01、VA02、VA03 中,可以通过隐式增强(Implicit Enhancement)来修改字段入属性。例如,在销售订单中控制“交货冻结”字段入权限,可以在用户出口 `USEREXIT_FIELD_MODIFICATION` 中编写逻辑代码。 例如,以下代码片段可以控制字段 `VBAK-LIFSK` 的入权限: ```abap AUTHORITY-CHECK OBJECT 'ZSD_002' ID 'ZSD_002' DUMMY. IF SY-SUBRC NE 0. CASE SCREEN-NAME. WHEN 'VBAK-LIFSK'. SCREEN-input = 0. ENDCASE. ENDIF. ``` 该代码通过权限对象 `ZSD_002` 控制字段是否允许入,若权限检查失败,则将字段设置为不可编辑状态[^4]。 ### 3. 屏幕变式控制字段状态 在SAP ECC系统中,可以通过**屏幕变式(Screen Variants)** 来控制字段的状态,包括是否、显示、隐藏或只读。这种方式通常用于项目实施或日常运维中,当某些字段无法通过权限对象进行控制时,使用屏幕变式是一种有效手段。 例如,在采购订单中,可以根据订单类型动态控制字段的可编辑性。通过隐式增强 `MEPOBADI_FS_ITEM`,可以实现字段状态的动态控制。以下是一个示例增强逻辑: ```abap ENHANCEMENT 1 ZEH_MM_RETPO. IF ls_me_header-bsart = 'ZDRE'. READ TABLE ch_fieldselection ASSIGNING FIELD-SYMBOL(<lfs_field>) WITH KEY METAFIELD = 106. IF sy-subrc = 0. <lfs_field>-fieldstatus = '*'. " 不可编辑 ENDIF. ELSE. READ TABLE ch_fieldselection ASSIGNING <lfs_field> WITH KEY METAFIELD = 106. IF sy-subrc = 0. <lfs_field>-fieldstatus = '.'. " 可编辑 ENDIF. ENDIF. ENDENHANCEMENT. ``` 此增强逻辑根据采购订单类型 `ZDRE` 动态控制退货项目字段的可编辑性[^3]。 ### 4. 使用模块化程序控制屏幕字段 在某些情况下,可以通过在模块化程序中编写 `LOOP AT SCREEN` 逻辑来控制字段的显示和入属性。例如,在销售订单屏幕增强中,可以编写如下逻辑: ```abap FORM FRM_MODIFY_SCREEN . LOOP AT SCREEN. IF SCREEN-GROUP1 = 'GP1'. IF SY-TCODE = 'VA03' OR SY-TCODE = 'VA23'. SCREEN-INPUT = '0'. " 只读 ELSE. SCREEN-INPUT = '1'. " 可编辑 ENDIF. MODIFY SCREEN. ENDIF. ENDLOOP. ENDFORM. ``` 该逻辑通过事务代码判断来控制字段入状态,适用于需要根据事务代码动态调整字段权限的场景[^5]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值