问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

SAP 怎么直接导入EXCEL

发布网友 发布时间:2022-04-09 02:45

我来回答

6个回答

懂视网 时间:2022-04-09 07:07

*& Report **** *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT ****. TABLES: ZTABLE001. "假设我们要上传的内容有两个字段:序号,内容。然后定义类型,包含两个组件即序号和内容" TYPES:BEGIN OF TY_ZT, NUM TYPE ZTABLE001-NUM,"序号" TXT TYPE ZTABLE001-TXT,"内容" END OF TY_ZT. "定义参照TY_ZT类型的内表和工作区,用于暂存取到的Excel内容" DATA:I_TABLE TYPE TABLE OF TY_ZT, W_TABLE TYPE TY_ZT.

我们需要自建一个透明表,注意上面定义类型时,我们参考的组件就是自建透明表组件,如下就是我们定义好的透明表:
技术分享
注意一点:自建表时,客户端字段一定要有,其次主键要勾选“键”(如图示)。

"定义内表,用于insert或modify透明表内容"
DATA:GT_TABLE TYPE TABLE OF ZTABLE001,"直接参照透明表"
 GW_TABLE TYPE ZTABLE001.

"选择屏幕"
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
 SELECTION-SCREEN BEGIN OF LINE.
 SELECTION-SCREEN COMMENT 1(9) STR1."维护"
 PARAMETERS P_1 RADIOBUTTON GROUP G1 DEFAULT ‘X‘."单选"
 SELECTION-SCREEN END OF LINE.

 SELECTION-SCREEN BEGIN OF LINE.
 SELECTION-SCREEN COMMENT 1(9) STR2 ."导入"
 PARAMETERS P_2 RADIOBUTTON GROUP G1."单选"
 SELECTION-SCREEN COMMENT 16(2) STR3.
 PARAMETERS P_FILE(80)."地址栏"
 SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK B1.

INITIALIZATION.
STR1 = ‘维护‘.
STR2 = ‘导入‘.
"导入文件地址栏就是一个parameter ,这里通过一个radiobutton单选按钮,选择 维护或导入两种功能。选择屏幕写好之后,接下来要用到的就只有 P_FILE 这个参数已经调用相应的函数。"
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
 PERFORM OPEN_DIALOG."调用选择文件函数"

这部分代码实现的就是当我们点击下图中红圈中的图标时:
技术分享
弹出选择对话框(如图所示)
技术分享

这里通过类方法实现(具体看FORM OPEN_DIALOG中的代码):
类接口CL_GUI_FRONTEND_SERVICES调用方法FILE_OPEN_DIALOG。

AT SELECTION-SCREEN."用于屏幕输入检验"
IF P_2 = ‘X‘.
 IF P_FILE IS INITIAL.
 MESSAGE ‘文件地址不可为空!‘ TYPE ‘S‘ DISPLAY LIKE ‘E‘.
 STOP.
 ENDIF.
ENDIF.

START-OF-SELECTION. 
IF P_1 = ‘X‘.
 PERFORM FRM_CALL_VIEW.
ELSEIF P_2 = ‘X‘.
 PERFORM UPLOAD.
ENDIF.
END-OF-SELECTION.


FORM FRM_CALL_VIEW."维护视图"
DATA:P_TABNAM LIKE DD02V-TABNAME."Char(30)"
P_TABNAM = ‘ZTABLE001‘.
CALL FUNCTION ‘VIEW_MAINTENANCE_CALL‘ "调用维护视图"
 EXPORTING
 ACTION    = ‘S‘
 VIEW_NAME    = P_TABNAM "表名"
 EXCEPTIONS
 CLIENT_REFERENCE   = 1
 FOREIGN_LOCK    = 2
 INVALID_ACTION   = 3
 NO_CLIENTINDEPENDENT_AUTH  = 4
 NO_DATABASE_FUNCTION   = 5
 NO_EDITOR_FUNCTION   = 6
 NO_SHOW_AUTH    = 7
 NO_TVDIR_ENTRY   = 8
 NO_UPD_AUTH    = 9
 ONLY_SHOW_ALLOWED   = 10
 SYSTEM_FAILURE   = 11
 UNKNOWN_FIELD_IN_DBA_SELLIST  = 12
 VIEW_NOT_FOUND   = 13
 MAINTENANCE_PROHIBITED  = 14
 OTHERS    = 15
  .
IF SY-SUBRC <> 0.
 MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM.


