资源描述
*&---------------------------------------------------------------------*
*& Report YTH_TEST00029
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT yth_test00029.
*&---------------------------------------------------------------------*
*& Function: REUSE_ALV_FIELDCATALOG_MERGE *& ALV 求和
*& 和 function: REUSE_ALV_GRID_DISPLAY 一起使用 *& 经典例子
*& 做为一个方法使用,设置ALV的Fieldcatlog.
*& 和delphi 里的dxdbgrid 的功能一样。对小类相加计算,
*& 对所有的数量求和.
*& 对ALV中的某一列进行分类的完成测试程序。
*&---------------------------------------------------------------------*
DATA:BEGIN OF i_likp OCCURS 5,
kunnr LIKE likp-kunnr, "客户号
wadat_ist LIKE likp-wadat_ist, "交货日期(发货日期)
lfimg LIKE lips-lfimg, "实际已交货量
END OF i_likp .
TYPE-POOLS: slis.
DATA: l_events TYPE slis_t_event,
gt_list_top_of_page TYPE slis_t_listheader,
gs_layout TYPE slis_layout_alv,
fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE,
eventcat TYPE slis_t_event WITH HEADER LINE,
it_sort TYPE slis_t_sortinfo_alv WITH HEADER LINE,
prg LIKE sy-repid.
* tables disvariant:格式(外部使用)
DATA: l_variant TYPE TABLE OF disvariant WITH HEADER LINE.
SELECT a~kunnr a~wadat_ist
b~lfimg FROM likp AS a
INNER JOIN lips AS b ON a~vbeln = b~vbeln
INTO (i_likp-kunnr,i_likp-wadat_ist,i_likp-lfimg)
WHERE A~KUNNR = '0000010013' OR A~KUNNR = '0000010014'.
APPEND i_likp.
CLEAR i_likp.
ENDSELECT.
PERFORM prepare_list_val.
PERFORM display_val.
*&---------------------------------------------------------------------*
*& Form PREPARE_LIST_VAL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM prepare_list_val.
prg = sy-repid. "当前主程序
l_variant-report = sy-repid. "当前主程序
PERFORM eventtab_build CHANGING l_events.
PERFORM comment_build CHANGING gt_list_top_of_page.
PERFORM set_layout.
ENDFORM. "prepare_list_val
*&---------------------------------------------------------------------*
*& Form EVENTTAB_BUILD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM eventtab_build CHANGING p_events TYPE slis_t_event.
ENDFORM. "eventtab_build
*---------------------------------------------------------------------*
* FORM COMMENT_BUILD *
*---------------------------------------------------------------------*
* --> GT_TOP_OF_PAGE *
*---------------------------------------------------------------------*
FORM comment_build CHANGING gt_top_of_page TYPE slis_t_listheader.
ENDFORM. "comment_build
*&---------------------------------------------------------------------*
*& Form SET_LAYOUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM set_layout.
gs_layout-zebra = 'X'. " 行颜色
gs_layout-f2code = '&ETA'. " 双击明细
gs_layout-detail_popup = 'X'." 双击事件
gs_layout-get_selinfos = 'X'.
ENDFORM. "set_layout
*&---------------------------------------------------------------------*
*& Form DISPLAY_VAL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM display_val.
PERFORM get_fieldcat.
PERFORM get_eventcat.
PERFORM get_it_sort.
PERFORM start_list_val.
ENDFORM. " DISPLAY_VAL
*&---------------------------------------------------------------------*
*& Form GET_FIELDCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM get_fieldcat.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = prg
i_internal_tabname = 'I_LIKP'
i_inclname = prg
CHANGING
ct_fieldcat = fieldcat[]
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
WRITE: 'SY-SUBRC: ', sy-subrc, 'REUSE_ALV_FIELDCATALOG_MERGE'.
ENDIF.
LOOP AT fieldcat.
CASE fieldcat-fieldname.
WHEN 'KUNNR'.
fieldcat-tabname = 'I_LIKP'. "内表名
fieldcat-key = 'X'. " Key Column关键列
fieldcat-col_pos = 1. " Position on screen屏幕位置
fieldcat-hotspot = ''. " Hotspot column热点,是否响应点击
fieldcat-seltext_s = '客户号'."设置列内容
fieldcat-ddictxt = 'S'.
fieldcat-outputlen = 18.
WHEN 'WADAT_IST'.
fieldcat-tabname = 'I_LIKP'.
fieldcat-key = ' '. " Key Column
fieldcat-col_pos = 2. " Position on screen
fieldcat-hotspot = ' '. " Hotspot column
fieldcat-seltext_s = '交货日期'.
fieldcat-ddictxt = 'L'.
fieldcat-outputlen = 15.
fieldcat-no_zero = 'X'.
* fieldcat-do_sum = 'X'. "SUM UPON DISPLAY
WHEN 'LFIMG'.
fieldcat-tabname = 'I_LIKP'.
fieldcat-key = ' '. " Key Column
fieldcat-col_pos = 3. " Position on screen
fieldcat-hotspot = ' '. " Hotspot column
fieldcat-seltext_s = '实际交货量'.
fieldcat-ddictxt = 'L'.
fieldcat-outputlen = 15.
fieldcat-no_zero = 'X'.
fieldcat-do_sum = 'X'. "SUM UPON DISPLAY
ENDCASE.
MODIFY fieldcat.
ENDLOOP.
ENDFORM. " GET_FIELDCAT
*&---------------------------------------------------------------------*
*& Form GET_EVENTCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM get_eventcat.
ENDFORM. " GET_EVENTCAT
*&---------------------------------------------------------------------*
*& Form GET_IT_SORT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM get_it_sort.
CLEAR it_sort.
it_sort-fieldname = 'KUNNR'.
it_sort-spos = 1.
it_sort-up = 'X'.
it_sort-subtot = 'X'.
APPEND it_sort.
* CLEAR IT_SORT.
* IT_SORT-FIELDNAME = 'WADAT_IST'.
* IT_SORT-SPOS = 2.
* IT_SORT-UP = 'X'.
* IT_SORT-SUBTOT = ''.
* APPEND IT_SORT.
*
* CLEAR IT_SORT.
* IT_SORT-FIELDNAME = 'LFIMG'.
* IT_SORT-SPOS = 3.
* IT_SORT-UP = 'X'.
* IT_SORT-SUBTOT = ''.
* APPEND IT_SORT.
ENDFORM. " GET_IT_SORT
*&---------------------------------------------------------------------*
*& Form START_LIST_VAL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM start_list_val.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = prg
is_layout = gs_layout
is_variant = l_variant
it_fieldcat = fieldcat[]
it_sort = it_sort[]
i_save = 'A'
it_events = eventcat[]
TABLES
t_outtab = i_likp
EXCEPTIONS
program_error = 1
OTHERS = 2.
ENDFORM. "START_LIST_VAL
展开阅读全文