代替Excel上载的方法
不要使用Excel文件做上傳!
*----------------------------------------------------------------------*
*??剪貼板數(shù)據(jù)到內(nèi)表,根據(jù)制表符分割
*??如果有數(shù)據(jù)類型錯(cuò)誤,比如內(nèi)表是數(shù)值型但是剪貼板里面是字母,
* ?則彈出W消息,并忽略這條數(shù)據(jù)
*----------------------------------------------------------------------*
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 '數(shù)據(jù)轉(zhuǎn)換有錯(cuò)誤發(fā)生,已經(jīng)忽略'.
??? ENDIF.
? ENDIF.
ENDFORM.
?
?
使用:
先在Excel,或者WORD表格,或者文本文件復(fù)制數(shù)據(jù)??傊灰WC數(shù)據(jù)是Tab分隔符就可以了。
然后在在程序執(zhí)行PERFORM cliptoitab.就可以了。
總結(jié)
以上是生活随笔為你收集整理的代替Excel上载的方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 内表数据写到服务器上
- 下一篇: S4 Smartforms 改为WORD