来吧,一起写的。SD发票号码查询表报。做个记录:
- *&---------------------------------------------------------------------*
- *& Report ZSD019
- *&---------------------------------------------------------------------*
- * Author : Jasson.Lee
- * Date : 2011.12.15
- * Purpose : 发票号码登记
- * Modi Log: 2011.12.15 Jasson.Lee Create
- * Modi Log:
- * Modi Log:
- * Modi Log:
- *----------------------------------------------------------------------
- REPORT zsd019.
- TABLES: vbrk.
- TYPE-POOLS: slis.
- *--------------------------------
- * Selection Screen
- *--------------------------------
- SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
- SELECT-OPTIONS:
- s_org FOR vbrk-vkorg, "销售组织
- s_date FOR vbrk-erdat. "记录的创建日期
- SELECTION-SCREEN END OF BLOCK b1.
- *****************************************************************************
- DATA: g_status TYPE slis_formname VALUE 'STANDARD_02'. "加工具栏
- DATA:
- i_fieldcat_alv TYPE slis_t_fieldcat_alv,
- i_fieldcat TYPE slis_fieldcat_alv,
- i_layout TYPE slis_layout_alv,
- i_events TYPE slis_t_event,
- w_events LIKE LINE OF i_events,
- i_list_comments TYPE slis_t_listheader,
- w_list_comments LIKE LINE OF i_list_comments,
- gt_sort TYPE slis_t_sortinfo_alv,
- w_repid LIKE sy-repid.
- DATA:
- w_loop TYPE sy-tabix,
- sy_title(50) TYPE c VALUE ' 发票号码登记',
- sy_date(50) TYPE c,
- netwr_sum TYPE netwr_ak.
- DATA: BEGIN OF i_tab2 OCCURS 0,
- fkdat LIKE vbrk-fkdat, "凭证日期
- kunrg LIKE vbrk-kunrg, "送达方
- vbeln LIKE vbrk-vbeln, "编号
- netwr LIKE vbrk-netwr, "凭证货币中销售订单的净值
- waerk LIKE vbrk-waerk, "SD凭证货币
- beizhu(50) TYPE c, "备注
- END OF i_tab2.
- DATA scount(8).
- DATA :rcount LIKE sy-tabix.
- DATA lstr(20).
- *--------------------------------
- * Initialization
- *--------------------------------
- INITIALIZATION.
- *--------------------------------
- * At Selection Screen PBO
- *--------------------------------
- AT SELECTION-SCREEN OUTPUT.
- *--------------------------------
- * Start of Selection
- *--------------------------------
- START-OF-SELECTION.
- PERFORM get_data.
- PERFORM process_data.
- PERFORM cal_data.
- PERFORM events_build.
- * PERFORM sort_build CHANGING gt_sort.
- PERFORM layout_build.
- PERFORM fields_build.
- PERFORM display_data.
- END-OF-SELECTION.
- *--------------------------------
- * Top of Page
- *--------------------------------
- TOP-OF-PAGE.
- *&---------------------------------------------------------------------*
- *& Form get_data
- *&---------------------------------------------------------------------*
- FORM get_data.
- SELECT k~fkdat k~kunrg k~vbeln k~netwr k~waerk
- INTO CORRESPONDING FIELDS OF TABLE i_tab2
- FROM vbrk AS k
- WHERE k~vkorg IN s_org
- AND k~erdat IN s_date
- AND k~vbtyp NOT IN ('U','5','6').
- IF i_tab2[] IS INITIAL .
- MESSAGE i000(zmsg) WITH '没找到对应的数据,请更改查询条件'.
- LEAVE LIST-PROCESSING .
- ENDIF.
- ENDFORM. "get_data
- *&---------------------------------------------------------------------*
- *& Form process_data
- *&---------------------------------------------------------------------*
- FORM process_data.
- ENDFORM. "process_data
- *&---------------------------------------------------------------------*
- *& Form CAL_DATA
- *&---------------------------------------------------------------------*
- FORM cal_data .
- DESCRIBE TABLE i_tab2 LINES rcount.
- * scount = rcount.
- * CONCATENATE '符合条件的记录数:' scount INTO lstr.
- CONCATENATE sy-datum+0(4) '年' sy-datum+4(2) '月' sy-datum+6(2) '日' INTO sy_date.
- IF i_tab2[] IS INITIAL .
- MESSAGE i000(zmsg) WITH '没找到对应的数据,请更改查询条件'.
- LEAVE LIST-PROCESSING .
- ENDIF.
- ENDFORM. " CAL_DATA
- *&---------------------------------------------------------------------*
- *& Form EVENTS_BUILD
- *&---------------------------------------------------------------------*
- FORM events_build .
- CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
- EXPORTING
- i_list_type = 0
- IMPORTING
- et_events = i_events.
- READ TABLE i_events WITH KEY name = 'TOP_OF_PAGE' INTO w_events.
- IF sy-subrc = 0.
- MOVE 'ALV_TOP_OF_PAGE' TO w_events-form.
- MODIFY i_events FROM w_events INDEX sy-tabix.
- ENDIF.
- READ TABLE i_events WITH KEY name = 'END_OF_LIST' INTO w_events.
- IF sy-subrc = 0.
- MOVE 'ALV_END_OF_LIST' TO w_events-form.
- MODIFY i_events FROM w_events INDEX sy-tabix.
- ENDIF.
- READ TABLE i_events WITH KEY name = 'USER_COMMAND' INTO w_events.
- IF sy-subrc = 0.
- MOVE 'USER_COMMAND' TO w_events-form.
- MODIFY i_events FROM w_events INDEX sy-tabix.
- ENDIF.
- ENDFORM. " EVENTS_BUILD
- *&---------------------------------------------------------------------*
- *& Form layout_sort_build
- *&---------------------------------------------------------------------*
- FORM sort_build CHANGING lt_sort TYPE slis_t_sortinfo_alv.
- DATA ls_sort TYPE slis_sortinfo_alv.
- * Key
- CLEAR ls_sort.
- ls_sort-fieldname = 'WAERK'."币别
- ls_sort-spos = 1.
- ls_sort-up = 'X'.
- ls_sort-subtot = 'X'.
- APPEND ls_sort TO lt_sort.
- ENDFORM. " LAYOUT_sort_build
- *&--------------------------------------------------------------------*
- *& Form ALV_END_OF_LIST
- *&--------------------------------------------------------------------*
- FORM alv_top_of_page.
- CLEAR: i_list_comments.
- w_list_comments-typ = 'H'.
- w_list_comments-key = ''.
- w_list_comments-info = sy_title.
- APPEND w_list_comments TO i_list_comments.
- CLEAR w_list_comments.
- w_list_comments-typ = 'H'.
- w_list_comments-key = ''.
- w_list_comments-info = ''.
- APPEND w_list_comments TO i_list_comments.
- CLEAR w_list_comments.
- w_list_comments-typ = 'H'.
- w_list_comments-key = ''.
- w_list_comments-info = sy_date.
- APPEND w_list_comments TO i_list_comments.
- CLEAR w_list_comments.
- CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
- EXPORTING
- it_list_commentary = i_list_comments
- i_end_of_list_grid = 'X'.
- ENDFORM. "ALV_TOP_OF_PAGE
- *&--------------------------------------------------------------------*
- *& Form ALV_END_OF_LIST
- *&--------------------------------------------------------------------*
- FORM alv_end_of_list.
- CLEAR: i_list_comments.
- w_list_comments-typ = 'H'.
- w_list_comments-key = ''.
- w_list_comments-info = lstr.
- APPEND w_list_comments TO i_list_comments.
- CLEAR w_list_comments.
- w_list_comments-typ = 'S'.
- w_list_comments-key = ''.
- w_list_comments-info = ' 报表开发者:IT部 重新开发日期:2011/12/15 '.
- APPEND w_list_comments TO i_list_comments.
- CLEAR w_list_comments.
- CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
- EXPORTING
- it_list_commentary = i_list_comments
- i_end_of_list_grid = 'X'.
- ENDFORM. "ALV_END_OF_LIST
- *&---------------------------------------------------------------------*
- *& Form LAYOUT_BUILD
- *&---------------------------------------------------------------------*
- FORM layout_build .
- i_layout-zebra = 'X' . " 显示界面成色带交替
- i_layout-detail_popup = 'X'. "弹出详细信息窗口
- i_layout-info_fieldname = 'COLOR'. "颜色值
- * I_LAYOUT-COLWIDTH_OPTIMIZE = 'X'. "优化列宽选项
- i_layout-detail_initial_lines = 'X'.
- i_layout-detail_titlebar = '发票号码登记'.
- i_layout-no_colhead =' '.
- * I_LAYOUT-BOX_FIELDNAME = 'BOX' . " 指明复选框
- w_repid = sy-repid.
- ENDFORM. " LAYOUT_BUILD
- *&---------------------------------------------------------------------*
- *& Form DISPLAY_DATA
- *&---------------------------------------------------------------------*
- FORM display_data .
- * CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
- CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
- EXPORTING
- i_callback_user_command = 'USER_COMMAND' "用户触发事件
- i_callback_pf_status_set = g_status "调用用户事件和按钮事件
- i_callback_program = w_repid "当前程序
- is_layout = i_layout "子函数layout_build填充的格式定义
- it_fieldcat = i_fieldcat_alv[] "子函数fields填充的各列
- it_events = i_events[]
- it_sort = gt_sort[]
- i_save = 'A' "保存变式
- TABLES
- t_outtab = i_tab2. "假设数据都在itab内表中
- ENDFORM. " DISPLAY_DATA
- *-----------------------------------------------------------------------
- * FORM PF_STATUS_SET 加工具栏
- *-----------------------------------------------------------------------
- FORM standard_02 USING extab TYPE slis_t_extab.
- SET PF-STATUS 'STD' EXCLUDING extab.
- ENDFORM. "STANDARD_02
- *&---------------------------------------------------------------------*
- *& Form USER_COMMAND
- *&---------------------------------------------------------------------*
- FORM user_command USING i_ucomm LIKE sy-ucomm
- selfield TYPE slis_selfield.
- CASE i_ucomm.
- WHEN '&IC1'.
- CASE selfield-sel_tab_field.
- WHEN 'I_TAB2-VBELN'.
- SET PARAMETER ID 'VF' FIELD selfield-value.
- CALL TRANSACTION 'VF03' AND SKIP FIRST SCREEN..
- ENDCASE.
- WHEN OTHERS.
- ENDCASE.
- ENDFORM. "callback_ucomm
- *&---------------------------------------------------------------------*
- *& Form FIELDS_BUILD
- *&---------------------------------------------------------------------*
- FORM fields_build .
- DATA tmp_pos TYPE i.
- REFRESH i_fieldcat_alv.
- CLEAR i_fieldcat.
- tmp_pos = tmp_pos + 1.
- i_fieldcat-col_pos = tmp_pos.
- i_fieldcat-fieldname = 'FKDAT'.
- i_fieldcat-seltext_l = '凭证日期'.
- i_fieldcat-outputlen = 10.
- APPEND i_fieldcat TO i_fieldcat_alv.
- CLEAR i_fieldcat.
- tmp_pos = tmp_pos + 1.
- i_fieldcat-col_pos = tmp_pos.
- i_fieldcat-fieldname = 'KUNRG'.
- i_fieldcat-seltext_l = '送达方'.
- i_fieldcat-outputlen = 10.
- APPEND i_fieldcat TO i_fieldcat_alv.
- CLEAR i_fieldcat.
- tmp_pos = tmp_pos + 1.
- i_fieldcat-col_pos = tmp_pos.
- i_fieldcat-fieldname = 'VBELN'.
- i_fieldcat-seltext_l = 'INVOICE'.
- i_fieldcat-outputlen = 10.
- i_fieldcat-no_zero = 'X'.
- APPEND i_fieldcat TO i_fieldcat_alv.
- CLEAR i_fieldcat.
- tmp_pos = tmp_pos + 1.
- i_fieldcat-col_pos = tmp_pos.
- i_fieldcat-fieldname = 'NETWR'.
- i_fieldcat-seltext_l = '金额'.
- i_fieldcat-outputlen = 15.
- i_fieldcat-no_zero = 'X'.
- i_fieldcat-qfieldname = 'WAERK'.
- i_fieldcat-do_sum = 'X'.
- APPEND i_fieldcat TO i_fieldcat_alv.
- CLEAR i_fieldcat.
- tmp_pos = tmp_pos + 1.
- i_fieldcat-col_pos = tmp_pos.
- i_fieldcat-fieldname = 'WAERK'.
- i_fieldcat-seltext_l = '币别'.
- i_fieldcat-outputlen = 5.
- i_fieldcat-no_zero = 'X'.
- APPEND i_fieldcat TO i_fieldcat_alv.
- CLEAR i_fieldcat.
- tmp_pos = tmp_pos + 1.
- i_fieldcat-col_pos = tmp_pos.
- i_fieldcat-fieldname = 'BEIZHU'.
- i_fieldcat-seltext_l = '备注'.
- i_fieldcat-outputlen = 5.
- i_fieldcat-no_zero = 'X'.
- APPEND i_fieldcat TO i_fieldcat_alv.
- CLEAR i_fieldcat.
- ENDFORM. " FIELDS_BUILD