SAP万能导入程序_第1页
SAP万能导入程序_第2页
SAP万能导入程序_第3页
SAP万能导入程序_第4页
SAP万能导入程序_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、SAP万能导入程序 Author:SUNZK QQ:1131341075REPORTYMPSRIMPORTINGMESSAGE-IDYMTT.INCLUDEOLE2INCL.INCLUDEZ_BATCHIMPORT_TOP.INCLUDEZ_BATCHIMPORT_SCR.INCLUDEZ_BATCHIMPORT_F01.ATSELECTION-SCREENONVALUE-REQUESTFORP_FILE.PERFORMGET_FILENAME_ON_F4USINGP_FILE.ATSELECTION-SCREENOUTPUT.ATSELECTION-SCREEN.START-OF-SELEC

2、TION.IFP_FILEISINITIAL.MESSAGE请输入文件路径!TYPESDISPLAYLIKEE.ELSE.DATA:LV_MSGTYPEC.DATA:LV_FILETYPESTRING.LV_FILE=P_FILE.CALLMETHODCL_GUI_FRONTEND_SERVICES=FILE_EXISTEXPORTINGFILE=LV_FILERECEIVINGRESULT=LV_MSGEXCEPTIONSCNTL_ERROR=1ERROR_NO_GUI=2WRONG_PARAMETER=3NOT_SUPPORTED_BY_GUI=4OTHERS=5.IFSY-SUBRC0.

3、ENDIF.IFLV_MSGISINITIAL.MESSAGE文件不存在TYPES.ELSE.CLEAR:GV_MESSAGE.获取到EXCEL的SHEET页名PERFORMGET_SHEETNAMES.检查SHEET页名对应的表是否存在(并且仅允许操作Y,Z开头的自建表)PERFORMCHECK_TABLE_NAMECHANGINGGV_MESSAGE.IFGV_MESSAGEISNOTINITIAL.MESSAGEGV_MESSAGETYPESDISPLAYLIKEE.STOP.ENDIF.根据SHEET页表名生成其表结构对应的动态内表PERFORMCREATE_DYNAMIC_TABLE

4、.根据表结构生成ALV字段列表PERFORMCREATE_ALV_FCAT.上载EXCEL数据到内表PERFORMUPLOAD_DATA_FROM_EXCEL.填充状态栏上按钮动态文本、初始状态、标题等。PERFORMFILL_BUTTON_TEXT.数据屏幕CALLSCREEN1001.ENDIF.ENDIF.TYPES:BEGINOFTY_BUTTON,BT01TYPECHAR30,BT02TYPECHAR30,BT03TYPECHAR30,BT04TYPECHAR30,BT05TYPECHAR30,BT06TYPECHAR30,BT07TYPECHAR30,BT08TYPECHAR30,

5、BT09TYPECHAR30,BT10TYPECHAR30,ENDOFTY_BUTTON.按钮文本结构,十个按钮TYPES:BEGINOFTY_SHEETNAME,SHEETNAMETYPECHAR30,ENDOFTY_SHEETNAME.EXCELsheet页DATA:GS_BUTTONTYPETY_BUTTON.BUTTON描述DATA:GV_TITLETYPESTRING.用于标识当前状态下的标题DATA:GV_SCR1001_MODETYPECHAR30.用于标识当前屏幕的状态DATA:GV_CURRENT_TABLETYPECHAR30.用于记录当前数据表名DATA:GT_SHEET

6、NAMETYPESTANDARDTABLEOFTY_SHEETNAME.SHEET页名内表动态内表定义DATA:DYN_TABLE01TYPEREFTODATA,DYN_TABLE02TYPEREFTODATA,DYN_TABLE03TYPEREFTODATA,DYN_TABLE04TYPEREFTODATA,DYN_TABLE05TYPEREFTODATA,DYN_TABLE06TYPEREFTODATA,DYN_TABLE07TYPEREFTODATA,DYN_TABLE08TYPEREFTODATA,DYN_TABLE09TYPEREFTODATA,DYN_TABLE10TYPEREFT

