【实用】ABAP ALV单元格修改信息提示
ABAP日常開發中經常會用到ALV OO(CL_GUI_ALV_GRID)進行清單顯示,其中對指定單元格進行操作也是日常必備技能,比如下圖中的需求,對指定單元格的“原因代碼”列進行修改,校驗值的有效性,給出如下所示的提示框,若校驗不通過,恢復原值。
類的定義與實現
CLASS?lcl_event_receiver?DEFINITION.
??PUBLIC?SECTION.
????METHODS?:?handle_data_changed
?????????????????FOR?EVENT?data_changed?OF?cl_gui_alv_grid
?????????????????IMPORTING?er_data_changed.
ENDCLASS.??
CLASS?lcl_event_receiver?IMPLEMENTATION.
??METHOD?handle_data_changed.
????PERFORM?data_changed??USING?er_data_changed.
??ENDMETHOD.????????????????????"handle_data_changed
ENDCLASS.??
校驗代碼
FORM?DATA_CHANGED??USING????P_ER_DATA_CHANGED
???????????????????TYPE?REF?TO?CL_ALV_CHANGED_DATA_PROTOCOL.
??DATA?:?LS_MODI????????TYPE?LVC_S_MODI.?
??DATA?:?L_MSSG?TYPE?CHAR100.? ??
*CELL?MODIFY
??LOOP?AT?P_ER_DATA_CHANGED->MT_GOOD_CELLS?INTO?LS_MODI.
????CASE?LS_MODI-FIELDNAME.
??????WHEN?'ZCAUSE'.
????????CLEAR?GT_LIST.
????????READ?TABLE?GT_LIST?INDEX?LS_MODI-ROW_ID.
????????IF?LS_MODI-VALUE?IS?NOT?INITIAL?.
??????????SELECT?SINGLE?*
????????????FROM?ZMM001
????????????WHERE?ZCAUSE?=?LS_MODI-VALUE.
??????????IF?SY-SUBRC?NE?0.
????????????CLEAR?L_MSSG.
????????????CONCATENATE?LS_MODI-VALUE??'原因代碼不存在.'??INTO?L_MSSG.
????????????PERFORM?WS_MSG?USING?'E'?L_MSSG?TEXT-001 .
????????????CALL?METHOD?P_ER_DATA_CHANGED->MODIFY_CELL
??????????????EXPORTING
????????????????I_ROW_ID????=?LS_MODI-ROW_ID
????????????????I_FIELDNAME?=?LS_MODI-FIELDNAME
????????????????I_VALUE?????=?GT_LIST-ZCAUSE.
????????????CONTINUE.
??????????ELSE.
????????????GT_LIST-ZCAUSE?=?LS_MODI-VALUE.
??????????ENDIF.
????????ELSE.
??????????CLEAR?L_MSSG.
??????????CONCATENATE?LS_MODI-VALUE '原因代碼不能為空.'??INTO?L_MSSG.
??????????PERFORM?WS_MSG?USING?'E'?L_MSSG?TEXT-002 .
??????????CALL?METHOD?P_ER_DATA_CHANGED->MODIFY_CELL
????????????EXPORTING
??????????????I_ROW_ID????=?LS_MODI-ROW_ID
??????????????I_FIELDNAME?=?LS_MODI-FIELDNAME
??????????????I_VALUE?????=?GT_LIST-ZCAUSE.
??????????CONTINUE.
????????ENDIF.
????ENDCASE.
????MODIFY?GT_LIST?INDEX?LS_MODI-ROW_ID.
??ENDLOOP.
*"Alv?Style
??PERFORM?MAKE_ALV_STYLE.
*Refresh.
??PERFORM?REFRESH_TABLE_DISPLAY?USING?G_GRID.
*Refresh
??CALL?METHOD?CL_GUI_CFW=>FLUSH.
ENDFORM.????????????????????"?data_changed
消息提示框
*&---------------------------------------------------------------------*
*&??????Form??WS_MSG
*&---------------------------------------------------------------------*
FORM?WS_MSG??USING??P_TYPE??P_TEXT??P_TITLE.
??CALL?FUNCTION?'WS_MSG'
????EXPORTING
??????MSG_TYPE?=?P_TYPE
??????TEXT?????=?P_TEXT
??????TITL?????=?P_TITLE.
ENDFORM.????????????????????"?WS_MSG
?
?
總結
以上是生活随笔為你收集整理的【实用】ABAP ALV单元格修改信息提示的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【学习笔记】人类为什么最终选择了芯片
- 下一篇: 【实用】SAP MR8M校验增强