代替 Excel 上载的方法

作者:ABAP老白 约 3 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, Data Engineering, WM, 仓库管理, 开发, 数据工程

不要使用Excel文件做上传!

不要使用Excel文件做上传!

不要使用Excel文件做上传!

重要的话说三遍。重要的程序也要发三遍。

这是上次推送的: [ 把剪贴板里面的数据放到内表

](http://mp.weixin.qq.com/s?__biz=MzA5NjUwMjQ1Mw==&mid=2649906970&idx=1&sn=3a4b3c99a09a01499bba06df961ea993&chksm=88a9e8c0bfde61d6cc67655910ce3f98f2f94b0d8708464ac2bb7b876faee5bf7c00e4a32821&scene=21#wechat_redirect)

> *----------------------------------------------------------------------*

>

> * 剪贴板数据到内表,根据制表符分割

>

> * 如果有数据类型错误,比如内表是数值型但是剪贴板里面是字母,

>

> * 则弹出 W 消息,并忽略这条数据

>

> *----------------------------------------------------------------------*

>

> FORM cliptoitab TABLES itab.

>

> DATA: htab TYPE cVALUE cl_abap_char_utilities=>horizontal_tab .

>

> DATA: lt_clip TYPETABLE OF char2048 WITH HEADER LINE ,

>

> lt_fld TYPE TABLE OF char2048 WITH HEADER LINE.

>

> DATA: cxroot TYPE REFTO cx_root,

>

> excmsgTYPE string.

>

> FIELD-SYMBOLS:<fs_fld> ,

>

> <fs_tab> .

>

> ASSIGN itab TO<fs_tab> .

>

> CALL METHODcl_gui_frontend_services=>clipboard_import

>

> IMPORTING

>

> data = lt_clip[]

>

> EXCEPTIONS

>

> cntl_error = 1

>

> error_no_gui = 2

>

> not_supported_by_gui = 3

>

> OTHERS = 4.

>

> IF sy-subrc <>0\.

>

> MESSAGE ID sy-msgidTYPE sy-msgty NUMBER sy-msgno

>

> WITH sy-msgv1sy-msgv2 sy-msgv3 sy-msgv4 .

>

> ELSE.

>

> CALL METHODcl_gui_cfw=>flush .

>

> LOOP AT lt_clip.

>

> CLEAR lt_fld[].

>

> SPLIT lt_clip AThtab INTO TABLE lt_fld.

>

> LOOP AT lt_fld.

>

> ASSIGNCOMPONENT sy-tabix OF STRUCTURE <fs_tab> TO <fs_fld>.

>

> CHECK sy-subrc= 0.

>

> TRY .

>

> lt_fld =translate( val = lt_fld from = |\r| to = '' ).

>

> lt_fld =translate( val = lt_fld from = |\n| to = '' ).

>

> lt_fld =translate( val = lt_fld from = |"| to = '' ).

>

> <fs_fld> = lt_fld.

>

> CATCH cx_root INTO cxroot.

>

> excmsg =cxroot->get_text( ).

>

> ENDTRY.

>

> ENDLOOP.

>

> APPEND itab .

>

> CLEAR itab.

>

> ENDLOOP.

>

> IF excmsg IS NOTINITIAL.

>

> MESSAGE w000(oo)WITH ' 数据转换有错误发生,已经忽略 '.

>

> ENDIF.

>

> ENDIF.

>

> ENDFORM.

使用:

先在Excel,或者WORD表格,或者文本文件复制数据。总之只要保证数据是Tab分隔符就可以了。

代替 Excel 上载的方法 - 封面图
代替 Excel 上载的方法 - 封面图
代替 Excel 上载的方法 - 封面图
代替 Excel 上载的方法 - 封面图
代替 Excel 上载的方法 - 封面图
代替 Excel 上载的方法 - 封面图

然后在在程序执行PERFORM cliptoitab.就可以了。

代替 Excel 上载的方法 - 封面图
代替 Excel 上载的方法 - 封面图
ABAP老白

关于作者:ABAP老白

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「代替Excel上载的方法.md」整理生成,仅用于内部技术分享与学习交流。