zoukankan      html  css  js  c++  java
  • abap 超大数据量上传至内表

    每次上传9999,循环十次99990数据量,根据实际需求设置循环次数。

    REPORT ztest22.
    
    TYPE-POOLS:slis.
    DATA:BEGIN OF it_fname OCCURS 0,
      name TYPE char255,
    END OF it_fname.
    
    DATA:g_begin_row TYPE i,
          g_end_row   TYPE i.
    DATA:git_temp TYPE TABLE OF alsmex_tabline,
          gwa_temp TYPE alsmex_tabline.
    
    TYPES:BEGIN OF ty_tab,
      aufnr TYPE aufnr,       "工单
      jx_matnr TYPE matnr,    "机型
      wl_matnr TYPE matnr,    "物料
      mng01 TYPE i,       "数量
      podate  TYPE string,    "日期
    END OF ty_tab.
    
    DATA:gt_itab TYPE TABLE OF ty_tab WITH NON-UNIQUE KEY aufnr jx_matnr,
          wa_itab TYPE  ty_tab.
    
    SELECTION-SCREEN BEGIN OF BLOCK blk_001 WITH FRAME TITLE text-001 . "选择文件路径
    PARAMETERS:p_file LIKE rlgrap-filename.
    SELECTION-SCREEN END OF BLOCK blk_001.
    
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file  .
      PERFORM open_file.
    
    START-OF-SELECTION.
      PERFORM upload_file.      "上传数据
    
    *&---------------------------------------------------------------------*
    *&      Form  open_file
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    FORM open_file.
      CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
        EXPORTING
          program_name  = syst-repid
          dynpro_number = syst-dynnr
          mask          = '*.xlsx,*.xls'
          static        = 'X'
        CHANGING
          file_name     = p_file.
    ENDFORM.                    "vq_fn
    
    *&---------------------------------------------------------------------*
    *&      Form  upload_file
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    FORM upload_file .
      g_begin_row = 2.                 "从第几行开始
      g_end_row = g_begin_row + 10000. "列数
    
      DO 10 TIMES.
        REFRESH:git_temp.
    *   Get EXCEL-Sheet in internal table
        CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
          EXPORTING
            filename                = p_file
            i_begin_col             = '1'
            i_begin_row             = g_begin_row
            i_end_col               = 10
            i_end_row               = g_end_row
          TABLES
            intern                  = git_temp
          EXCEPTIONS
            inconsistent_parameters = 1
            upload_ole              = 2
            OTHERS                  = 3.
        IF git_temp[] IS INITIAL.
          EXIT.
        ELSE.
          LOOP AT git_temp INTO gwa_temp.
            AT NEW row.
              CLEAR wa_itab.
            ENDAT.
            CASE gwa_temp-col.
              WHEN '1'.
                wa_itab-aufnr = gwa_temp-value.
              WHEN '2'.
                wa_itab-jx_matnr = gwa_temp-value.
              WHEN '3'.
                wa_itab-wl_matnr = gwa_temp-value.
              WHEN '4'.
                wa_itab-mng01 = gwa_temp-value.
              WHEN '5'.
                wa_itab-podate = gwa_temp-value.
            ENDCASE.
            AT END OF row.
              APPEND wa_itab TO gt_itab.
            ENDAT.
          ENDLOOP.
          g_begin_row = g_end_row + 1.
          g_end_row   = g_begin_row + 10000.
        ENDIF.
      ENDDO.
    ENDFORM.                    " UPLOAD_FILE
    *&---------------------------------------------------------------------*
    *&      Form  append_filename
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *      -->P_NAME     text
    *----------------------------------------------------------------------*
    FORM append_filename USING p_name .
      it_fname-name = p_name.
      APPEND it_fname.
      CLEAR it_fname.
    ENDFORM.                    "append_filename
    abap菜鸟,记录学习笔记。才疏学浅,如有错误,请直接在评论区留言。
  • 相关阅读:
    ZeptoLab Code Rush 2015
    UVa 10048 Audiophobia【Floyd】
    POJ 1847 Tram【Floyd】
    UVa 247 Calling Circles【传递闭包】
    UVa 1395 Slim Span【最小生成树】
    HDU 4006 The kth great number【优先队列】
    UVa 674 Coin Change【记忆化搜索】
    UVa 10285 Longest Run on a Snowboard【记忆化搜索】
    【NOIP2016提高A组模拟9.28】求导
    【NOIP2012模拟10.9】电费结算
  • 原文地址:https://www.cnblogs.com/freeandeasy/p/12216846.html
Copyright © 2011-2022 走看看