ZSD019发票号码查询报表

来源:互联网 发布:java快速开发平台框架 编辑:程序博客网 时间:2024/04/30 15:02
    来吧,一起写的。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