是否可以在MIRO中显示E错误消息后输入错误字段?

问题描述 投票:1回答:1

我正在通过BADI MRM_HEADER_CHECK在tx MIRO中开发一个验证,当已经使用了“引用”字段时,会显示一条消息。该消息的类型为E,这会禁用屏幕上的每个字段,因此用户无法返回该字段以固定其值。

Screenshot Tcode MIRO

FYI:

  • 我必须显示消息类型E,因为我想阻止除以红色圈起来的两个字段以外的所有字段。我看到人们的建议使用此:

  • 如果我将断点SY-DINNR等于6000。

  • 在我的BADI代码LOOP AT SCREEN中看不到我要禁用的字段名称。

  • MESSAGE <msg> TYPE 'S' DISPLAY LIKE 'E'也不起作用

我无法修改超出我BADI代码的代码,例如在PAI和PBO模块中:

CHAIN.
  fields: f1,f2,f3.
  MODULE <mod name>.
ENDCHAIN.

这是我的BADI代码:

*This field symbol have the values of inputs.
ASSIGN ('(SAPLMR1M)RBKPV') TO <fs_rbkpv>. 
IF <fs_rbkpv>-XBLNR = lwa_bkpf-xblnr.
  MESSAGE lc_message TYPE 'E'.
ENDIF.

有什么想法吗?预先感谢。

sap abap dynpro badi
1个回答
1
投票

不可能。无法从BAdI访问屏幕字段,因此,您应该使用CHAIN...ENDCHAIN语句enhance标准PBO代码,或找到另一个用户出口/ BAdI。

我个人建议您不要过度思考和过于复杂,而只需使用:

MESSAGE 'Your Message' TYPE 'W' DISPLAY LIKE 'E'.

它将显示通常的错误消息,使屏幕字段可以自由输入。无论如何,除非all屏幕字段有效,否则无论发票是否被禁用,发票都不会被保存。附言为什么不像这样使用MRM_HEADER_CHECK提供的标准接口I_RBKPV

IF i_rbkpv-xblnr = lwa_bkpf-xblnr AND sy-tcode = 'MIRO'.
 ...
ENDIF.

通过字段符号直接访问内存是不安全的,不应在不需要时使用。

© www.soinside.com 2019 - 2024. All rights reserved.