abap excel模板数据导入的2种方法

1.

通过:  CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'        处理

  TYPES :BEGIN OF tecl_data,
            werks     TYPE ztmm_location-werks,                  "工厂
            lgort_1   TYPE ztmm_location-lgort_1,                 "一级库位
            lgort_d2  TYPE ztmm_location-lgort_d2,                 "二级库位描述
            lgort_d3  TYPE ztmm_location-lgort_d3,                 "三级库位描述
            lgort_shl TYPE ztmm_location-lgort_shl,                 "损耗率‰
            active    TYPE ztmm_location-active,                  "是否激活
            lgort_d1  TYPE ztmm_location-lgort_d1,                 "一级库位描述
         END OF tecl_data.


  DATA lt_read TYPE TABLE OF ztmm_location .
  DATA lw_read TYPE tecl_data.
  DATA lw_read1 TYPE ztmm_location .

  DATA: lw_flag TYPE ,
        lw_pxag  TYPE i.

  CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
    EXPORTING
      filename                = p_file
      i_begin_col             '1'
      i_begin_row             '2'
      i_end_col               '20'
      i_end_row               '9999'
    TABLES
      intern                  = gt_excel[]
    EXCEPTIONS
      inconsistent_parameters 1
      s_file_ole              2
      OTHERS                  3.

  IF sy-subrc <> 0.
    MESSAGE s000(zfi01WITH '文件打开失败!' DISPLAY LIKE 'E'.
    LEAVE LIST-PROCESSING.
  ENDIF.


  FIELD-SYMBOLS <fs_value>.
  FIELD-SYMBOLS <fs_excel> LIKE gt_excel.

  SORT gt_excel BY row col.

  LOOP AT gt_excel ASSIGNING <fs_excel>.

    ASSIGN COMPONENT <fs_excel>-col  OF STRUCTURE lw_read TO <fs_value>.

    <fs_value> = <fs_excel>-value.

    AT END OF row.
      IF lw_read-lgort_1 IS NOT  INITIAL .
        SELECT SINGLE lgobe
          FROM t001l
          INTO lw_read-lgort_d1
          WHERE werks = lw_read-werks
          AND   lgort = lw_read-lgort_1.
      ENDIF .
      TRANSLATE lw_read-active TO UPPER CASE.
      MOVE-CORRESPONDING lw_read  TO lw_read1  .
      APPEND lw_read1 TO lt_read .
      CLEAR lw_read  .
      CLEAR lw_read  .
    ENDAT.

  ENDLOOP.

  SORT lt_read  BY werks  lgort_1 lgort_d2 lgort_d3.
  DELETE ADJACENT DUPLICATES FROM lt_read  COMPARING ALL FIELDS .

  IF lt_read IS NOT INITIAL .
    MODIFY ztmm_location FROM TABLE lt_read .
    IF sy-subrc .
      WRITE:'数据导入成功'.
    ENDIF .
  ENDIF .

2.  通过:CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'     处理

TYPES BEGIN OF typ_excel,
          werks TYPE marc-werks,
          matnr TYPE mara-matnr,
          zcpxl TYPE ztsd_cpxl-zcpxl,
          msg TYPE bapi_msg,"消息
          END OF typ_excel.
DATA :gt_excel TYPE TABLE OF typ_excel,
      gw_excel TYPE typ_excel.

  CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
    EXPORTING
*     I_FIELD_SEPERATOR    =
      i_line_header        'X' "X表示带抬头行的EXCEL的抬头行不传进内表,否则EXCEL不要带抬头
      i_tab_raw_data       = i_raw           " WORK TABLE
      i_filename           = p_file
    TABLES
      i_tab_converted_data = gt_excel   "ACTUAL DATA
    EXCEPTIONS
      conversion_failed    1
      OTHERS               2.
  IF sy-subrc <> 0.
    MESSAGE '无法上载数据,请检查EXCEL文件' TYPE  'S' DISPLAY LIKE 'E'.
    STOP.
  ENDIF.

猜你喜欢

转载自www.cnblogs.com/jimi520/p/12103362.html