ABAP EXCEL 上载,不关注9999和4万条问题

这是方法一,还有一个方法就是改ALSM_EXCEL_TO_INTERNAL_TABLE了

9999问题本来就不是问题,行号9999之后再次从0000开始,不影响数据获取。

40000问题才是问题,需要分批次或改标准程序解决

REPORT ztest_s03.
TABLES:sscrfields.
TYPE-POOLS:icon.
TYPES:BEGIN OF ty_upload,
        werks TYPE char20,
        lgort TYPE char20,
        matnr TYPE char20,
        psmng TYPE char20,
        meins TYPE char20,
        attri TYPE char20,
        aufnr TYPE char20,
        msg   TYPE char20,
        index TYPE char20,
      END OF ty_upload.

*&---------------------------------------------------------------------*
*&  Internal Tables Definition
*&---------------------------------------------------------------------*

DATA:gt_upload TYPE TABLE OF ty_upload.
DATA:gs_upload TYPE ty_upload.
DATA:gs_functxt TYPE smp_dyntxt.
PARAMETERS: p_file TYPE rlgrap-filename.
SELECTION-SCREEN: FUNCTION KEY 1.

INITIALIZATION.
  gs_functxt-icon_id   = icon_export.
  gs_functxt-icon_text = 'Template'.
  sscrfields-functxt_01 = gs_functxt.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
  PERFORM frm_filename.

AT SELECTION-SCREEN.
  CASE sscrfields-ucomm.
    WHEN 'FC01'.
      PERFORM frm_download_template .
  ENDCASE.

START-OF-SELECTION.
  PERFORM frm_upload.
FORM frm_filename .
  CLEAR p_file.
  CALL FUNCTION 'F4_FILENAME'
    IMPORTING
      file_name = p_file.
ENDFORM.
FORM frm_upload .
  DATA:ls_exceldata TYPE alsmex_tabline,
       lt_exceldata TYPE TABLE OF alsmex_tabline.

  FIELD-SYMBOLS: <ls_cell> TYPE any.

  CHECK p_file IS NOT INITIAL.

  DATA(i_begin_row) = 1.
  DATA(i_end_row) = 5000.
  DO .
    CLEAR: lt_exceldata.
    CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
      EXPORTING
        filename                = p_file
        i_begin_col             = 1
        i_begin_row             = i_begin_row
        i_end_col               = 7
        i_end_row               = i_end_row
      TABLES
        intern                  = lt_exceldata
      EXCEPTIONS
        inconsistent_parameters = 1
        upload_ole              = 2
        OTHERS                  = 3.
    IF sy-subrc = 0  .
      IF lt_exceldata[] IS INITIAL.
        EXIT.
      ELSE.
        SORT lt_exceldata BY row col.
        LOOP AT lt_exceldata INTO ls_exceldata.
          ASSIGN COMPONENT ls_exceldata-col OF STRUCTURE gs_upload TO <ls_cell>.
          IF sy-subrc = 0.
            <ls_cell> = ls_exceldata-value.
          ENDIF.

          AT END OF row.
            APPEND gs_upload TO gt_upload.
            CLEAR gs_upload.
          ENDAT.
          CLEAR: ls_exceldata.
        ENDLOOP.
      ENDIF.
    ELSE.
      MESSAGE e000(0k) WITH TEXT-003.                "File import failed
    ENDIF.
    i_begin_row = i_end_row + 1.
    i_end_row   = i_end_row + 5000 .
  ENDDO.
ENDFORM.
FORM frm_download_template .
  DATA: lv_filename TYPE string,
        lv_path     TYPE string,
        lv_fullpath TYPE string,
        lv_key      TYPE wwwdatatab,
        lv_rc       TYPE sy-subrc,
        lv_temp     TYPE c,
        lv_dest     TYPE rlgrap-filename,
        lv_str      TYPE string.

  CLEAR: lv_filename, lv_path, lv_fullpath, lv_str.

  lv_str = 'MOs Loading File'.
  CALL METHOD cl_gui_frontend_services=>file_save_dialog
    EXPORTING
      default_extension    = 'xlsx'
      default_file_name    = lv_str
    CHANGING
      filename             = lv_filename
      path                 = lv_path
      fullpath             = lv_fullpath
    EXCEPTIONS
      cntl_error           = 1
      error_no_gui         = 2
      not_supported_by_gui = 3
      OTHERS               = 4.

  IF sy-subrc = 0.
    CLEAR lv_dest.
    lv_dest = lv_fullpath.

    "Download Data Template
    IF lv_dest IS NOT INITIAL.
      CLEAR: lv_rc, lv_temp, lv_key.
      lv_key-relid    = 'MI'.
      lv_key-objid    = 'ZGLR_MO_OPEN_BOM'.

      CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
        EXPORTING
          key         = lv_key
          destination = lv_dest
        IMPORTING
          rc          = lv_rc
        CHANGING
          temp        = lv_temp.

      IF lv_rc EQ 0.
        MESSAGE s000(0k) WITH TEXT-001.
      ELSE.
        MESSAGE e000(0k) WITH TEXT-002.
      ENDIF.
    ELSE.
    ENDIF.
  ENDIF.
ENDFORM.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值