楼主: wpsl5168

关于ALV输出的可编辑字段的保存问题

[复制链接]
论坛徽章:
21
奥运会纪念徽章:皮划艇静水
日期:2008-08-14 10:04:33马上有房
日期:2014-02-18 16:42:022014年新春福章
日期:2014-02-18 16:42:022013年新春福章
日期:2013-02-25 14:51:24茶鸡蛋
日期:2012-03-24 08:37:212012新春纪念徽章
日期:2012-01-04 11:53:29鲜花蛋
日期:2011-11-07 10:41:07ITPUB十周年纪念徽章
日期:2011-11-01 16:23:26ITPUB季度 技术新星
日期:2011-08-31 15:27:58咸鸭蛋
日期:2011-07-07 14:25:18
11#
 楼主| 发表于 2009-6-1 11:36 | 只看该作者

使用道具 举报

回复
论坛徽章:
21
奥运会纪念徽章:皮划艇静水
日期:2008-08-14 10:04:33马上有房
日期:2014-02-18 16:42:022014年新春福章
日期:2014-02-18 16:42:022013年新春福章
日期:2013-02-25 14:51:24茶鸡蛋
日期:2012-03-24 08:37:212012新春纪念徽章
日期:2012-01-04 11:53:29鲜花蛋
日期:2011-11-07 10:41:07ITPUB十周年纪念徽章
日期:2011-11-01 16:23:26ITPUB季度 技术新星
日期:2011-08-31 15:27:58咸鸭蛋
日期:2011-07-07 14:25:18
12#
 楼主| 发表于 2009-6-1 15:57 | 只看该作者
可以根据DATA_CHANGED 获得单元格数据是否变化,但是如果要用到SAVE_TEXT的话,保存当前行的文本,是要对应当前行的OBJNR作为长文本保存时的对象,要怎么获取有变化的单元格所在单元格的另一个字段的值呢,等待高手~~~
*----------------------------------------------------------------------*
*       CLASS LCL_EVENT_RECEIVER DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS LCL_EVENT_RECEIVER DEFINITION.
  PUBLIC SECTION.
    METHODS:
      HANDLE_MODIFY
        FOR EVENT DATA_CHANGED OF CL_GUI_ALV_GRID
        IMPORTING ER_DATA_CHANGED.
ENDCLASS.                    "LCL_EVENT_RECEIVER DEFINITION
*----------------------------------------------------------------------*
*       CLASS LCL_EVENT_RECEIVER IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS LCL_EVENT_RECEIVER IMPLEMENTATION.

  METHOD  HANDLE_MODIFY.
    DATA        STBL      TYPE LVC_S_STBL.
    DATA: LS_GOOD TYPE LVC_S_MODI.

    PERFORM HANDLE_MODIFY USING ER_DATA_CHANGED.

  ENDMETHOD.                    "HANDLE_MODIFY

ENDCLASS.                    "LCL_EVENT_RECEIVER IMPLEMENTATION

FORM F_ALV_USER_COMMAND USING R_UCOMM     LIKE SY-UCOMM
                        RS_SELFIELD TYPE SLIS_SELFIELD.
  DATA L_TEMP LIKE LINE OF IT_PRINT_001.
  DATA C_TEMP(9) TYPE C.   "转类成字符型
  DATA L_TEMP2 LIKE LINE OF IT_PRINT_002.
  DATA: T_TEXT TYPE STANDARD TABLE OF TLINE"长文本信息
        INITIAL SIZE 1 WITH HEADER LINE.
  DATA: T_HEAD LIKE THEAD.
  DATA: T_HEAD1 LIKE THEAD.
  DATA L_FUNCTION.

  G_SELECTED_FIELD_VALUE =  RS_SELFIELD-VALUE.
  G_TABINDEX = RS_SELFIELD-TABINDEX.

  READ TABLE IT_PRINT_001 INTO L_TEMP INDEX G_TABINDEX.
  READ TABLE IT_PRINT_002 INTO L_TEMP2 INDEX G_TABINDEX.

  CASE R_UCOMM.
    WHEN '&IC1'.

   ENDCASE.

  DATA: TEM_GRID TYPE REF TO CL_GUI_ALV_GRID.
  CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
    IMPORTING
      E_GRID = TEM_GRID.

* 設定 鼠标离开 事件
  CALL METHOD TEM_GRID->REGISTER_EDIT_EVENT
    EXPORTING
      I_EVENT_ID = CL_GUI_ALV_GRID=>MC_EVT_MODIFIED
    EXCEPTIONS
      ERROR      = 1
      OTHERS     = 2.

  DATA: GT_EVENT_RECEIVER TYPE REF TO LCL_EVENT_RECEIVER .
  CREATE OBJECT GT_EVENT_RECEIVER.
  SET HANDLER GT_EVENT_RECEIVER->HANDLE_MODIFY FOR TEM_GRID.
ENDFORM.                    "F_ALV_USER_COMMAND


