ALV中调用Excel inplace时没能传递数据实例解决
在很多用到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时没能传递数据实例解决相关推荐
- ALV中调用Excel, 丢掉前面的0问题解决
Bob 发表于 ABAP 分类,标签: ALV, Excel 在sdn中看到有人问这个问题, 于是做个简单的例子来说明如何避免, 或者说解决这个问题. 1. 写个小程序, 用alv来显示表vbak的内 ...
- 『飞秋』在.NET 4中调用GDAL库时遇到的问题及解决方法
『飞秋』在.NET 4中调用GDAL库时遇到的问题及解决方法 最近需要在.NET 4的环境中调用GDAL库.GDAL本身是一套非托管类库,不过还好提供了用SWIG做的托管的Wrapper. 可以在FW ...
- C#中调用Windows API时的数据类型对应关系
C#中调用Windows API时的数据类型对应关系 原文 C#中调用Windows API时的数据类型对应关系 BOOL=System.Int32 BOOLEAN=System.Int32 BYTE ...
- SPSS Modeler导入excel文件时出现“无法读取文件列名”解决方法
SPSS Modeler导入excel文件时出现"无法读取文件列名"解决方法 经过本人多次尝试,终于发现了原因 原因是:excel文件在后台打开了,因此spss modeler读取 ...
- 办公软件之excel打印时打印区域与纸张不符解决方法
在办公的同时 难免要遇到作一些表之类的 但是呢 也会常常遇到一些棘手的问题 那么我们接下来就解决一下这个办公软件之excel打印时打印区域与纸张不符解决方法 一:首先插入分页符 有助于我们排版的方便 ...
- redis中使用redis-dump导出、导入、还原数据实例
使用redis-dump进行Redis数据库合并:https://www.cnblogs.com/jasondan/p/4031399.html Redis-Dump安装及使用:https://www ...
- VBA中调用Excel函数
VBA中编写的事件,不断的触发循环 :先程序开始时关闭 Excel.Application.EnableEvents =False:结束时打开:Excel.Application.EnableEve ...
- 又踩.NET Core的坑:在同步方法中调用异步方法Wait时发生死锁(deadlock)
之前在将 Memcached 客户端 EnyimMemcached 迁移 .NET Core 时被这个"坑"坑的刻骨铭心(详见以下链接),当时以为只是在构造函数中调用异步方法(注: ...
- Java中调用FTP服务时inputStream获取一直为null
问题描述:Java调用FTP服务时,已成功登录到了FTP服务中,文件路径中无中文字符,当根据文件路径获取 输入流inputStream时,inputStream一直为null BufferedRead ...
最新文章
- linux sftp权限设置,Linux设置SFTP服务用户目录权限
- wukong引擎源码分析之搜索——docid有序的数组里二分归并求交集,如果用跳表的话,在插入索引时会更快...
- 2018危机与机遇丨PMCAFF年度精选合集
- 经济学相关资料20170924.词袋.books
- JAVA面试常考系列九
- vant按需引入没样式_vue vant-ui样式出不来的问题
- Android为TV端助力 post带数据请求方式,传递的数据格式包括json和map
- 第二季1:图像基础知识
- appium java 点击事件_java – 无法使用Appium在Android中的权限对话框中单击“允许”按钮...
- boost学习之简介
- android眼动追踪开源,Eyeboard:低成本的开源眼动跟踪解决方案
- 转载:CSDN mvc ef 的简单增删改查操作
- 汇编语言 XOR 指令
- MA1 轻轻松松学统计分析(上)
- Android 隐藏程序的图标
- 当前服务器更新维护公告,【已开服】1月17日全部服务器更新维护公告
- css炫酷标题,炫酷 CSS 背景效果的 10 个代码片段
- R语言入门——画密度曲线
- remount of the / superblock failed: Permission denied remount failed
- selenium 实战模拟登陆