7、ODATA.动态内表指针FIELD-SYMBOLS:TYPESTANDARDTABLE,TYPESTANDARDTABLE,TYPESTANDARDTABLE,TYPESTANDARDTABLE,TYPESTANDARDTABLE,TYPESTANDARDTABLE,TYPESTANDARDTABLE,TYPESTANDARDTABLE,TYPESTANDARDTABLE,TYPESTANDARDTABLE.ALV字段内表DATA:GT_FCAT01TYPELVC_T_FCAT,GT_FCAT02TYPELVC_T_FCAT,GT_FCAT03TYPELVC_T_FCAT,GT_FCAT04T

8、YPELVC_T_FCAT,GT_FCAT05TYPELVC_T_FCAT,GT_FCAT06TYPELVC_T_FCAT,GT_FCAT07TYPELVC_T_FCAT,GT_FCAT08TYPELVC_T_FCAT,GT_FCAT09TYPELVC_T_FCAT,GT_FCAT10TYPELVC_T_FCAT.DATA:GV_MESSAGETYPECHAR255.ALV、容器对象定义DATA:GO_ALV_GRIDTYPEREFTOCL_GUI_ALV_GRID,GO_CUSTOM_CONTAINERTYPEREFTOCL_GUI_CUSTOM_CONTAINER.CONSTANTS:CN

9、S_CONTAINERTYPECHAR50VALUECONTAINER_ALV.SELECTION-SCREENBEGINOFBLOCKb1WITHFRAMETITLEtext-001.PARAMETERS:p_fileLIKErlgrap-filenameMEMORYIDm01.上传文件路径PARAMETERS:p1RADIOBUTTONGROUPg1,原样数据上传p2RADIOBUTTONGROUPg1DEFAULTX.外码转换到内码后上传SELECTION-SCREENENDOFBLOCKb1.*&-*&包含Z_BATCHIMPORT_F01*&-*&-*&FormSET_STATUS_

10、1001*&-*设置1001屏幕状态栏*-*FORMSET_STATUS_1001.DATA:LT_EXCLUDETYPEUI_FUNCTIONS,LS_EXCLUDETYPEUI_FUNC.REFRESH:LT_EXCLUDE.用于测试时方便删除数据,其他情况屏蔽删除按钮IFSY-MANDTEQ123AND(SY-UNAMEEQAB_GENGJHORSY-UNAMEEQTEST823).ELSE.LS_EXCLUDE=DELETE.APPENDLS_EXCLUDETOLT_EXCLUDE.ENDIF.SETPF-STATUSSTATUS_1001EXCLUDINGLT_EXCLUDE.SET

11、TITLEBARTITLE_1001WITHGV_TITLE.ENDFORM.SET_STATUS_1001*&-*&FormPROCESS_USER_COMMAND_1001*&-*处理1001屏幕按钮事件*-*FORMPROCESS_USER_COMMAND_1001.DATA:LV_LINESTYPEI.DATA:LS_SHEETNAMETYPETY_SHEETNAME.DATA:LV_ANSWERTYPEC.DEFINECHANGE_DATA_STATU.根据按钮切换当前数据clear:gv_title.describetable&1lineslv_lines.gv_title=lv_

12、lines.readtablegt_sheetnameintols_sheetnameindex&2.concatenate当前表:ls_sheetname-sheetname,条目数:gv_titleintogv_title.gv_scr1001_mode=sy-ucomm.gv_current_table=ls_sheetname-sheetname.END-OF-DEFINITION.CASESY-UCOMM.WHENBACKOREXIT.LEAVETOSCREEN0.WHENCANCEL.LEAVEPROGRAM.WHENBT01.CHANGE_DATA_STATU1.WHENBT02

13、.CHANGE_DATA_STATU2.WHENBT03.CHANGE_DATA_STATU3.WHENBT04.CHANGE_DATA_STATU4.WHENBT05.CHANGE_DATA_STATU5.WHENBT06.CHANGE_DATA_STATU6.WHENBT07.CHANGE_DATA_STATU7.WHENBT08.CHANGE_DATA_STATU8.WHENBT09.CHANGE_DATA_STATU9.WHENBT10.CHANGE_DATA_STATU10.WHENIMPORT.CLEAR:LV_ANSWER.弹出确认框PERFORMPOPUP_TO_CONFIRM

