|
可以根据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 |
|