在很多用到ALV的项目开发中,会有调用Excel inplace功能直接在excel中查看数据(sy-ucomm = &VEXCEL), 可是当我们点该按钮是, excel是成功出现了,可是alv grid的数据却没有写到excel中.

下面通过一则简单的实例程序,来介绍问题的解决:

*&-------------------- -------------------------------------------------*
*& Report  ZLC_ALV_EXCEL
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZLC_ALV_EXCEL.
TABLES MARC.
TYPE-POOLS:SLIS.
DATA: BEGIN OF IT_MARC OCCURS 0,
      MATNR LIKE MARC-MATNR,
      PSTAT LIKE MARC-PSTAT,

LVORM LIKE MARC-LVORM,
      BWTTY LIKE MARC-BWTTY,
      XCHAR LIKE MARC-XCHAR,
      MMSTA LIKE MARC-MMSTA,
      END   OF  IT_MARC.
DATA:  IT_FIELDCAT   TYPE  SLIS_T_FIELDCAT_ALV,
       IT_EVENTS     TYPE  SLIS_T_EVENT.
SELECT MATNR PSTAT LVORM BWTTY XCHAR MMSTA
INTO TABLE IT_MARC
FROM MARC.

START-OF-SELECTION.
  PERFORM  FRM_FIELDCAT_SET.
  PERFORM  FRM_ENVENT_SET.
  PERFORM  FRM_ALV_DISPLAY.
*&---------------------------------------------------------------------*
*&      Form  FRM_FIELDCAT_SET
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_FIELDCAT_SET .
  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
      I_PROGRAM_NAME         = SY-REPID
      i_structure_name       = 'ZLC_MARC'
    CHANGING
      CT_FIELDCAT            = IT_FIELDCAT
    EXCEPTIONS
      INCONSISTENT_INTERFACE = 1
      PROGRAM_ERROR          = 2
      OTHERS                 = 3.
ENDFORM.                    " FRM_FIELDCAT_SET
*&---------------------------------------------------------------------*
*&      Form  FRM_ENVENT_SET
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_ENVENT_SET .
 DATA PW_EVENT TYPE SLIS_ALV_EVENT.
  CLEAR PW_EVENT.
  CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
    EXPORTING
      I_LIST_TYPE     = 1
    IMPORTING
      ET_EVENTS       = IT_EVENTS
    EXCEPTIONS
      LIST_TYPE_WRONG = 1
      OTHERS          = 2.
  PW_EVENT-FORM = 'FRM_USER_COMMAND'.
  MODIFY IT_EVENTS FROM PW_EVENT TRANSPORTING FORM
                  WHERE NAME = SLIS_EV_USER_COMMAND.
  PW_EVENT-FORM = 'FRM_SET_PFSTAT'.
  MODIFY IT_EVENTS FROM PW_EVENT TRANSPORTING FORM
                   WHERE NAME = SLIS_EV_PF_STATUS_SET.
ENDFORM.                    " FRM_ENVENT_SET
*&---------------------------------------------------------------------*
*&      FRM_USER_COMMAND
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_USER_COMMAND USING R_UCOMM TYPE SY-UCOMM           "#EC CALLED
                            R_SELFIELD TYPE SLIS_SELFIELD.
*  IF W_F2CODE = CNS_WCLI.
*    READ TABLE   IT_DATA
*    INTO         IW_DATA
*    INDEX        R_SELFIELD-TABINDEX
*    TRANSPORTING KUNNR .
*    EXPORT  W_KUNNR FROM IW_DATA-KUNNR TO MEMORY ID CNS_KUNNR.
*    LEAVE PROGRAM.
*  ENDIF.
ENDFORM.                    "FRM_USER_COMMAND
*&---------------------------------------------------------------------*
*&      Form  FRM_ALV_DISPLAY
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_ALV_DISPLAY .
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_CALLBACK_PROGRAM = SY-REPID
      IT_FIELDCAT        = IT_FIELDCAT
      IT_EVENTS          = IT_EVENTS

I_DEFAULT          = 'X'

TABLES
      T_OUTTAB           = IT_MARC
    EXCEPTIONS
      PROGRAM_ERROR      = 1
      OTHERS             = 2.

ENDFORM.                    " FRM_ALV_DISPLAY
*&---------------------------------------------------------------------*
*&      Form  FRM_SET_PFSTAT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*

FORM FRM_SET_PFSTAT USING EXTAB TYPE SLIS_T_EXTAB.          "#EC CALLED
  SET PF-STATUS  'PF_002'.
ENDFORM.                    " FRM_SET_PFSTAT

此实例得到结果:

通过点击 导出EXCEL,一开始是没有数据。解决办法:在菜单栏 工具---》宏----》安全性---》可靠发行商下勾选‘信任对于visual Basic项目 ’的访问。

大功告成!

ALV中调用Excel inplace时没能传递数据实例解决相关推荐

  1. ALV中调用Excel, 丢掉前面的0问题解决

    Bob 发表于 ABAP 分类,标签: ALV, Excel 在sdn中看到有人问这个问题, 于是做个简单的例子来说明如何避免, 或者说解决这个问题. 1. 写个小程序, 用alv来显示表vbak的内 ...

  2. 『飞秋』在.NET 4中调用GDAL库时遇到的问题及解决方法

    『飞秋』在.NET 4中调用GDAL库时遇到的问题及解决方法 最近需要在.NET 4的环境中调用GDAL库.GDAL本身是一套非托管类库,不过还好提供了用SWIG做的托管的Wrapper. 可以在FW ...

  3. C#中调用Windows API时的数据类型对应关系

    C#中调用Windows API时的数据类型对应关系 原文 C#中调用Windows API时的数据类型对应关系 BOOL=System.Int32 BOOLEAN=System.Int32 BYTE ...

  4. SPSS Modeler导入excel文件时出现“无法读取文件列名”解决方法

    SPSS Modeler导入excel文件时出现"无法读取文件列名"解决方法 经过本人多次尝试,终于发现了原因 原因是:excel文件在后台打开了,因此spss modeler读取 ...

  5. 办公软件之excel打印时打印区域与纸张不符解决方法

    在办公的同时 难免要遇到作一些表之类的 但是呢 也会常常遇到一些棘手的问题 那么我们接下来就解决一下这个办公软件之excel打印时打印区域与纸张不符解决方法 一:首先插入分页符 有助于我们排版的方便  ...

  6. redis中使用redis-dump导出、导入、还原数据实例

    使用redis-dump进行Redis数据库合并:https://www.cnblogs.com/jasondan/p/4031399.html Redis-Dump安装及使用:https://www ...

  7. VBA中调用Excel函数

    VBA中编写的事件,不断的触发循环 :先程序开始时关闭  Excel.Application.EnableEvents =False:结束时打开:Excel.Application.EnableEve ...

  8. 又踩.NET Core的坑:在同步方法中调用异步方法Wait时发生死锁(deadlock)

    之前在将 Memcached 客户端 EnyimMemcached 迁移 .NET Core 时被这个"坑"坑的刻骨铭心(详见以下链接),当时以为只是在构造函数中调用异步方法(注: ...

  9. Java中调用FTP服务时inputStream获取一直为null

    问题描述:Java调用FTP服务时,已成功登录到了FTP服务中,文件路径中无中文字符,当根据文件路径获取 输入流inputStream时,inputStream一直为null BufferedRead ...

最新文章

  1. linux sftp权限设置,Linux设置SFTP服务用户目录权限
  2. wukong引擎源码分析之搜索——docid有序的数组里二分归并求交集,如果用跳表的话,在插入索引时会更快...
  3. 2018危机与机遇丨PMCAFF年度精选合集
  4. 经济学相关资料20170924.词袋.books
  5. JAVA面试常考系列九
  6. vant按需引入没样式_vue vant-ui样式出不来的问题
  7. Android为TV端助力 post带数据请求方式,传递的数据格式包括json和map
  8. 第二季1:图像基础知识
  9. appium java 点击事件_java – 无法使用Appium在Android中的权限对话框中单击“允许”按钮...
  10. boost学习之简介
  11. android眼动追踪开源,Eyeboard:低成本的开源眼动跟踪解决方案
  12. 转载:CSDN mvc ef 的简单增删改查操作
  13. 汇编语言 XOR 指令
  14. MA1 轻轻松松学统计分析(上)
  15. Android 隐藏程序的图标
  16. 当前服务器更新维护公告,【已开服】1月17日全部服务器更新维护公告
  17. css炫酷标题,炫酷 CSS 背景效果的 10 个代码片段
  18. R语言入门——画密度曲线
  19. remount of the / superblock failed: Permission denied remount failed
  20. selenium 实战模拟登陆

热门文章

  1. 全球最高龄男性去世享年113岁 生前喜欢泡温泉(图)
  2. 轻量级DAO层实践初体验
  3. Distcp 分布式拷贝
  4. 【SICP练习】144 练习3.82
  5. 两篇很牛的vim使用技巧
  6. 一款标注颜色,距离的小软件 markman
  7. 配置arm-linux-gcc 位置
  8. js 数组/对象/日期的浅克隆
  9. Docker初学乍练之单主机网络
  10. tensolrflow之基础变量