14、CHANGINGLV_ANSWER.IFLV_ANSWEREQ1.导入数据PERFORMIMPORT_DATA_TO_DBTABLE.ENDIF.WHENDELETE.用于部分账号在测试时清空数据DELETEFROM(GV_CURRENT_TABLE).COMMITWORKANDWAIT.WHENOTHERS.ENDCASE.释放ALV对象PERFORMFREE_ALV_OBJECT.CLEAR:SY-UCOMM.ENDFORM.PROCESS_USER_COMMAND_1001*&-*&Formget_sheetnames*&-*获取上载EXCEL的SHEET页名称*-*FORMGET_SH

15、EETNAMES.DATA:APPLICATIONTYPEOLE2_OBJECT,BOOKTYPEOLE2_OBJECT,SHEETTYPEOLE2_OBJECT.DATA:LV_SHEETCOUNTTYPEI,LV_INDEXTYPESY-INDEX.DATA:LS_SHEETNAMETYPETY_SHEETNAME.REFRESH:GT_SHEETNAME.CREATEOBJECTAPPLICATIONExcel.Application.SETPROPERTYOFAPPLICATIONVisible=0.CALLMETHODOFAPPLICATIONWorkbooks=BOOK.CALLM

16、ETHODOFBOOKOpenEXPORTING#1=P_FILE.CALLMETHODOFAPPLICATIONWORKSHEETS=SHEET.GETPROPERTYOFSHEETCOUNT=LV_SHEETCOUNT.DOLV_SHEETCOUNTTIMES.LV_INDEX=SY-INDEX.CLEAR:LS_SHEETNAME.CALLMETHODOFAPPLICATIONWORKSHEETS=SHEETEXPORTING#1=LV_INDEX.GETPROPERTYOFSHEETNAME=LS_SHEETNAME-SHEETNAME.TRANSLATELS_SHEETNAME-SH

17、EETNAMETOUPPERCASE.APPENDLS_SHEETNAMETOGT_SHEETNAME.ENDDO.GETPROPERTYOFAPPLICATIONActiveWorkbook=BOOK.*CALLMETHODOFbookSAVE.CALLMETHODOFBOOKclose.CALLMETHODOFAPPLICATIONQUIT.ENDFORM.get_sheetnames*&-*&FormCHECK_TABLE_NAME*&-*以页签名检查数据表是否存在,不存在则报错*若操作表不是Z/Y开头的,则报错。*-*FORMCHECK_TABLE_NAMECHANGINGPV_MES

18、SAGETYPECHAR255.DATA:LS_SHEETNAMETYPETY_SHEETNAME,LS_DD02TTYPEDD02T.LOOPATGT_SHEETNAMEINTOLS_SHEETNAME.IFLS_SHEETNAME-SHEETNAME(1)NEZANDLS_SHEETNAME-SHEETNAME(1)NEY.CONCATENATE不允许操作表,请检查!INTOGV_MESSAGE.RETURN.ENDIF.SELECTSINGLE*INTOLS_DD02TFROMDD02TWHERETABNAME=LS_SHEETNAME-SHEETNAME.IFSY-SUBRCNE0.C

19、ONCATENATE不存在页签对应的数据表,请检查!INTOGV_MESSAGE.RETURN.ENDIF.ENDLOOP.ENDFORM.CHECK_TABLE_NAME*&-*&FormFILL_BUTTON_TEXT*&-*根据SHEET页名填充状态栏上按钮名*-*FORMFILL_BUTTON_TEXT.DATA:LV_LINESTYPEI.DATA:LS_SHEETNAMETYPETY_SHEETNAME.DATA:LV_TABIXTYPESY-TABIX.CLEAR:GS_BUTTON,GV_TITLE.CLEAR:GV_SCR1001_MODE.LOOPATGT_SHEETNAM

20、EINTOLS_SHEETNAME.LV_TABIX=SY-TABIX.CASELV_TABIX.WHEN1.GS_BUTTON-BT01=LS_SHEETNAME-SHEETNAME.GV_SCR1001_MODE=BT01.GV_CURRENT_TABLE=LS_SHEETNAME-SHEETNAME.DESCRIBETABLELINESLV_LINES.GV_TITLE=LV_LINES.CONCATENATE当前表:LS_SHEETNAME-SHEETNAME,条目数:GV_TITLEINTOGV_TITLE.WHEN2.GS_BUTTON-BT02=LS_SHEETNAME-SHEE

