[SAP][ABAP] 关于用FUNCTION实现ALV中选择多列的实现
小弟最近在学习ABAP编程,目前在学习ALV部分,我想在ALV的标准菜单上加上自己的排序按钮,当然我用的是FUNCTION显示的ALVGrid。CALLFUNCTION'...
小弟最近在学习ABAP编程,目前在学习ALV部分,我想在ALV的标准菜单上加上自己的排序按钮,当然我用的是FUNCTION显示的ALV Grid。
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER = ' '
* I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = sy-repid "sy-repid表示当前程序,打印表头必备
* I_CALLBACK_TOP_OF_PAGE =
I_CALLBACK_HTML_TOP_OF_PAGE = 'HTML_TOP_OF_PAGE' "表头的HTML形成于HTML_TOP_OF_PAGE这个FORM中
I_CALLBACK_PF_STATUS_SET = CNS_PF_STATUS
I_CALLBACK_USER_COMMAND = CNS_USER_COMMAND
* I_CALLBACK_HTML_END_OF_LIST = ' '
* I_STRUCTURE_NAME =
* I_BACKGROUND_ID = ' '
* I_GRID_TITLE =
* I_GRID_SETTINGS =
IS_LAYOUT = wa_layout
IT_FIELDCAT = it_FIELDCATALOG
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
* IT_SORT =
* IT_FILTER =
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
* I_SAVE = 'A '
* IS_VARIANT =
* IT_EVENTS =
* IT_EVENT_EXIT =
* IS_PRINT =
* IS_REPREP_ID =
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* I_HTML_HEIGHT_TOP = 25
* I_HTML_HEIGHT_END = 0
* IT_ALV_GRAPHICS =
* IT_HYPERLINK =
* IT_ADD_FIELDCAT =
* IT_EXCEPT_QINFO =
* IR_SALV_FULLSCREEN_ADAPTER =
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = it_sflight
* EXCEPTIONS
* PROGRAM_ERROR = 1
* OTHERS = 2
.
问题出在如何选择多列上,现在我只能做到选择单列,用的是SLIS_SELFIELD-FIELDNAME返回列的字段名称后进行处理,但是如何做到选择多行呢?
Any word will help,thx~!
谢谢各位的回答,目前的问题在于我可以多选列,但是如何得到选定列的信息(如字段名字)呢?
PS:单选列我也可以做到,问题在于多选!!! 展开
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER = ' '
* I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = sy-repid "sy-repid表示当前程序,打印表头必备
* I_CALLBACK_TOP_OF_PAGE =
I_CALLBACK_HTML_TOP_OF_PAGE = 'HTML_TOP_OF_PAGE' "表头的HTML形成于HTML_TOP_OF_PAGE这个FORM中
I_CALLBACK_PF_STATUS_SET = CNS_PF_STATUS
I_CALLBACK_USER_COMMAND = CNS_USER_COMMAND
* I_CALLBACK_HTML_END_OF_LIST = ' '
* I_STRUCTURE_NAME =
* I_BACKGROUND_ID = ' '
* I_GRID_TITLE =
* I_GRID_SETTINGS =
IS_LAYOUT = wa_layout
IT_FIELDCAT = it_FIELDCATALOG
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
* IT_SORT =
* IT_FILTER =
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
* I_SAVE = 'A '
* IS_VARIANT =
* IT_EVENTS =
* IT_EVENT_EXIT =
* IS_PRINT =
* IS_REPREP_ID =
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* I_HTML_HEIGHT_TOP = 25
* I_HTML_HEIGHT_END = 0
* IT_ALV_GRAPHICS =
* IT_HYPERLINK =
* IT_ADD_FIELDCAT =
* IT_EXCEPT_QINFO =
* IR_SALV_FULLSCREEN_ADAPTER =
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = it_sflight
* EXCEPTIONS
* PROGRAM_ERROR = 1
* OTHERS = 2
.
问题出在如何选择多列上,现在我只能做到选择单列,用的是SLIS_SELFIELD-FIELDNAME返回列的字段名称后进行处理,但是如何做到选择多行呢?
Any word will help,thx~!
谢谢各位的回答,目前的问题在于我可以多选列,但是如何得到选定列的信息(如字段名字)呢?
PS:单选列我也可以做到,问题在于多选!!! 展开
4个回答
展开全部
FM'REUSE_ALV_GRID_DISPLAY'的关于这个功能的设置没有找到,但是如果你想要这个功能的话,可以试一试OO ALV。
CL_GUI_ALV_GRID=>SET_TABLE_FOR_FIRST_DISPLAY的IMPORT PARAMETER IS_LAYOUT-SEL_MODE.
A:行或列选择
B:单一选择
C:多条选择
D:单元格选择
CL_GUI_ALV_GRID=>SET_TABLE_FOR_FIRST_DISPLAY的IMPORT PARAMETER IS_LAYOUT-SEL_MODE.
A:行或列选择
B:单一选择
C:多条选择
D:单元格选择
更多追问追答
追问
(oo)有个事件CL_GUI_ALV_GRID=>get_select_cols是专门用来抓列的... 我已经找到了..
但看着SAP自身带的标准菜单栏可以实现多列排序,于是我想也想自己试下
追答
多列的选择不需要特别设定阿,按住ctrl就可以选择多列了。
展开全部
ALV(OO)是可以做到的,用这种普通的,应该没办法做到这步的。首先要捕获事件的。
追问
标准菜单上有这个按钮儿的嘛...
我想自己也可以做到的吧~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在你的it_FIELDCATALOG中第一个字段,设一个checkbox试试
追问
这样是多选行的啊...我想要多选列...~
追答
ctrl呢,可以吗
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
IS_LAYOUT 里面有个参数sel_mode你试试看
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询