最新要闻
- 半夜是指什么时间?半夜是指什么生肖?
- 三浴是什么意思?三浴锻炼是指哪三浴?
- 45号钢抗拉强度极限是多少?45号钢抗拉强度极限一览
- 教材是什么意思?教材的作用有哪些?
- 受权人是什么意思?被授权人与受权人的区别是什么?
- 春风十里不如你结局是什么?春风十里不如你演员表
- 什么是环保型材料?环保型材料有哪些?
- 美团外卖超时怎么赔付?美团外卖超时了骑手会扣钱吗?
- 市政协委员相当于什么官?市政协委员有什么用?
- 用户认为4G够用?全国5G现状感受下:基站密度翻倍 后续你不得不升
- 天天实时:《阿凡达2》内地首周末报收3.96亿 表现不佳:预测票房缩水至10亿!
- 天天热点!加冕球王夺冠后 梅西宣布不会退出国家队:继续以世界杯冠军身份出战
- 当前视讯!是否辞去推特总裁?马斯克发公开投票:目前情况不妙
- 全球看热讯:你达标了吗?我国成年人均纸质书阅读4.76本 仅小学生的1/3
- 今晚执行!国内成品油价将迎三连跌:今年国内油价最后一调
- 小米13 Pro为何不用直屏?雷军解释原因
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
SAP根据excel表格数据将数据导入表中
(相关资料图)
一、创建表
首先你得有一个表,如果没有那就新建一个。事务代码SE11,输入表名,创建。交付类选择C,客户表,选择允许显示和维护。添加字段,数据元素可以选择已有的,也可以新建。点击保存,如何激活。数据类根据你的表类型来选,这里我选的是事务数据,透明表,大小范畴根据你的表数据来选。点击保存。然后激活表,报警告不用管他。表建好了。
二、编写程序
首先这是我的excel格式。关键的代码如下。
FORM GETEXCEL . G_FILE = P_FILE. "注意两个文件用于不同的函数,所以类型不同 CALL FUNCTION "ALSM_EXCEL_TO_INTERNAL_TABLE" EXPORTING FILENAME = G_FILE I_BEGIN_COL = 1 I_BEGIN_ROW = 1 I_END_COL = 2 I_END_ROW = 10000 TABLES INTERN = ITAB[]. DELETE ITAB WHERE ROW = 1. "删除字段名行 LOOP AT ITAB. ON CHANGE OF ITAB-ROW. IF SY-TABIX NE 1. APPEND WTAB. CLEAR WTAB. ENDIF. ENDON. ASSIGN COMPONENT ITAB-COL OF STRUCTURE WTAB TO . "动态方法将值传到相应的内表 = ITAB-VALUE. ENDLOOP. APPEND WTAB. "这句不要忘记,要把最后一条APPEND到内表中 SORT WTAB BY LIFNR.ENDFORM. " GETEXCEL
这段代码是获取excel表格里的数据,将其存入创建的内表里。
FORM USER_COMMAND USING RF_UCOMM LIKE SY-UCOMM RS_SELFIELD TYPE SLIS_SELFIELD. "#EC CALLED CASE RF_UCOMM. WHEN "&PRT".*****插入数据 DELETE FROM ZIF_MATLFN2SFWMS. COMMIT WORK AND WAIT. "去重防错 DELETE ADJACENT DUPLICATES FROM WTAB COMPARING LIFNR. INSERT ZIF_MATLFN2SFWMS FROM TABLE WTAB." ACCEPTING DUPLICATE KEYS. DESCRIBE TABLE WTAB LINES COUNT. MESSAGE S001(00) WITH "成功上传" COUNT "条". ENDCASE.ENDFORM. "USER_COMMAND
点击上传按钮后,将数据上传到表里,设置了一个上传按钮,需要用户自己在GUI屏幕建一个按钮。保存,激活程序,运行。输入文件路径,会先显示excel表格里的数据,点击上传按钮后,将数据上传到透明表中。使用事务代码SE16/SE16N/SE11,可以查看表结构和数据。数据成功上传。
三、模板文件
上传excel表格数据时,需要严格按照excel的表格格式来设置数据,因为在调用函数获取excel数据时,就已经定义好了表格格式,所以需要一个模板文件,让用户知道怎么设置标准的表格格式。
FORM DOWNLOAD_DATA USING PDESCFILE PMODELFILE .*&---下载模板 PERFORM FRM_GET_FULLPATH CHANGING GV_FULLPATH GV_PATH GV_NAME PMODELFILE.*&---路径为空则退出 IF GV_FULLPATH IS INITIAL. MESSAGE "用户取消操作" TYPE "S". RETURN. ENDIF. PERFORM FRM_DOWN USING GV_FULLPATH PMODELFILE.ENDFORM. " DOWNLOAD_DATA*&---------------------------------------------------------------------**& Form FRM_GET_FULLPATH*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** <--P_GV_FULLPATH text* <--P_GV_PATH text* <--P_GV_NAME text*----------------------------------------------------------------------*FORM FRM_GET_FULLPATH CHANGING PV_FULLPATH TYPE STRING PV_PATH TYPE STRING PV_NAME TYPE STRING PV_MODEL TYPE STRING. DATA: LV_INIT_PATH TYPE STRING, LV_INIT_FNAME TYPE STRING, LV_PATH TYPE STRING, LV_FILENAME TYPE STRING, LV_FULLPATH TYPE STRING.*&---初始名称(输出的文件名称)* concatenate "Material_Doc_" SY-DATUM ".xslx" into L_INIT_FNAME. LV_INIT_FNAME = PV_MODEL.* 获取桌面路径 CALL METHOD CL_GUI_FRONTEND_SERVICES=>GET_DESKTOP_DIRECTORY CHANGING DESKTOP_DIRECTORY = LV_INIT_PATH EXCEPTIONS CNTL_ERROR = 1 ERROR_NO_GUI = 2 NOT_SUPPORTED_BY_GUI = 3 OTHERS = 4. IF SY-SUBRC <> 0. EXIT. ENDIF.*&---用户选择名称、路径 CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG EXPORTING WINDOW_TITLE = PV_NAME DEFAULT_EXTENSION = "XLSX" DEFAULT_FILE_NAME = LV_INIT_FNAME* FILE_FILTER = CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL* FILE_FILTER = CL_GUI_FRONTEND_SERVICES=>FILETYPE_WORD INITIAL_DIRECTORY = LV_INIT_PATH PROMPT_ON_OVERWRITE = "X" CHANGING FILENAME = LV_FILENAME PATH = LV_PATH FULLPATH = LV_FULLPATH* USER_ACTION =* FILE_ENCODING = EXCEPTIONS CNTL_ERROR = 1 ERROR_NO_GUI = 2 NOT_SUPPORTED_BY_GUI = 3 OTHERS = 4. IF SY-SUBRC = 0. PV_FULLPATH = LV_FULLPATH. PV_PATH = LV_PATH. ENDIF.ENDFORM. " FRM_GET_FULLPATH*--------------------------------------------------------------------** 下载文件*--------------------------------------------------------------------*FORM FRM_DOWN USING PR_FILENAME PMUBAN. DATA: LV_OBJDATA LIKE WWWDATATAB, LV_MIME LIKE W3MIME, LV_DESTINATION LIKE RLGRAP-FILENAME, LV_OBJNAM TYPE STRING, LV_RC LIKE SY-SUBRC, LV_ERRTXT TYPE STRING. DATA: LV_FILENAME TYPE STRING, LV_RESULT, LV_SUBRC TYPE SY-SUBRC. DATA: LV_OBJID TYPE WWWDATATAB-OBJID . LV_OBJID = PMUBAN. "上传的模版名称*&---查找文件是否存在。 SELECT SINGLE RELID OBJID FROM WWWDATA INTO CORRESPONDING FIELDS OF LV_OBJDATA WHERE SRTF2 = 0 AND RELID = "MI" AND OBJID = LV_OBJID.*&---判断模版不存在则报错 IF SY-SUBRC NE 0 OR LV_OBJDATA-OBJID EQ SPACE. CONCATENATE "模板文件:" LV_OBJID "不存在,请用TCODE:SMW0进行加载" INTO LV_ERRTXT. MESSAGE LV_ERRTXT TYPE "E". ENDIF. LV_FILENAME = PR_FILENAME. "判断本地地址是否已经存在此文件。 CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST EXPORTING FILE = LV_FILENAME RECEIVING RESULT = LV_RESULT EXCEPTIONS CNTL_ERROR = 1 ERROR_NO_GUI = 2 WRONG_PARAMETER = 3 NOT_SUPPORTED_BY_GUI = 4 OTHERS = 5. IF SY-SUBRC <> 0. CASE SY-SUBRC. WHEN 1. WHEN 2. WHEN OTHERS. ENDCASE. ENDIF. IF LV_RESULT EQ "X". "如果存在则删除原始文件,重新覆盖 CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_DELETE EXPORTING FILENAME = LV_FILENAME CHANGING RC = LV_SUBRC EXCEPTIONS FILE_DELETE_FAILED = 1 CNTL_ERROR = 2 ERROR_NO_GUI = 3 FILE_NOT_FOUND = 4 ACCESS_DENIED = 5 UNKNOWN_ERROR = 6 NOT_SUPPORTED_BY_GUI = 7 WRONG_PARAMETER = 8 OTHERS = 9. IF SY-SUBRC <> 0. CASE SY-SUBRC. WHEN 1. WHEN 2. WHEN OTHERS. ENDCASE. ENDIF. IF LV_SUBRC <> 0. "如果删除失败,则报错。 CONCATENATE "同名EXCEL文件已打开" "请关闭该EXCEL后重试。" INTO LV_ERRTXT. MESSAGE LV_ERRTXT TYPE "E". ENDIF. ENDIF. LV_DESTINATION = PR_FILENAME.*&---下载模版。 CALL FUNCTION "DOWNLOAD_WEB_OBJECT" EXPORTING KEY = LV_OBJDATA DESTINATION = LV_DESTINATION IMPORTING RC = LV_RC. IF LV_RC NE 0. CONCATENATE "模板文件" "下载失败" INTO LV_ERRTXT. MESSAGE LV_ERRTXT TYPE "E". ENDIF.ENDFORM. "frm_down
要先将模板文件添加到事务代码SMW0中。选择二进制数据,输入包,然后执行。点左上角创建新的对象。输入对象名称和描述,对象名称就是我们在程序里设置的。
CASE SSCRFIELDS-UCOMM.WHEN "BT1". L_FILENAME = "ZIF_MATLFN2SFWMS.xlsx". L_MUBAN = "ZIF_MATLFN2SFWMS". PERFORM DOWNLOAD_DATA USING L_FILENAME L_MUBAN.ENDCASE.
L_FILENAME是下载模板文件时默认的文件名,L_MUBAN就是我们需要的对象名。导入模板文件,记得把excel表格关闭,要不然会报错,然后选择包和请求,创建成功。回到程序,点击模板下载,发现模板下载成功。
四、传输表和数据
表传输直接添加到请求就可以了,但是要注意这样只会传输表,而不会传输数据。可以在生产环境运行程序,重新生产表格数据,也可以通过事务代码SM30来传输数据,这里我们试一下第二种方法。进入SM30表维护,输入表名,选中全部数据。左上角表视图,选择传输,选择请求将数据传输过去就可以了。不过要记得表要设置为允许显示和和维护,否则不能使用表维护。传输完请求后,来的生产环境,打开表,查看数据是否传输成功了。传输成功。然后我们再看一下程序运行后模板是否下载成功。下载成功。
五、完整代码
*&---------------------------------------------------------------------**& Report ZSF_WMS_LIFNR*&*&---------------------------------------------------------------------**&*&*&---------------------------------------------------------------------*REPORT ZSF_WMS_LIFNR.TABLES:ZIF_MATLFN2SFWMS,SSCRFIELDS.**定义内表类型*TYPES: BEGIN OF W_ITAB, LIFNR LIKE ZIF_MATLFN2SFWMS-LIFNR," 供应商 NAME1 LIKE ZIF_MATLFN2SFWMS-NAME1," 供应商名称END OF W_ITAB.FIELD-SYMBOLS: .DATA: FILETAB TYPE FILETABLE WITH HEADER LINE, RC TYPE I, G_FILE TYPE RLGRAP-FILENAME, ITAB TYPE TABLE OF ALSMEX_TABLINE WITH HEADER LINE.DATA: WTAB TYPE TABLE OF W_ITAB WITH HEADER LINE.DATA: COUNT TYPE I.DATA:STDATUM LIKE SY-DATUM, STUZEIT LIKE SY-UZEIT.DATA:L_FILENAME TYPE STRING,L_MUBAN TYPE STRING.DATA:GV_FULLPATH TYPE STRING,GV_PATH TYPE STRING,GV_NAME TYPE STRING.DATA:RUNNERCNT TYPE I, SUMRCNT TYPE I.DATA:PDATE TYPE SY-DATUM.*&---------------------------------------------------------------------**& 选择界面*&---------------------------------------------------------------------*SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME TITLE TXT1 . PARAMETER: P_FILE TYPE STRING. SELECTION-SCREEN SKIP. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN PUSHBUTTON 5(30) BUT1 USER-COMMAND BT1.* SELECTION-SCREEN PUSHBUTTON 40(30) but2 USER-COMMAND bt2. SELECTION-SCREEN END OF LINE.SELECTION-SCREEN END OF BLOCK BLK1.SELECTION-SCREEN SKIP.SELECTION-SCREEN BEGIN OF BLOCK DESC WITH FRAME TITLE BLKTEXT1. SELECTION-SCREEN COMMENT 1(78) TXT11. SELECTION-SCREEN SKIP.* SELECTION-SCREEN COMMENT 1(78) TXT2.* SELECTION-SCREEN SKIP.* SELECTION-SCREEN COMMENT 1(78) TXT3.* SELECTION-SCREEN SKIP.* SELECTION-SCREEN COMMENT 1(78) TXT4.* SELECTION-SCREEN SKIP. SELECTION-SCREEN COMMENT 1(78) TXT5.SELECTION-SCREEN END OF BLOCK DESC.INITIALIZATION.TXT1 = "请输入条件".CALL FUNCTION "ICON_CREATE"EXPORTING NAME = ICON_BW_REF_STRUCTURE_SAP TEXT = "模板下载" INFO = "模板下载"IMPORTING RESULT = BUT1EXCEPTIONS ICON_NOT_FOUND = 1 OUTPUTFIELD_TOO_SHORT = 2 OTHERS = 3.PDATE = 20200222.CLEAR SUMRCNT.PERFORM GETRUNSTATIC(ZPRT_FI_SCCB1L) USING PDATE SY-REPID CHANGING RUNNERCNT SUMRCNT.TXT5 = "运行情况:总共" && RUNNERCNT && "用户运行了" && SUMRCNT && "次,".PDATE = SY-DATUM.PDATE+4(4) = "0101".CLEAR SUMRCNT.PERFORM GETRUNSTATIC(ZPRT_FI_SCCB1L) USING PDATE SY-REPID CHANGING RUNNERCNT SUMRCNT.TXT5 = TXT5 && "本年度总共" && RUNNERCNT && "用户运行了" && SUMRCNT && "次,".PDATE = SY-DATUM.PDATE+6(2) = "01".CLEAR SUMRCNT.PERFORM GETRUNSTATIC(ZPRT_FI_SCCB1L) USING PDATE SY-REPID CHANGING RUNNERCNT SUMRCNT.TXT5 = TXT5 && "本月度总共" && RUNNERCNT && "用户运行了" && SUMRCNT && "次".AT SELECTION-SCREEN.CASE SSCRFIELDS-UCOMM.WHEN "BT1". L_FILENAME = "ZIF_MATLFN2SFWMS.xlsx". L_MUBAN = "ZIF_MATLFN2SFWMS". PERFORM DOWNLOAD_DATA USING L_FILENAME L_MUBAN.ENDCASE.*&---------------------------------------------------------------------AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOGEXPORTING DEFAULT_FILENAME = P_FILECHANGING RC = RC FILE_TABLE = FILETAB[].READ TABLE FILETAB INDEX 1.IF SY-SUBRC EQ 0. P_FILE = FILETAB-FILENAME.ENDIF.START-OF-SELECTION.STDATUM = SY-DATUM.STUZEIT = SY-UZEIT.IF P_FILE <> "". PERFORM GETEXCEL."EXCEL数据获取ELSE. PERFORM GETDATA."获取版本描述表中数据ENDIF.PERFORM WRITERPTRUNRECORD.PERFORM DISPLAY."数据ALV输出END-OF-SELECTION.*&---------------------------------------------------------------------**& Form WRITERPTRUNRECORD*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*FORM WRITERPTRUNRECORD. GET TIME. CALL FUNCTION "ZSYS_RPT_RUNRECORD" EXPORTING TCODE = SY-TCODE PROGRAMM = SY-CPROG* bukrs = "1000" "werks = werks DATUMRST = STDATUM UZEITRST = STUZEIT BATCH = SY-BATCH DATUMREND = SY-DATUM UZEITREND = SY-UZEIT DATUMC = "20221219" RUNNER = SY-UNAME RPTSRC = "xxx".ENDFORM. "WRITERPTRUNRECORD*&---------------------------------------------------------------------**& Form DOWNLOAD_DATA*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text* <-- p2 text*----------------------------------------------------------------------*FORM DOWNLOAD_DATA USING PDESCFILE PMODELFILE .*&---下载模板 PERFORM FRM_GET_FULLPATH CHANGING GV_FULLPATH GV_PATH GV_NAME PMODELFILE.*&---路径为空则退出 IF GV_FULLPATH IS INITIAL. MESSAGE "用户取消操作" TYPE "S". RETURN. ENDIF. PERFORM FRM_DOWN USING GV_FULLPATH PMODELFILE.ENDFORM. " DOWNLOAD_DATA*&---------------------------------------------------------------------**& Form FRM_GET_FULLPATH*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** <--P_GV_FULLPATH text* <--P_GV_PATH text* <--P_GV_NAME text*----------------------------------------------------------------------*FORM FRM_GET_FULLPATH CHANGING PV_FULLPATH TYPE STRING PV_PATH TYPE STRING PV_NAME TYPE STRING PV_MODEL TYPE STRING. DATA: LV_INIT_PATH TYPE STRING, LV_INIT_FNAME TYPE STRING, LV_PATH TYPE STRING, LV_FILENAME TYPE STRING, LV_FULLPATH TYPE STRING.*&---初始名称(输出的文件名称)* concatenate "Material_Doc_" SY-DATUM ".xslx" into L_INIT_FNAME. LV_INIT_FNAME = PV_MODEL.* 获取桌面路径 CALL METHOD CL_GUI_FRONTEND_SERVICES=>GET_DESKTOP_DIRECTORY CHANGING DESKTOP_DIRECTORY = LV_INIT_PATH EXCEPTIONS CNTL_ERROR = 1 ERROR_NO_GUI = 2 NOT_SUPPORTED_BY_GUI = 3 OTHERS = 4. IF SY-SUBRC <> 0. EXIT. ENDIF.*&---用户选择名称、路径 CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG EXPORTING WINDOW_TITLE = PV_NAME DEFAULT_EXTENSION = "XLSX" DEFAULT_FILE_NAME = LV_INIT_FNAME* FILE_FILTER = CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL* FILE_FILTER = CL_GUI_FRONTEND_SERVICES=>FILETYPE_WORD INITIAL_DIRECTORY = LV_INIT_PATH PROMPT_ON_OVERWRITE = "X" CHANGING FILENAME = LV_FILENAME PATH = LV_PATH FULLPATH = LV_FULLPATH* USER_ACTION =* FILE_ENCODING = EXCEPTIONS CNTL_ERROR = 1 ERROR_NO_GUI = 2 NOT_SUPPORTED_BY_GUI = 3 OTHERS = 4. IF SY-SUBRC = 0. PV_FULLPATH = LV_FULLPATH. PV_PATH = LV_PATH. ENDIF.ENDFORM. " FRM_GET_FULLPATH*--------------------------------------------------------------------** 下载文件*--------------------------------------------------------------------*FORM FRM_DOWN USING PR_FILENAME PMUBAN. DATA: LV_OBJDATA LIKE WWWDATATAB, LV_MIME LIKE W3MIME, LV_DESTINATION LIKE RLGRAP-FILENAME, LV_OBJNAM TYPE STRING, LV_RC LIKE SY-SUBRC, LV_ERRTXT TYPE STRING. DATA: LV_FILENAME TYPE STRING, LV_RESULT, LV_SUBRC TYPE SY-SUBRC. DATA: LV_OBJID TYPE WWWDATATAB-OBJID . LV_OBJID = PMUBAN. "上传的模版名称*&---查找文件是否存在。 SELECT SINGLE RELID OBJID FROM WWWDATA INTO CORRESPONDING FIELDS OF LV_OBJDATA WHERE SRTF2 = 0 AND RELID = "MI" AND OBJID = LV_OBJID.*&---判断模版不存在则报错 IF SY-SUBRC NE 0 OR LV_OBJDATA-OBJID EQ SPACE. CONCATENATE "模板文件:" LV_OBJID "不存在,请用TCODE:SMW0进行加载" INTO LV_ERRTXT. MESSAGE LV_ERRTXT TYPE "E". ENDIF. LV_FILENAME = PR_FILENAME. "判断本地地址是否已经存在此文件。 CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST EXPORTING FILE = LV_FILENAME RECEIVING RESULT = LV_RESULT EXCEPTIONS CNTL_ERROR = 1 ERROR_NO_GUI = 2 WRONG_PARAMETER = 3 NOT_SUPPORTED_BY_GUI = 4 OTHERS = 5. IF SY-SUBRC <> 0. CASE SY-SUBRC. WHEN 1. WHEN 2. WHEN OTHERS. ENDCASE. ENDIF. IF LV_RESULT EQ "X". "如果存在则删除原始文件,重新覆盖 CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_DELETE EXPORTING FILENAME = LV_FILENAME CHANGING RC = LV_SUBRC EXCEPTIONS FILE_DELETE_FAILED = 1 CNTL_ERROR = 2 ERROR_NO_GUI = 3 FILE_NOT_FOUND = 4 ACCESS_DENIED = 5 UNKNOWN_ERROR = 6 NOT_SUPPORTED_BY_GUI = 7 WRONG_PARAMETER = 8 OTHERS = 9. IF SY-SUBRC <> 0. CASE SY-SUBRC. WHEN 1. WHEN 2. WHEN OTHERS. ENDCASE. ENDIF. IF LV_SUBRC <> 0. "如果删除失败,则报错。 CONCATENATE "同名EXCEL文件已打开" "请关闭该EXCEL后重试。" INTO LV_ERRTXT. MESSAGE LV_ERRTXT TYPE "E". ENDIF. ENDIF. LV_DESTINATION = PR_FILENAME.*&---下载模版。 CALL FUNCTION "DOWNLOAD_WEB_OBJECT" EXPORTING KEY = LV_OBJDATA DESTINATION = LV_DESTINATION IMPORTING RC = LV_RC. IF LV_RC NE 0. CONCATENATE "模板文件" "下载失败" INTO LV_ERRTXT. MESSAGE LV_ERRTXT TYPE "E". ENDIF.ENDFORM. "frm_down*&---------------------------------------------------------------------**& FORM DISPLAY*&---------------------------------------------------------------------** TEXT 数据展示*----------------------------------------------------------------------** --> P1 TEXT* <-- P2 TEXT*----------------------------------------------------------------------*FORM DISPLAY . DATA: IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV, IS_VARIANT LIKE DISVARIANT, IT_EVENTS TYPE SLIS_T_EVENT, IS_LAYOUT TYPE SLIS_LAYOUT_ALV, TITLE TYPE LVC_TITLE, I_CALLBACK_PROGRAM TYPE SY-REPID, IT_SORT TYPE SLIS_T_SORTINFO_ALV WITH HEADER LINE . PERFORM FIELDCAT_INIT USING IT_FIELDCAT. PERFORM LAYOUT_INIT USING IS_LAYOUT. I_CALLBACK_PROGRAM = SY-REPID. CALL FUNCTION "REUSE_ALV_GRID_DISPLAY" EXPORTING I_CALLBACK_PROGRAM = I_CALLBACK_PROGRAM I_GRID_TITLE = TITLE IS_LAYOUT = IS_LAYOUT I_CALLBACK_PF_STATUS_SET = "SET_PF_STATUS" I_CALLBACK_USER_COMMAND = "USER_COMMAND" IT_FIELDCAT = IT_FIELDCAT IT_EVENTS = IT_EVENTS TABLES T_OUTTAB = WTAB[] EXCEPTIONS PROGRAM_ERROR = 1 OTHERS = 2. IF SY-SUBRC <> 0. ENDIF.ENDFORM. " DISPLAY*&--------------------------------------------------------------------- **& FORM G_STATUS_FORM 调用自定义屏幕*&---------------------------------------------------------------------FORM SET_PF_STATUS USING RT_EXTAB TYPE SLIS_T_EXTAB. SET PF-STATUS "STANDARD" EXCLUDING RT_EXTAB.ENDFORM. "SET_PF_STATUS*&---------------------------------------------------------------------**& FORM FIELDCAT_INIT*&---------------------------------------------------------------------** TEXT 定义输出项*----------------------------------------------------------------------** -->P_IT_FIELDCAT TEXT*----------------------------------------------------------------------*FORM FIELDCAT_INIT USING IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. DATA: LS_FIELDCAT TYPE SLIS_FIELDCAT_ALV. DATA:LOC_REPID LIKE SY-REPID. LOC_REPID = SY-REPID. LS_FIELDCAT-FIELDNAME = "LIFNR". LS_FIELDCAT-REPTEXT_DDIC = "供应商". APPEND LS_FIELDCAT TO IT_FIELDCAT. CLEAR LS_FIELDCAT. LS_FIELDCAT-FIELDNAME = "NAME1". LS_FIELDCAT-REPTEXT_DDIC = "供应商名称". APPEND LS_FIELDCAT TO IT_FIELDCAT. CLEAR LS_FIELDCAT.ENDFORM. "FIELDCAT_INIT" FIELDCAT_INIT*&---------------------------------------------------------------------**& FORM LAYOUT_INIT*&---------------------------------------------------------------------** TEXT LAYOUT属性设置,双击响应字段设置*----------------------------------------------------------------------** -->P_IS_LAYOUT TEXT*----------------------------------------------------------------------*FORM LAYOUT_INIT USING IS_LAYOUT TYPE SLIS_LAYOUT_ALV. IS_LAYOUT-COLWIDTH_OPTIMIZE = "X".ENDFORM. " LAYOUT_INIT**&--------------------------------------------------------------------***& FORM USER_COMMAND**&--------------------------------------------------------------------*** TEXT**---------------------------------------------------------------------*** -->RF_UCOMM TEXT** -->RS_SELFIELDTEXT**---------------------------------------------------------------------*FORM USER_COMMAND USING RF_UCOMM LIKE SY-UCOMM RS_SELFIELD TYPE SLIS_SELFIELD. "#EC CALLED CASE RF_UCOMM. WHEN "&PRT".*****插入数据 DELETE FROM ZIF_MATLFN2SFWMS. COMMIT WORK AND WAIT. "去重防错 DELETE ADJACENT DUPLICATES FROM WTAB COMPARING LIFNR. INSERT ZIF_MATLFN2SFWMS FROM TABLE WTAB." ACCEPTING DUPLICATE KEYS. DESCRIBE TABLE WTAB LINES COUNT. MESSAGE S001(00) WITH "成功上传" COUNT "条". ENDCASE.ENDFORM. "USER_COMMAND*&---------------------------------------------------------------------**& FORM GETEXCEL*&---------------------------------------------------------------------** TEXT 获取上传EXCEL文件内相关数据*----------------------------------------------------------------------** --> P1 TEXT* <-- P2 TEXT*----------------------------------------------------------------------*FORM GETEXCEL . G_FILE = P_FILE. "注意两个文件用于不同的函数,所以类型不同 CALL FUNCTION "ALSM_EXCEL_TO_INTERNAL_TABLE" EXPORTING FILENAME = G_FILE I_BEGIN_COL = 1 I_BEGIN_ROW = 1 I_END_COL = 2 I_END_ROW = 10000 TABLES INTERN = ITAB[]. DELETE ITAB WHERE ROW = 1. "删除字段名行 LOOP AT ITAB. ON CHANGE OF ITAB-ROW. IF SY-TABIX NE 1. APPEND WTAB. CLEAR WTAB. ENDIF. ENDON. ASSIGN COMPONENT ITAB-COL OF STRUCTURE WTAB TO . "动态方法将值传到相应的内表 = ITAB-VALUE. ENDLOOP. APPEND WTAB. "这句不要忘记,要把最后一条APPEND到内表中 SORT WTAB BY LIFNR.ENDFORM. " GETEXCEL*&---------------------------------------------------------------------**& FORM GETDATA*&---------------------------------------------------------------------** TEXT*----------------------------------------------------------------------** --> P1 TEXT* <-- P2 TEXT*----------------------------------------------------------------------*FORM GETDATA . SELECT ZIF_MATLFN2SFWMS~LIFNR"工厂 ZIF_MATLFN2SFWMS~NAME1"版本 INTO CORRESPONDING FIELDS OF TABLE WTAB FROM ZIF_MATLFN2SFWMS. SORT WTAB BY LIFNR.ENDFORM. " GETDATA
SAP根据excel表格数据将数据导入表中
全球快看:JS中的相等性判断
半夜是指什么时间?半夜是指什么生肖?
三浴是什么意思?三浴锻炼是指哪三浴?
45号钢抗拉强度极限是多少?45号钢抗拉强度极限一览
今日看点:Redis——01 学习
每日看点!基于 Dubbo Admin 临时踢除问题服务实例
教材是什么意思?教材的作用有哪些?
受权人是什么意思?被授权人与受权人的区别是什么?
春风十里不如你结局是什么?春风十里不如你演员表
什么是环保型材料?环保型材料有哪些?
美团外卖超时怎么赔付?美团外卖超时了骑手会扣钱吗?
市政协委员相当于什么官?市政协委员有什么用?
顺丰速运公众号怎么修改手机号?顺丰速运公众号运费支付在哪里?
每日资讯:【算法训练营day22】LeetCode235. 二叉搜索树的最近公共祖先 LeetCode701. 二叉搜索树中的插入操作 LeetCode450.
【全球新视野】教你用JavaScript实现表情评级
环球要闻:基于 Dubbo Admin 动态调整服务超时时间
每日报道:JNPF实操│来,一起体验一流程多表单到底有多便捷
环球看点!DOM 之 Node和Element的区别
用户认为4G够用?全国5G现状感受下:基站密度翻倍 后续你不得不升
天天实时:《阿凡达2》内地首周末报收3.96亿 表现不佳:预测票房缩水至10亿!
天天热点!加冕球王夺冠后 梅西宣布不会退出国家队:继续以世界杯冠军身份出战
当前视讯!是否辞去推特总裁?马斯克发公开投票:目前情况不妙
全球看热讯:你达标了吗?我国成年人均纸质书阅读4.76本 仅小学生的1/3
【环球时快讯】原生JS的节点操作 与 JQuey的节点操作 对比
天天信息:MyBatis实现增删改查
今晚执行!国内成品油价将迎三连跌:今年国内油价最后一调
小米13 Pro为何不用直屏?雷军解释原因
睡不好为何昏昏沉沉?大脑:怪我咯
圆梦卡塔尔球迷狂祝福!阿根廷夺世界杯冠军:梅西再拿金球奖、点球破门创纪录
苹果新一代显示器来了:屏幕升级为mini LED
直接用CPU主频判断性能 靠谱吗?
环球速看:你的MacBook Pro蝶式键盘可安好?苹果翻车了 赔偿了事
全球微速讯:Axios异步通信
今日热文:第一百一十五篇: JS集合引用类型Map
AMD Zen4锐龙三款新U终于敲定:价格已毫无优势!
快看:一个躁郁症的游戏:我想推荐给每一个玩家
今日报丨2.23亿度!三峡能源单日发电量创纪录
即时看!教你轻松用上ChatGPT
威海海边护栏冻满冰凌 仿佛一夜进入“冰河世纪”
分享几个网上比较好的开源项目
环球看点!什么是计算机网络
焦点要闻:服务器集群使用过程中遇到的一些问题
世界微速讯:前端炫酷特效合集
全球今日讯!不服不行!贾跃亭的账上:又有人往里打钱了
热讯:义乌商人在世界杯赚翻了:有企业订单激增200%!但接下来怎么办?
焦点!阿根廷法国谁捧起大力神杯?无论是梅西姆巴佩 都逃不了这一伤害!
Pycharm异常处理
【世界报资讯】Python中String模块
中国空间站第一次成功部署卫星!日本爱好者已收到信号
每日快讯!送外卖走上人生巅峰 饿了么发布“骑士成长体系”:骑手到总裁需7步
小岛秀夫追看国产机甲科幻大片《明日战记》:找灵感
【新视野】微软出品自动化神器【Playwright+Java】系列(八) 之 使用 Playwright进行API接口测试
当前速讯:初探富文本之编辑器引擎
微动态丨Codeforces Polynomial Round 2022 (Div.1 + Div.2) CF 1774 题解
阿根廷vs法国今晚开打:梅西即将独享世界杯出场纪录
【全球新要闻】《阿凡达2》坐骑仿生扑翼鸟开售:可遥控飞行 359元
卡梅隆透露《阿凡达3》已拍完 《阿凡达5》也写好了
当前讯息:Blazor和Vue对比学习(进阶.请求WebAPI):通讯协议和HTTP协议
环球播报:windows10 netsh wlan命令连接新wifi
重学c#系列——什么是性能[外篇性能篇一]
天天日报丨魅族未来产品规划曝光:3年打造“全家桶”、不止手机和汽车
天天快消息!路边轿车挡道 SUV司机故意撞开 网友:很爽但应先联系114
焦点热议:核心面试题:MVCC、间隙锁、Undo Log链、表级锁、行级锁、页级锁、共享锁、排它锁、记录锁等等
微信iOS版拍照“大升级”:终于支持微距拍摄
当前快看:支付宝新增“极速模式”:自动收起首页推荐 更清爽了
当前关注:连花清瘟可致肝损伤肝衰竭?药企回应:严重误导
腾讯:2022年游戏盗号量上涨300% DDoS攻击全行业最高
花费13亿、飞了540万公里:韩国探测器终于进入月球轨道
北航计算机网络实验复习——设计性实验汇总
天天观察:6GHz就这?!Intel i9-13900KS跑分勉强提升5%
微速讯:油管上最爆火的恐怖游戏:被托马斯小火车追杀
电池供电不插线:世界首款真无线电视将在CES亮相
快看:3D领域大神约翰·卡马克宣布彻底离开Meta:称其效率低到无法忍受
男子按导航开车到冰冻江面 一头栽入松花江
当前最新:概念、场景技术方案选择的理解
hive配置Tez引擎,并安装Tez-ui
天天要闻:超级好看的 Edge 浏览器新标签页插件:好用、好看、免费浏览器必备
【世界热闻】matplotlib绘图详解
当前观察:下标模意义下的多项式乘法及其应用
【世界聚看点】go-micro v3 rpc服务一次改造经历
天天讯息:索尼要爆发了!明年有望推出新款PS5:独占大作护航
MyBatis核心配置文件详解
每日播报!疯狂裁员后 曝马斯克正为推特寻找新买家
环球最资讯丨“三连跌” 明晚油价迎年内“最后一调”:92号汽油或回归7元时代
世界头条:豆瓣8.3分!《阿凡达:水之道》票房破3亿:会是救市之作吗
全球热推荐:低温蓝色预警!这些地方最低温较历史同期低7℃以上:南方网友瑟瑟发抖
克罗地亚2-1战胜摩洛哥夺世界杯季军 37岁莫德里奇告别世界杯赛场
焦点关注:[PingCTF2022] guess what - S1gMa
环球滚动:女子开特斯拉被查酒驾 罚2000元记12分:本人称吃醉蟹 交警回应
销售开特斯拉撞了顾客的特斯拉 拒赔5万元:直言刹车了停不住
智慧树视频课件课程下载工具,如何在电脑端下载智慧树视频课件PDF,PPT到本地
史上口碑最好的小米旗舰!小米13京东好评率接近100%
VUE组件
【世界时快讯】安全多方计算:(2)隐私信息检索方案汇总分析
全球快资讯:基于海拉克斯打造 丰田推出首款纯电皮卡原型车 网友:丑到我眼睛了
天天快资讯丨卡神离开Meta 批老东家效率低下:GPU利用率5%简直是侮辱
全球热点评!小米MIX Fold 2新配色下周首销:5.4mm厚度已是行业极限 8999元
今热点:同价位无敌手!小米万兆路由器更新
全球观热点:第八天 循环的花里胡哨的用法