field module的on input和on request区别

在编辑屏幕的PAI的时候,对字段的检查一般用field xxx module xxx或者用chain。有两种操作可供选择,一种是on input,另一种是on request。

区别是:

on input的触发条件是:只要该字段不为空就会触发module

on request的触发条件是:该字段发生变化后触发module

例如,有两个字段,a、b,两个module,check_a check_b:

field a module check_a on input.

field b module chec_b on request.

无论a发生任何变化,只要a不为空,则每一次回车都会触发check_a;

反之,只有b发生变化后才会触发check_b,如果两次回车中间b没有发生变化,则不会触发check_b。

所以一般来说,用on request的多一些。

另外,以下内容转自其它网站:

1、单个字段检查FIELD <FLD1> MODULE <MDL1>.
2、单个字段多个MODULE检查FIELD <FLD1> MODULE <MDL1>,MODULE <MDL2>.
3、检查多个字段,使用CHAINCHAIN.
FIELD <FLD1>.
FIELD <FLD2>,<FLD3>,<FLD4>.
MODULE <MDL1>.
MODULE <MDL2>.
ENDCHAIN.
表示FLD1,FLD2,FLD3,FLD4有MDL1,MDL2检查。
4、不是初始值检查FIELD <FLD1> MODULE <MDL1> ON INPUT.
ON INPUT表示初始值改变时执行。
特殊情况:
FIELD <FLD1> MODULE <MDL1> ON *-INPUT.
表示用户输入字段首字输入’*’,并切输入字段属性设置了“*”的属性,MODULE有效。
5、有改变的检查FIELD <FLD1> MODULE <MDL1> ON REQUEST.
6、CHAIN中又自断不是初始值检查CHAIN.
FIELD <FLD1>.
FIELD <FLD2>,<FLD3>,<FLD4>.
MODULE <MDL1> ON CHAIN-INPUT.
MODULE <MDL2>.
ENDCHAIN.
注意:CHAIN-INPUT表示FLD1,FLD2,FLD3,FLD4不是初始值时执行MDL1检查

在 ABAP 自定义屏幕中添加长文本框,可以使用屏幕元素 'TEXTEDIT'。以下是添加长文本框的步骤: 1. 打开 ABAP 事务码 SE51,创建或打开你的屏幕集(Screen Set)。 2. 在屏幕集中打开你想要添加长文本框的屏幕。 3. 在屏幕上选择一个合适的位置,然后添加一个元素类型为 'TEXTEDIT' 的屏幕元素。 4. 给该屏幕元素指定一个唯一的名称(例如,'TEXTBOX')和其他相关属性,如长度、行数等。 5. 在 ABAP 程序中,通过逻辑处理模块(PROCESS ON VALUE-REQUEST 或 PROCESS BEFORE OUTPUT)将长文本框与屏幕字段关联起来。 6. 在逻辑处理模块中,使用函数模块 'RS_EDIT_TEXT' 来处理长文本框的输入和输出。 下面是一个简单的示例代码: 1. 在屏幕集中创建一个屏幕并添加长文本框: ```abap PROCESS BEFORE OUTPUT. MODULE status_0100. MODULE status_0100 OUTPUT. SET PF-STATUS 'STATUS_0100'. SET TITLEBAR 'TITLE_0100'. SET SCREEN 100. MODULE text_0100 OUTPUT. SET PF-STATUS 'STATUS_0100'. SET TITLEBAR 'TITLE_0100'. SET SCREEN 100. LOOP AT lt_data INTO ls_data. WRITE: / ls_data-field1, ls_data-field2. ENDLOOP. TEXTEDIT TEXTBOX FOR 10 LINES 60. ENDMODULE. ENDMODULE. ``` 2. 在 ABAP 程序中处理长文本框的输入和输出: ```abap PROCESS ON VALUE-REQUEST. MODULE handle_value_request. MODULE handle_value_request INPUT. DATA: lv_text TYPE string. CALL FUNCTION 'RS_EDIT_TEXT' EXPORTING textname = 'TEXTBOX' default_text = lv_text titlebar = 'Enter Text' IMPORTING edited_text = lv_text EXCEPTIONS cancelled = 1 OTHERS = 2. IF sy-subrc = 0. " 处理编辑后的长文本框内容 ENDIF. ENDMODULE. ``` 在这个示例中,我们在屏幕中添加了一个名为 'TEXTBOX' 的长文本框。然后,在 ABAP 程序的逻辑处理模块中,我们使用函数模块 'RS_EDIT_TEXT' 来处理长文本框的输入和输出。 请根据你的具体需求和屏幕设计进行调整和扩展。希望这个示例能帮助你在自定义屏幕中添加长文本框。如有需要,请提供更多的上下文信息以获取更具体的代码示例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值