abap alv :当用户双击某一行数据时,d出一个窗口显示具体的明细信息。

abap alv :当用户双击某一行数据时,d出一个窗口显示具体的明细信息。,第1张

在usercomd里面实现双击事件相应方法

CREATE OBJECT CON_DIABOX

CREATE OBJECT GRID2

EXPORTING

I_PARENT = CON_DIABOX

CALL METHOD GRID2->SET_TABLE_FOR_FIRST_DISPLAY

读取EXCEL数据到内表并输出调用函数: ALSM_EXCEL_TO_INTERNAL_TABLE &---------------------------------------------------------------------& Report ZCMH0009&&---------------------------------------------------------------------& 读取EXCEL 的数据 到内表&&---------------------------------------------------------------------REPORT ZCMH0009INCLUDE OLE2INCL "定义OLE变量DATA: BEGIN OF IEXCEL OCCURS 0 INCLUDE STRUCTURE ALSMEX_TABLINEDATA: END OF IEXCELDATA: XLS LIKE RLGRAP-FILENAME VALUE 'C:\sap_usr02xls'CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' EXPORTING FILENAME = XLS

I_BEGIN_COL = 1 I_BEGIN_ROW = 1 I_END_COL = 100 " 读取多少列 I_END_ROW = 100 "读取多少行 TABLES INTERN = IEXCEL

EXCEPTIONS INCONSISTENT_PARAMETERS = 1 UPLOAD_OLE = 2 OTHERS = 3"读取后内表保存的结构为:第一行记录第一个单元的行值 列值 单元格内容 比如 0001 0001 第一个单元格内容WRITE: /IF sy-subrc <> 0 WRITE: / XLS,'读入错误!'ELSE LOOP AT IEXCEL WRITE IEXCEL-VALUE(20) "取前20个字符 AT END OF ROW "每行行尾输出空行 WRITE : / ENDAT ENDLOOPENDIF

AT NEW field是当内表中连续出现不同的field或之前的字段时,执行它与ENDAT之间的语句。一般使用之前需要以字段field及之前的字段为key对内表进行排序。这句话可能很抽象,下面举个例子来说明。

例:

DATA: BEGIN OF wa,

col01 TYPE char10,

col02 TYPE char10,

col03 TYPE char10,

END OF wa,

itab LIKE TABLE OF wa

  省略初始化内表itab

SORT itab by col01 col02

LOOP AT itab into wa

AT NEW col02

 当wa-col01不等于上一条数据的col01的值或者wa-col02不等于上一条数据的col01的值的时候执行

       由于执行语句AT NEW之后,工作区中类型为char的字段值会变成,所以在AT NEW之后需要重新读取该条数据

READ TABLE itab INTO wa INDEX sy-tabix

      省略其它语句

ENDAT

ENDLOOP

如果排序后内表itab中的数据为上图中的数据,则当序号为1、4、8、10时会执行AT NEW和ENDAT之间的语句。

以上就是关于abap alv :当用户双击某一行数据时,d出一个窗口显示具体的明细信息。全部的内容,包括:abap alv :当用户双击某一行数据时,d出一个窗口显示具体的明细信息。、SAP ABAP 如何读取EXCEL数据到内表、关于abap 如何高效获取内表重复数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9494925.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存