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

*&---------------------------------------------------------------------* *& Report ZIT0011 *&---------------------------------------------------------------------* *& *&---------------------------------------------------------------------* REPORT ZIT0011. INCLUDE zit0011_head. INCLUDE zit0011_screen. INCLUDE zit0011_form. START-OF-SELECTION. PERFORM frm_excel_down.
包含文件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.
包含文件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.
包含文件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.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」