美文网首页
ABAP将内表数据写入到Excel模板

ABAP将内表数据写入到Excel模板

作者: JayDragon | 来源:发表于2019-07-22 15:29 被阅读0次

下载模板文件前获取一下文件的存放位置:

DATA gv_file TYPE rlgrap-filename.
PERFORM get_fullpath CHANGING gv_file.

FORM get_fullpath  CHANGING p_file.
  CALL FUNCTION 'TMP_GUI_BROWSE_FOR_FOLDER'
    EXPORTING
      window_title    = 'Select Save Path'
      initial_folder  = ''
    IMPORTING
      selected_folder = p_file
    EXCEPTIONS
      cntl_error      = 1
      OTHERS          = 2.
ENDFORM.                    " GET_FULLPATH

下载模板:

PERFORM download_temp USING 'ZPICKINGLIS'.

FORM download_temp  USING    value(p_name).
  DATA: l_objdata     LIKE wwwdatatab,
        l_objname     TYPE string,
        l_rc          LIKE sy-subrc,
        l_errtxt      TYPE string,
        l_objid       TYPE wwwdatatab-objid.

  l_objid = p_name.
  CONCATENATE l_objid '.XLSX' INTO l_objname.
  CONDENSE l_objname NO-GAPS.
  SELECT SINGLE relid objid
    INTO CORRESPONDING FIELDS OF l_objdata
    FROM wwwdata
    WHERE srtf2 = 0
    AND relid = 'MI'
    AND objid = l_objid.

  CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
    EXPORTING
      key         = l_objdata
      destination = gv_file
    IMPORTING
      rc          = l_rc.
  IF l_rc <> 0.
    CONCATENATE 'Template:' l_objname 'download failed' INTO l_errtxt.
    MESSAGE l_errtxt TYPE 'E'.
  ENDIF.
ENDFORM.                    " DOWNLOAD_TEMP

通过OLE方式将内表数据写入到模板文件中:

DATA: gv_application TYPE ole2_object,
      gv_sheet       TYPE ole2_object,
      gv_cell        TYPE ole2_object,
      gv_workbook    TYPE ole2_object,
      gv_columns     TYPE ole2_object,
      gv_rows        TYPE ole2_object.
  CONCATENATE gv_file '\' 'Picking Pallet List-' sy-datum sy-uzeit '.XLSX' INTO gv_file.
  l_visible = 'X'.
  CREATE OBJECT gv_application 'Excel.Application'.
  PERFORM open_excel_sheet USING l_visible gv_file 'Sheet1'.
  PERFORM fill_excel USING gv_application.
  PERFORM free_object.

FORM open_excel_sheet  USING pv_visible pv_file pv_sheet.
  CALL METHOD OF
    gv_application
    'Workbooks' = gv_workbook.
  CALL METHOD OF
    gv_workbook
    'Open' = gv_workbook
    EXPORTING
      #1 = pv_file.
  CALL METHOD OF
    gv_workbook
    'Worksheets' = gv_sheet
    EXPORTING
      #1 = pv_sheet.
  CALL METHOD OF gv_sheet 'Activate'.
  IF pv_visible = 'X'.
    SET PROPERTY OF gv_application 'Visible' = 1.
  ENDIF.
ENDFORM.                    

FORM fill_excel  USING xls TYPE ole2_object.
  DATA: row TYPE i,
        col TYPE i.
  row = 2.
  LOOP AT gt_out INTO gs_out.
    col = 1.
    PERFORM fill_cell USING xls row col gs_out-zpltnum.
    col = col + 1.
    PERFORM fill_cell USING xls row col gs_out-zpltitem.
    col = col + 1.
    PERFORM fill_cell USING xls row col gs_out-aufnr.
...
    col = col + 1.
    PERFORM fill_cell USING xls row col gs_out-zmatklp.
    col = col + 1.
    PERFORM fill_cell USING xls row col gs_out-matnr.
  ENDLOOP.
ENDFORM. 

FORM free_object .
  CALL METHOD OF
    gv_workbook
    'Save'.
  CALL METHOD OF
    gv_workbook
    'Close'
    EXPORTING
      #1 = 0.
  CALL METHOD OF
    gv_application
    'Quit'.

  FREE OBJECT gv_sheet.
  FREE OBJECT gv_workbook.
  FREE OBJECT gv_application.
ENDFORM.                    " FREE_OBJECT                   

相关文章

网友评论

      本文标题:ABAP将内表数据写入到Excel模板

      本文链接:https://www.haomeiwen.com/subject/hokwlctx.html