FORM OPEN_DIALOG."选择文件会话。"
DATA:LT_FILE_TABLE TYPE FILETABLE.
DATA:LW_FILE_TABLE TYPE FILE_TABLE.
DATA:L_RC TYPE I.
 CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
 EXPORTING
 WINDOW_TITLE  = ‘选择文件‘ 
 DEFAULT_FILENAME = ‘*.XLSX‘ "默认excel文件"
 INITIAL_DIRECTORY = ‘D: ‘ "默认打开D盘,也可以默认空"
 MULTISELECTION  = ‘‘ "文件单选" 
 CHANGING
 FILE_TABLE  = LT_FILE_TABLE
 RC   = L_RC
 EXCEPTIONS
 FILE_OPEN_DIALOG_FAILED = 1
 CNTL_ERROR  = 2
 ERROR_NO_GUI  = 3
 NOT_SUPPORTED_BY_GUI = 4
 others   = 5
  .
CHECK L_RC EQ 1."因为文件单选,所以这里判断一下选择的数量为1"
READ TABLE LT_FILE_TABLE INDEX 1 INTO P_FILE.
"将选择的文件地址写入到地址栏"
ENDFORM.


FORM UPLOAD."最后也是最关键的一步"
"定义表格结构内表。"
DATA: I_EXCEL TYPE TABLE OF ALSMEX_TABLINE,"表格结构。"
 W_EXCEL TYPE ALSMEX_TABLINE.
"ALSMEX_TABLINE是具有Excel数据的表行,有三个组件,row col value 。"

DATA:GET_FILE TYPE RLGRAP-FILENAME."这里参照系统中的结构字段。"
MOVE P_FILE TO GET_FILE."将地址栏的值赋值给GET_FILE"

"调用此函数,将Excel中的内容以类似坐标的形式存储到I_excel内表中。"
 CALL FUNCTION ‘ALSM_EXCEL_TO_INTERNAL_TABLE‘
 EXPORTING
 FILENAME   = GET_FILE
 I_BEGIN_COL   = 1
 I_BEGIN_ROW   = 1
 I_END_COL   = 8
 I_END_ROW   = 65535
 TABLES
 INTERN   = I_EXCEL
 EXCEPTIONS
 INCONSISTENT_PARAMETERS = 1
 UPLOAD_OLE   = 2
 OTHERS   = 3
  .
DELETE I_EXCEL WHERE ROW = 1."删除第一行抬头。如果excel文件中不存在抬头的话,可不写此句。"

IF I_EXCEL IS INITIAL.
 CALL FUNCTION ‘POPUP_TO_CONFIRM_WITH_MESSAGE‘
 EXPORTING
* DEFAULTOPTION = ‘Y‘
 DIAGNOSETEXT1 = ‘数据错误‘
* DIAGNOSETEXT2 = ‘ ‘
* DIAGNOSETEXT3 = ‘ ‘
 TEXTLINE1  = ‘Excel表格中没有内容!‘
 TITEL  = ‘提示‘ .
 RETURN.
ENDIF.

CLEAR:I_TABLE.
FIELD-SYMBOLS:<FS>."这里涉及到SAP内部字段的使用,详情请参见微博相关介绍。"
SORT I_EXCEL BY ROW COL.
DATA:NUM_COL TYPE I.

LOOP AT I_EXCEL INTO W_EXCEL.
 NUM_COL = W_EXCEL-COL.
 ASSIGN COMPONENT NUM_COL OF STRUCTURE W_TABLE TO <FS>.
 <FS> = W_EXCEL-VALUE.
 AT END OF ROW.
 APPEND W_TABLE TO I_TABLE.
 CLEAR:W_TABLE.
 ENDAT.
 CLEAR:W_EXCEL.
ENDLOOP.

LOOP AT I_TABLE INTO W_TABLE.
 GW_TABLE-MANDT = SY-MANDT."客户端号,创建透明表必须包含的字段。"
 GW_TABLE-NUM = W_TABLE-NUM.
 GW_TABLE-TXT = W_TABLE-TXT.
APPEND GW_TABLE TO GT_TABLE.
CLEAR:GW_TABLE.
CLEAR:W_TABLE.
ENDLOOP.

"将数据库中内容更新"
MODIFY ZTABLE001 FROM TABLE GT_TABLE."这里使用modify,兼顾增加和修改,若主键存在则为修改,否则增加"
IF SY-SUBRC = 0.
 COMMIT WORK AND WAIT."成功提交,或者最后程序结束系统也会自动提交"
 DATA:NUM_TAB(6) TYPE C.
 DESCRIBE TABLE GT_TABLE LINES NUM_TAB.
 CONDENSE NUM_TAB NO-GAPS.
 DATA:STR_LINE1 TYPE STRING .
 CONCATENATE ‘成功导入数据‘ NUM_TAB ‘行‘ INTO STR_LINE1 .
