上载数据

 

*&---------------------------------------------------------------------*
*&  包括                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

转载于:https://www.cnblogs.com/purehunter/archive/2012/01/30/2331850.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/404494.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[react] react中的setState执行机制是什么呢?

[react] react中的setState执行机制是什么呢&#xff1f; 1.将setState传入的partialState参数存储在当前组件实例的state暂存队列中。 2.判断当前React是否处于批量更新状态&#xff0c;如果是&#xff0c;将当前组件加入待更新的组件队列中。 3.如果未处于批量更新状态&…

Linux 的帐号与群组:有效与初始群组、groups, newgrp

关于群组&#xff1a; 有效与初始群组、groups, newgrp认识了帐号相关的两个档案 /etc/passwd 与 /etc/shadow 之后&#xff0c;您或许还是会觉得奇怪&#xff0c; 那么群组的设定档在哪里&#xff1f;还有&#xff0c;在 /etc/passwd 的第四栏不是所谓的 GID 吗&#xff1f;那…

提示缺少Qedit.h问题

From&#xff1a; http://blog.csdn.net/jsmiler/article/details/6495763 DirectX 9.0 SDK 开发包以及扩展包下载(February 2005) http://dev.csdn.net/article/62/62941.shtm。直接到微软官网下的话&#xff0c;需要validation确认。 http://download.microsoft.com/downlo…

Oracle Buffer Cache的keep、recycle、default pool概念图解

Oracle Buffer Cache的keep、recycle、default pool概念图解 转载于:https://blog.51cto.com/maclean/1278284

[react] 同时引用这三个库react.js、react-dom.js和babel.js它们都有什么作用?

[react] 同时引用这三个库react.js、react-dom.js和babel.js它们都有什么作用&#xff1f; React.js: React中的组件(Component)、Context、hooks等核心Api&#xff0c;还有虚拟DOM的比较、Fiber的算法实现等React-dom.js 与web浏览器DOM相关的API&#xff0c;比如虚拟DOM的挂…

计算程序执行时间

time命令用于计量运行时间。real从启动到终止&#xff0c;user用户空间时间&#xff0c;sys内核空间时间。转载于:https://www.cnblogs.com/embedded-linux/p/5046726.html

程序中调用命令行命令,不显示那个黑黑的DOS窗口

From: http://hi.baidu.com/yanqiuge/item/5da466c3d3f18453ad00ef1d 在程序中使用命令行时&#xff0c;会有黑黑的DOS窗口&#xff0c;很不爽&#xff0c;在网上查了一下&#xff0c;写一个有点实用价值的小程序&#xff1a; /****************************** 文件名&#…

Oracle Row cache lock图解

Oracle Row cache lock(dictionary cache)图解 转载于:https://blog.51cto.com/maclean/1278273

[react] create-react-app创建新运用怎么解决卡的问题?

[react] create-react-app创建新运用怎么解决卡的问题&#xff1f; (这个问题应该描述的是使用cra脚手架创建项目慢的问题) 这是因为cra默认使用的国外的npm源&#xff0c;替换为国内的npm源即&#xff0c;如淘宝源npm config set registry https://registry.npm.taobao.org 个…

C语言基础知识汇总

c语言执行步骤&#xff1a; 一.编辑程序 1.编写c语言的代码&#xff0c;保存在扩展名.c的文件中&#xff0c;源文件。 2.编写代码有三种方式&#xff1a; a.vi命令方式系统自带 b.ultraedit网络下载 c.xcode网络下载 二.编译(gcc 文件名.c) 将c语言转换成计算机识别的代码 三.…

PHP中的逆波兰式应用

定义  逆波兰式&#xff08;Reverse Polish notation&#xff0c;RPN&#xff0c;或逆波兰记法&#xff09;&#xff0c;也叫后缀表达式(将运算符写在操作数之后) 如&#xff1a;我们平时写ab&#xff0c;这是中缀表达式&#xff0c;写成后缀表达式就是&#xff1a;ab (ab)*c…

执行dos命令,不出现黑色的dos窗口

先准备一个.vbs文件&#xff0c;写好内容&#xff1a; Set ws CreateObject("Wscript.Shell") ws.run "cmd /c a.bat", vbhide再准备相应的.bat文件&#xff1a; dir /s /b * > a.logok, 运行.vbs文件吧

[react] 展示组件和容器组件有什么区别?

[react] 展示组件和容器组件有什么区别&#xff1f; 展示组件&#xff08;Presentational Component&#xff09; 关注页面的展示效果&#xff08;外观&#xff09; 内部可以包含展示组件和容器组件&#xff0c;通常会包含一些自己的DOM标记和样式(style) 通常允许通过this.pr…

Java学习----方法的重载

一个类中有多个同名的参数不一样的方法。 作用&#xff1a;可以根据不同的条件调用不同的方法。 注意&#xff1a;java不会因为方法的返回类型或者权限的不同而判断为不同的两个方法。 public class Student {public Student() {System.out.println("Student构造方法1&quo…

[react] react的书写规范有哪些

[react] react的书写规范有哪些 React元素必须使用大驼峰命名的方式组件尽量命名&#xff0c;方便进行调试JSX尽量用小括号包起来&#xff0c;更加直观&#xff0c;防止换行时出错 个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持…

LAMP源代码编译整理

在我们编译安装Apache 之前&#xff0c;要考虑的是让Apache 在什么样的模式下运行&#xff0c;因为从Apache 2.0 就加入了MPM&#xff08;Multi-Processing Modules&#xff0c;多道处理模块&#xff09;。Apache 2.0 在性能上的改善最吸引人。在支持POSIX 线程的Unix 系统上&a…

windows平台编译vlc

From: http://blog.csdn.net/guanshangming/article/details/5581270 转自:http://jeremiah.blog.51cto.com/539865/114190Jeremiah刚刚工作几个月&#xff0c;参与的第一个项目是与视频监控有关&#xff0c;分配给我的任务就是用开源的vlc做一个自己的播放器。对于开源项目来…

Appium--环境搭建

Appium介绍 Appium是一个移动端的自动化框架&#xff0c;可以做H5、Web测试、可以做功能测试&#xff08;Android、IOS&#xff09;、可以做跨进程测试&#xff0c;且是跨平台的。Appium做测试的时候支持的语言有很多种&#xff0c;包括java、Python、ruby、PHP、C#等。由于我熟…

[react] 类组件和函数式组件有什么区别?

[react] 类组件和函数式组件有什么区别&#xff1f; 函数式组件没有state和一系列的钩子函数&#xff0c;只接收一个props 个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前…

Windows 系统下Git安装图解

From: http://blog.csdn.net/jiguanghoverli/article/details/7902791 Windows 系统下Git安装图解 简单来说Git是一个免费的、开源的版本控制软件&#xff0c;从功能上讲&#xff0c;跟我们比较熟悉的Subversion(SVN)这类版本控制软件没什么两样。由于工作的需求&#xff0c;需…