点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我有这个要求,我应该能够从选择屏...
点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我有这个要求,我应该能够从选择屏...
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
我有这个要求,我应该能够从选择屏幕中动态选择表及其字段,并通过文件拆分来下载数据。但是由于下载需要大量时间,我想在我的系统中实现并行处理 代码。那么如何在下面的代码中实现并行处理?
报告zaa_fdatexta1。
表:dd02l。
DATA:ls_fieldcat类型slis_fieldcat_alv,
lt_fieldcat类型slis_t_fieldcat_alv,
ls_fieldcatlog类型slis_fieldcat_alv,
lt TYPE slis_layout_alv。
DATA:w_dref TYPE REF TO数据。
FIELD-SYMBOLS:
数据:w_dref1对数据的类型引用。
字段符号:
< br>类型:ty_header的开头,"以在xlsx文件中创建字段头。
fname(100)TYPE c,
ty_header的末尾。
数据:it_header ty_header的类型表,
wa_header TYPE ty_header。
数据:inttab OCCURS 100的开头。"表读取给定表的文件
包含结构dfies。
数据:选中TYPE复选框。 "用于检查选定字段条件的附加字段
数据:inttab的结尾。
数据:wa_tab类似于inttab的行。
类型:BEGIN OF ty_int1,"用于选择字段的结构 在选择屏幕上
字段名TYPE字段名,
ty_int1的结尾。
数据:inttab1 ty_int1的类型表,"以加载给定数据库表的字段名。
wa_tab1类似于LINE OF inttab1。
参数:p_table类型dd02l-tabname强制默认值'MARA'。
参数:count TYPE i默认值'1000'。
参数:p_file类似于rlgrap文件名。 >参数:p_enable作为复选框默认值''用户命令uc1。
gv_rc类型i。
调用方法cl_gui_frontend_services => file_open_dialog
导出
window_title ='选择文件'
更改
file_table = gt_file_table
rc = gv_rc。
如果sy-subrc =0。
读取表g t_file_table INTO gwa_file_table INDEX 1.
p_file = gwa_file_table-filename。
ENDIF。
在选择屏幕输出处。
IF p_enable ='X'。 > CALL FUNCTION'DDIF_FIELDINFO_GET'"以获取表字段信息
导出
标签名= p_table
langu = sy-langu
表格
dfies_tab = inttab
< br> EXCEPTIONS
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 ='CHECK'。
ls_fieldcat-tabname ='INTTAB'。
ls_fieldcat-seltext_m ='SELECT'。< br>附加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'。
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
选择开始。
PERFORM选择
PERFORM下载。
*&------------- -------------------------------------------------- ------ *
*&形式SELEC
*&------------------------------- -------------------------------------- *
*文字
*- -------------------------------------------------- ------------------ *
*-> p1文本
* <-p2文本
* --------- -------------------------------------------------- ----------- *
格式选择。
创建数据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。
从(p_table)
选择(lv_temp)
进入表
将inttab1循环到wa_tab1。
ENDLOOP。
ENDIF。
ENDFORM。
*&--------- -------------------------------------------------- ---------- *
*&表格下载
*&--------------------------- ------------------------------------------ *
*文字
* ------------------------------------------------ ---------------------- *
*-> p1文本
* <-p2文本
* ----- -------------------------------------------------- ------------ --- *
FORM下载。
数据:cnt TYPE字符串。 "以在fi_itab
DATA中加载n条记录:d TYPE字符串。"以创建多个excel e.x文件。 export1 export2 ....
数据:文件类型字符串。 "将p_file转换为字符串
file = p_file。
cnt =0。
LOOP AT
ASSIGN
追加
cnt = cnt + 1.
*
如果cnt eq计数。
d = d + 1.
数据:lv_string1类型的字符串,lv_string2类型的字符串。
*
file = p_file。
在'。'处拆分p_file。 放入lv_string1 lv_string2。
合并lv_string1'_'d'。 lv_string2到文件中。
调用功能'GUI_DOWNLOAD'
导出
文件名=文件
文件类型='DAT'
附加='X'
write_field_separator ='X'< br> TABLES
data_tab =
字段名称= it_header
。
IF sy-subrc <> 0.
ENDIF。
< br>
cnt =0。
在
删除
ENDLOOP。
ENDIF。
ENDLOOP。
>
ENDFORM。
Alve 请不要混淆几个不同的问题 ,再问一个问题。
一周热门 更多>