zoukankan      html  css  js  c++  java
  • 上载数据

    *&---------------------------------------------------------------------*
    *&  包括                ZHENGZJ_TEST001_FORM
    *&---------------------------------------------------------------------*
    *&---------------------------------------------------------------------*
    *&      Form  SELECT_FILE
    *&---------------------------------------------------------------------*
    *       说明    选择本地的ASCII数据文件
    *----------------------------------------------------------------------*
    *      <--T_SELFILE  text
    *      <--P_FLAG  text
    *----------------------------------------------------------------------*
    FORM SELECT_FILE  USING P_FLAG TYPE I
                      CHANGING T_SELFILE.
      DATA: l_rc         TYPE I,
            l_FileTable  TYPE FILETABLE.

      DATA: L_NAME       TYPE STRING.

      IF P_FLAG 1.
        L_NAME '请选择文件保存路径'.
      ELSE.
        L_NAME '请选择导入文件'.
      ENDIF.

    * Open The txt File
      CALL METHOD CL_GUI_FrontEnd_Services=>File_Open_Dialog
        EXPORTING
          WINDOW_TITLE            L_NAME
          FILE_FILTER             '文本文件 (*.XLS)|*.XLS|全部文件 (*.*)|*.*|'
          MULTISELECTION          space
        CHANGING
          FILE_TABLE              l_FileTable
          RC                      l_rc
        EXCEPTIONS
          file_open_dialog_failed 1
          cntl_error              2
          error_no_gui            3
          not_supported_by_gui    4
          others                  5.

      IF SY-SUBRC AND l_rc 1.
        READ TABLE l_FileTable INTO T_SELFILE INDEX 1.
      ENDIF.

    ENDFORM.                    " SELECT_FILE
    *&---------------------------------------------------------------------*
    *&      Form  UPLOAD
    *&---------------------------------------------------------------------*
    *       说明:获得并处理上载数据
    *----------------------------------------------------------------------*
    *  -->  p1        text
    *  <--  p2        text
    *----------------------------------------------------------------------*
    FORM UPLOAD .

      DATA: l_FileName   TYPE RLGRAP-FILENAME,
            l_rc         TYPE I,
            l_FileTable  TYPE FILETABLE,
            l_rlt        TYPE C.

      data:l_line type CHAR01.

      DATA:L_LEN  TYPE I,
           STR    TYPE STRING,
           G_FILE TYPE RLGRAP-FILENAME,
           ITAB   TYPE HRPFDNL_T_EXCEL.

      DATA WA_ITAB LIKE LINE OF ITAB.

    *  P_RtnCode = -1.
      G_DataFile F_INFILE.

      l_rlt CL_GUI_FRONTEND_SERVICES=>FILE_EXISTG_DataFile ).

      IF l_rlt IS INITIAL.
        MESSAGE E000(ZHRIS_PA015).
        EXIT.
      ENDIF.
    *  P_RtnCode = 0.
      DATA:FROM TYPE I,
           TO   TYPE I.

      L_LEN STRLENF_INFILE ).
      FROM L_LEN ).
      TO   L_LEN FROM.
      STR F_INFILE+FROM(TO) .
      CASE STR.
        WHEN '.TXT' OR '.txt'.
    * Upload the file txt

          CALL FUNCTION 'GUI_UPLOAD'
            EXPORTING
              FILENAME                G_DataFile
              FILETYPE                'ASC'
    *      HAS_FIELD_SEPARATOR     = 'O'
              READ_BY_LINE            'X'
            TABLES
              DATA_TAB                TAB_DATA
            EXCEPTIONS
              CONVERSION_ERROR        1
              FILE_OPEN_ERROR         2
              FILE_READ_ERROR         3
              INVALID_TYPE            4
              NO_BATCH                5
              UNKNOWN_ERROR           6
              INVALID_TABLE_WIDTH     7
              GUI_REFUSE_FILETRANSFER 8
              CUSTOMER_ERROR          9
              DP_OUT_OF_MEMORY        10
              ACCESS_DENIED           11.

          IF SY-SUBRC <> 0.
            MESSAGE E001(ZHRIS_PA015WITH SY-TABIX.
    *    P_RtnCode = -1.
          ENDIF.

        WHEN '.xls' OR '.XLS'.
    ****发现此处是一个盲点,整理出来以备后用  ZHENGZJ 2011.11.18  不知道是否有更好的方法可以使用,空了再研究一下
    **欢迎学习  版权所有,违者必究 O(∩_∩)O哈哈~
          G_FILE F_INFILE.
          CALL FUNCTION 'HR_PK_EXCEL_TO_INTERNAL_TABLE'
            EXPORTING
              FILENAME                G_FILE
              I_BEGIN_COL             1
              I_BEGIN_ROW             1
              I_END_COL               10
              I_END_ROW               10
            CHANGING
              INTERN                  ITAB
            EXCEPTIONS
              INCONSISTENT_PARAMETERS 1
              UPLOAD_OLE              2
              OTHERS                  3.
          IF SY-SUBRC <> 0.
    *       MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *               WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
          ENDIF.

          SORT itab BY row.

          DATA: descr_ref TYPE REF TO cl_abap_structdescr.
          FIELD-SYMBOLS: <field_name>    TYPE abap_compdescr.
          DATA:xfc        TYPE lvc_s_fcat,                       "列结构
               ifc        TYPE lvc_t_fcat.                       "列内表
          DATA INDEX TYPE VALUE 1.

          descr_ref ?= cl_abap_typedescr=>describe_by_dataTAB_DATA ).
          LOOP AT descr_ref->components ASSIGNING <field_name>.
            xfc-fieldname <field_name>-name.
            xfc-decimals  <field_name>-decimals.
            xfc-inttype   <field_name>-type_kind.
            xfc-COL_POS   INDEX.
            APPEND xfc TO ifc.
            INDEX INDEX 1.
          ENDLOOP.

          DATA: L_NAME  TYPE STRING.

          FIELD-SYMBOLS: <FS_FIELD> TYPE ANY.       "字段(值)

          LOOP AT ITAB INTO WA_ITAB.
            READ TABLE IFC INTO xfc WITH KEY COL_POS WA_ITAB-COL.
            l_name xfc-fieldname.
            ASSIGN COMPONENT L_NAME OF STRUCTURE TAB_DATA TO <FS_FIELD>.
            <FS_FIELD> WA_ITAB-value.
            AT END OF row.
              APPEND TAB_DATA.
              CLEAR TAB_DATA.
            ENDAT.
          ENDLOOP.
        WHEN OTHERS.
      ENDCASE.

      DATA:L_ID(19)    TYPE C,
           L_STEXT(50TYPE C.
      SORT TAB_DATA BY ID DESCENDING.
      LOOP AT TAB_DATA FROM 2.
        IF TAB_DATA-ID L_ID AND TAB_DATA-STEXT L_STEXT.
          MOVE-CORRESPONDING TAB_DATA to out_data.
          append out_data.
          clear  out_data.
          PERNR_LIST-pernr TAB_DATA-pernr.
          append PERNR_LIST.
          clear  PERNR_LIST.
        else.
          CLEAR: l_id, l_stext.
          L_ID TAB_DATA-ID.
          L_STEXT TAB_DATA-STEXT.
        endif.
      ENDLOOP.

      SORT out_data by pernr.

      SORT PERNR_LIST by pernr.
      delete ADJACENT DUPLICATES FROM PERNR_LIST.

      data:lin type i.
      DESCRIBE TABLE PERNR_LIST lines lin.
      write lin.

    ENDFORM.                    " UPLOAD

  • 相关阅读:
    12-转盘
    11-UIView与核心动画对比
    10-动画组
    09-转场动画
    08-图片抖动(帧动画)
    07-心跳效果
    06-CABasicAnimation基础核心动画
    05-时钟效果
    计时器延迟 NSTimer和CADisplaylink GCD中的延迟
    ScrollView与UIPageController
  • 原文地址:https://www.cnblogs.com/purehunter/p/2331850.html
Copyright © 2011-2022 走看看