• 批量导出(会计凭证)EXCEL到D盘


    ZIT0011

    *&---------------------------------------------------------------------*
    *& Report ZIT0011
    *&---------------------------------------------------------------------*
    *&
    *&---------------------------------------------------------------------*
    REPORT ZIT0011.
    INCLUDE zit0011_head.
    INCLUDE zit0011_screen.
    INCLUDE zit0011_form.
    
    START-OF-SELECTION.
      PERFORM frm_excel_down.
    View Code

    包含文件ZIT0011_HEAD

    *&---------------------------------------------------------------------*
    *& 包含               ZIT0011_HEAD
    *&---------------------------------------------------------------------*
     TABLES: ACDOCA.
     TYPES : BEGIN OF ty_struct,
               col_name(30),
    *     INCLUDE STRUCTURE acdoca.
             END OF ty_struct,
             ty_columns TYPE STANDARD TABLE OF ty_struct WITH EMPTY KEY.
    
     DATA : lt_columns TYPE TABLE OF ty_struct,
            lt_temp    TYPE dfies_tab.
     DATA: lv_budat_low TYPE acdoca-budat,
           lv_budat_high TYPE acdoca-budat.
    View Code

    包含文件ZIT0011_SCREEN

    *&---------------------------------------------------------------------*
    *& 包含               ZIT0011_SCREEN
    *&---------------------------------------------------------------------*
    SELECTION-SCREEN: BEGIN OF BLOCK b01 WITH FRAME TITLE TEXT-001.
    PARAMETERS: p_gjahr  TYPE acdoca-gjahr DEFAULT sy-datum+0(4) OBLIGATORY,
                p_rbukrs TYPE acdoca-rbukrs DEFAULT '1000' OBLIGATORY,
                p_poper  TYPE acdoca-poper OBLIGATORY,
                p_limit  TYPE sy-tabix OBLIGATORY DEFAULT '200000'.
    
    SELECT-OPTIONS: s_racct FOR acdoca-racct,
                    s_BLART FOR acdoca-BLART.
    
    
    SELECTION-SCREEN: END OF BLOCK b01.
    View Code

    包含文件ZIT0011_FORM

    *&---------------------------------------------------------------------*
    *& 包含               ZIT0011_FORM
    *&---------------------------------------------------------------------*
    *&---------------------------------------------------------------------*
    *& Form FRM_EXCEL_DOWN
    *&---------------------------------------------------------------------*
    *& text
    *&---------------------------------------------------------------------*
    *& -->  p1        text
    *& <--  p2        text
    *&---------------------------------------------------------------------*
    FORM frm_excel_down .
    *  BREAK-POINT.
      DATA: p_download TYPE rlgrap-filename.
      DATA: gt_data_table LIKE TABLE OF acdoca.
      TRY.
          CALL FUNCTION 'DDIF_FIELDINFO_GET'
            EXPORTING
              tabname        = 'ACDOCA'
              langu          = sy-langu
            TABLES
              dfies_tab      = lt_temp
            EXCEPTIONS
              not_found      = 1
              internal_error = 2
              OTHERS         = 3.
          IF sy-subrc = 0.
            lt_columns = CORRESPONDING #( lt_temp MAPPING col_name = fieldtext )."rollname
          ENDIF.
        CATCH cx_root.
          "Please write your own exception handling code here
      ENDTRY.
      DATA: lv_count TYPE dmbtr.
      SELECT COUNT(*)
        INTO lv_count "gt_data_table
        FROM acdoca
       WHERE rbukrs EQ p_rbukrs
         AND gjahr EQ p_gjahr
         AND poper EQ p_poper
         AND racct IN s_racct
         AND blart IN s_blart.
    
      DATA: lv_monat  TYPE bsid-monat,
            lv_times  TYPE dmbtr,
            lv_tabix  TYPE sy-tabix,
            lv_start  TYPE sy-tabix,
            lv_limit  TYPE sy-tabix,
            lv_tabix2 TYPE sy-tabix.
      CLEAR: lv_times,lv_tabix,lv_start,lv_limit,lv_tabix2.
      lv_monat = p_poper.
      lv_budat_low = |{ p_gjahr }{ lv_monat }01|.
      CALL FUNCTION 'DATE_GET_MONTH_LASTDAY'
        EXPORTING
          i_date = lv_budat_low
        IMPORTING
          e_date = lv_budat_high.
    
      lv_times = ceil( lv_count / p_limit ).
      DO lv_times TIMES.
        ADD 1 TO lv_tabix.
        ADD p_limit TO lv_tabix2.
        IF lv_tabix EQ 1.
          lv_start = 0.
        ELSE.
          ADD p_limit TO lv_start.
        ENDIF.
    
        IF lv_tabix2 LE lv_count.
          lv_limit = p_limit.
        ELSE.
          lv_limit = lv_count - lv_start.
        ENDIF.
    
        CLEAR: gt_data_table[].
        SELECT FROM acdoca
          FIELDS *
       WHERE rbukrs EQ @p_rbukrs
         AND gjahr EQ @p_gjahr
         AND poper EQ @p_poper
         AND racct IN @s_racct
         AND blart IN @s_blart
         ORDER BY rbukrs,gjahr,belnr,buzei
         INTO TABLE @gt_data_table
         OFFSET @lv_start UP TO @lv_limit ROWS.
    
    
    *  SELECT FROM tspat
    *    FIELDS *
    *     WHERE spras EQ @sy-langu
    *       AND spart IN @r_spart
    *    ORDER BY spart
    *    INTO CORRESPONDING FIELDS OF TABLE @et_out
    *    OFFSET @start UP TO @limit ROWS.
    
        p_download = |D:\\{ lv_budat_low }to{ lv_budat_high }{ lv_tabix }.XLS|.
        IF gt_data_table IS NOT INITIAL.
    
          DATA: lv_filename TYPE string.
          lv_filename = p_download.
          CALL FUNCTION 'GUI_DOWNLOAD'
            EXPORTING
    *         BIN_FILESIZE                    =
              filename   = lv_filename
              filetype   = 'DAT' "'DAT' "'ASC'
    *         APPEND     = ' '
    *         WRITE_FIELD_SEPARATOR           = ' '
    *         HEADER     = '00'
    *         TRUNC_TRAILING_BLANKS           = ' '
    *         WRITE_LF   = 'X'
    *         COL_SELECT = ' '
    *         COL_SELECT_MASK                 = ' '
    *         DAT_MODE   = ' '
    *         CONFIRM_OVERWRITE               = ' '
    *         NO_AUTH_CHECK                   = ' '
    *         codepage   = '8400'
    *         IGNORE_CERR                     = ABAP_TRUE
    *         REPLACEMENT                     = '#'
    *         WRITE_BOM  = ' '
    *         TRUNC_TRAILING_BLANKS_EOL       = 'X'
    *         WK1_N_FORMAT                    = ' '
    *         WK1_N_SIZE = ' '
    *         WK1_T_FORMAT                    = ' '
    *         WK1_T_SIZE = ' '
    *         WRITE_LF_AFTER_LAST_LINE        = ABAP_TRUE
    *         SHOW_TRANSFER_STATUS            = ABAP_TRUE
    *         VIRUS_SCAN_PROFILE              = '/SCET/GUI_DOWNLOAD'
    *     IMPORTING
    *         FILELENGTH =
            TABLES
              data_tab   = gt_data_table
              fieldnames = lt_columns
            EXCEPTIONS
              OTHERS     = 22.
          IF sy-subrc <> 0.
    * Implement suitable error handling here
          ENDIF.
    
        ENDIF.
      ENDDO.
    ENDFORM.
    View Code
  • 相关阅读:
    bzoj 1040: [ZJOI2008]骑士
    CF Playrix Codescapes Cup Problems Analysis
    C++ 指针[转+原创]
    高斯消元
    NOIP模拟
    线段树合并
    After ZJOI2017 day2
    ZJOI 2017 day2 4.27
    ZJOI 2017 二试 day1 4.26
    ZJOI 2017 二试 day0
  • 原文地址:https://www.cnblogs.com/chaguoguo/p/16347246.html
Copyright © 2020-2023  润新知