21、TNAME.WHEN3.GS_BUTTON-BT03=LS_SHEETNAME-SHEETNAME.WHEN4.GS_BUTTON-BT04=LS_SHEETNAME-SHEETNAME.WHEN5.GS_BUTTON-BT05=LS_SHEETNAME-SHEETNAME.WHEN6.GS_BUTTON-BT06=LS_SHEETNAME-SHEETNAME.WHEN7.GS_BUTTON-BT07=LS_SHEETNAME-SHEETNAME.WHEN8.GS_BUTTON-BT08=LS_SHEETNAME-SHEETNAME.WHEN9.GS_BUTTON-BT09=LS_SHEETN

22、AME-SHEETNAME.WHEN10.GS_BUTTON-BT10=LS_SHEETNAME-SHEETNAME.WHENOTHERS.ENDCASE.ENDLOOP.ENDFORM.FILL_BUTTON_TEXT*&-*&FormGET_FILENAME_ON_F4*&-*文件路径搜索帮助*-*FORMGET_FILENAME_ON_F4CHANGINGPV_NAMETYPELOCALFILE.CALLFUNCTIONKD_GET_FILENAME_ON_F4EXPORTING*PROGRAM_NAME=SYST-REPID*DYNPRO_NUMBER=SYST-DYNNR*FIELD

23、_NAME=STATIC=X*MASK=CHANGINGFILE_NAME=PV_NAME.ENDFORM.GET_FILENAME_ON_F4*&-*&FormCREATE_DYNAMIC_TABLE*&-*创建动态内表*-*FORMCREATE_DYNAMIC_TABLE.DATA:LO_STRUCTYPEREFTOCL_ABAP_STRUCTDESCR,LO_TABLETYPEREFTOCL_ABAP_TABLEDESCR.DATA:LS_SHEETNAMETYPETY_SHEETNAME.DATA:LV_TABIXTYPESY-TABIX.LOOPATGT_SHEETNAMEINTOL

24、S_SHEETNAME.LV_TABIX=SY-TABIX.LO_STRUC?=CL_ABAP_TYPEDESCR=DESCRIBE_BY_NAME(LS_SHEETNAME-SHEETNAME).LO_TABLE?=CL_ABAP_TABLEDESCR=CREATE(P_LINE_TYPE=LO_STRUC).CASELV_TABIX.WHEN1.CREATEDATADYN_TABLE01TYPEHANDLELO_TABLE.ASSIGNDYN_TABLE01-*TO.WHEN2.CREATEDATADYN_TABLE02TYPEHANDLELO_TABLE.ASSIGNDYN_TABLE0

25、2-*TO.WHEN3.CREATEDATADYN_TABLE03TYPEHANDLELO_TABLE.ASSIGNDYN_TABLE03-*TO.WHEN4.CREATEDATADYN_TABLE04TYPEHANDLELO_TABLE.ASSIGNDYN_TABLE04-*TO.WHEN5.CREATEDATADYN_TABLE05TYPEHANDLELO_TABLE.ASSIGNDYN_TABLE05-*TO.WHEN6.CREATEDATADYN_TABLE06TYPEHANDLELO_TABLE.ASSIGNDYN_TABLE06-*TO.WHEN7.CREATEDATADYN_TA

26、BLE07TYPEHANDLELO_TABLE.ASSIGNDYN_TABLE07-*TO.WHEN8.CREATEDATADYN_TABLE08TYPEHANDLELO_TABLE.ASSIGNDYN_TABLE08-*TO.WHEN9.CREATEDATADYN_TABLE09TYPEHANDLELO_TABLE.ASSIGNDYN_TABLE09-*TO.WHEN10.CREATEDATADYN_TABLE10TYPEHANDLELO_TABLE.ASSIGNDYN_TABLE10-*TO.WHENOTHERS.ENDCASE.CLEAR:LS_SHEETNAME.ENDLOOP.END

27、FORM.CREATE_DYNAMIC_TABLE*&-*&Formupload_data_from_excel*&-*分SHEET页签上载EXCEL数据*-*FORMUPLOAD_DATA_FROM_EXCEL.DATA:LS_SHEETNAMETYPETY_SHEETNAME.DATA:LV_TABIXTYPESY-TABIX.LOOPATGT_SHEETNAMEINTOLS_SHEETNAME.LV_TABIX=SY-TABIX.CASELV_TABIX.WHEN1.*PERFORMconvert_to_internal_tableTABLESUSINGls_sheetname-shee

