仅此用来开发报表程序拷贝使用,其中需要很多部分更改。
此ALV类型稍微有点复杂的。
type-pools: slis.
DATA: fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE.
DATA: sortable TYPE slis_t_sortinfo_alv WITH HEADER LINE.
DATA: layout TYPE slis_layout_alv.
form sub_catalog .
layout-colwidth_optimize = 'X'.
layout-zebra = 'X'.
layout-box_fieldname = 'SELECT'.
* layout-f2code = '&ETA'.
* layout-info_fieldname = 'COLOR'.
DEFINE fieldcatset.
fieldcat-col_pos = &1.
fieldcat-fieldname = &2. "字段名
fieldcat-seltext_l = &3. "长文本
fieldcat-emphasize = &4. "颜色
fieldcat-just = &5. "居中
fieldcat-no_zero = &6. "不带前导零
fieldcat-hotspot = &7. "连接
fieldcat-decimals_out = &8."小数位
fieldcat-fix_column = &9. "固定列
* fieldcat-no_out = &10.
append fieldcat.
END-OF-DEFINITION.
fieldcatset 1 'STATUS' '状态' '' '' '' '' '' '' .
fieldcatset 2 'BUKRS' '公司代码' '' '' '' '' '' '' .
fieldcatset 3 'GJAHR' '年度' '' '' '' '' '' '' .
fieldcatset 4 'BELNR' '凭证号' '' '' 'X' '' '' '' .
fieldcatset 5 'BLART' '凭证类型' '' '' '' '' '' '' .
fieldcatset 6 'BLDAT' '凭证日期' '' '' '' '' '' '' .
fieldcatset 7 'BUDAT' '记账日期' '' '' '' '' '' '' .
fieldcatset 8 'PPNAM' '预制人' '' '' '' '' '' '' .
fieldcatset 9 'USNAM' '记账人' '' '' '' '' '' '' .
fieldcatset 10 'BKTXT' '摘要' '' '' '' '' '' '' .
* fieldcat-col_pos = 0.
* fieldcat-fieldname = 'SELECT'.
* fieldcat-seltext_l = '选择打印'.
* fieldcat-checkbox = 'X'.
* fieldcat-edit = 'X'.
* append fieldcat.
CLEAR sortable.
sortable-fieldname = 'BELNR'.
sortable-up = 'X'.
sortable-down = ''.
sortable-subtot = 'X'.
APPEND sortable.
*&---------------------------------------------------------------------*
*& Form set_pf_status
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->RT_EXTAB text
*----------------------------------------------------------------------*
FORM set_pf_status USING rt_extab TYPE slis_t_extab.
data: wa_extab like line of rt_extab.
wa_extab-fcode = '&RNT_PREV'.
append wa_extab to rt_extab.
wa_extab-fcode = '&VEXCEL'.
append wa_extab to rt_extab.
set pf-status 'STANDARD_FULLSCREEN' EXCLUDING rt_extab. "copy from saplkkbl
ENDFORM.
*&---------------------------------------------------------------------*
*& Form user_command
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->R_UCOMM text
* -->RS_SELFIELD text
*----------------------------------------------------------------------*
FORM user_command USING r_ucomm LIKE sy-ucomm rs_selfield TYPE slis_selfield.
RS_selfield-refresh = 'X'. "ALV被修改时会自动刷新,没有修改不进行刷新
CASE r_ucomm.
WHEN '&IC1'.
* RS_SELFIELD-REFRESH = 'X'.
* READ TABLE it_show INDEX rs_selfield-tabindex.
* case rs_selfield-fieldname.
* when 'MATNR'.
* set parameter id 'BLN' field it_show-belnr.
* set parameter id 'BUK' FIELD it_show-bukrs.
* SET PARAMETER ID 'GJR' FIELD it_show-budat+0(4).
* CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
* ENDCASE.
when '&PRT'.
perform sub_getdata.
perform sub_print.
ENDCASE.
CLEAR r_ucomm.
ENDFORM. "user_command
*-------------------------------------------------------------------*
* Form TOP-OF-PAGE *
*-------------------------------------------------------------------*
* ALV Report Header *
*-------------------------------------------------------------------*
FORM TOP-OF-PAGE.
**ALV Header declarations
DATA: T_HEADER TYPE SLIS_T_LISTHEADER,
WA_HEADER TYPE SLIS_LISTHEADER,
T_LINE LIKE WA_HEADER-INFO,
LD_LINES TYPE I,
LD_LINESC(10) TYPE C.
data: n type i.
*** Title
** WA_HEADER-TYP = 'H'.
** WA_HEADER-INFO = '配额与实际采购额对比表'.
** APPEND WA_HEADER TO T_HEADER.
** CLEAR WA_HEADER.
*** Date
clear n.
describe table it_show lines n.
WA_HEADER-TYP = 'S'. " H = Header, S = Selection, A = Action
WA_HEADER-KEY = '条目数:'.
wa_header-info = n.
APPEND WA_HEADER TO T_HEADER.
* CLEAR: WA_HEADER.
* WA_HEADER-TYP = 'S'. " H = Header, S = Selection, A = Action
* WA_HEADER-KEY = '本期期间:'.
* read table s_eindt index 1.
* CONCATENATE s_eindt-low+0(4) '.' s_eindt-low+4(2) '.' s_eindt-low+6(2) '--'
* s_eindt-high+0(4) '.' s_eindt-high+4(2) '.' s_eindt-high+6(2) INTO WA_HEADER-INFO.
* APPEND WA_HEADER TO T_HEADER.
* CLEAR: WA_HEADER.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = T_HEADER.
ENDFORM. "top-of-page
DATA: l_repid LIKE sy-repid.
l_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = l_repid
i_callback_pf_status_set = 'SET_PF_STATUS'
i_callback_user_command = 'USER_COMMAND'
I_CALLBACK_TOP_OF_PAGE = 'TOP-OF-PAGE'
* i_grid_title = l_grid_title
is_layout = layout
it_fieldcat = fieldcat[]
it_sort = sortable[]
i_save = 'A'
i_default = 'X'
TABLES
t_outtab = it_show
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.