screen的ALV的制作.docx
《screen的ALV的制作.docx》由会员分享,可在线阅读,更多相关《screen的ALV的制作.docx(16页珍藏版)》请在冰豆网上搜索。
screen的ALV的制作
screen的ALV的制作
alv的DATACHANGE方法用于双击和回车
方法:
CALLMETHODg_grid->check_changed_data可以修改屏幕中手工修改的字段到alv的内表中
用方法CALLMETHODg_grid->check_changed_data.还可以自由的触发DATACHANGE,比如在按钮中加上,则按下按钮时触发datachange
ALV的热连接方法时,要在字段WA-FIELD中定义WA_FIELDS-HOTSPOT='X'."____________________
在200中的本地Z_YW_SCREEN_ALV
代码:
*&---------------------------------------------------------------------*
*&ReportZ_YW_SCREEN_ALV*
*&*
*&---------------------------------------------------------------------*
*&*
*&*
*&---------------------------------------------------------------------*
"做屏幕的区域时,用右下角有个c标志的区域选择按钮
REPORTZ_YW_SCREEN_ALV.
INCLUDEZ_YWSCREEN_ALV_TOP.
INCLUDEZ_YW_SCREEN_ALV_CLASS.
start-of-selection.
PERFORMGET_DATA.
CALLSCREEN100.
INCLUDEZ_YW_SCREEN_ALV_STATUS_0100O01.
INCLUDEZ_YW_SCREEN_ALV_USER_COMMANI01.
INCLUDEMY_FORM.
Z_YWSCREEN_ALV_TOP.
*&---------------------------------------------------------------------*
*&____Z_YWSCREEN_ALV_TOP*
*&---------------------------------------------------------------------*
TABLES:
ZTCAT.
INCLUDE.
DATA:
IT_MY_ZTCATLIKEZTCAT.
DATA:
IT_ZTCATLIKETABLEOFIT_MY_ZTCATWITHHEADERLINE.
*ALV_________定义
DATAg_containerTYPEREFTOcl_gui_custom_container."______
DATA:
g_gridTYPEREFTOcl_gui_alv_grid,
it_fieldcatTYPElvc_t_fcat,
it_excludeTYPEui_functions,
is_layoutTYPElvc_s_layo.
DATA:
x_save,"forParameterI_SAVE
ls_layoutTYPEdisvariant."forparameterIS_VARIANT
**f_titleTYPELVC_TITLE."ALV______标题
CLASSlcl_alv_receiverDEFINITIONDEFERRED.
DATA:
g_alv_applicationTYPEREFTOlcl_alv_receiver."________
"alv的见面创建和事件定义处理
***********************************SCREEN
SELECTION-SCREENBEGINOFBLOCKradio
WITHFRAMETITLEtext-005.__
PARAMETERS:
SE_PERIDLIKEZTCAT-PERIDOBLIGATORYMEMORYIDzperid.
SELECT-OPTIONSSE_BOOKCFORZTCAT-BOOKC.
SELECTION-SCREENENDOFBLOCKradio.
Z_YW_SCREEN_ALV_CLASS
*&---------------------------------------------------------------------*
*&____Z_YW_SCREEN_ALV_CLASS*
*&---------------------------------------------------------------------*
CLASSlcl_ALV_receiverDEFINITION."________
PUBLICSECTION.
METHODS:
handle_double"双击
FOREVENTdouble_clickOFcl_gui_alv_grid
IMPORTINGe_rowe_columnes_row_no,
handle_toolbar
FOREVENTtoolbarOFcl_gui_alv_grid"TOOLBAR
IMPORTINGe_objecte_interactive,
handle_user_command"____toolbar__UCOMM
FOREVENTuser_commandOFcl_gui_alv_grid
IMPORTINGe_ucomm,
handle_menu_button“子菜单
FOREVENTmenu_buttonOFcl_gui_alv_grid
IMPORTINGe_objecte_ucomm,
handle_data_changed“数据改变
foreventdata_changedofcl_gui_alv_grid
importinger_data_changed.
ENDCLASS."lcl_event_receiverDEFINITION
*&---------------------------------------------------------------------*
*&Class(Implementation)lcl_event_receiver
*&---------------------------------------------------------------------*
*Text
*----------------------------------------------------------------------*
CLASSlcl_ALV_receiverIMPLEMENTATION."__________
*-----------------------------------------------------------------
METHODhandle_double.
*ifsy-dynnr='0100'.
*READTABLEit_MAININTOit_MAININDEXe_row-index.
*IFsy-subrc=0.
*PERFORMDETAIL_DATA.
*PERFORMDISPLAY_DETAIL_ALV.
*ENDIF.
*elseifsy-dynnr='0200'.
*readtableit_double_clickintoit_double_clickINDEXe_row-index.
*ifsy-subrc=0.
*CLEAR:
F_PERID,F_KNORD.
*f_perid=p_perid.
*f_knord=it_double_click-knord.
*setparameterid'ZPERID'FIELDF_PERID.
*SETPARAMETERID'ZORDER'FIELDF_KNORD.
*CALLTRANSACTION'ZBD002_03'ANDSKIPFIRSTSCREEN.
*endif.
*endif.
ENDMETHOD."HANDLE_double
*-----------------------TOOLBAR------------------------------------*
METHODhandle_toolbar.
*?
2.IneventhandlermethodforeventTOOLBAR:
Appendownfunctions
*byusingeventparameterE_OBJECT.
DATA:
ls_toolbarTYPEstb_button.
*....................................................................
*E_OBJECTofeventTOOLBARisoftypeREFTOCL_ALV_EVENT_TOOLBAR_SET.
*Thisclasshasgotoneattribute,namlyMT_TOOLBAR,which
*isatableoftypeTTB_BUTTON.Onelineofthistableis
*definedbytheStructureSTB_BUTTON(seedatadeklarationabove).
*
*AremarktotheflagE_INTERACTIVE:
*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*'e_interactive'isset,ifthiseventisraiseddueto
*thecallof'set_toolbar_interactive'bytheuser.
*Youcandistinguishthiswayiftheeventwasraised
*byyourselforbyALV
*(e.g.inmethod'refresh_table_display').
*Anapplicationofthisfeatureisstillunknown...:
-)
*____________________
*__________ALV____
把需要的引掉
*DELETEe_object->mt_toolbarWHEREFUNCTION='&MB_SUM'.
*DELETEe_object->mt_toolbarWHEREFUNCTION='&MB_SUBTOT'.
DELETEe_object->mt_toolbarWHEREFUNCTION='&&SEP05'.
DELETEe_object->mt_toolbarWHEREFUNCTION='&PRINT_BACK'.
*DELETEe_object->mt_toolbarWHEREFUNCTION='&MB_VIEW'.
*DELETEe_object->mt_toolbarWHEREFUNCTION='&COL0'.
DELETEe_object->mt_toolbarWHEREFUNCTION='&&SEP06'.
DELETEe_object->mt_toolbarWHEREFUNCTION='&GRAPH'.
DELETEe_object->mt_toolbarWHEREFUNCTION='&&SEP07'.
DELETEe_object->mt_toolbarWHEREFUNCTION='&INFO'.
DELETEe_object->mt_toolbarWHEREFUNCTION=''.
DELETEe_object->mt_toolbarWHEREFUNCTION='&&SEP00'.
DELETEe_object->mt_toolbarWHEREFUNCTION='&CHECK'.
DELETEe_object->mt_toolbarWHEREFUNCTION='&LOCAL&CUT'.
DELETEe_object->mt_toolbarWHEREFUNCTION='&LOCAL©'.
DELETEe_object->mt_toolbarWHEREFUNCTION='&LOCAL&PASTE'.
DELETEe_object->mt_toolbarWHEREFUNCTION='&LOCAL&APPEND'.
DELETEe_object->mt_toolbarWHEREFUNCTION='&LOCAL&INSERT_ROW'.
DELETEe_object->mt_toolbarWHEREFUNCTION='&LOCAL&DELETE_ROW'.
DELETEe_object->mt_toolbarWHEREFUNCTION='&LOCAL&UNDO'.
*DELETEe_object->mt_toolbarWHEREFUNCTION='&MB_SUM'.
*DELETEe_object->mt_toolbarWHEREFUNCTION='&MB_SUBTOT'.
DELETEe_object->mt_toolbarWHEREFUNCTION='&MB_VIEW'.
DELETEe_object->mt_toolbarWHEREFUNCTION='&GRAPH'.
DELETEe_object->mt_toolbarWHEREFUNCTION='&INFO'.
DELETEe_object->mt_toolbarWHEREFUNCTION='&LOCAL©_ROW'.
DELETEe_object->mt_toolbarWHEREFUNCTION='&REFRESH'.
"____________________________________________
*IFSY-TCODE<>'ZBD002_22'ANDSY-TCODE<>'ZBD002_23'.
**________
*CLEARls_toolbar.
*MOVE3TOls_toolbar-butn_type.
*APPENDls_toolbarTOe_object->mt_toolbar.
*CLEARls_toolbar.
*MOVE'A_AVERAGE'TOls_toolbar-function.
*MOVEicon_used_relationTOls_toolbar-icon.
*MOVE'____________________________'(114)TOls_toolbar-quickinfo.
*MOVE1TOls_toolbar-butn_type.
*MOVE''TOls_toolbar-disabled.
*APPENDls_toolbarTOe_object->mt_toolbar.
*ENDIF.
*________alv________按钮
DEFINEset_toolbar.“宏定义
clearls_toolbar.
move&1tols_toolbar-function.
move&2tols_toolbar-icon.
move&3tols_toolbar-butn_type."_____________按钮类型‘‘则不为父菜单
move&4tols_toolbar-quickinfo.
move''tols_toolbar-disabled.
appendls_toolbartoe_object->mt_toolbar.
END-OF-DEFINITION.
CLEARls_toolbar."______
MOVE'&&SEP07'TOls_toolbar-function.
MOVE3TOls_toolbar-butn_type.
APPENDls_toolbarTOe_object->mt_toolbar.
*____________按钮1
set_toolbar'CDOE_1'icon_mass_change1'MENU1'.
*____________按钮2
set_toolbar'CODE_2'icon_create2'MENU2'.
*____________按钮3
set_toolbar'&&SEP08'''3''."______”分隔符
*____________按钮4
set_toolbar'COPY'icon_employee'''MENU4'.
ENDMETHOD."handle_toolbar
*---------------user_command-----------------------------------*
"__________________________________________________
METHODhandle_user_command.
*?
3.IneventhandlermethodforeventUSER_COMMAND:
Queryyour
*functioncodesdefinedinstep2andreactaccordingly.
*DATA:
lt_rowsTYPElvc_t_row.
*DATA:
f_linesTYPEi.
*DATA:
F_rcTYPEI.
*CASEe_ucomm.
*WHEN'AVERAGE'.
***1____________
*DATA:
F_TEMP_MENGE(5).
*PERFORMGET_SCREEN_MENGE.
*F_TEMP_MENGE=F_ALL_MENGE.
*CONCATENATE'________________'F_TEMP_MENGE'________'
*INTOF_TEXT2.
*F_KJ_TEXT=F_TEXT2.
*PERFORMGET_AVERAGE.
*CALLMETHODcl_gui_cfw=>set_new_ok_code"________PBO__PAI
*EXPORTING
*new_code='&REFRESH'
*IMPORTING
*rc=F_rc.
*
*WHEN'A_AVERAGE'.
*PERFORMGET_SCREEN_MENGE.
*F_TEMP_MENGE=F_ALL_MENGE.
*CONCATENATE'________________'F_TEMP_MENGE'________'
*INTOF_TEXT1.
*F_KJ_TEXT=F_TEXT1.
*PERFORMGET_A_AVERAGE.
*CALLMETHODcl_gui_cfw=>set_new_ok_code
*EXPORTING
*new_code='&REFRESH'
*IMPORTING
*rc=F_rc.
*WHEN'ALL_LINES_BFB'.
*F_KJ_TEXT=F_TEXT4.
*PERFORMSUB_ALL_BFB.
*CALLMETHODcl_gui_cfw=>set_new_ok_code
*EXPORTING
*new_code='&REFRESH'
*IMPORTING
*rc=F_rc.
*WHEN'ALL_LINES'.
*F_KJ_TEXT=F_TEXT3.
*PERFORMSUB_ALL."________________,____________________
*CALLMETHODcl_gui_cfw=>set_new_ok_code
*EXPORTING
*new_code='&REFRESH'
*IMPORTING
*rc=F_rc.
*ENDCASE.
ENDMETHOD."lcl_event_receiver
*-------------------------------------------------------------------
METHODhandle_menu_button.
"____________________________________________
*?
3.AteventMENU_BUTTONqueryyourfunctioncodeanddefinea
*menuinthesamewayasacontextmenu.
*..........
*PartII:
Evaluate'e_ucomm'toseewhichmenubuttonofthetoolbar
*hasbeenclickedon.
*Definethenthecorrespondingmenu.
*Themenucontainsfunctioncodesthatareevaluated
*in'handle_user_command'.
*...........
*querye_ucommtofindoutwhichmenubuttonhasbeenclickedon
**1____________
*PERFORMGET_SCREEN_MENGE.
*
***
*DATA:
F_TEMP_MENGE(5).
*F_TEMP_MENGE=F_ALL_MENGE.
*IFe_ucomm='A_AVERAGE'.
*CONCATENATE'________________'F_TEMP_MENGE'____________'INTO
*F_TEXT1.
*CALLMETHODe_object->add_function
*EXPOR