ABAP: excel上载函数ALSM_EXCEL_TO_INTERNAL_TABLE

35 篇文章 1 订阅

实践中,发现这个函数有个缺陷,如果excel的单元格长度超过50位,就会导致上载截断,因此一般项目中会进行一些改造。

直接复制这个函数,创建一个Z开头的自定义函数ZALSM_EXCEL_TO_INTERNAL_TABLE

复制表参数的结构为ZALSMEX_TABLINE,修改Value的长度

 还可以对这个函数再做改变,让这个函数支持指定sheet页上载

在输入参数里面加上一个参数SHEET_NAME参考ALSMEX_TABLINE-VALUE

 然后修改函数代码,添加指定sheet页的功能

 调用函数的时候要指定一下sheet页名称

DATA: GV_SHEET1 LIKE ALSMEX_TABLINE-VALUE VALUE '物料',  
PERFORM FRM_UPLOAD_FROM_EXCEL TABLES GT_I1
                                  USING P_FPATH
                                        GV_SHEET1
                                       '1'         "开始列
                                       '2'         "开始行
                                       '9'        "结束列
                                       '10000'.

*&---------------------------------------------------------------------*
*&      Form  FRM_UPLOAD_FROM_EXCEL
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_GT_I3  text
*      -->P_P_FPATH  text
*      -->P_GV_SHEET3  text
*      -->P_0409   text
*      -->P_0410   text
*      -->P_0411   text
*      -->P_0412   text
*----------------------------------------------------------------------*
FORM FRM_UPLOAD_FROM_EXCEL  TABLES PT_TABLE TYPE STANDARD TABLE
                              USING P_FILE
                                    P_SHEET
                                    P_BEG_COL
                                    P_BEG_ROW
                                    P_END_COL
                                    P_END_ROW.

  DATA: L_FILENAME LIKE RLGRAP-FILENAME.

  CLEAR: GT_IEXCEL.
  REFRESH: GT_IEXCEL.

  L_FILENAME = P_FILE.

  CALL FUNCTION 'ZALSM_EXCEL_TO_INTERNAL_TABLE2'
    EXPORTING
      FILENAME                = L_FILENAME
      I_BEGIN_COL             = P_BEG_COL
      I_BEGIN_ROW             = P_BEG_ROW
      I_END_COL               = P_END_COL
      I_END_ROW               = P_END_ROW
      SHEET_NAME              = P_SHEET
    TABLES
      INTERN                  = GT_IEXCEL
    EXCEPTIONS
      INCONSISTENT_PARAMETERS = 1
      UPLOAD_OLE              = 2
      OTHERS                  = 3.
  IF SY-SUBRC <> 0.
    MESSAGE '导入数据文件失败!' TYPE 'S'.
    STOP.
  ENDIF.


  LOOP AT GT_IEXCEL ASSIGNING <GT_IEXCEL>.

    TRY.
        ASSIGN COMPONENT <GT_IEXCEL>-COL OF STRUCTURE PT_TABLE TO <F1>.
        IF <F1> IS ASSIGNED.
          <F1> = <GT_IEXCEL>-VALUE.
        ENDIF.


        AT END OF ROW.
          APPEND PT_TABLE.
          CLEAR: PT_TABLE.
        ENDAT.



      CATCH CX_ROOT.
        MESSAGE '待导入的文件中存在错误的数据格式,请检查!' TYPE 'S'.
        STOP.
    ENDTRY.

  ENDLOOP.
  SORT PT_TABLE.
  DELETE ADJACENT DUPLICATES FROM  PT_TABLE COMPARING ALL FIELDS.

ENDFORM.                    " FRM_UPLOAD_FROM_EXCEL

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值