版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、通用导入导出程序 (可以自动生成模板)在SAP实施和运维过程中经常有需要批量将数量导入到透明表的场景。这时如何往往需要开发一些导入的程序。因为透明表的结构不同,所以这些导入程序往往只能对一个透明表进行导入,并且由于这些程序相当多,所以没有完整的下载备份数据和生成模板的功能。为了省时,作者开发这个通用导入导出程序,可以对所有的透明进行导出导入并且自动生成导入模板。另外提供跨CLIENT选项,用户可以选择只处理当前CLIENT的数据(这时模板中不会有MANDT字段)。-<这是详细说明的分割线(内有广告)>-功能一:下载导入模板和下载数据(可选)选择路径和文件名生成的模板打开之后的样子如
2、果带数据的话是这个样子如果选择跨CLIENT的话功能二:上传数据如果是导入系统透明表会有提示如果选择确定导入->还是会打开文件选择器选择了本地的模板文件就可导入了(注意跨CLIENT选择项,选择了跨CLIENT要使用带MANDT字段的模板。希望能对整数据的XDJM们有所帮助-<这是详细代码的分割线(木有广告)>-(以下是完整代码,COPY到系统中激活即可)*&-*& Report ZRP_BC_GENERAL_IMPEXP*&*&-*&*&*&-*REPORT zrp
3、_bc_general_impexp.TYPES: gtyt_fieldcat TYPE lvc_t_fcat.*FIELD-SYMBOLS:* <gft_tc> TYPE table.CONSTANTS: gc_x TYPE char1 VALUE 'X',
4、; gc_lp VALUE '(', gc_rp VALUE ')', gc_is VALUE '-'.DATA: gr_excl TYPE RANGE OF lvc_fname WITH HEADER LINE.PARAMETERS: &
5、#160;gp_tn TYPE tabname MEMORY ID ztctm OBLIGATORY.SELECTION-SCREEN BEGIN OF BLOCK gc1 WITH FRAME TITLE g_gc1tx.PARAMETERS gp_dload RADIOBUTTON GROUP rg1 DEFAULT 'X' USER-COMMAND
6、60;gc1.SELECTION-SCREEN BEGIN OF LINE.SELECTION-SCREEN COMMENT 2(20) g_icdat MODIF ID gc1.PARAMETERS gp_icda AS CHECKBOX MODIF ID gc1.SELECTION-SCREEN END OF LINE.PARAMETERS gp_uload RADIOBUTTON
7、GROUP rg1.SELECTION-SCREEN END OF BLOCK gc1.SELECTION-SCREEN SKIP 1.PARAMETERS gp_mandt AS CHECKBOX .LOAD-OF-PROGRAM. PERFORM sub_init_screen.INITIALIZATION.AT SELECTION-SCREEN OUTPUT. PERFORM sub_pbo_10
8、00.AT SELECTION-SCREEN. IF sy-ucomm = 'ONLI'. PERFORM sub_check_screen. PERFORM sub_init_object. CASE gc_x. WHEN gp_dload.
9、60; PERFORM sub_download_1000 CHANGING sy-subrc. WHEN gp_uload. PERFORM sub_upload_1000 CHANGING sy-subrc. ENDCASE.
10、0; IF sy-subrc <> 0. MESSAGE '出现错误!' TYPE 'E' . ELSE. CASE gc_x. WHEN gp_dload.
11、60; MESSAGE '下载成功!' TYPE 'S' . WHEN gp_uload. MESSAGE '上传成功!' TYPE 'S'
12、;. ENDCASE. ENDIF. ENDIF.*START-OF-SELECTION.*&-*& Form sub_init_screen*&-* text*-*FORM sub_init_screen. g_gc1tx
13、0;= '你想干什么?'. g_icdat = '同时下载数据(仅限于表)'.ENDFORM . "sub_init_screen*&-*& Form
14、;sub_pbo_1000*&-* text*-*FORM sub_pbo_1000.* break-point. LOOP AT SCREEN. IF screen-group1 = 'GC1'. IF gp_dload = gc_x.
15、60; CLEAR screen-invisible. ELSE. screen-invisible = 1. ENDIF. MODIFY SCREEN.
16、0; ENDIF. ENDLOOP.ENDFORM. "sub_pbo_1000*&-*& Form sub_check_screen*&-* &
17、#160; text*-*FORM sub_check_screen. TRANSLATE gp_tn TO UPPER CASE. IF gp_uload = gc_x AND ( gp_tn(1) <> 'Z' OR gp_tn(1) <> 'Y' ).
18、160; DATA: l_answer. CALL FUNCTION 'POPUP_TO_CONFIRM' EXPORTING titlebar
19、; = sy-title* DIAGNOSE_OBJECT = ' '
20、; text_question = '你导入的表是系统标准表,随意修改有可以导致系统崩溃!' text_button_1
21、160;= '确定导入!'(001) icon_button_1 = 'ICON_IMPORT' text_button_2
22、; = '不导算了' icon_button_2 = 'ICON_CANCEL' default_button&
23、#160; = '2' display_cancel_button = space* USERDEFINED_F1_HELP
24、160; = ' '* START_COLUMN = 25* START_ROW &
25、#160; = 6* POPUP_TYPE =* IV_Q
26、UICKINFO_BUTTON_1 = ' '* IV_QUICKINFO_BUTTON_2 = ' ' IMPORTING
27、160; answer = l_answer* TABLES* PARAMETER
28、 = EXCEPTIONS text_not_found = 1
29、60;OTHERS = 2. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgt
30、y NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ELSE. IF l_answer = '2'.
31、0; LEAVE SCREEN. ELSE. MESSAGE '导入系统标准表功能暂时取消,请等待项目组通知再开放使用!' TYPE 'E'. ENDIF. ENDIF. ENDI
32、F.ENDFORM. "sub_check_screen*&-*& Form sub_init_object*&-* text*-*FORM s
33、ub_init_object. REFRESH gr_excl. gr_excl-sign = 'I'. gr_excl-option = 'EQ'. gr_excl-low = 'ZZZZZZZZ99999999'. APPEND gr_excl. IF gp_mandt <> gc_x.
34、60;gr_excl-sign = 'I'. gr_excl-option = 'EQ'. gr_excl-low = 'MANDT'. APPEND gr_excl. ENDIF.ENDFORM.
35、160;"sub_init_object*&-*& Form sub_download_1000*&-* text*-*FORM sub_download_1000 CHANGING value(p_subrc) LIKE sy-subrc. DATA:
36、60; lt_fct TYPE gtyt_fieldcat, lt_fcts TYPE gtyt_fieldcat. DATA: lt_ref TYPE REF TO data, lt_ref2
37、 TYPE REF TO data, l_path LIKE rlgrap-filename, l_len TYPE c LENGTH 6. FIELD-SYMBOLS:
38、 <lfs_fct> LIKE LINE OF lt_fct, <lft_data> TYPE table,
39、160; <lfs_data> TYPE ANY, <lfs_fcts> LIKE LINE OF lt_fcts,
40、0; <lft_datatp> TYPE table, <lfs_datatp> TYPE ANY,
41、0; <lf_comp>. p_subrc = 4. CALL FUNCTION 'LVC_FIELDCATALOG_MERGE' EXPORTING i_structure_name = gp_tn
42、; CHANGING ct_fieldcat = lt_fct EXCEPTIONS inconsistent_interface = 1 program_err
43、or = 2 OTHERS = 3. IF sy-subrc <> 0. MES
44、SAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ELSE. lt_fcts = lt_fct.
45、;DELETE lt_fcts WHERE fieldname IN gr_excl. LOOP AT lt_fcts ASSIGNING <lfs_fct>. CLEAR: <lfs_fct>-domname,
46、160; <lfs_fct>-decimals, <lfs_fct>-tech, <lfs_fct>-ref_table, <lfs_fct>-ref_field,
47、 <lfs_fct>-tabname. <lfs_fct>-datatype = 'CHAR'. <lfs_fct>-inttype = 'C'. IF <lfs_fct>-intlen < 30. &
48、#160; <lfs_fct>-intlen = <lfs_fct>-outputlen = 30. ENDIF. ENDLOOP. CALL METHOD cl_alv_table_create=>create_dynamic_table &
49、#160; EXPORTING it_fieldcatalog = lt_fcts IMPORTING ep_table
50、 = lt_ref EXCEPTIONS generate_subpool_dir_full = 1. IF sy-subrc <> 0. &
51、#160; MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. ASSIG
52、N lt_ref->* TO <lft_datatp>. APPEND INITIAL LINE TO <lft_datatp> ASSIGNING <lfs_datatp>. LOOP AT lt_fcts ASSIGNING <lfs_fcts>.
53、READ TABLE lt_fct ASSIGNING <lfs_fct> WITH KEY fieldname = <lfs_fcts>-fieldname. ASSIGN COMPONENT <lfs_fcts>-fieldname OF STRUCTURE <lfs_datatp> TO <lf_comp&g
54、t;. IF sy-subrc = 0.* IF <lfs_fcts>-fieldname CP 'ZDSE*'.* <lf_comp> = '常量“/”'.*
55、; ELSE. CLEAR l_len. WRITE <lfs_fct>-intlen TO l_len NO-ZERO. CONDENSE l_len NO-GAP
56、S. CONCATENATE <lfs_fcts>-scrtext_m gc_lp <lfs_fct>-inttype l_len gc_rp INTO <lf_comp>.* ENDIF. ENDIF.
57、0; ENDLOOP. APPEND INITIAL LINE TO <lft_datatp> ASSIGNING <lfs_datatp>. LOOP AT lt_fcts ASSIGNING <lfs_fcts>. ASSIGN COMPONENT <lfs_f
58、cts>-fieldname OF STRUCTURE <lfs_datatp> TO <lf_comp>. IF sy-subrc = 0. PERFORM frm_repeat_char USI
59、NG <lfs_fcts>-intlen gc_is CHANGING
60、0; <lf_comp>. ENDIF. ENDLOOP. IF gp_icda = gc_x. CALL METHOD cl_alv_ta
61、ble_create=>create_dynamic_table EXPORTING it_fieldcatalog = lt_fct IMPORT
62、ING ep_table = lt_ref2 EXCEPTIONS &
63、#160; generate_subpool_dir_full = 1. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
64、 WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. ASSIGN lt_ref2->* TO <lft_data>. IF gp_mandt
65、;= gc_x. SELECT * FROM (gp_tn) CLIENT SPECIFIED APPENDING CORRESPONDING FIELDS OF TABLE <lft_data>. ELSE.
66、; SELECT * FROM (gp_tn) APPENDING CORRESPONDING FIELDS OF TABLE <lft_data>. ENDIF. LOOP AT <lft_data> ASSIGNING <lfs_data>. &
67、#160; APPEND INITIAL LINE TO <lft_datatp> ASSIGNING <lfs_datatp>. MOVE-CORRESPONDING <lfs_data> TO <lfs_datatp>. E
68、NDLOOP. FREE: lt_ref2, <lft_data>. ENDIF.* BREAK-POINT. PERFORM get_localfilepath
69、0; USING 'XLS'
70、0; 'S' sy-title CHANGING &
71、#160; l_path. IF sy-subrc <> 0. IF sy-subrc = 3. LEAVE SCREEN.
72、60; ELSE. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3
73、;sy-msgv4. ENDIF. ELSE. DATA: l_str TYPE string. l_str = l_path.
74、; CALL FUNCTION 'GUI_DOWNLOAD' EXPORTING* BIN_FILESIZE =
75、160; filename = l_str filetype
76、0; = 'DAT'* APPEND &
77、#160; = ' '* WRITE_FIELD_SEPARATOR = ' '* HEADER
78、0; = '00'* TRUNC_TRAILING_BLANKS = '
79、; '* WRITE_LF = 'X'* COL_SELECT
80、0; = ' '* COL_SELECT_MASK =
81、' '* DAT_MODE = ' '* CONFIRM_OVERWRITE
82、 = ' '* NO_AUTH_CHECK = ' '
83、* CODEPAGE = ' '* IGNORE_CERR
84、0; = ABAP_TRUE* REPLACEMENT =
85、;'#'* WRITE_BOM = ' '* TRUNC_TRAILING_BLANKS_EOL &
86、#160; = 'X'* WK1_N_FORMAT = ' '* WK1_N_
87、SIZE = ' '* WK1_T_FORMAT
88、160; = ' '* WK1_T_SIZE = ' '*
89、0; WRITE_LF_AFTER_LAST_LINE = ABAP_TRUE* SHOW_TRANSFER_STATUS = ABAP_TRUE* IMPORTING*
90、 FILELENGTH = TABLES data_tab
91、; = <lft_datatp>* FIELDNAMES
92、; = EXCEPTIONS file_write_error = 1
93、 no_batch = 2 gui_refuse_filetransfer
94、60; = 3 invalid_type = 4 no_authority
95、; = 5 unknown_error =&
96、#160;6 header_not_allowed = 7 separator_not_allowed &
97、#160; = 8 filesize_not_allowed = 9 header_too_long
98、0; = 10 dp_error_create = 11 dp_error_send
99、 = 12 dp_error_write =
100、 13 unknown_dp_error = 14 access_denied
101、160; = 15 dp_out_of_memory = 16
102、0;disk_full = 17 dp_timeout
103、 = 18 file_not_found = 19
104、0;dataprovider_exception = 20 control_flush_error = 21
105、; OTHERS = 22 . &
106、#160; IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-m
107、sgv2 sy-msgv3 sy-msgv4. ELSE. p_subrc = 0.* DATA:* l_answer.* &
108、#160; CALL FUNCTION 'POPUP_TO_CONFIRM'* EXPORTING* titlebar
109、0; = sy-title* DIAGNOSE_OBJECT = ' '*
110、60; text_question = '是否马上打开下载的模板进行编辑?'* text_button_1
111、60; = '马上打开'* icon_button_1 = 'ICON_XLS'* te
112、xt_button_2 = '以后再处理'* icon_button_2 =
113、'ICON_CANCEL'* default_button = '2'* display_cancel_button
114、160; = space* USERDEFINED_F1_HELP = ' '* START_COLUMN
115、 = 25* START_ROW = 6* POPUP_TYPE
116、0; =* IV_QUICKINFO_BUTTON_1 = ' '* IV_QUICKINFO_BUTTON_2
117、160; = ' '* IMPORTING* answer
118、0; = l_answer* TABLES* PARAMETER =*
119、 EXCEPTIONS* text_not_found = 1* OTHERS
120、160; = 2.* IF sy-subrc <> 0.* IF sy-subrc = 3.*
121、; LEAVE SCREEN.* ELSE.* MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno*
122、160; WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.* ENDIF.* ELSE.*
123、; IF l_answer = '1'.* BREAK-POINT.* CALL FUNCTION 'WS_EXECUTE'*&
124、#160; EXPORTING* DOCUMENT = ' '* &
125、#160; CD = ' '*
126、; commandline = l_str* INFORM
127、; = ' '* program = 'EXCEL'*
128、; STAT = ' '* WINID
129、160; = ' '* OSMAC_SCRIPT = ' '*
130、160; OSMAC_CREATOR = ' '* WIN16_EXT
131、0; = ' '* EXEC_RC = ' '*
132、60; IMPORTING* RBUFF =* EXCEPTIONS
133、* frontend_error = 1* no_batch
134、0; = 2* prog_not_found = 3*
135、160; illegal_option = 4* gui_refuse_execute =
136、160;5* OTHERS = 6*
137、60; .* IF sy-subrc <> 0.* MESSAGE ID sy-msgid TYPE s
138、y-msgty NUMBER sy-msgno* WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.*
139、ENDIF.* data:l_returncode type i.* CALL FUNCTION 'GUI_EXEC'*
140、0; EXPORTING* command = l_path* PARAMETER
141、 =* IMPORTING* RETURNCODE = l_retur
142、ncode* .* CALL FUNCTION 'ITS_EXECUTE'*
143、 EXPORTING* DOCUMENT = ' '*
144、 CD = ' '*
145、0; commandline = l_str* INFORM
146、0; = ' '* program = 'EXCEL'*
147、0; STAT = ' '*
148、 WINID = ' '* OSMAC_SCRIPT &
149、#160; = ' '* OSMAC_CREATOR = ' '*
150、 WIN16_EXT = ' '* EXEC_RC
151、160; = ' '* IMPORTING*
152、0; RBUFF =* EXCEPTIONS*
153、0; frontend_error = 1* prog_not_found = 2*
154、 gui_refuse_execute = 3* OTHERS
155、60; = 4* .* IF sy-subrc <>
156、0;0.* MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno*
157、;WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.* ENDIF.* call method CL_GUI_FRONTEND_SERVICES=>EXECUTE*
158、60; EXPORTING* DOCUMENT = l_str* APPLICATION
159、60;= 'EXCEL'* PARAMETER = l_str* EXCEPTIONS* &
160、#160; CNTL_ERROR = 1* ERROR_NO_GUI = 2* BAD_PARAM
161、ETER = 3* FILE_NOT_FOUND = 4* PATH_NOT_FOUND = 5* &
162、#160; FILE_EXTENSION_UNKNOWN = 6* ERROR_EXECUTE_FAILED = 7* &
163、#160; SYNCHRONOUS_FAILED = 8* NOT_SUPPORTED_BY_GUI = 9* others = 10.* IF sy-subrc <> 0.*
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026新疆乌鲁木齐市乌鲁木齐县南郊供排水有限公司及子公司招聘14人考试参考试题及答案解析
- 2026重庆市铜梁区发展和改革委员会招聘2人笔试备考试题及答案解析
- 2025年江苏省徐州市高职单招职业适应性测试考试题库及答案解析
- 2026新疆双河国投运营集团有限公司本部及权属企业财务人员招聘4人笔试模拟试题及答案解析
- 2026广西南宁市青秀区凤岭北路中学教师招聘1人考试参考试题及答案解析
- 铜川爱国主题古诗词校本课程案例
- 2026广东深圳市宝安区西乡街道中心幼儿园招聘短期教师1人考试备考试题及答案解析
- 2026浙江金华市武义县人民法院招聘1人考试备考题库及答案解析
- 2026年芜湖市急救中心公开招聘编外工作人员2名考试备考试题及答案解析
- 2026广西百色市德保县公安局招聘警务辅助人员15人考试备考题库及答案解析
- 湖南省长沙市长郡双语学校2023-2024学年九年级下学期入学物理试卷
- 郴州职业技术学院单招《语文》考试复习题库(含答案)
- 化妆品工厂培训课件
- 【内蒙古乳制品出口贸易发展现状及优化建议分析8900字(论文)】
- 翻译研究论文的写作
- 配电类“两种人”安全规程考试题库
- 《小丑鱼的奇妙世界》大班美术活动
- 医疗质量与安全管理委员会会议专家讲座
- 川2020J146-TJ 建筑用轻质隔墙条板构造图集
- 外研版中考英语复习课件
- GB/T 7762-2003硫化橡胶或热塑性橡胶耐臭氧龟裂静态拉伸试验
评论
0/150
提交评论