在ALV GRID中,不会对输入进行值表检查,也不会显示匹配码。但是,我们可以通过添加自定义的输入检查和匹配码显示来解决这个问题。
以下是一个示例代码,演示了如何在ALV GRID中实现输入检查和匹配码显示:
DATA: gt_data TYPE TABLE OF string,
gv_field TYPE string.
* 初始化数据
gt_data = VALUE #( ( 'A' ) ( 'B' ) ( 'C' ) ).
* 创建ALV GRID控件
CALL SCREEN 100.
*----------------------------------------------------------------------*
* PBO事件处理
*----------------------------------------------------------------------*
MODULE user_command_100 OUTPUT.
DATA: lv_text TYPE string.
CASE sy-ucomm.
WHEN 'BACK'.
SET SCREEN 0.
WHEN 'SAVE'.
LOOP AT gt_data INTO lv_text.
IF gv_field IS INITIAL OR gv_field <> lv_text.
MESSAGE 'Invalid value entered' TYPE 'E'.
EXIT.
ENDIF.
ENDLOOP.
ENDCASE.
ENDMODULE.
*----------------------------------------------------------------------*
* PAI事件处理
*----------------------------------------------------------------------*
MODULE user_command_100 INPUT.
DATA: lv_text TYPE string.
CASE sy-ucomm.
WHEN 'FIELDS'.
LOOP AT SCREEN.
CASE screen-group1.
WHEN 'ALV'.
LOOP AT gt_data INTO lv_text.
screen-input = '1'.
screen-output = '1'.
screen-input = '0'.
screen-fieldname = 'GV_FIELD'.
screen-value = lv_text.
APPEND screen.
ENDLOOP.
ENDCASE.
ENDLOOP.
ENDCASE.
ENDMODULE.
在上面的示例代码中,我们在PBO(Process Before Output)事件中进行了输入检查。在SAVE按钮被点击时,将遍历ALV GRID中的每一行,并检查输入是否有效。如果输入为空或与值表中的值不匹配,则显示一个错误消息。
在PAI(Process After Input)事件中,我们通过循环遍历值表中的每个值,并将其添加到ALV GRID中,以实现匹配码的显示。通过将格子设置为可输入和可输出,我们可以允许用户进行输入和选择匹配码。
请注意,这只是一个示例代码,你可以根据你的具体需求进行调整和扩展。