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

请教如何将excel里的数据导入到sap里面,说详细点谢谢

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

我来回答

3个回答

懂视网 时间: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

Excel VBA能与SAP进行交互,如下是连接字段:


        Set session = GetObject("SAPGUI").GetScriptingEngine.Children(0).Children(0)

        session.findById("wnd[0]/tbar[0]/okcd").Text = "/n" & Tcode

        session.findById("wnd[0]").sendVKey 0


更复杂的操作的结合你自身SAP的页面来操作,如果你具备一些简单的VBA编写能力,应该不难实现你想要的结果,并且SAP提供了代码录制功能,所以你也可以比较轻松地完成任务,

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

这个不是excel问题
而是SAP要开对应的接口
且需要对应的导入模板
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
养胃的药最好的是什么啊 婴儿积食发烧不愿吃药怎么办 板门穴位在哪个部位 手机设置放偷看的方法? 凝结水回收器生产厂家? 个人账户养老金预测公式:现有5万元,缴费20年,能领多少钱? 临沂比较有名的男装品牌 呼伦贝尔市悦动网络科技有限公司怎么样? 呼伦贝尔中汇实业有限公司怎么样? 呼伦贝尔油玉不绝电子商务有限公司怎么样? 怎么把qq空间的广告给屏蔽掉 手机最新版qq怎么关闭空间广告? 建设工程工程量编制是否允许误差,范围是多少,有没有这方面的规定 《建设工程工程量清单计价规范》的特点主要包括哪 些方面 谢谢_百度问一问 工程造价怎么算工程量,需要算哪些呢?还有定额如何计算? 怎样喝酒不醉的绝妙? 最近经常喝啤酒喝到头疼,能推荐一些不上头的啤酒吗? 喝啤酒怎样才不会晕? 为什么喝白酒不上头口干 喝酒上头不上头到底是什么科学原理 为了避免醉酒闹乌龙,该如何避免自己喝多上头呢? 最近应酬喝酒总是头疼,有什么方法能喝完酒之后不上头? 怎样才能喝酒不上头? 猫耳APP不能自动播放下一期怎么设置? 皮皮鲁传300字续写 皮皮鲁的童话节家长感言 陈皮皮斗争TXT全集 278547880@qq.com 跪求渔港春夜最新全集,陈皮皮斗争最新全集和流氓大地主最新全集,发送到qing5260@sina.com,谢谢! 比陈皮皮斗争还肉的小说 求陈皮皮斗争全本 怎么样使QQ的对话框变小点 没有悬赏 有追加!!! 一加七pro曲面屏手机屏幕被人狠狠的拍了一下,有影响吗 我在微信群被移出群聊了原因你知道是什么吗?别人天天在发,帮他助力什么的,我就发了一条他把我移出群聊 美的空气能出现保养如何解除- 问一问 美的空气能热水系统冷凝器结霜怎么处理 空气能热水机是不是可以除霜的呢? 美的空气能RSJF-32/R-A有化霜模式吗,有的话怎样进入此模式? 华为nova6secto在哪打开? 拇外翻手术怎么做的? 拇外翻手术如何做 我一月十号做的拇外翻截骨手术里面加了钢钉固定我想问 哔哩哔哩最小化还有声音 哔哩哔哩开到最大还是很小声,有没什么插件助手 双足拇外翻取完钢钉多长时间能跑步 你好我右脚脚后跟粉碎性骨折打了一个钢板,9个钢钉。半个月前去了内固定请问什么时候能下地走路 拇外翻做了截骨钢钉内固定以后会复发么 下载了一个哔哩哔哩,为毛没有声音?为毛?为毛?我调节了音量啊! 拇外翻的手术问题!!!医院是不是有责任!!! 我是拇外翻患者,是做开刀手术还是微创 一般拇外翻的治疗需要多久?