FM:ALSM_EXCEL_TO_INTERNAL_TABLE 是上载Excel文件的一个函数,但是这个函数有两个限制。

一是每个CELL只能导入前50个字符,二是如果超过9999行,行号会初始化为从零开始

其实解决起来很简单,只要改一下结构 ALSMEX_TABLINE 的字段就行了,然后COPY ALSM_EXCEL_TO_INTERNAL_TABLE 为 ZALSM_EXCEL_TO_INTERNAL_TABLE ,并做少许改动即可。

另外,如果要上载有打开密码保护的Excel,只要修改一下OLE的 OPEN 语句即可。

以及导入指定的Sheet等。。

这个函数的接受内表是ALSMEX_TABLINE类型的内表,只有行和列还有值这三个字段的内表。要是把excel的值传到这个内表中后还需要我们循环处理到想要的内表中。

示例展示:

DATA:lt_excel TYPE TABLE OF ALSMEX_TABLINE.
DATA ls_excel LIKE LINE OF lt_excel.
FIELD-SYMBOLS:<fs>.
CONSTANTS: gc_begin_row TYPE i VALUE 1,
"Beginning row of excel file
           gc_begin_col TYPE i VALUE 1,
           "Beginning column of excel file
           gc_end_row   TYPE i VALUE 999,
           "Ending row of excel file
           gc_end_col   TYPE i VALUE 999.
           "Ending column of excel file
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
  EXPORTING
    filename                      = p_file
    i_begin_col                   = gc_begin_row
    i_begin_row                   = gc_begin_col
    i_end_col                     = gc_end_row
    i_end_row                     = gc_end_col
  TABLES
    intern                        = lt_excel
* EXCEPTIONS
*   INCONSISTENT_PARAMETERS       = 1
*   UPLOAD_OLE                    = 2
*   OTHERS                        = 3
          .
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
LOOP AT lt_excel INTO ls_excel.
  IF  ls_excel-col = 1.
            CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'         "物料代码加前导0 。
          EXPORTING
            input        = ls_excel-value
          IMPORTING
            output       = ls_excel-value
          EXCEPTIONS
            length_error = 1
            OTHERS       = 2.
  ENDIF.

ASSIGN COMPONENT ls_excel-col OF STRUCTURE gs_tab to <fs>.   把工作区gs_tab中的字段赋给字段符号,而工作区gs_tab中的字段取决于内表中的列ls_excel-col
  CONDENSE ls_excel-value.                  " 去掉空格
  <fs> = ls_excel-value.
  at end of row.                                    "如果是最后一行就把工作区gs_tab存到内表gt_tab中
        "gs_tab-row = ls_excel-row.
        APPEND gs_tab TO gt_tab.
        CLEAR: gs_tab.

ENDAT.

ENDLOOP.

适用函数ALSM_EXCEL_TO_INTERNAL_TABLE把excel文件传输到内表中的更多相关文章

  1. C#中获取Excel文件的第一个表名

    //    2.以数据库方式打开并输入数据//      此方式将xls文件所在目录看作数据库,其中的xls文件看作数据库表,表名即文件名(不加扩展名).//      函数importExcelTo ...

  2. [SAP ABAP开发技术总结]将文件存储到数据库表中,并可发送邮件

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  3. CSV文件插入到mysql表中指定列

    参考资料: -CSV文件插入到mysql表中指定列

  4. Excel文件数据保存到SQL中

    1.获取DataTable /// <summary> /// 查询Excel文件中的数据 /// </summary> /// <param name="st ...

  5. 读取Excel文件存储在实体类中

    1.Maven文件 <!--读取Excel的架包--> <dependency> <groupId>org.apache.poi</groupId> & ...

  6. vue下载和上传excle数据文件,解析excel文件数据并存在数据库中

    下载: VUE: window.open("xxxx/downloadOldTaskDataFile.do_", "_blank"); JAVA: /** * ...

  7. 将 excel文件数据导入MySQL数据库中

    第一步:先将Excel文件另存为文本文件(制表符分割) 第二步:将生成的txt文件另存,并修改编码格式utf8; 第三步:将文件放到指定位置,或自己想要的位置: G:\city.txt 第四步:避免创 ...

  8. 2019.06.05 ABAP EXCEL 操作类代码 OLE方式(模板下载,excel上传,内表下载)

    一般使用标准的excel导入方法9999行,修改了标准的excel导入FM 整合出类:excel的 模板下载,excel上传,ALV内表下载功能. 在项目一开始可以SE24创建一个类来供整体开发使用, ...

  9. 将Excel文件导入到Navicat Premium中日期变为0000-00-00

    在网上查询了一些文章,说要改excel的单元格格式,我试验了好几次,不管是设置成文本,还是日期,都始终是 0000-00-00. 最后改变了办法,把数据库中的date类型设置 成 varchar,等导 ...

随机推荐

  1. UVA - 10057 A mid-summer night&#39;s dream.

    偶数时,中位数之间的数都是能够的(包含中位数) 奇数时,一定是中位数 推导请找初中老师 #include<iostream> #include<cstdio> #include ...

  2. 解析stm32的时钟

    STM32 时钟系统  http://blog.chinaunix.net/uid-24219701-id-4081961.html STM32的时钟系统 ***   http://www.cnblo ...

  3. spark论坛

    http://spark.apache.org/ http://bbs.csdn.net/forums/spark http://spark.csdn.net/ http://tieba.baidu. ...

  4. ConcurrentModificationException异常解决办法

    今天在写一个带缓存功能的访问代理程序时出现了java.util.ConcurrentModificationException异常,因为该异常是非捕获型异常而且很少见,所以费了些时间才找到问题所在,原 ...

  5. XSS学习笔记(四)-漏洞利用全过程

    <script type="text/javascript" reload="1">setTimeout("window.location ...

  6. Learning Web

    1.UDACITY https://www.udacity.com/course/cs258

  7. 数据备份--dump(此作者有许多有用的博客文章)

    数据中 心操作大量的数据.当遭到破坏时,这就是一场灾难.这时候需要备份来恢复,及时你又大量的备份数据都没用,备份也肯定不是在浪费时间.你也许很幸运从 来没有经历过数据丢失.但是, 由于这种事情极少发生 ...

  8. premake Ubuntu下的安装

    premake是个跨平台的编译工具,先看看在Ubuntu下怎么安装. 首先下载,在/usr目录下: sudo wget -O premake-4.4-beta4-linux.tar.gz http:/ ...

  9. iOS开发 - 应用内打开第三方应用并传值

    首先说下这个功能, 应该都有接触过. 比方,你下载了一个电子书,然后选择打开方式的时候,可能会看到你手机中已经安装的阅读类App. 或者,你的QQ收到了某个文件,你也能够选择本地的应用来打开. 那这种 ...

  10. Swift - 正则表达式的使用(附用户名、邮箱、URL等常用格式验证)

    Swift虽然是一个新出的语言,但却不提供专门的处理正则的语法和类.所以我们只能使用古老的NSRegularExpression类进行正则匹配. 即先接受一个正则表达式的字符串,由此生成NSRegul ...