ALV 实现多表格 ( 多表格的ALV List
昨天写了个报表,似乎格式有点复杂。 一个alv 表格显示两部分数据,没办法就想起了alv的多表格。 具体方法如下,以供参考: 以两个表格为例 第一步: 首先创建两个 FIELDCAT 可以使用 REUSE_ALV_FIELDCATALOG_MERGE . 当然 也可以手工创建 第二步:调用初始化function REUSE_ALV_BLOCK_LIST_INIT CALL FUNCTION ‘REUSE_ALV_BLOCK_LIST_INIT’ EXPORTING
I_CALLBACK_PROGRAM = SY-CPROG “ sy-repid1 * I_CALLBACK_PF_STATUS_SET = ’ ’ * I_CALLBACK_USER_COMMAND = ’ ’ * IT_EXCLUDING = . 第三步:添加表格数据(这里是两个表格)调用REUSE_ALV_BLOCK_LIST_APPEND 因为是两个表格所以要调用两次把两个表格的参数分别传递过来 1.表格一调用的function CALL FUNCTION ‘REUSE_ALV_BLOCK_LIST_APPEND’ EXPORTING2
IS_LAYOUT = gs_layout1 IT_FIELDCAT = T_FIELDCAT1[] I_TABNAME = ‘P_MAKETMP’*
IT_EVENTS = it_events IT_SORT = it_sort#
* I_TEXT = ’ ’ TABLES T_OUTTAB = P_MAKETMP7
* EXCEPTIONS * PROGRAM_ERROR = 1 * MAXIMUM_OF_APPENDS_REACHED = 2 * OTHERS = 3 . IF SY-SUBRC <> 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. 2.表格2调用的function, CALL FUNCTION ‘REUSE_ALV_BLOCK_LIST_APPEND’% l. EXPORTING IS_LAYOUT = gs_layout24 IT_FIELDCAT = T_FIELDCAT2[] I_TABNAME = ‘P_FUNDTMP’ IT_EVENTS = it_events IT_SORT = it_sort * I_TEXT = ’ TABLES T_OUTTAB = P_FUNDTMP
* EXCEPTIONS5 R * PROGRAM_ERROR = 1 * MAXIMUM_OF_APPENDS_REACHED = 2
* OTHERS = 3 . IF SY-SUBRC <> 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO;* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF. 第四步: 输出报表 调用函数‘REUSE_ALV_BLOCK_LIST_DISPLAY CALL FUNCTION ‘REUSE_ALV_BLOCK_LIST_DISPLAY’3 * EXPORTING * I_INTERFACE_CHECK = ’ ’ * IS_PRINT = * I_SCREEN_START_COLUMN = * I_SCREEN_START_LINE = * I_SCREEN_END_COLUMN = * I_SCREEN_END_LINE = * IMPORTING* E_EXIT_CAUSED_BY_CALLER = * ES_EXIT_CAUSED_BY_USER =
* EXCEPTIONS * PROGRAM_ERROR = 1 * OTHERS = 2 . IF SY-SUBRC <> 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO;* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. 经过以上步骤 一个多表格的alv 就成功了 有点遗憾的是两个表格中间有行空行