SAP ABAP剪切板的功能

直接上代码

*----------------------------------------------------------------------*

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

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

*  则弹出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分隔符就可以了。

 

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

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值