You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在COR1/COR2增强中按Z表用户灰化禁用需求数量字段

代码检查结果与修正建议

现有代码的核心问题

  • 事件语法错误:AT SELECTION-SCREEN OUTPUT是ABAP的事件关键字,不能嵌套在IF wa_zita IS NOT INITIAL的条件块中。ABAP事件必须处于全局代码区域,不能被普通条件语句包裹,否则逻辑无法触发。
  • 逻辑执行顺序错误:原代码先查询Z表,再尝试在嵌套的事件中处理屏幕,但事件的触发时机是固定的,这种写法会导致屏幕修改逻辑完全不生效。
  • 潜在字段匹配风险:需要确认COR1/COR2事务中「需求数量」对应的屏幕字段名确实是BDMNG,如果字段名不匹配,灰化逻辑不会起作用。

修正后的代码

AT SELECTION-SCREEN OUTPUT.
IF sy-tcode EQ 'COR1' OR sy-tcode EQ 'COR2'.
  SELECT SINGLE *
    FROM zita_pp_cor1
    INTO @DATA(wa_zita)
    WHERE z_user = @sy-uname.

  IF wa_zita IS NOT INITIAL.
    LOOP AT SCREEN.
      IF screen-name = 'BDMNG'.
        screen-input = 0.
        MODIFY SCREEN.
      ENDIF.
    ENDLOOP.
  ENDIF.
ENDIF.

修正说明

  • 将AT SELECTION-SCREEN OUTPUT事件放在全局区域,确保事务启动时能正确触发屏幕修改逻辑。
  • 调整逻辑顺序:在事件内先判断当前事务是否为COR1/COR2,再查询Z表验证用户是否在限制列表中,最后执行字段灰化操作,完全贴合需求逻辑。
  • 保留原有的字段灰化逻辑,同时确保语法符合ABAP事件模型的要求。

内容的提问来源于stack exchange,提问作者Uzair Qazi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 12:52:42