"读出excel中的数据条数,用于消息提示"
 CALL FUNCTION ‘POPUP_TO_CONFIRM_WITH_MESSAGE‘
 EXPORTING
 DIAGNOSETEXT1 = ‘成功‘
 TEXTLINE1  = STR_LINE1
 TITEL  = ‘提示‘
  .
 ELSE.
 ROLLBACK WORK."否则失败"
 ENDIF.

ENDFORM.

这样,一个简单的导入程序就完成了。
这里需要说明,使用ALSM_EXCEL_TO_INTERNAL_TABLE函数导入数据,一个excel文件最大行数只可为9999,如果超出是无法全部读入内表中的,会丢失其余行。

最后,当选择维护选项的时候,我们想要能够展示出数据库表的内容,并且能实现增删查改。这里我们就通过维护视图功能实现。
代码中的子例程 FORM FRM_CALL_VIEW ,调用函数即可,但是单纯的调用系统函数还不能完成,还需要我们创建数据表的维护对话框等。
在我们创建完透明表后:
技术分享
点击实用程序–>表维护生成器:
技术分享
这里一次维护权限组、函数组。然后维护屏幕编号,可按系统自选。
最后点击左上角一张纸的图标,即可。
这样,我们执行程序选择维护,点击执行时,就会弹出对应窗口。

将Excel导入SAP数据库表

标签:

热心网友 时间:2022-04-09 04:15

一般向SAP中导入数据使用catt 或者 batch input 

调用SAP标准的业务操作导入数据,比如:物料主数据,供应商主数据等。

除非是自己建立的数据表,否则不建议向SAP的表中直接导入数据。

SAP为“System Applications and Procts”的简称,是SAP公司的产品——企业管理解决方案的软件名称。

热心网友 时间:2022-04-09 05:33

事务码:LSMW,按步骤先在SAP中录屏,并做好字段的对照、关联,再将所需字段整理EXCEL模板,并存为TXT的文档,再批导。

热心网友 时间:2022-04-09 07:07

bdc bapi都可以关键是要看导什么,这样才能决定选取什么样的技术手段

热心网友 时间:2022-04-09 08:59

scat亦可

热心网友 时间:2022-04-09 11:07

BDC
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
Linux系统安装FTP服务器 Linux系统的网络文件共享 建筑的七盏明灯的内容简介 面向对象设计七大原则 简单说 交互设计七大定律 交互设计的“根”——七大定律 交互设计原则和理论2——七大定律 七大设计原则 附近的加油站有哪些 附近的加油站有哪些地方 企业人力资源管理师证书和经济师人力资源专业职称那个含金量高一些,都可以用作劳务派遣么? 一个可以同时用两部手机登陆吗? 经济师人力资源方向职称证书退休待遇? 能不能同时登陆两个手机 一个可以同时登录两个手机吗 一个能同时登录两个手机吗 一个可以同时用两部手机登陆吗 一个可以同时登两个手机吗? 一个可以在两个手机上同时登录吗? 一个可以在两个手机上同时登录吗? 晚上做梦,梦见用痰盂小便,满了,还想继续,就去了厕所。开灯,灯瘪了... 同一个可以同时在两台手机登录吗? 对生物的骨头有兴趣,请问有那些书?谁推荐(不限人骨) 推荐本解剖学图谱 麻烦大家帮帮忙 可以在两个手机上登同一个吗 请大家推荐几本好的解剖图谱 哪有人体医学解剖图下载? 一个可以同时登两个手机号吗 一个可以用二台手机吗? 中大型企业个税申报系统哪家好? 给括号里填上合适的词语()的松果()的问题()的眼睛()的天气()的荷叶()的贝壳 传祺gs3发动机怎么样? 广汽传祺gs3汽车搭载1.5L发动机,动力怎么样? 长安CS35、广汽传祺GS3、东南DX3哪个更好? 传祺gs3的三大件是本田的吗 广汽传祺gs3和奔腾x40哪个好 搭载全新1.5T发动机 广汽传祺GS3 POWER将于10月1日正式上市 广汽传祺GS3老车主用车发动机抖吗? 广汽传祺gs3发动机是哪里的 广汽传祺GA3S4b16k1发动机怎么样具体技术 广汽传祺gs3视界发动机哪家产? 淘宝上退款,上门取件什么意思? 淘宝申请退款是出现了上门取件业务,这个好不好 渡我不渡他什么意思?命运不渡你,我渡你什么意思?? 退款时,淘宝支持官方寄件服务是什么意思,不用我打电话给我们这儿的快... 淘宝退货上门取件,要写快递单吗? 渡我不读她歌词是什么意思 终于过了,询问CCNA证书尺寸,我要做了一个相框 CCNA 证书 有有多大用!!! 微信里添加自定义表情的动态图片发送失败?急急!