ALSM_EXCEL_TO_INTERNAL_TABLE的缺陷修改

ALSM_EXCEL_TO_INTERNAL_TABLE这是我们经常使用的一个function,用来读取我们upload的EXCEL附件的,但是他有几个问题:每一个cell只能导入前50个字符;若附件超过40000行会发生dump;没有办法读取多个sheet的内容;有时候没读到附件中的内容。

一、每个cell只能导入前50个字符:

修改ALSMEX_TABLINE的结构,然后把function copy出来就可以了。

2、附件内容超过40000行会dump,其实这个function的功能是先将excel的内容复制到剪贴板上,然后读取到ABAP内表上,但是剪贴板有限,所以需要控制 begin_row和end_row,这个function写在do 循环中就可以了。

3、需要增加function import 参数,sheet_name,若为空,保持原逻辑,若sheer_name不为空,则可以读取指定sheet的内容。

*--ADD lian
**  set property of application 'Visible' = 1.
**  m_message.
  IF sheet_name = space."用默认模式
    GET PROPERTY OF  application 'ACTIVESHEET' = worksheet.
    m_message.
  ELSE.
*-->可以实现读取多个sheet
    CALL METHOD OF application 'WORKSHEETS' = worksheet
      EXPORTING #1 = sheet_name.
    CALL METHOD OF worksheet 'Activate'.
    m_message.
  ENDIF.
*---END OF------------------------------------------------

4、有时候excel明明有内容,从剪贴板上却读不出来,写一个DO循环,就可以了。

  DO l_times TIMES.
* read clipboard into ABAP
    CALL METHOD cl_gui_frontend_services=>clipboard_import
      IMPORTING
        data                 = excel_tab
      EXCEPTIONS
        cntl_error           = 1
*       ERROR_NO_GUI         = 2
*       NOT_SUPPORTED_BY_GUI = 3
        OTHERS               = 4.
    IF sy-subrc <> 0.
      MESSAGE a037(alsmex).
      EXIT.
    ELSE.
      IF excel_tab[] IS INITIAL.
        WAIT UP TO 1 SECONDS.
      ELSE.
        EXIT.
      ENDIF.
    ENDIF.
  ENDDO.

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值