如何设置ALV输出界面上的某一可编辑行的字段值为必输
(2011-06-07 21:57:33)
标签:
abapalv编辑字段必输杂谈 |
分类: SAP家园-ABAP常见问题 |
今天,一个以前的同事问我这个问题,当时就把我问愣住了。第一反应是不可能实现。当时我好象就是这么回答的。后来想想,ALV是输出用的,标准的程序中可能没有这个功能,那么我们能不能自己写代码实现呢?答案是肯定的。
经过我仔细地研究,决定用如下方法实现:
1、在结果内表中加一个MSSG字段,用来保存某行的该字段为空时的错误提示。
2、在ALV的USER_COMMAND事件中,添加该字段的检查,当该字段为空时,将错误信息更新到内表的MSSG字段内。
3、在USER_COMMAND中添加错误信息输出的代码,如果有该字段为空的情况,则输出一个E类型的MESSAGE信息。
具体代码我也实现了(如果ALV界面再输出一个顺序排列的行号,这个程序就非常完整了)。整体程序代码如下(关键处标记为红色):
*&---------------------------------------------------------------------*
*& Report
*&
*&---------------------------------------------------------------------*
*& Created by Xavery Hsueh(薛现军)
*& Created on 2011-06-07
*& Background
*& Arithmetic
*&
Version
*& Function Description
*&---------------------------------------------------------------------*
*@=====================================================================@
*@ 声明数据库表
*@=====================================================================@
TABLES: t006,
*@=====================================================================@
*@ 定义结构类型
*@=====================================================================@
TYPES:BEGIN OF typ_result,
*@=====================================================================@
*@ 定义全局变量、内表与工作区
*@=====================================================================@
DATA:gt_result TYPE TABLE OF typ_result WITH HEADER
LINE.
FIELD-SYMBOLS
DATA:g_indic TYPE c.
*@------------------ ALV 相关的变量
-----------------------------------*
TYPE-POOLS:slis.
DATA: g_grid TYPE REF TO