*&---------------------------------------------------------------------*
*&      Form  HANDLE_MODIFY
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_ER_DATA_CHANGED  text
*----------------------------------------------------------------------*
FORM HANDLE_MODIFY  USING    P_ER_DATA_CHANGED
                      TYPE REF TO CL_ALV_CHANGED_DATA_PROTOCOL.

  DATA:MOD_DATA TYPE LVC_T_MODI,
       WA_MOD_DATA TYPE LVC_S_MODI.
  DATA: T_TEXT TYPE STANDARD TABLE OF TLINE"长文本信息
       INITIAL SIZE 1 WITH HEADER LINE.
  DATA: T_HEAD LIKE THEAD.
  DATA: T_HEAD1 LIKE THEAD.
  DATA L_FUNCTION.
  MOD_DATA = P_ER_DATA_CHANGED->MT_MOD_CELLS.
  LOOP AT MOD_DATA INTO WA_MOD_DATA .
  IF WA_MOD_DATA-FIELDNAME = 'L_T15TEXT'.
    REFRESH T_TEXT.
    T_TEXT-TDFORMAT = 'TX'.
    T_TEXT-TDLINE = WA_MOD_DATA-VALUE .
    APPEND T_TEXT.

    CLEAR T_HEAD.
    T_HEAD-TDOBJECT = 'VBBP'.
    T_HEAD-TDNAME = L_TEMP-OBJNR.   "怎么获取当前行的值呢
   T_HEAD-TDID = '0017'.
    T_HEAD-TDSPRAS = '1'.
    T_HEAD-TDFORM = 'SYSTEM'.
    CALL FUNCTION 'SAVE_TEXT'
    EXPORTING
      CLIENT = SYST-MANDT
      HEADER = T_HEAD
      SAVEMODE_DIRECT = 'X'
    IMPORTING
       FUNCTION = L_FUNCTION
       NEWHEADER = T_HEAD1
    TABLES
      LINES    = T_TEXT
    EXCEPTIONS
      ID        = 1
      LANGUAGE  = 2
      NAME      = 3
      OBJECT    = 4.
    IF L_FUNCTION <> 'I' AND L_FUNCTION <> 'U'.
          MESSAGE E029 WITH L_TEMP-OBJNR.
    ELSE.
      MESSAGE S030.
    ENDIF.

  
  ENDIF.
  ENDLOOP.
ENDFORM.                    " HANDLE_MODIFY

使用道具 举报

回复
论坛徽章:
4
2009新春纪念徽章
日期:2009-01-04 14:52:282009日食纪念
日期:2009-07-22 09:30:002010新春纪念徽章
日期:2010-03-01 11:19:532011新春纪念徽章
日期:2011-02-18 11:43:34
13#
发表于 2009-6-2 09:16 | 只看该作者
在这个贴子中学到了不少.

使用道具 举报

回复
论坛徽章:
8
授权会员
日期:2008-02-29 14:46:02生肖徽章2007版:猪
日期:2008-03-13 16:46:59奥运会纪念徽章:沙滩排球
日期:2008-08-28 17:37:39生肖徽章2007版:龙
日期:2009-04-16 20:53:16生肖徽章2007版:鼠
日期:2009-05-25 14:45:552011新春纪念徽章
日期:2011-02-18 11:42:472010广州亚运会纪念徽章:马术
日期:2011-03-30 09:25:572013年新春福章
日期:2013-02-25 14:51:24
14#
发表于 2009-6-2 09:20 | 只看该作者
read table tab into wa index WA_MOD_DATA-tabix.

使用道具 举报

回复
论坛徽章:
0
15#
发表于 2009-6-2 10:37 | 只看该作者
你好好看看你那段代码。尤其那个内表:MOD_DATA,其中的字段fieldname、value。

使用道具 举报

回复
论坛徽章:
21
奥运会纪念徽章:皮划艇静水
日期:2008-08-14 10:04:33马上有房
日期:2014-02-18 16:42:022014年新春福章
日期:2014-02-18 16:42:022013年新春福章
日期:2013-02-25 14:51:24茶鸡蛋
日期:2012-03-24 08:37:212012新春纪念徽章
日期:2012-01-04 11:53:29鲜花蛋
日期:2011-11-07 10:41:07ITPUB十周年纪念徽章
日期:2011-11-01 16:23:26ITPUB季度 技术新星
日期:2011-08-31 15:27:58咸鸭蛋
日期:2011-07-07 14:25:18
16#
 楼主| 发表于 2009-6-2 11:39 | 只看该作者
谢谢提示,再折腾去~~~

使用道具 举报

回复
论坛徽章:
1
参与WIN7挑战赛纪念
日期:2009-11-06 16:05:25
17#
发表于 2009-8-7 09:38 | 只看该作者
此贴极佳,狂顶

使用道具 举报

回复
论坛徽章:
3
2011新春纪念徽章
日期:2011-02-18 11:43:33蜘蛛蛋
日期:2013-07-08 20:40:07
18#
发表于 2009-8-13 08:37 | 只看该作者
記下

使用道具 举报

回复
论坛徽章:
74
懒羊羊
日期:2015-02-26 16:31:30天蝎座
日期:2015-07-20 14:31:13
19#
发表于 2009-8-13 11:06 | 只看该作者
原帖由 hezhong19831220 于 2009-6-2 10:37 发表
你好好看看你那段代码。尤其那个内表:MOD_DATA,其中的字段fieldname、value。


应该是这个内表里面,有个字段row_id,应该就是楼主想要的行号吧。

使用道具 举报

回复
论坛徽章:
3
2011新春纪念徽章
日期:2011-02-18 11:43:33蜘蛛蛋
日期:2013-07-08 20:40:07
20#
发表于 2010-7-29 20:57 | 只看该作者
mark

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表