点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
报告zaa_fdatexta1。
DATA:ls_fieldcat TYPE slis_fieldcat_alv,
lt_fieldcat TYPE slis_t_fieldcat_alv,
ls_fieldcatlog TYPE slis_fieldcat_alv,
数据:w_dref对数据的引用类型。
字段符号:
< br> DATA:w_dref1数据的类型引用。
字段符号:
TYPES: BEGIN OF ty_header,"以在xlsx文件中创建字段标题。
fname(100)TYPE c,
ty_header的结尾。
数据:it_header ty_header的类型表,
wa_header TYPE ty_header。
数据:inttab OCCURS 100的开始。"表读取给定表的文件
包含结构dfies。
数据:选中"类型"复选框。 "用于检查选定字段条件的附加字段
数据:inttab的结尾。
数据:wa_tab类似于inttab的行。
类型:BEGIN OF ty_int1,"用于选择字段的结构 在选择屏幕上
字段名TYPE字段名,
ty_int1的结尾。
数据:inttab1 ty_int1的类型表,"以加载给定数据库表的字段名。
wa_tab1类似于LINE OF inttab1。
参数:p_table TYPE选项卡名OBLIGATORY。
参数:p_file类似于rlgrap文件名DEFAULT'C:\ Users \ aaalve \ Desktop \ export.xls'。
参数:p_enable AS CHECKBOX DEFAULT''USER-COMMAND uc1。
数据s_cursor类型光标。
在选择屏幕输出处。
如果p_enable ='X'。
调用 FUNCTION'DDIF_FIELDINFO_GET'"以获取表字段信息
导出
选项卡名称= p_table
* FIELDNAME = FIELDNM
langu = sy-langu
* LFIELDNAME =''
* ALL_TYPES =' '
*导入
* X030L_WA = WATAB
* DDOBJTYPE =
* DFIES_WA =
* LINES_DESCR =
表格
dfies_tab = inttab
* FIXED_VALUES =
例外情况
not_found = 1
internal_error = 2
其他=3。
PERFORM popup_display。
ENDIF。
*&------------------------------- -------------------------------------- *
*&表格popup_display
* &------------------------------------------------- -------------------- *
*文字
* -------------------- -------------------------------------------------- *
FORM popup_display。
*用于弹出式选择的字段目录
清除ls_fieldcat。
ls_fieldcat-row_pos ='1'。
ls_fieldcat-col_pos ='1'。
ls_fieldcat-fieldname ='检查'。
ls_fieldcat-tabname ='INTTAB'。
ls_fieldcat-seltext_m ='SELECT'。
将ls_fieldcat添加到lt_fieldcat。
清除ls_fieldcat。
ls_fieldcat-row_pos ='1'。
ls_fieldcat-col_pos ='2'。
ls_fieldcat-fieldname ='FIELDNAME'。
ls_fieldcat-tabname ='INTTAB'。
ls_fieldcat-seltext_m ='FIELDNAME'。< br> ls_fieldcat-outputlen = 50 。
附加ls_fieldcat至lt_fieldcat。
ls_fieldcat-row_pos ='1'。
ls_fieldcat-col_pos ='3'。
ls_fieldcat-fieldname ='FIELDTEXT'。
ls_fieldcat- tabname ='INTTAB'。
ls_fieldcat-seltext_m ='DESCRIPTION'。
附加ls_fieldcat至lt_fieldcat。
清除ls_fieldcat。
*在POPUP中显示数据以选择字段
调用功能'REUSE_ALV_POPUP_TO_SELECT'
导出
i_zebra ='X'
it_fieldcat = lt_fieldcat
i_tabname ='INTTAB'
i_checkbox_fieldname ='CHECK'
表格
t_outtab = inttab。
清除p_enable。
ENDFORM。 " popup_display
开始选择。
进行选择。
*执行下载。
*&--------- -------------------------------------------------- ---------- *
*&SELEC
表格*&--------------------------- ------------------------------------------ *
*文字
* ------------------------------------------------ ---------------------- *
*-> p1文本
* <-p2文本
* ----- -------------------------------------------------- --------------- **
FORM SELECT。
创建数据w_dref类型标准表(p_table)。"
ASSIGN w_dref-> *至
创建数据w_dref1类型标准表(p_table)。 "
ASSIGN w_dref1-> * TO
IF sy-subrc EQ0。
数据:lv_temp TYPE字符串。 br> LOOP AT inttab INTO wa_tab WHERE check ='X'。"从inttab到inttab1选择字段名称
并按空格分隔lv_temp wa_tab-fieldname INTO lv_temp。
移动wa_tab-fieldname TO wa_header。
将wa_header附加到it_header。
清除:wa_tab,wa_header。
ENDLOOP。
* do。
* SELECT(lv_temp)FROM(p_table)
* INTO 表的对应字段
OPEN CURSOR s_cursor FOR
从(p_table)中选择(lv_temp)。
DO。
获取下一个光标s_cursor追加表
如果sy-subrc <>0。
关闭CURSOR s_cursor。
*提高no_more_data。
退出。
ENDIF。
执行下载。
> ENDDO。
* LOOP AT inttab1 INTO wa_tab1。< br> **从(p_table)中选择(wa_tab1)
** INTO C 表
**清除wa_tab1。
* ENDLOOP。
* ENDSELECT。
*执行下载。
* enddo。
ENDIF)来获取记录 。
ENDFORM。
*&--------------------------------- ------------------------------------ *
*&表格下载
*&- -------------------------------------------------- ------------------ *
*文字
* ---------------------- ------------------------------------------------ * < br> *-> p1文本
* <-p2文本
* ----------------------------- ----------------------------------------- **
FORM下载。
* DATA:cnt TYPE字符串。"以在fi_itab
中加载1000条记录DATA:d TYPE字符串。 "创建多个excel ex export1 export2文件。...
DATA:文件类型字符串。"将p_file转换为字符串
file = p_file。
d =0。
* cnt = 0。
*
* LOOP AT
*
* ASSIGN
* APPEND
* cnt = cnt + 1.
*
*如果cnt> 1000.
d = d + 1.
并连接'C:\ Users \ vbirajda \ Desktop \ export'd'.xls'到文件中。
调用功能 'GUI_DOWNLOAD'
导出
* BIN_FILESIZE =
文件名=文件
文件类型='DAT'
append ='X'
write_field_separator ='X'
* HEADER =' 00'
* TRUNC_TRAILING_BLANKS =''
* WRITE_LF ='X'
* COL_SELECT =''
* COL_SELECT_MASK =''
* DAT_MODE =''
* CONFIRM_OVERWRITE =' '
* NO_AUTH_CHECK =''
*代码页=''
* IGNORE_CERR = ABAP_TRUE
*替换='#'
* 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 = AP VIRUS_SCAN_PROFILE ='/SCET/GUI_DOWNLOAD'
*导入
*文件 ENGTH =
TABLES
data_tab =
字段名称= it_header
*例外情况
* FILE_WRITE_ERROR = 1
* NO_BATCH = 2
* GUI_REFUSE_FILETRANSFER = 3
* INVALID_TYPE = 4
* NO_AUTHORITY = 5
* UNKNOWN_ERROR = 6
* HEADER_NOT_ALLOWED = 7
* SEPARATOR_NOT_ALLOWED = 8
* FILESIZE_NOT_ALLOWED = 9
* HEADER_TOO_LONG = 10 = 11
* DP_ERROR_SEND = 12
* DP_ERROR_WRITE = 13
* UNKNOWN_DP_ERROR = 14
* ACCESS_DENIED = 15
* DP_OUT_OF_MEMORY = 16
* DISK_FULL = 17
* DP_TIMEOUT = 18
* FILE_NOT_FOUND = 19
* DATAPROVIDER_EXCEPTION = 20
* CONTROL_FLUSH_ERROR = 21
*其他= 22
。
如果sy-subrc <> 0.
*实现适当 错误处理此处
ENDIF。
* cnt =0。
*循环
* DELETE
* ENDLOOP。
* ENDIF。
* ENDLOOP。
ENDFORM。
在使用程序包大小时,请使用select endselect语句。
选择*从到表包大小1000的/附加表的相应字段中。
ENDSELECT。
此外,在关系数据库中没有索引的概念,因此我建议首先选择所有记录,然后遍历记录,以使您的excel充满1000条记录。
请不要发布无用的代码,如注释的代码行。
嗨,请清楚地描述您的问题。无法理解您的问题是什么 完全面对。
告诉我们您面临的问题是什么?
我想将数据加载到excel文件中。 每个excel文件应包含1000条记录,并且必须通过在abap中使用select语句来完成要求。但是使用此代码,我可以获取所有记录,而不是每个文件中的1000条记录。
嗨,请务必提及您的要求。
一周热门 更多>