28、tname.PERFORMCONVERT_TO_INTERNAL_TABLE_NEWTABLESUSINGLS_SHEETNAME-SHEETNAME.WHEN2.*PERFORMconvert_to_internal_tableTABLESUSINGls_sheetname-sheetname.PERFORMCONVERT_TO_INTERNAL_TABLE_NEWTABLESUSINGLS_SHEETNAME-SHEETNAME.WHEN3.*PERFORMconvert_to_internal_tableTABLESUSINGls_sheetname-sheetname.PERFORMC

29、ONVERT_TO_INTERNAL_TABLE_NEWTABLESUSINGLS_SHEETNAME-SHEETNAME.WHEN4.*PERFORMconvert_to_internal_tableTABLESUSINGls_sheetname-sheetname.PERFORMCONVERT_TO_INTERNAL_TABLE_NEWTABLESUSINGLS_SHEETNAME-SHEETNAME.WHEN5.*PERFORMconvert_to_internal_tableTABLESUSINGls_sheetname-sheetname.PERFORMCONVERT_TO_INTE

30、RNAL_TABLE_NEWTABLESUSINGLS_SHEETNAME-SHEETNAME.WHEN6.*PERFORMconvert_to_internal_tableTABLESUSINGls_sheetname-sheetname.PERFORMCONVERT_TO_INTERNAL_TABLE_NEWTABLESUSINGLS_SHEETNAME-SHEETNAME.WHEN7.*PERFORMconvert_to_internal_tableTABLESUSINGls_sheetname-sheetname.PERFORMCONVERT_TO_INTERNAL_TABLE_NEW

31、TABLESUSINGLS_SHEETNAME-SHEETNAME.WHEN8.*PERFORMconvert_to_internal_tableTABLESUSINGls_sheetname-sheetname.PERFORMCONVERT_TO_INTERNAL_TABLE_NEWTABLESUSINGLS_SHEETNAME-SHEETNAME.WHEN9.*PERFORMconvert_to_internal_tableTABLESUSINGls_sheetname-sheetname.PERFORMCONVERT_TO_INTERNAL_TABLE_NEWTABLESUSINGLS_

32、SHEETNAME-SHEETNAME.WHEN10.*PERFORMconvert_to_internal_tableTABLESUSINGls_sheetname-sheetname.PERFORMCONVERT_TO_INTERNAL_TABLE_NEWTABLESUSINGLS_SHEETNAME-SHEETNAME.WHENOTHERS.ENDCASE.ENDLOOP.ENDFORM.upload_data_from_excel*&-*&Formconvert_to_internal_table_new*&-*原上载EXCEL数据的函数ZZALSM_EXCEL_TO_INTERNAL

33、_TABLE*在大数据量时,ZALSMEX_TABLINE结构的内表容量不够,并且速度慢*计划改为剪贴板的方式上载数据,待完成。*-*FORMCONVERT_TO_INTERNAL_TABLE_NEWTABLESPT_DYNTABLEUSINGPV_SHEETNAMETYPECHAR30.DATA:EXCELTYPEOLE2_OBJECT,SHEETTYPEOLE2_OBJECT,RANGETYPEOLE2_OBJECT,CELL1TYPEOLE2_OBJECT,CELL2TYPEOLE2_OBJECT,WORKBOOKTYPEOLE2_OBJECT.DATA:LV_SEPARATORTYPE

34、C.TYPES:BEGINOFTY_EXCEL,TEXTTYPECLENGTH10000,ENDOFTY_EXCEL.TYPES:BEGINOFTY_COL,VALUETYPECLENGTH10000,ENDOFTY_COL.DATA:LV_ENDROWTYPEI,结束行LV_BEGINROWTYPEI,起始行LV_ADDEDROWSTYPEI.增加行数DATA:LT_EXCELTYPESTANDARDTABLEOFTY_EXCEL,LS_EXCELTYPETY_EXCEL.DATA:LT_COLTYPESTANDARDTABLEOFTY_COL,LS_COLTYPETY_COL.DATA:LT_COMPTYPEABAP_COMPDESCR_TAB,表结构字段内表LS_COMPLIKELINEOFLT_COMP.DATA:LT_DFIEST

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论