ALV中自定义按钮

合集下载

ALV自定义按钮

ALV自定义按钮

ALV自定义按钮Demo程序:ZTMP_CL003FM 的ALV需要自己添加按钮的话需要拷贝标准的STATUS状态栏在上面添加按钮。

STATUS 决定了如下图所示的部分。

首先进入T-CODE:SE38,点击如图所示的按钮展开对象的全部清单。

STANDARD_FULLSCREEN就是我们需要拷贝的状态栏。

右键拷贝状态栏。

、拷贝至我们的demo程序。

这时我们的demo程序ZTMP_CL003的GUI状态中就出现了我们拷贝的STATUS.下面的重点就是在这个STATUS里新加一个按钮,并在ALV中调用这个STATUS. 我试着添加一个功能码为&BDC的按钮。

在如图所示的位置添加,直接输入你想要的功能码。

输入完成后双击你设置的功能码就填出如图的窗口。

输入函数文本,信息文本,图标名称。

设置快捷按钮。

点勾即完成按钮的添加,下面就要在ALV中调用这个STATUS了。

调用ALV的FM中添加3个参数分别表示ALV回调程序,调用的FORM,一个是相应按钮一个设置状态。

DA TA g_repid TYPE sy-repid.g_repid = syst-repid.CALL FUNCTION'REUSE_ALV_GRID_DISPLAY'EXPORTING* I_INTERF ACE_CHECK = ' '* I_BYP ASSING_BUFFER = ' '* I_BUFFER_ACTIVE = ' 'i_callback_program = g_repidi_callback_user_command = 'F_USER_COMMAND'i_callback_pf_status_set = 'F_SETSTATUS'* I_CALLBACK_TOP_OF_P AGE = ' '* I_CALLBACK_HTML_TOP_OF_P AGE = ' '。

alv各种设置

alv各种设置

目录1.将得到并整理好的数据以ALV的形式显示出来 (4)1.1.在子FORM(这里如:F_FIELDS)指定需要显示的字段 (4)1.2.在子FORM(这里如:F_BUILD_LAYOUT)里设置ALV的全局属性 (5)1.3.在子FORM(这里如:F_DISPLAY)里将内表中的数据进行显示 (5)1.4.为ALV程序添加表头标题(这里以添加HTML表头标题为主) (6)1.4.1.在显示ALV的函数(REUSE_ALV_GRID_DISPLAY_LVC)里添加一个参数 (6)1.4.2.在子FORM(F_TOP_OF_PAGE)里定义好需要的变量 (6)1.4.3.准备好所需数据,如登录用户的描述、制表日期等 (6)1.4.4.将表头数据输出 (7)2.函数“REUSE_ALV_GRID_DISPLAY_LVC”中输入参数的应用 (8)2.1.排序 (8)2.1.1.在显示ALV的子FORM里定义排序用到的变量 (8)2.1.2.设置好需要排序的字段 (8)2.1.3.在显示ALV的函数的输入参数里添加排序的属性 (9)2.2.隐藏不必要的标准按钮 (9)2.2.1.先在显示ALV的子FORM里定义隐藏按钮用到的变量 (9)2.2.2.得到需要隐藏的标准按钮的“FCODE” (9)2.3.自定义“工具栏” (10)2.3.1.在显示ALV的函数的输入参数里指定自定义按钮的子FORM (10)3.热点链接、用户动作的捕捉、调用其他程序或标准事务程序 (11)3.1.在显示ALV的函数的输入参数里指定捕捉用户动作的子FORM (11)3.2.在“字段和列名”的子FORM(F_FIELDS)里,对需要链接的列添加“热点”属性 (11)3.3.操作代码 (12)3.4.显示具体细节 (13)3.5.调用其他事务 (15)3.6.打开并选择文件: (15)4.关于设置字段和列名的子FORM(F_FIELDS)的参数设置: (16)4.1.单列优化宽度 (16)4.2.单列求和或者取消求和,添加属性 (16)4.3.对其方式 (17)4.4.作为图标输出 (17)4.5.固定列和关键列 (17)4.6.列的字符宽度 (17)5.单元格的F1、F4帮助: (18)5.1.F1帮助: (18)5.2.F4帮助: (18)6.输入并保存、回调修改内表(输入时的小数位错位的问题、指定数据类型、小说位数) (18)7.界面颜色的更改 (20)7.1.更改单元格(字体)的前景、背景颜色 (20)7.2.更改行的颜色和列的颜色: (20)7.3.利用设置字段和列名子的FORM(F_FIELDS)里来设置列的颜色 (21)8.ALV自带的最左端复选框按钮和自定义复选框按钮 (21)8.1.ALV自带的复选框按钮: (21)8.2.自定义复选框按钮 (22)9.按照上传的模板格式导出为本地文件 (22)9.1.定义导出为EXCEL用到的数据变量 (22)9.2.上传模板 (22)9.3.代码 (23)10.为ALV标题添加图片 (28)10.1.上传图片 (28)10.2.在子FORM(F_TOP_OF_PAGE2)里的代码 (28)ALV:SAP LIST VIEW,一种比较美观的报表显示工具ALV用到的函数,目前我们有2个:REUSE_ALV_GRID_DISPLAY、REUSE_ALV_GRID_DISPLAY_LVC;两个函数都可以将数据用ALV的形式显示出来,只是方在一些小的地方有些不同。

ABAP 修改ALV 工具条--添加、移除按钮

ABAP 修改ALV 工具条--添加、移除按钮

ABAP 修改ALV 工具条--添加、移除按钮以下针对于FM:REUSE_ALV_GRID_DISPLAY的ALV,以添加一个按钮为例,修改OO ALV工具条的方式大致相同。

1、创建一个GUI status首先在程序中创建一个工具条,一般是希望在标准工具条基础上进行修改,可以到函数组SALV中copy标准GUI status到自己的程序下,假如copy过来名字改为0100.根据需要,添加自定义按钮、相应ICON和功能码BUTTON1,也可删除某些按钮不需要的按钮,保存激活。

2、在call function REUSE_ALV_GRID_DISPLAY时,传入参数I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS''SET_PF_STATUS'是一个Form的名字,可以任意写,然后在程序中添加'SET_PF_STATUS'这个Form,这其实是PBO过程,代码很简单,如下*&--------------------------------------------------------------------**& Form set_pf_status*&--------------------------------------------------------------------** text*---------------------------------------------------------------------*FORM SET_PF_STATUS USING RT_EXTAB TYPE SLIS_T_EXTAB.SET PF-STATUS '0100' .ENDFORM. "set_pf_status其实如果在第一步,没有删除按钮,而又不想显示出来的话,还可以在这个form中写代码滤掉,如下意思是不显示排序的两个按钮。

ooalv自定义按钮、单击、双击、列编辑切换的事件

ooalv自定义按钮、单击、双击、列编辑切换的事件
83.
84.gs_toolbar-function ='B_LIST'."为按钮分配功能码
85.gs_toolbar-quickinfo = '自定义下拉菜单'.
86.gs_toolbar-icon=icon_biw_report_view."为按钮分配图标
87.gs_toolbar-text='下拉菜单'."为按钮分配文本
35.CLASS alv_event_receiver DEFINITION DEFERRED. "声明类对象
36.*----------------------------------------------------------------------*
37.*CLASS alv_event_receiver DEFINITION
127.MESSAGE '请至少选择一行数据区打印!' TYPE 'E'. "E类型消息会转化为A类型,很蛋疼,求破!
128.ELSE.
129.PERFORM frm_print_data."这个没具体写。
130.ENDIF.
131.WHEN 'B_EDIT'.
132.IF grid->is_ready_for_input( ) EQ 0.
66.*&---------------------------------------------------------------------*
67.*Text
68.*----------------------------------------------------------------------*

ALV_GRID添加自定义的按钮和响应命令

ALV_GRID添加自定义的按钮和响应命令

在上面的代码例子里,我们增加了一个常规的按钮和一个含有菜单的按钮.通过把按钮的类型设置为1或者2,我们可以增加一个含有菜单的按钮,在事件menu_button还可以实现子菜单:FORM handle_menu_button USING i_object TYPE REF TO cl_ctmenuI_ucomm TYPE syucomm..CASE i_ucomm.WHEN ‘EXCH’.CALL METHOD i_object->add_functionEXPORTINGFcode = ‘EU’Text = ‘Euro’.CALL METHOD i_object->add_functionEXPORTINGFcode = ‘TRL’Text = ‘Turkish Lira’.ENDCASE.ENDFORM.为了实现这些自定义的按钮的功能,我们使用USER_COMMAND事件来处理.FORM handle_user_command USING i_ucomm TYPE syucomm.DATA lt_selected_rows TYPE lvc_t_rowid.DATA ls_selected_row TYPE lvc_s_roid.CALL METHOD gr_alvgrid->get_selected_rowsIMPORTINGEt_row_no = lt_selected_rows.READ TABLE lt_selected_rows INTO ls_selected_row INDEX 1.If sy-subrc ne 0.MESSAGE S000(su) WITH 'Select a row'(203).ENDIF.CASE i_ucomm.WHEN 'CAR'.READ TABLE gt_list INDEX ls_selected_row-row_id.IF sy-subrc = 0.CALL FUNCTION 'ZDISPLAY_CARRIER_INFO'EXPORTING carrid = gt_list-carridEXCEPTIONS carrier_not_found = 1Oters = 2.ENDIF.WHEN 'EU'.READ TABLE gt_list INDEX ls_selected_row-row_id.IF sy-subrc = 0.CALL FUNCTION 'ZPOPUP_CONV_CURR_ADD_DISPLAY'EXPORTING monun = 'EU'Quant = gt_list-paymentsum.ENDIF.ENDCASE.ENDFORM.我们通过方法get_selected_rows来获取选择的行.功能EXCH有2个子功能,所以我们不需要实现它.为了能显示ALV附加的一些功能,可以在ALV实例创建的时候调用set_toolbar_interactive方法.CALL METHOD gr_alv_grid->set_toolbar_interactive.(二)在alv_lst中加入按钮Add Button to ALV Toolbar with REUSE_ALV_LIST_DISPLAYHow to add button to ALV toolbar using REUSE_ALV_LIST_DISPLAY?In the program which calls ALV using REUSE_ALV_LIST_DISPLAY,I have to add a new button.I saw the demo program BCALV_GRID_08, which is written using ABAP-Controls.In that example, the button is added using TOOLBAR event of cl_gui_alv_grid.Could you help me to implement the same logic using REUSE_ALV_LIST_DISPLAY parameters.you should copy the 'STANDARD' GUI status from program SAPLKKBL using transaction SE90-->Programming SubObjects--> Gui Status.Execute this transaction to get to next screen. select status using checkbox. click on GUI Status -->Copy.Enter your Z program name and the name you what for this status - you can keep it as'STANDARD' to be simple.Then you can edit the new status to add or delete buttons. This will also bring in the standard SAPALV functionality such as sorting/subtotaling etc...When you call 'REUSE_ALV_GRID_DISPLAY' make sure you pass it the new status name.an example of one of mine:call function 'REUSE_ALV_GRID_DISPLAY'EXPORTINGi_callback_program = 'ZSDBOLST_REPORT'i_callback_pf_status_set = 'STANDARD' <---------i_callback_user_command = 'USER_COMMAND'i_structure_name = 'I_BOLACT'i_grid_title = 'BOL Action Report'(031)is_layout = gs_layoutit_fieldcat = gt_fieldcat[]i_save = 'A'is_variant = v_variantTABLESt_outtab = i_bolactEXCEPTIONSprogram_error = 1others = 2.I just tried the same procedure ,but my entire application toolbar disappeared and a lock iconappears next to the application toolbar in my copied pf-status.Could you advice what might have gone wrong ?As identified with the FM's help you can do the following.1). Using SE80 (I think) you can copy a GUI status from one program to another. It mentions whichone in the FM's help.2). Create a form named like so:Code:****************************************************************** Form Set_pf_status* Notes: Called by FM REUSE_ALV_GRID_DISPLAY*****************************************************************FORM set_pf_status USING rt_extab TYPE slis_t_extab.SET PF-STATUS 'ZSTANDARD'.ENDFORM. "Set_pf_statusIn the above case the GUI status copied was named ZSTANDARD and adjusted accordingly, adding and removing the desired buttons. A button was added called '%DELETE'.3). Create the following report:Code:****************************************************************** Form User_command* Notes: Called by FM REUSE_ALV_GRID_DISPLAY* Detects whether the icon/button for* 'Return Tag Deletion' has been pressed. If it has then* detect whether any rows have been highlighted and then* set the delete flag.*****************************************************************FORM user_command USING r_ucomm LIKE sy-ucommrs_selfield TYPE slis_selfield.DATA: li_count TYPE I.IF r_ucomm EQ '%DELETE'.LOOP AT %g00 WHERE mark EQ 'X'.ADD 1 TO li_count.ENDLOOP.IF li_count GT 0.gc_delete_flag = 'X'.r_ucomm = '&F03'. "Back arraowELSE.MESSAGE W000 WITH 'Please highlight the rows to be deleted!'.ENDIF.ENDIF.ENDFORM. "User_commandAs I've added an extra button to indicate which records should be deleted I need to identify a form to be called to process when this button is chosen.Then when you call the ALV function you to specify the following extra details:Code:call function 'REUSE_ALV_GRID_DISPLAY'exporting i_callback_program = gc_repidI_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'I_CALLBACK_USER_COMMAND = 'USER_COMMAND'i_grid_title = lc_grid_titleis_layout = lc_layoutit_fieldcat = gt_fieldcatit_sort = sorti_save = l_saveis_reprep_id = l_bbs_idis_variant = l_varianttables t_outtab = %g00exceptions program_error = 1others = 2.The parameters in capitals are the extra ones that need to be added。

自定义ALV工具条

自定义ALV工具条

⾃定义ALV⼯具条默认输出的ALV已供了很多标准的按钮了:⾃定义ALV⼯具栏有两种⽅式:第⼀处是⾃已创建⼀个GUI Status(通常作法是从SLVC_FULLSCREEN函数组中的拷贝STANDARD_ FULLSCREENGui Status,再在此基础之上新增按钮即可);第⼆种是调⽤系统已定义好的标准ALV⼯具栏;系统已定义好的标准ALV GUI Status 在程序SAPLKKBL中,可以通过SET PF-STATUS … OF PROGRAM语句直接来调⽤,如:SET PF-STATUS 'STANDARD_FULLSCREEN' OF PROGRAM 'SAPLKKBL'.SAPLKKBL程序中定义的系统标准的ALV GUI Status有以下⼏种:l STDPOPBX_FULLSCREENl STDPOPUP_FULLSCREENl STANDARD_FULLSCREEN 与SLVC_FULLSCREEN函数组中的STANDARD_FULLSCREEN是⼀样的,都是标准的(函数组SA LV中的STANDARDstatus也是标准的)l STDPOPBX_FULLSCREENl STDPOPUP_FULLSCREENl STANDARD_FULLSCR_HRl STDPOPBX_FS_LIGHTl STDPOPUP_FS_LIGHTl STD_LIGHT_FULLSCREEN这些⼯具条中的按钮都已经设置了Function Code,且都是保留字,这些Funcode都已经在ALV Guid控件中实现,不需得新分配Funcod e功能代码,按钮默认功能码:ALV中⾃定义⼯具栏需要通过REUSE_ALV_GRID_DISPLAY函数的I_CALLBACK_PF_STATUS_SET参数,传递设置GUI Status的For m的名称,在此Form使⽤SET PF-STATUS语句来重新定义ALV⼯具栏,该Form接⼝如下:FORM set_pf_status USING rt_extab TYPE slis_t_extabrt_extab是要排除掉的按钮,根据Funcode来排除。

ALV功能总结

ALV功能总结

ALV功能总结一.关于FUNCTION 'REUSE_ALV_GRID_DISPLAY'常用参数说明及用法REPORT Z_ALV_TEST01NO STANDARD PAGE HEADINGMESSAGE-ID ZX.*** Global Data declearINCLUDE Z_ALV_TEST01TOP.INCLUDE Z_ALV_TEST01F01.*** initial dataINITIALIZATION.*** prepare report dataSTART-OF-SELECTION.perform get_data.perform alv_show.*** output reportEND-OF-SELECTION.*&---------------------------------------------------------------------**& Include Z_ALV_TEST01TOP*&---------------------------------------------------------------------*TABLES:MARA,MBEW,EKPO,MAKT.SELECT-OPTIONS:S_MATNR FOR MARA-MATNR.DATA:BEGIN OF IT_MATNR OCCURS 0,BOX TYPE C,"用来控制输出画面左测的可选择该行,如果选中某行,则该栏位值为‘X’ MATKL LIKE MARA-MATKL,MATNR LIKE MARA-MATNR,MTART LIKE MARA-MTART,MAKTX LIKE MAKT-MAKTX,MEINS LIKE MARA-MEINS,MBRSH LIKE MARA-MBRSH,MENGE LIKE EKPO-MENGE,END OF IT_MATNR.TYPES:BEGIN OF WA_MATNR,MATKL LIKE MARA-MATKL,MATNR LIKE MARA-MATNR,MTART LIKE MARA-MTART,MAKTX LIKE MAKT-MAKTX,MEINS LIKE MARA-MEINS,MBRSH LIKE MARA-MBRSH,MENGE LIKE EKPO-MENGE,END OF WA_MATNR.DATA:IT_MATNR_OLD LIKE IT_MATNR OCCURS 0 WITH HEADER LINE.FIELD-SYMBOLS <MATNR> TYPE WA_MATNR.TYPE-POOLS: slis.DATA: it_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE,lt_sort TYPE slis_t_sortinfo_alv WITH HEADER LINE,it_events TYPE slis_t_event,lt_event_exit TYPE slis_t_event_exit,ls_event_exit TYPE slis_event_exit,pt_top_of_page TYPE slis_t_listheader,gs_print TYPE slis_print_alv,gs_layout TYPE slis_layout_alv .*&-------------------------------------------------------------------*& Include Z_ALV_TEST01F01*&-------------------------------------------------------------------*& Form get_data*&-------------------------------------------------------------------FORM get_data .SELECT *INTO CORRESPONDING FIELDS OF TABLE IT_MATNRFROM MARAWHERE MATNR IN S_MATNR.LOOP AT IT_MATNR.SELECT SINGLE MENGEINTO IT_MATNR-MENGEFROM EKPOWHERE MATNR = IT_MATNR-MATNR.SELECT SINGLE MAKTXINTO IT_MATNR-MAKTXFROM MAKTWHERE MATNR = IT_MATNR-MATNRAND SPRAS = 'M'.MODIFY IT_MATNR.ENDLOOP.IT_MATNR_OLD[] = IT_MATNR[].ENDFORM. " get_data*&-------------------------------------------------------------------*& Form set_pf_status*&-------------------------------------------------------------------FORM set_pf_status USING rt_extab TYPE slis_t_extab.SET PF-STATUS 'ALV_PF_STATUS'.ENDFORM. "Set_pf_status此FORM的作用是在标准的ALV工具栏上添加自定义的按钮该名称必须和FUNCTION 参数I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'对应起来,即FORM的名称和变量名称要一样.GUI STATUS 'ALV_PF_STATUS'是自己定义的,因为自定义后会把标准的ALV工具栏覆盖,所以还要把标准工具栏复制过来.方法如下:T-CODE :SE90 Program Library-- GUI Statusprogram name:SAPLKKBL GUI Status:STANDARD_FULLSCREEN 标准的ALV工具栏名称,F8运行,选择菜单栏GUI Status---COPY,最后输入你的程序名以及你自定义的GUI Status名,此例即为ALV_PF_STATUS,再添加按钮.*&-------------------------------------------------------------------*& Form ALV_USER_COMMAND*&-------------------------------------------------------------------* -->R_UCOMM text* -->RS_SELFIELD text*----------------------------------------------------------------------*form ALV_USER_COMMAND using r_ucomm like sy-ucommrs_selfield type slis_selfield. "响应ALV点击自定义按钮之后的事件case r_ucomm.when 'EXIT2'. "在set pf-status '9100'.的屏幕状态里面自定义的按钮名称LEAVE TO SCREEN 0.WHEN '&DATA_SAVE'. "修改屏幕字段物料描述MAKTX,此时的&DATA_SAVE是标准GUI的参数,I_CALLBACK_PF_STATUS_SET 不要进行设置LOOP AT IT_MATNR.READ TABLE IT_MATNR_OLD ASSIGNING <MATNR>WITH KEY MATNR = IT_MATNR-MATNR.CHECK IT_MATNR-MAKTX <> <matnr>-MAKTX.UPDATE MAKT SET MAKTX = IT_MATNR-MAKTX WHERE MATNR = IT_MATNR -MATNRAND SPRAS = 'M'.ENDLOOP.WHEN '&IC1'."表示双击CHECK rs_selfield-tabindex > 0.READ TABLE IT_MATNR INDEX rs_selfield-tabindex.SET PARAMETER ID : 'MAT' FIELD IT_MATNR-MATNR.CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.endcase.rs_selfield-fieldname表示双击的字段名,有时候有用.endform. "ALV_USER_COMMAND*&---------------------------------------------------------------------**& Form alv_show*&---------------------------------------------------------------------*FORM alv_show .PERFORM prepare_alv_field. "设置屏幕输出拦位的描述和格式PERFORM eventtab_build USING it_events[]."触发ALV事件,比如TOP_OF_PAGE, ALV_END_OF_LIST, ALV_END_OF_PAGEPERFORM build_sortcat. "设置排序和分类汇总PERFORM build_layout. "设置输出格式PERFORM build_eventexit."设置ALV按钮增强功能CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'EXPORTINGi_callback_program = sy-cprog/SY-REPID "程式名称i_background_id = 'ALV_BACKGROUND'I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'"如果ALV使用自定义的工具栏,如果使用系统工具栏则忽略该行I_CALLBACK_USER_COMMAND = 'ALV_USER_COMMAND' "自定义工具栏的事件* I_CALLBACK_TOP_OF_PAGE = GT_LIST_TOP_OF_PAGE[] I_CALLBACK_HTML_TOP_OF_PAGE = 'ALV_TOP_OF_PAGE'"自定义ALV 表头使用HTML语言对表头的输出格式进行控制,包括输出文字的大小,字体及颜色等,总之在HTML语言中能实现的在这里都能实现.具体实现见FORM ALV_TOP_OF_PAGE 当I_CALLBACK_TOP_OF_PAGE和I_CALLBACK_HTML_TOP_OF_PAGE同时设置时,只有I_CALLBACK_HTML_TOP_OF_PAGE起作用.it_fieldcat = it_fieldcat[]"必须要设置的参数,设定输出目录it_events = it_events[] "如果有事件触发* i_structure_name = 'it_matnr'i_save = 'A' "保存样式is_layout = gs_layout "对输出样式的设定is_print = gs_printit_sort = lt_sort[]"如果有排序和分类汇总,需要该行TABLESt_outtab = it_matnr"ALV输出的内表EXCEPTIONSprogram_error = 1OTHERS = 2.ENDFORM. " alv_show*&---------------------------------------------------------------------**& Form prepare_alv_field*&---------------------------------------------------------------------*FORM prepare_alv_field.DEFINE m_fieldcat.it_fieldcat-fieldname = &1. "输出字段名,注意一定要是大写it_fieldcat-reptext_ddic = &2. "输出显示的文字说明* it_fieldcat-col_pos = &3. "输出的位置,即第几列* it_fieldcat-outputlen = &4. "该显示文字所占的字长it_fieldcat-emphasize = &3. "设置输出的颜色it_fieldcat-edit = &4. "设置为可编辑字段,可进行修改append it_fieldcat.END-OF-DEFINITION.m_fieldcat 'MATKL' '物料群組' 'C110' ''.m_fieldcat 'MATNR' '物料' 'C210' ''.m_fieldcat 'MTART' '物料类型' 'C310' ''.m_fieldcat 'MBRSH' '行业领域' 'C410' ''.m_fieldcat 'MEINS' '基本计量单位' 'C510' ''.m_fieldcat 'MENGE' '数量' 'C610' ''.m_fieldcat 'MAKTX' '物料描述' '' 'X'.ENDFORM. " prepare_alv_field*&---------------------------------------------------------------------**& Form ALV_TOP_OF_PAGE*&---------------------------------------------------------------------*FORM alv_top_of_page USING cl_dd TYPE REF TO cl_dd_document.DATA: m_p TYPE i.DATA: m_buff TYPE string.*表头其实完全可以是一个html文件,自己使用html语言进行格式控制m_buff = '<html>'.CALL METHOD cl_dd->html_insertEXPORTINGcontents = m_buffCHANGINGposition = m_p.*m_buff = '<left><H2>配件报废品种汇总表</H2></left>'.m_buff = '<H4>配件报废品种汇总</H4>'.CALL METHOD CL_DD->HTML_INSERTEXPORTINGCONTENTS = m_buffCHANGINGPOSITION = m_p.m_buff = sy-datum.CALL METHOD CL_DD->HTML_INSERTEXPORTINGCONTENTS = m_buffCHANGINGPOSITION = m_p.m_buff = '</html>'.CALL METHOD cl_dd->html_insertEXPORTINGcontents = m_buffCHANGINGposition = m_p.ENDFORM.*&---------------------------------------------------------------------**& Form build_sortcat*&---------------------------------------------------------------------*FORM build_sortcat .CLEAR lt_sort. "此部分用于排序和分类汇总MOVE 1 TO lt_sort-spos.lt_sort-fieldname = 'MATKL'. "表示按照该栏位名来汇总lt_sort-up = 'X'. "表示按照上面栏位升序排列lt_sort-subtot = 'X'.APPEND lt_sort.CLEAR lt_sort.lt_sort-spos = 1.lt_sort-fieldname = 'MATNR'.lt_sort-down = 'X'.lt_sort-subtot = 'X'.APPEND lt_sort.ENDFORM. " build_sortcat*&---------------------------------------------------------------------**& Form build_layout*&---------------------------------------------------------------------*FORM build_layout .gs_layout-totals_text = 'totals'.gs_layout-zebra = 'X'.gs_layout-no_vline = 'X'.gs_layout-colwidth_optimize = 'X'."自动设置宽度gs_layout-detail_popup = 'X'.gs_layout-detail_initial_lines = 'X'.gs_layout-detail_titlebar = 'Detail Title Bar'.gs_layout-box_fieldname = 'BOX'. "用来控制输出画面左测的可选择该行,如果选中某行,则该栏位值为‘X’ENDFORM. " build_layout*&---------------------------------------------------------------------**& Form TOP_OF_PAGE*&---------------------------------------------------------------------*FORM TOP_OF_PAGE.DATA: ls_line TYPE slis_listheader.CLEAR pt_top_of_page[].CLEAR ls_line.ls_line-typ = 'H'.SELECT SINGLE butxt INTO ls_line-infoFROM t001WHERE bukrs = '3000'.APPEND ls_line TO pt_top_of_page.CLEAR ls_line.ls_line-typ = 'S'.ls_line-key = 'TITLE'.ls_line-info = sy-title.APPEND ls_line TO pt_top_of_page.CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'EXPORTINGit_list_commentary = pt_top_of_page.ENDFORM.*---------------------------------------------------------------------** FORM alv_end_of_list **---------------------------------------------------------------------*form alv_end_of_list.data:i_list_comments TYPE slis_t_listheader.data:w_list_comments TYPE slis_listheader.clear: i_list_comments.w_list_comments-typ = 'H'. "H = Header, S = Selection, A = Actionw_list_comments-key = 'TITLE'.w_list_comments-info = 'End of list'.append w_list_comments to i_list_comments.call function 'REUSE_ALV_COMMENTARY_WRITE'exportingit_list_commentary = i_list_comments.endform.*---------------------------------------------------------------------** FORM ALV_END_OF_PAGE **---------------------------------------------------------------------*FORM ALV_END_OF_PAGE.ENDFORM.*&---------------------------------------------------------------------**& Form build_eventexit*&---------------------------------------------------------------------*FORM build_eventexit .DATA c_refresh TYPE syucomm VALUE '&REFRESH'.CLEAR ls_event_exit.ls_event_exit-ucomm = c_refresh. " Refreshls_event_exit-after = 'X'.APPEND ls_event_exit TO lt_event_exit.ENDFORM. " build_eventexit二.关于FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'分层显示常用参数说明及用法REPORT Z_DAVID_ALVTEST.TABLES : ekko,ekpo.SELECT-OPTIONS: s_ebeln FOR ekko-ebeln.TYPE-POOLS: slis.DATA: BEGIN OF headertab OCCURS 0,ebeln LIKE ekko-ebeln,bstyp LIKE ekko-bstyp,bsart LIKE ekko-bsart,statu LIKE ekko-statu,expand TYPE xfeld,"用于设置是否可扩展,在这里必须要定义此字段END OF headertab.DATA: BEGIN OF itemtab OCCURS 0,ebeln LIKE ekpo-ebeln,ebelp LIKE ekpo-ebelp,matnr LIKE ekpo-matnr,werks LIKE ekpo-werks,menge LIKE ekpo-menge,netpr LIKE ekpo-netpr,peinh LIKE ekpo-peinh,netwr LIKE ekpo-netwr,END OF itemtab.DATA: ls_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE,ls_sort TYPE slis_t_sortinfo_alv WITH HEADER LINE,ls_keyinfo TYPE slis_keyinfo_alv,ls_layout TYPE slis_layout_alv.START-OF-SELECTION.PERFORM readdata.PERFORM build_fieldcat.PERFORM build_sortcat.PERFORM build_layout.PERFORM build_keyinfo.PERFORM display_alv.*&---------------------------------------------------------------------**& Form readdata*&---------------------------------------------------------------------*FORM readdata .SELECT ebeln bstyp bsart statuINTO TABLE headertabFROM ekkoWHERE ebeln IN s_ebeln.IF NOT headertab[] IS INITIAL.SELECT ebeln ebelp matnr werks menge netpr peinh netwrINTO TABLE itemtabFROM ekpoFOR ALL ENTRIES IN headertabWHERE ebeln = headertab-ebeln.ENDIF.ENDFORM. " readdata*&---------------------------------------------------------------------**& Form build_fieldcat*&---------------------------------------------------------------------*FORM build_fieldcat .DEFINE alv_fieldcat.ls_fieldcat-tabname = &1.ls_fieldcat-fieldname = &2.ls_fieldcat-ref_tabname = &3.append ls_fieldcat.END-OF-DEFINITION.alv_fieldcat 'headertab' 'EBELN' 'EKKO'.alv_fieldcat 'headertab' 'BSTYP' 'EKKO'.alv_fieldcat 'headertab' 'BSART' 'EKKO'.alv_fieldcat 'headertab' 'STATU' 'EKKO'.alv_fieldcat 'itemtab' 'EBELN' 'EKPO'.alv_fieldcat 'itemtab' 'EBELP' 'EKPO'.alv_fieldcat 'itemtab' 'MATNR' 'EKPO'.alv_fieldcat 'itemtab' 'WERKS' 'EKPO'.alv_fieldcat 'itemtab' 'MENGE' 'EKPO'.alv_fieldcat 'itemtab' 'NETPR' 'EKPO'.alv_fieldcat 'itemtab' 'PEINH' 'EKPO'.alv_fieldcat 'itemtab' 'NETWR' 'EKPO'.ENDFORM. " build_fieldcat*&---------------------------------------------------------------------**& Form build_sortcat*&---------------------------------------------------------------------*FORM build_sortcat .DEFINE m_sort.ls_sort-tabname = &1.ls_sort-fieldname = &2.ls_sort-up = &3.append ls_sort.END-OF-DEFINITION.m_sort 'headertab' 'EBELN' 'X'.m_sort 'itemtab' 'EBELP' 'X'.ENDFORM. " build_sortcat*&---------------------------------------------------------------------**& Form build_keyinfo*&---------------------------------------------------------------------*FORM build_keyinfo .ls_keyinfo-header01 = 'EBELN'.ls_keyinfo-item01 = 'EBELN'.ls_keyinfo-item02 = 'EBELP'.ENDFORM. " build_keyinfo*&---------------------------------------------------------------------**& Form build_layout*&---------------------------------------------------------------------*FORM build_layout .ls_layout-group_change_edit = 'X'.ls_layout-colwidth_optimize = 'X'.ls_layout-zebra = 'X'.ls_layout-detail_popup = 'X'.ls_layout-get_selinfos = 'X'.ls_layout-expand_fieldname = 'EXPAND'.ENDFORM. " build_layout*&---------------------------------------------------------------------**& Form display_alv*&---------------------------------------------------------------------*FORM display_alv .CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'EXPORTINGi_callback_program = sy-cprog* i_callback_user_command = 'USER_COMMAND'is_layout = ls_layoutit_fieldcat = ls_fieldcat[]it_sort = ls_sort[]i_tabname_header = 'headertab'i_tabname_item = 'itemtab'is_keyinfo = ls_keyinfoi_save = 'A'TABLESt_outtab_header = headertabt_outtab_item = itemtabEXCEPTIONSprogram_error = 1OTHERS = 2.IF sy-subrc <> 0.MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.ENDIF.ENDFORM. " display_alv。

在LabVIEW中自定义控件

在LabVIEW中自定义控件
地址:北京市海淀区中关村东路 18 号财智国际大厦 A 座 9 层 电话:(010)82600055 传真:(010)62628056
布尔值为真 时
布尔值为假 时
同样也可以对文本的位置以及控件的底板的大小进行修正,修正之后的控件如下图所示 这样制定出来的控件的特点是: 1, 即使点在图片上,也能更改布尔按钮的状态。 2, 真假布尔值状态下,该图片不能进行变换。
布尔值为真 时
布尔值为假 时
这种方法做出来的控件的特点是: 1, 背景透明,但是实际控件大小为所选择的图片的大小。一般是一个规则的正方形或者长方形。
前文提到为什么要用新式按钮呢? 先来说一下按钮的图片项,每个布尔按钮在自定义模式下,是有若干图片项的,而新式按钮与 系统型的按钮的图片项是不同的。图片项的查看方式为:将控件窗口置为自定义状态下,在控件上 右键选择图片项即可看到该控件所拥有的图片项。
地址:北京市海淀区中关村东路 18 号财智国际大厦 A 座 9 层 电话:(010)82600055 传真:(010)62628056
二 自定义其他控件
在自定义按钮的第三种方法中,我们采取的是复制系统按钮的图片至剪贴板中。我们可以做一 个小的实验,当系统风格变换之后,控件的风格也会变成相应的风格。 那么根据这点提示,我们就可以进行其它控件的自定义了。比如说一直让大家都很头疼的物理通道 控件,长的太丑了,又没有系统风格的。下边就介绍创建系统风格的物理通道控件的步骤。 1, 打开 LabVIEW 开发环境,在前面板上放置下拉列表以及物理通道控件。
地址:北京市海淀区中关村东路 18 号财智国际大厦 A 座 9 层 电话:(010)82600055 传真:(010)62628056
9, 到物理通道控件的自定义模式下,替换组合框按钮的图片。

alv 自定义搜索帮助

alv 自定义搜索帮助
create object go_evt_receiver.
set handler go_evt_receiver->handle_onf4 for go_alv_grid.
至此,主要的设置步骤都介绍完毕。 下面贴一段handle_onf4的代码供参考:
method handle_onf4.
ls_modi-value = lt_ret_tab-fieldval.
assign er_event_data->m_data->* to modtab>.
append ls_modi to <modtab>.
endif.
read table lt_ret_tab index 1.
if sy-subrc = 0. " user didn't cancel
ls_modi-row_id = es_row_no-row_id.
ls_modi-fieldname = e_fieldname.
3,在创建alv对象之后,要对需要自定义搜索帮助的字段进行注册。
data: lt_f4 type lvc_t_f4 with header line.
clear lt_f4.
lt_f4-fieldname = 'field_name'.
lt_f4-register = 'x'.
在method的最后,记得加上 er_event_data->m_event_handled = 'x'. 通知系统搜索事件处理完毕,这样就不会调用系统标准的search help。
2,那就是对需要自定义搜索帮助的字段,设置其field catalog时: ls_fieldcat-f4availabl = 'x'. 这一步往往容易被忽略。

ABAP基础二:ALV基础之ALV的简单编辑

ABAP基础二:ALV基础之ALV的简单编辑

ABAP基础⼆:ALV基础之ALV的简单编辑前两天有个打印需求变更,需要在ALV显⽰列表中添加两个字段,可编辑,⽽我⾃⼰⽤的是函数:REUSE_ALV_GRID_DISPLAY_LVC 因为之前做可编辑基本都是固定套路,定义类,画屏幕。

很是⿇烦,所以才看看能不能不⽤屏幕,不⽤定义⽅法,结果是可以的,分享给⼤家!前提:ALV使⽤⾃定义的⼯具栏(⼯具栏引⽤标准的⼯具按钮,有个⼩技巧,有空的⾃⼰研究)⼀:只是做编辑,修改,⾃动更新内表:只需添加⼏⾏代码即可:在SET_STATUS⾥加⼊:FORM prm_set_status USING rt_extab TYPE slis_t_extab.SET PF-STATUS'ZSTAT'.CALL FUNCTION'GET_GLOBALS_FROM_SLVC_FULLSCR'IMPORTINGe_grid = lr_grid.CALL METHOD lr_grid->register_edit_eventEXPORTINGi_event_id = cl_gui_alv_grid=>mc_evt_modified.IF sy-subrc <> 0.ENDIF.ENDFORM.这样系统⽤⾃⼰的modify事件,修改数据,回车的时候就会触发更新内表这种⽅式结合字段⽬录中定义的参考表和字段,就可以轻松实现F4功能,简单使⽤。

⼆:⽤⾃定义的修改逻辑:给ALV添加事件和FORMREFRESH:lt_event.ls_event-form = 'DATA_CHANGED_METHOD'.ls_event-name = 'DATA_CHANGED'.APPEND ls_event TO lt_event.CALL FUNCTION'REUSE_ALV_GRID_DISPLAY_LVC'EXPORTINGi_callback_program = sy-repidi_callback_pf_status_set = 'PRM_SET_STATUS'i_callback_user_command = 'PRM_USER_COMMAND'is_layout_lvc = ls_layoutit_fieldcat_lvc = gt_fieldcat[]i_default = 'X'i_save = 'A'it_events = lt_event[]TABLESt_outtab = gt_show[]EXCEPTIONSprogram_error = 1OTHERS = 2.IF sy-subrc <> 0.ENDIF.注意:⽤此⽅法,也需要⼀中的代码然后在程序中添加⾃⼰的代码处理内表就可以了,⽤这种⽅法可以做数据更新,关联更新FORM data_changed_methodUSING pa_data_changed TYPE REF TO cl_alv_changed_data_protocol . DATA:l_it_data TYPE lvc_t_modi,l_wa_data LIKE LINE OF l_it_data.FIELD-SYMBOLS:<lv_field> TYPE any.l_it_data = pa_data_changed->mt_mod_cells.CHECK l_it_data IS NOT INITIAL.LOOP AT pa_data_changed->mt_mod_cells INTO l_wa_data.READ TABLE gt_show INTO gw_show INDEX l_wa_data-row_id.IF sy-subrc = 0.ASSIGN COMPONENT l_wa_data-fieldname OF STRUCTURE gw_show TO <lv_field>.IF sy-subrc = 0.<lv_field> = l_wa_data-value.MODIFY gt_show FROM gw_show INDEX l_wa_data-row_id.ENDIF.ENDIF.ENDLOOP.CALL METHOD lr_grid->refresh_table_display.ENDFORM. " DATA_CHANGED_METHOD。

ALV-讲解

ALV-讲解

ALV讲解一、ALV简介ALV――SAP LIST VIEWER是SAP中的一种报表方式,这里姑且称之为ABAP 表单浏览器,用它可以标准化,简单化R/3系统中的表单,它可以提供给用户一个统一的表单格式及用户接口。

ALV是系统的一种网格的显示方式,这种方式带有汇总\排序\筛选等功能,ALV格式的数据是以单元格为单位显示,SAP提供了一套ALV的功能模块,可以对输出报表的样式作修饰,提高报表输出的可读性和功能性,对于动态报表程序是一个很有效率的工具。

ALV家族包含3中ALV工具:简易的,两层ALV,分等级连续的列表和树形结构的ALV。

一般的ALV报表有一个表头,再加上表内容,并附加一些如排序,分类汇总,合计或下载为本地文件等预设功能。

ALV用到的函数:REUSE_ALV_GRID_DISPLAY、REUSE_ALV_GRID_DISPLAY_LVC;两个函数都可以将数据用ALV的形式显示出来,只是在一些小的地方有些不同。

二、两个function全局变量的定义(1)“用来显示表单数据FUNCTION 'REUSE_ALV_GRID_DISPLAY' 全局变量如下:DATA: wa_fieldcat TYPE slis_fieldcat_alv , "相当于工作区i_fieldcat TYPE slis_t_fieldcat_alv , "存放列名的内表i_layout TYPE slis_layout_alv . "负责整个ALV的全局属性(2)“用来显示表单数据FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC ' 全局变量如下:DATA: wa_fieldcat TYPE lvc_s_fcat , "相当于工作区i_fieldcat TYPE lvc_t_fcat , "存放列名的内表i_layout TYPE lvc_s_layo . "负责整个ALV的全局属性三、ALV技术要点简介下面以函数(REUSE_ALV_GRID_DISPLAY_LVC)为例,来介绍ALV的用法。

sap alv函数参数

sap alv函数参数

sap alv函数参数
对于问题“sap alv函数参数”,我了解到以下方案:
1. 使用SAP ALV函数参数中的“IT_FIELDCATALOG”参数。

这个参数可以用来定义ALV表格的列和其他属性,例如列的标题、宽度、对齐方式等。

通过设置这些参数,可以自定义和控制ALV表格的显示效果。

2. 另一个可能的参数是“IT_EVENTS”。

这个参数用于定义事件处理程序,可以在ALV表格中的特定事件发生时执行自定义的逻辑。

通过定义事件处理程序,
可以实现一些自定义的行为,例如双击行时弹出窗口、点击按钮时执行特定操作等。

请注意,以上提到的是我了解到的一些可能的sap alv函数参数。

可能还有其他的参数可以根据具体的需求和场景来配置。

ooalv自定义按钮、单击、双击、列编辑切换的事件资料

ooalv自定义按钮、单击、双击、列编辑切换的事件资料

1、需新建屏幕1001 并画container:'CONT1'2、需新建屏幕1002 并画container:'CONT2'3、定义屏幕1001、1002的ok_code和逻辑流4、定义工具栏程序代码:1.TABLES t001w.2.3.TYPES:BEGIN OF typ_t001w ,4.werks TYPE t001w-werks,1TYPE t001w-name1,6.werks2 TYPE t001w-werks,7.rowcolor TYPE char10,8.zcheckbox TYPE c, "LAYOUT-CHECBOX='ZCHECKBOX'.9.*zflag TYPE c,"LAYOUT-BOX_FNAME = 'ZFLAG'.10.zicon TYPE char10, "LAYOUT-ICON= 'ZICON'图标需要显示的11.END OF typ_t001w.12.13.TYPES:BEGIN OF typ_smf ,14.werks TYPE t001w-werks,1TYPE t001w-name1,16.END OF typ_smf.17.18.DATA:i_t001w TYPE TABLE OF typ_t001w,"""""第一次alv内表19.i_detail TYPE TABLE OF typ_smf, """""单击ALV内表列ZICON显示的明细ALV内表20.i_smf TYPE TABLE OF typ_smf.""""SF内表21.22.DATA:fieldcat TYPE lvc_t_fcat,23.grid TYPE REF TO cl_gui_alv_grid,"alv控件名24.grid2 TYPE REF TO cl_gui_alv_grid,"alv控件名25.g_container TYPE scrfname VALUE 'CONT1',"重新定义本地容器对象名26.g_container2 TYPE scrfname VALUE 'CONT2',"重新定义本地容器对象名27.is_layout TYPE lvc_s_layo,28.ps_layout TYPE lvc_s_layo,29.g_custom_container TYPE REF TO cl_gui_custom_container,30.g_custom_container2 TYPE REF TO cl_gui_custom_container.31.32.DATA: ui_functions TYPE ui_functions. "隐藏按钮的内表33.*********ALV上事件捕捉类34.DATA:gs_toolbar TYPE stb_button. "按钮35.CLASS alv_event_receiver DEFINITION DEFERRED. "声明类对象36.*----------------------------------------------------------------------*37.* CLASS alv_event_receiver DEFINITION38.*----------------------------------------------------------------------*39.*40.*----------------------------------------------------------------------*41.CLASS alv_event_receiver DEFINITION."声明类成员可见性42.PUBLIC SECTION."定义相关类成员可以被程序中的所有对象调用43. CLASS-METHODS: "静态方法44.handle_toolbar"初始化工具栏对象事件,如增加按钮并设定其属性45.FOR EVENT toolbar OF cl_gui_alv_grid46. IMPORTING e_object e_interactive,47.48. handle_menu_button"用于在下拉菜单中增加选项49.FOR EVENT menu_button OF cl_gui_alv_grid50. IMPORTING e_object e_ucomm,51.52. handle_user_command"工具栏中的按钮的单击事件53. FOR EVENT user_command OF cl_gui_alv_grid54.IMPORTING e_ucomm,55.56. handle_hotspot_click57. FOR EVENT hotspot_click OF cl_gui_alv_grid "屏幕中的单击事件,可以具体到某行某列,需要设置热点58.IMPORTING e_row_id e_column_id es_row_no,59.60. handle_double_click61. FOR EVENT double_click OF cl_gui_alv_grid"屏幕中的双击事件,可以具体到某行某列,即使设置热点也必须双击62.IMPORTING e_row e_column es_row_no.63.ENDCLASS."alv_event_receiver DEFINITION64.*&---------------------------------------------------------------------*65.*& Class (Implementation)alv_event_receiver66.*&---------------------------------------------------------------------*67.*Text68.*----------------------------------------------------------------------*69.CLASS alv_event_receiver IMPLEMENTATION."实现类方法70.METHOD handle_toolbar.71. gs_toolbar-function ='B_SUM'. "为按钮分配功能码72. gs_toolbar-icon=icon_display."为按钮分配图标73. gs_toolbar-text='总行数'."为按钮分配文本74. gs_toolbar-butn_type = '0'."定义按钮类型,不填时默认为075. APPEND gs_toolbar TO e_object->mt_toolbar. "添加按钮到工具栏76.77. gs_toolbar-function ='B_PRINT'. "为按钮分配功能码78. gs_toolbar-icon=icon_import."为按钮分配图标79. gs_toolbar-text='转储订单打印'."为按钮分配文本80. gs_toolbar-checked= 'X'.81. gs_toolbar-butn_type = '0'."定义按钮类型,不填时默认为082. APPEND gs_toolbar TO e_object->mt_toolbar. "添加按钮到工具栏83.84. gs_toolbar-function ='B_LIST'."为按钮分配功能码85. gs_toolbar-quickinfo = '自定义下拉菜单'.86. gs_toolbar-icon=icon_biw_report_view."为按钮分配图标87. gs_toolbar-text='下拉菜单'."为按钮分配文本88. gs_toolbar-butn_type = '1'."定义按钮类型89. APPEND gs_toolbar TO e_object->mt_toolbar. "添加按钮到工具栏90.91. gs_toolbar-function ='B_EDIT'. "为按钮分配功能码92. gs_toolbar-icon=icon_change."为按钮分配图标93. gs_toolbar-text='切换编辑状态'."为按钮分配文本94. gs_toolbar-checked= 'X'.95. gs_toolbar-butn_type = '0'."定义按钮类型,不填时默认为096. APPEND gs_toolbar TO e_object->mt_toolbar. "添加按钮到工具栏97.ENDMETHOD."handle_toolbar98.METHOD handle_menu_button.99. IF e_ucomm = 'B_LIST'.100.CALL METHOD e_object->add_function101.EXPORTING102. icon= icon_display103. fcode = 'B_SUM'104. text= '显示ALV总数'.105. ENDIF.106.ENDMETHOD."handle_menu_button107.METHOD handle_user_command.108. DATA sum TYPE i.109. DATA text TYPE string.110. DATA: lwa_t001w LIKE LINE OF i_t001w.111. DATA: lwa_smf LIKE LINE OF i_smf.112.113. CASE e_ucomm.114.WHEN'B_SUM'.115.DESCRIBE TABLE i_t001w[] LINES sum.116.text = sum.117.CONCATENATE'当前表格中数据的总行数:' text INTO text.118.MESSAGE text TYPE 'I'. "为何消息类型为 E 时运行时显示A类型,异常终止到初始界面119.WHEN 'B_PRINT'.120.LOOP AT i_t001w INTO lwa_t001w WHERE zcheckbox = 'X'.121. lwa_smf-werks = lwa_t001w-werks.122. lwa_smf-name1 = lwa_t001w-name1.123. APPEND lwa_smf TO i_smf.124. CLEAR :lwa_t001w,lwa_smf.125.ENDLOOP.126.IF i_smf[] IS INITIAL.127. MESSAGE '请至少选择一行数据区打印!' TYPE 'E'. "E类型消息会转化为A类型,很蛋疼,求破!128.ELSE.129. PERFORM frm_print_data."这个没具体写。

OO ALV常用功能完整简例

OO ALV常用功能完整简例

OO ALV常用功能完整简例(热键单击,双击,帮助,编辑,自定义工具条等)(2013-07-23 14:18:51)转载▼标签:分类:ALValvoo热键跳转ooalv二、效果图:执行:单击单击航线单元格:双击双击连接号码单元格:F4帮助航班单元格上F4或点击后面的小按钮(本功能在设置字段样式时实现DEFINE mac_fieldlog."设置参考表和参考字段,为了提供搜索帮助wa_fieldcatalog-ref_table = &4. "参考表wa_fieldcatalog-ref_field = &5. "参考字段编辑某单元格并校验修改价格后随便点击某个按钮或者双击某个字段,触发:handle_data_changed三、实现过程:1、创建一个屏幕9001,不需要画2、定义数据:*&---------------------------------------------------------------*& ALV 全局变量*&---------------------------------------------------------------DATA: g_alv_grid TYPE REF TO cl_gui_alv_grid,"ALV控件alv_ctner TYPE REF TO cl_gui_docking_container.DATA: wa_fieldcatalog TYPE lvc_s_fcat, "显示数据列内表工作区域 it_fieldcatalog TYPE lvc_t_fcat. "显示数据列内表DATA: g_event TYPE REF TO alv_event_receiver.*&---------------------------------------------------------------*& 全局变量*&---------------------------------------------------------------DATA:BEGIN OF str_spfli,checkbox TYPE char1, "复选框carrid TYPE sflight-carrid , "航线承运人IDconnid TYPE sflight-connid , "航班连接 Idfldate TYPE sflight-fldate , "航班日期price TYPE sflight-price , "航空运费END OF str_spfli.DATA:g_it_show LIKE TABLE OF str_spfli WITH KEY checkbox carrid.g_wa_show LIKE str_spfli.3、获取显示数据:"获取数据SELECT carridconnidfldatepriceFROM sflight INTO CORRESPONDING FIELDS OF TABLE g_it_show.4、alv 显示数据:PROCESS BEFORE OUTPUT.MODULE STATUS_9001."alv 显示数据MODULE MDL_ALV_SHOW.*&---------------------------------------------------------------module MDL_ALV_SHOW output.PERFORM zform_alv_show.endmodule.*&---------------------------------------------------------------FORM zform_alv_show .DATA: l_style TYPE i,ls_layout TYPE lvc_s_layo,is_stable TYPE lvc_s_stbl,l_disvariant TYPE disvariant.* 屏幕初始化IF alv_ctner IS INITIAL.CREATE OBJECT alv_ctnerEXPORTINGrepid = sy-repiddynnr = '9001'* side = cl_gui_docking_container=>dock_at_right ”ALV贴屏幕右边,从屏幕右边开始算宽度side = cl_gui_docking_container=>dock_at_left "ALV贴屏幕左边,从左边算屏幕宽度, extension = 900 "屏幕宽度style = cl_gui_control=>ws_child "可选参数,设置ALV是否可用手动拖动大小EXCEPTIONScntl_error = 1cntl_system_error = 2create_error = 3lifetime_error = 4lifetime_dynpro_dynpro_link = 5OTHERS = 6.IF sy-subrc <> 0.MESSAGE s001(00) WITH '屏幕初始化失败'.LEAVE LIST-PROCESSING.ENDIF.*添加自定义工具条PERFORM frm_set_alv_toolbar.*CREATE OBJECT g_alv_gridEXPORTINGi_parent = alv_ctner.*构建显示字段样式PERFORM frm_build_fieldcat."Set/Reset Ready for Input StatusCALL METHOD g_alv_grid->set_ready_for_inputEXPORTINGi_ready_for_input = 1.* layout 设定样式CLEAR ls_layout.ls_layout-cwidth_opt = 'X'. "优化列宽CLEAR l_disvariant.l_disvariant-report = sy-repid. "当前程序* event 绑定事件CREATE OBJECT g_event."自定义工具条SET HANDLER g_event->toolbar FOR g_alv_grid."数据修改事件SET HANDLER g_event->handle_data_changed FOR g_alv_grid."单击某一单元格事件SET HANDLER g_event->handle_cell_click FOR g_alv_grid."用户点击工具条上按钮触发的事件SET HANDLER g_event->handle_user_command FOR g_alv_grid."双击某一单元格事件SET HANDLER g_event->handle_double_click FOR g_alv_grid."以下两个方法达到的效果是:光标离开正在编辑的单元格时,就触发了handle_data_changed"如果不注释掉以下两个方法,则只有执行下一操作时才会触发handle_data_changed,比如点保存、删除CALL METHOD g_alv_grid->register_edit_eventEXPORTINGi_event_id = cl_gui_alv_grid=>mc_evt_modified.CALL METHOD g_alv_grid->register_edit_eventEXPORTINGi_event_id = cl_gui_alv_grid=>mc_evt_enter.* "显示内表数据CALL METHOD g_alv_grid->set_table_for_first_display EXPORTINGis_layout = ls_layoutis_variant = l_disvariantit_toolbar_excluding = gt_toolsCHANGINGit_fieldcatalog = it_fieldcatalog[]it_outtab = g_it_show[].ELSE."冲销设置tcode 为 RELOAD,防止因为原来的tcode影响程序执行CALL METHOD cl_gui_cfw=>set_new_ok_codeEXPORTINGnew_code = 'RELOAD'."ALV 控制:刷新稳定性按行刷新,可选参数CLEAR is_stable.is_stable-col = 'X'."刷新CALL METHOD g_alv_grid->refresh_table_display EXPORTINGis_stable = is_stablei_soft_refresh = 'X'."提交CALL METHOD cl_gui_cfw=>flush.ENDIF.ENDFORM. " ZFORM_ALV_SHOW其中:添加工具条上常用按钮FORM frm_set_alv_toolbar .REFRESH gt_tools[]."你也可以删除标准的功能按钮DELETE e_object->mt_toolbar WHERE FUNCTION = '&DETAIL'.DELETE e_object->mt_toolbar WHERE FUNCTION = '&REFRESH'.DELETE e_object->mt_toolbar WHERE FUNCTION = '&LOCAL&UNDO'. DELETE e_object->mt_toolbar WHERE FUNCTION = '&SORT_ASC'.DELETE e_object->mt_toolbar WHERE FUNCTION = '&SORT_DSC'.DELETE e_object->mt_toolbar WHERE FUNCTION = '&FIND'.DELETE e_object->mt_toolbar WHERE FUNCTION = '&FIND_MORE'.DELETE e_object->mt_toolbar WHERE FUNCTION = '&MB_FILTER'. DELETE e_object->mt_toolbar WHERE FUNCTION = '&MB_SUM'.DELETE e_object->mt_toolbar WHERE FUNCTION = '&MB_SUBTOT'. DELETE e_object->mt_toolbar WHERE FUNCTION = '&MB_EXPORT'. DELETE e_object->mt_toolbar WHERE FUNCTION = '&MB_VARIANT'.DELETE e_object->mt_toolbar WHERE quickinfo = '插入行'.DELETE e_object->mt_toolbar WHERE quickinfo = '删除行'.DELETE e_object->mt_toolbar WHERE quickinfo = '剪切'.DELETE e_object->mt_toolbar WHERE quickinfo = '复制文本'.DELETE e_object->mt_toolbar WHERE quickinfo = '插入总览'.DELETE e_object->mt_toolbar WHERE quickinfo = '附加行'.DELETE e_object->mt_toolbar WHERE quickinfo = '复制行'.DELETE e_object->mt_toolbar WHERE quickinfo = '视图'.DELETE e_object->mt_toolbar WHERE quickinfo = '显示图形'.DELETE e_object->mt_toolbar WHERE quickinfo = '撤销'.DELETE e_object->mt_toolbar WHERE quickinfo = '明细'.DELETE e_object->mt_toolbar WHERE quickinfo = '打印'.DELETE e_object->mt_toolbar WHERE quickinfo = '最终用户文档'.APPEND cl_gui_alv_grid=>mc_fc_check TO gt_tools.APPEND cl_gui_alv_grid=>mc_fc_loc_cut TO gt_tools.APPEND cl_gui_alv_grid=>mc_fc_loc_copy TO gt_tools.APPEND cl_gui_alv_grid=>mc_fc_loc_copy_row TO gt_tools.APPEND cl_gui_alv_grid=>mc_fc_loc_delete_row TO gt_tools.APPEND cl_gui_alv_grid=>mc_fc_loc_insert_row TO gt_tools.APPEND cl_gui_alv_grid=>mc_fc_loc_move_row TO gt_tools.APPEND cl_gui_alv_grid=>mc_fc_loc_paste TO gt_tools.APPEND cl_gui_alv_grid=>mc_fc_loc_paste_new_row TO gt_tools.APPEND cl_gui_alv_grid=>mc_fc_sum TO gt_tools.APPEND cl_gui_alv_grid=>mc_fc_info TO gt_tools.APPEND cl_gui_alv_grid=>mc_fc_refresh TO gt_tools.APPEND cl_gui_alv_grid=>mc_fc_graph TO gt_tools.APPEND cl_gui_alv_grid=>mc_fc_loc_append_row TO gt_tools.APPEND cl_gui_alv_grid=>mc_fc_loc_undo TO gt_tools. ENDFORM. " FRM_SET_ALV_TOOLBAR设置显示字段和其参考字段DEFINE mac_fieldlog.* g_pos = g_pos + 1. "第几列* wa_fieldcatalog-col_pos = g_pos. "列wa_fieldcatalog-fieldname = &1. "字段名称* wa_fieldcatalog-coltext = &2. "显示名称,跟reptext效果基本相同wa_fieldcatalog-reptext = &2.wa_fieldcatalog-outputlen = &3. "显示长度"设置参考表和参考字段,为了提供搜索帮助wa_fieldcatalog-ref_table = &4. "参考表 wa_fieldcatalog-ref_field = &5. "参考字段"设置复选框可编辑if &1 eq 'CHECKBOX'.wa_fieldcatalog-checkbox = 'X'.wa_fieldcatalog-edit = 'X'.endif."设置价格PRICE字段可修改if &1 eq 'PRICE'.wa_fieldcatalog-edit = 'X'.endif."设置航线承运人字段 CARRID 为热键if &1 eq 'CARRID'.wa_fieldcatalog-hotspot = 'X'.endif.append wa_fieldcatalog to it_fieldcatalog.clear wa_fieldcatalog.END-OF-DEFINITION.FORM frm_build_fieldcat .mac_fieldlog 'CHECKBOX' '选择' '' ' ' ' ' .mac_fieldlog 'CARRID' '航线承运人' '' 'SFLIGHT' 'CARRID'.mac_fieldlog 'CONNID' '航班数量' '' 'SFLIGHT' 'CONNID' .mac_fieldlog 'FLDATE' '国家' '' 'SFLIGHT' 'FLDATE '. "最后两个字段参考表内字段,可以作为帮助 mac_fieldlog 'PRICE' '起飞城市' '' 'SFLIGHT' 'PRICE' .ENDFORM. " FRM_BUILD_FIELDCAT事件的定义*----------------------------------------------------------------* CLASS ALV_EVENT_RECEIVER DEFINITION*----------------------------------------------------------------CLASS alv_event_receiver DEFINITION.PUBLIC SECTION."添加工具条METHODS toolbar FOR EVENT toolbar OF cl_gui_alv_grid IMPORTINGe_objecte_interactive."子都修改时触发METHODS handle_data_changed FOR EVENT data_changed OF cl_gui_alv_grid IMPORTINGer_data_changed."某字段设置热键后,单击此单元格时触发METHODS handle_cell_click FOR EVENT hotspot_click OF cl_gui_alv_grid IMPORTINGe_row_ide_column_ides_row_no."双击时触发METHODS handle_double_click FOR EVENT double_click OF cl_gui_alv_grid IMPORTINGe_rowe_columnes_row_no."按F1时触发METHODS handle_onf1 FOR EVENT onf1 OF cl_gui_alv_grid IMPORTINGe_fieldnamees_row_noer_event_data."当用户按屏幕上按钮时触发METHODS handle_user_command FOR EVENT user_command OF cl_gui_alv_grid IMPORTINGe_ucomm..ENDCLASS. "alv_event_receiver DEFINITION*&---------------------------------------------------------------------**& Class (Implementation) ALV_EVENT_RECEIVER*&---------------------------------------------------------------------*CLASS alv_event_receiver IMPLEMENTATION.METHOD handle_data_changed.DATA:l_it_data TYPE lvc_t_modi,l_wa_data LIKE LINE OF l_it_data.DATA: l_price_old TYPE string,l_price_new TYPE string,l_msg TYPE string.l_it_data = er_data_changed->mt_mod_cells.LOOP AT er_data_changed->mt_mod_cells INTO l_wa_data WHERE fieldname = 'PRICE'.READ TABLE g_it_show INTO g_wa_show INDEX l_wa_data-row_id.IF sy-subrc = 0.l_price_old = g_wa_show-price .l_price_new = l_wa_data-value .IF l_price_old <> l_price_new.CONCATENATE '价格由' l_price_old '改为' l_price_new INTO l_msg.MESSAGE l_msg TYPE 'I'.ENDIF.ENDIF.ENDLOOP.ENDMETHOD. "handle_data_changedMETHOD toolbar.DATA: ls_toolbar TYPE stb_button.CLEAR ls_toolbar.MOVE 3 TO ls_toolbar-butn_type. "分隔符APPEND ls_toolbar TO e_object->mt_toolbar.CLEAR ls_toolbar.MOVE 'SEL_ALL' TO ls_toolbar-function. "添加两个按钮全选和取消全选MOVE icon_select_all TO ls_toolbar-icon.MOVE '全选' TO ls_toolbar-quickinfo.MOVE ' ' TO ls_toolbar-disabled.APPEND ls_toolbar TO e_object->mt_toolbar.CLEAR ls_toolbar.MOVE 'CAN_ALL' TO ls_toolbar-function.MOVE icon_deselect_all TO ls_toolbar-icon.MOVE '全部取消 ' TO ls_toolbar-quickinfo.MOVE ' ' TO ls_toolbar-disabled.APPEND ls_toolbar TO e_object->mt_toolbar.CLEAR ls_toolbar.MOVE 0 TO ls_toolbar-butn_type. "按钮MOVE 'DELETE' TO ls_toolbar-function. "功能码MOVE 'DELETE' TO ls_toolbar-text. "显示名称MOVE icon_cancel TO ls_toolbar-icon. "图标MOVE '删除选中行' TO ls_toolbar-quickinfo. "鼠标停留时的提示信息MOVE ' ' TO ls_toolbar-disabled. "可用APPEND ls_toolbar TO e_object->mt_toolbar.ENDMETHOD. "toolbarMETHOD handle_cell_click."获取单击字段DATA: l_msg TYPE string,l_wa_click LIKE LINE OF g_it_show,l_row TYPE string,l_field TYPE string.l_row = es_row_no-row_id. "选中行l_field = e_column_id. "选中的字段READ TABLE g_it_show INTO l_wa_click INDEX es_row_no-row_id.IF sy-subrc = 0."得到所单击值CONCATENATE '您选中第' l_row '行,字段为:' l_field ',选中值为' l_wa_click-carrid INTO l_msg.MESSAGE l_msg TYPE 'I'.ENDIF.ENDMETHOD. "handle_cell_clickMETHOD handle_double_click."获取单击字段DATA: l_msg TYPE string,l_wa_click LIKE LINE OF g_it_show,l_row TYPE string,l_field TYPE string.l_field = e_column-fieldname. "选中行l_row = es_row_no-row_id. "选中的字段READ TABLE g_it_show INTO l_wa_click INDEX es_row_no-row_id .IF sy-subrc = 0."得到所单击值CONCATENATE '您选中第' l_row '行,字段为:' l_field ',选中值为:' INTO l_msg.CASE l_field.WHEN 'CONNID'.CONCATENATE l_msg l_wa_click-connid INTO l_msg.MESSAGE l_msg TYPE 'I'.WHEN 'FLDATE'.CONCATENATE l_msg l_wa_click-fldate INTO l_msg.MESSAGE l_msg TYPE 'I'.ENDCASE.ENDIF.ENDMETHOD. "handle_DOUBLE_CLICKMETHOD handle_onf1.ENDMETHOD. "handle_ONF1*&---------------------------------------------------------------------------&**& **& HANDLE_USER_COMMAND * *&---------------------------------------------------------------------------&* METHOD handle_user_command.REFRESH:lt_cols, lt_rows.CALL METHOD g_alv_grid->get_selected_rows IMPORTINGet_index_rows = lt_rows.CALL METHOD g_alv_grid->get_selected_columns IMPORTINGet_index_columns = lt_cols.CALL METHOD cl_gui_cfw=>flush.CASE e_ucomm.WHEN 'SEL_ALL'.LOOP AT g_it_show INTO g_wa_show.g_wa_show-checkbox = 'X'.MODIFY g_it_show FROM g_wa_show.ENDLOOP.WHEN 'CAN_ALL'.LOOP AT g_it_show INTO g_wa_show.g_wa_show-checkbox = ' '.MODIFY g_it_show FROM g_wa_show.ENDLOOP.WHEN 'DELETE'.LOOP AT g_it_show INTO g_wa_show WHERE checkbox IS NOT INITIAL.DELETE TABLE g_it_show FROM g_wa_show.ENDLOOP.WHEN OTHERS.ENDCASE.CALL METHOD cl_gui_cfw=>set_new_ok_codeEXPORTINGnew_code = 'RELOAD'.ENDMETHOD. "HANDLE_USER_COMMANDENDCLASS. "ALV_EVENT_RECEIVER关于删除标准按钮,我也debug的然后可以根据功能码或者quickinfo删除可能alv会用到跳转跳转METHOD HANDLE_CELL_CLICK.PERFORM FRM_TO_ME23N USING ES_ROW_NO.ENDMETHOD. "handle_cell_cFORM FRM_TO_ME23N USING PV_ES_ROW_NO TYPE LVC_S_ROID."获取单击字段DATA: L_WA_CLICK LIKE LINE OF GT_DATA.READ TABLE GT_DATA INTO L_WA_CLICK INDEX PV_ES_ROW_NO-ROW_ID. IF SY-SUBRC = 0.SET PARAMETER ID 'BES' FIELD L_WA_CLICK-EBELN.CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN .ENDIF.ENDFORM. "frm_to_me23n。

AI制作按钮

AI制作按钮

作者:佚名来源:网络时间:2013—05—20 标签: 网页按钮最终效果图:在这篇文章中我们将通过使用Adobe Illustrator中的3D效果来创建一组网页按钮。

为什么要用这种方法?原因是这种方法替代了使用不同的笔刷和其他工具来创建高光和阴影,只需一步就能实现,充分利用了现成的光线设置和斜角形状。

让我们开始!第一步:按钮形状我们从创建基本的网页按钮形状开始。

选择圆角矩形工具,在画板中任意位置点击一下打开圆角矩形窗口。

填入如下图所示的数字以得到我们需要的形状.选择浅灰色作为填充颜色。

第二步:3D设置在此矩形选中的状态下,选择效果菜单》3D》凸出和斜角。

在下图的右方你可以看到默认设置,只有”指定绕X轴旋转”的值有所改变。

通常情况下我更愿意使用斜角形状,但有时不能得到让人满意的结果。

在这个例子中,如果你选择”长圆形”作为斜角形状改变会更明显,边缘会更圆润,而且之后也不用担心高光和阴影的问题。

如果你增加高度值,圆形的边缘就会变得更厚。

在凸出与斜角选项窗口中,点击更多选项按钮打开整个的对话框,注意底部的选项。

如果你想加亮左上角,将光线移动到如下所示的上方,或者你想加亮右下角的话将其移动至下方。

第三步:3D按钮下图是我的设置值。

更改”指定绕X轴旋转”值,在斜角中选择长圆形,将高度值从4pt更改为6pt,然后将光线稍微移向左侧。

第四步:给按钮上色在3D按钮已经选择的情况下,选择对象》扩展外观命令,现在,使用直接选择工具(A)选择内部的圆角矩形,给它填充如下图所示的线性渐变。

将角度设置为90度。

在此矩形选中的状态下,在外观面板中双击内容(原因是这个形状是在编组中),这样你就能看到已经存在的属性.接下来,选择效果》风格化》内发光命令,使用如下所示的值.第五步:添加发光效果在外观面板中选择已有的填色,点击下方的”复制所选项目”图标,你会得到第二个填色,将渐变更改为黑白渐变,角度设置为50度.将混合模式更改为滤色,不透明度降低为75%。

ABAP学习(10):ALV显示之functionalv

ABAP学习(10):ALV显示之functionalv

ABAP学习(10):ALV显⽰之functionalvABAP的ALV1、Function ALV调⽤function,传⼊要显⽰的内表,显⽰样式等参数,显⽰alv。

可以调⽤REUSE_ALV_GRID_DISPLAY这个function,也可以调⽤REUSE_ALV_GRID_DISPLAY_LVC这个function,输⼊的参数⼀致,但是⼀些细节传⼊参数类型不同。

REUSE_ALV_GRID_DISPLAY调⽤⽰例:"调⽤function,显⽰alvCALL FUNCTION'REUSE_ALV_GRID_DISPLAY'* EXPORTING* I_INTERFACE_CHECK = ' '* I_BYPASSING_BUFFER = ' '* I_BUFFER_ACTIVE = ' '* I_CALLBACK_PROGRAM = ' '* I_CALLBACK_PF_STATUS_SET = ' '* I_CALLBACK_USER_COMMAND = ' '* I_CALLBACK_TOP_OF_PAGE = ' '* I_CALLBACK_HTML_TOP_OF_PAGE = ' '* I_CALLBACK_HTML_END_OF_LIST = ' '* I_STRUCTURE_NAME =* I_BACKGROUND_ID = ' '* I_GRID_TITLE =* I_GRID_SETTINGS =* IS_LAYOUT =* IT_FIELDCAT =* IT_EXCLUDING =* IT_SPECIAL_GROUPS =* IT_SORT =* IT_FILTER =* IS_SEL_HIDE =* I_DEFAULT = 'X'* I_SAVE = ' '* IS_VARIANT =* IT_EVENTS =* IT_EVENT_EXIT =* IS_PRINT =* IS_REPREP_ID =* I_SCREEN_START_COLUMN = 0* I_SCREEN_START_LINE = 0* I_SCREEN_END_COLUMN = 0* I_SCREEN_END_LINE = 0* I_HTML_HEIGHT_TOP = 0* I_HTML_HEIGHT_END = 0* IT_ALV_GRAPHICS =* IT_HYPERLINK =* IT_ADD_FIELDCAT =* IT_EXCEPT_QINFO =* IR_SALV_FULLSCREEN_ADAPTER =* IMPORTING* E_EXIT_CAUSED_BY_CALLER =* ES_EXIT_CAUSED_BY_USER =TABLEST_OUTTAB = t_outtab EXCEPTIONSPROGRAM_ERROR = 1OTHERS = 2.View CodeREUSE_ALV_GRID_DISPLAY_LVC调⽤⽰例:CALL FUNCTION'REUSE_ALV_GRID_DISPLAY_LVC'* EXPORTING* I_INTERFACE_CHECK = ' '* I_BYPASSING_BUFFER =* I_BUFFER_ACTIVE =* I_CALLBACK_PROGRAM = ' '* I_CALLBACK_PF_STATUS_SET = ' '* I_CALLBACK_USER_COMMAND = ' '* I_CALLBACK_TOP_OF_PAGE = ' '* I_CALLBACK_HTML_TOP_OF_PAGE = ' '* I_CALLBACK_HTML_END_OF_LIST = ' '* I_STRUCTURE_NAME =* I_BACKGROUND_ID = ' '* I_GRID_TITLE =* I_GRID_SETTINGS =* IS_LAYOUT_LVC =* IT_FIELDCAT_LVC =* IT_EXCLUDING =* IT_SPECIAL_GROUPS_LVC =* IT_SORT_LVC =* IT_FILTER_LVC =* IT_HYPERLINK =* IS_SEL_HIDE =* I_DEFAULT = 'X'* I_SAVE = ' '* IS_VARIANT =* IT_EVENTS =* IT_EVENT_EXIT =* IS_PRINT_LVC =* IS_REPREP_ID_LVC =* I_SCREEN_START_COLUMN = 0* I_SCREEN_START_LINE = 0* I_SCREEN_END_COLUMN = 0* I_SCREEN_END_LINE = 0* I_HTML_HEIGHT_TOP =* I_HTML_HEIGHT_END =* IT_ALV_GRAPHICS =* IT_EXCEPT_QINFO_LVC =* IR_SALV_FULLSCREEN_ADAPTER =* I_YCBN =* IMPORTING* E_EXIT_CAUSED_BY_CALLER =* ES_EXIT_CAUSED_BY_USER =TABLEST_OUTTAB = t_outtabEXCEPTIONSPROGRAM_ERROR = 1OTHERS = 2.View Code1.1、Function参数解析I_INTERFACE_CHECK:检查接⼝⼀致性,默认Space;I_BYPASSING_BUFFER:是否使⽤缓存buffer,类型:字符型1;I_BUFFER_ACTIVE:是否激活缓存;I_CALLBACK_PROGRAM:调⽤alv程序名,⼀般就是当前程序,sy-repid,类型:sy-repid,默认Space;I_CALLBACK_PF_STATUS_SET:ALV⼯具栏Subroutine, ALV屏幕菜单,此参数允许报表展现⽤户⾃定义的屏幕菜单,类型:SLIS_FORMNAME,默认Space,I_CALLBACK_USER_COMMAND:ALV user Command Subroutine(⼦程序),类型:SLIS_FORMNAME,默认Space;I_CALLBACK_TOP_OF_PAGE:ALV抬头内容信息,类型:SLIS_FORMNAME,默认Space;I_CALLBACK_HTML_TOP_OF_PAGE:ALV HTML格式抬头内容信息,类型:SLIS_FORMNAME,默认Space;I_CALLBACK_HTML_END_OF_LIST:ALV HTML格式页脚内容信息,类型:SLIS_FORMNAME,默认Space;I_STRUCTURE_NAME:为输出表数据结构的命名,类型:DD02L-TABNAME;I_BACKGROUND_ID:ALV背景图⽚Object ID,类型:SDYDO_KEY,默认Space;I_GRID_TITLE: ALV 标题,类型:LVC_TITLE;I_GRID_SETTINGS:GRID设置信息,类型:LVC_S_GLAY;IS_LAYOUT_LVC:ALV输出布局样式,类型:LVC_S_LAYO;IT_FIELDCAT_LVC:设定显⽰的栏位名称及输出设定,类型:LVC_T_FCAT;IT_EXCLUDING:隐藏设置的ALV⼯具栏,未激活的功能码,类型:SLIS_T_EXTAB;IT_SPECIAL_GROUPS_LVC:若内表中⼀些字段通过SP_GROUP被分组在⼀起,必须为这些组传递组⽂本内表,类型:LVC_T_SGRP;IT_SORT_LVC:ALV排序,类型:LVC_T_SORT;IT_FILTER_LVC:ALV过滤器,类型:LVC_T_FILT;IT_HYPERLINK:超链接,类型:LVC_T_HYPE;IS_SEL_HIDE:替换或修改屏幕中select-option的值,类型:SLIS_SEL_HIDE_ALV;I_DEFAULT:⽤户是否可以定义默认布局,Space-不可以定义默认布局(默认:X);I_SAVE: 保存表格布局,’X'-只能保存全局变式;’U'-只能保存特定变式;’A'-都可以保存;Space-不能保存变式(默认:space);IS_VARIANT:表格布局变式,类型:DISVARIANT;IT_EVENTS:设置事件,类型为slis_t_event的内表(name:事件名称,form:事件的FORM),类型:SLIS_T_EVENT;IT_EVENT_EXIT:设置回调的⽅法的执⾏⾏为,表明⽤户所写的代码是在执⾏标准执⾏之前还是之后,类型:SLIS_T_EVENT_EXIT;IS_PRINT_LVC:打印信息,类型:LVC_S_PRNT;IS_REPREP_ID_LVC:re/re接⼝初始化信息,类型:LVC_S_RPRP;I_SCREEN_START_COLUMN:对话框形式显⽰开始列,默认:0;I_SCREEN_START_LINE:对话框形式显⽰开始⾏,默认:0;I_SCREEN_END_COLUMN:对话框形式显⽰结束列,默认:0;I_SCREEN_END_LINE:对话框形式显⽰结束⾏,默认:0;I_HTML_HEIGHT_TOP:HTML抬头的⾼度,类型:I;I_HTML_HEIGHT_END: HTML页脚的⾼度,类型:I;IT_ALV_GRAPHICS:是否可以在图表中显⽰ALV,类型:DTC_T_TC;IT_EXCEPT_QINFO_LVC:Exception的信息,类型:SLIS_T_QINFO_ALV;IR_SALV_FULLSCREEN_ADAPTER:类型:CL_SALV_FULLSCREEN_ADAPTER;I_YCBN:类型:char1;1.2、⾃定义屏幕菜单使⽤I_CALLBACK_PF_STATUS_SET参数,可以设置⾃定义屏幕菜单。

alv各种设置

alv各种设置

alv各种设置⽬录1.将得到并整理好的数据以ALV的形式显⽰出来 (4)1.1.在⼦FORM(这⾥如:F_FIELDS)指定需要显⽰的字段 (4)1.2.在⼦FORM(这⾥如:F_BUILD_LAYOUT)⾥设置ALV的全局属性 (4)1.3.在⼦FORM(这⾥如:F_DISPLAY)⾥将内表中的数据进⾏显⽰ (5)1.4.为ALV程序添加表头标题(这⾥以添加HTML表头标题为主) (5)1.4.1.在显⽰ALV的函数(REUSE_ALV_GRID_DISPLAY_LVC)⾥添加⼀个参数 (5) 1.4.2.在⼦FORM(F_TOP_OF_PAGE)⾥定义好需要的变量 (5)1.4.3.准备好所需数据,如登录⽤户的描述、制表⽇期等 (6)1.4.4.将表头数据输出 (6)2.函数“REUSE_ALV_GRID_DISPLAY_LVC”中输⼊参数的应⽤ (7)2.1.排序 (7)2.1.1.在显⽰ALV的⼦FORM⾥定义排序⽤到的变量 (7)2.1.2.设置好需要排序的字段 (8)2.1.3.在显⽰ALV的函数的输⼊参数⾥添加排序的属性 (8)2.2.隐藏不必要的标准按钮 (8)2.2.1.先在显⽰ALV的⼦FORM⾥定义隐藏按钮⽤到的变量 (8)2.2.2.得到需要隐藏的标准按钮的“FCODE” (8)2.3.⾃定义“⼯具栏” (9)2.3.1.在显⽰ALV的函数的输⼊参数⾥指定⾃定义按钮的⼦FORM (9)3.热点链接、⽤户动作的捕捉、调⽤其他程序或标准事务程序 (11)3.1.在显⽰ALV的函数的输⼊参数⾥指定捕捉⽤户动作的⼦FORM (11)3.2.在“字段和列名”的⼦FORM(F_FIELDS)⾥,对需要链接的列添加“热点”属性 (11) 3.3.操作代码 (11)3.4.显⽰具体细节 (12)3.5.调⽤其他事务 (14)3.6.打开并选择⽂件: (14)4.关于设置字段和列名的⼦FORM(F_FIELDS)的参数设置: (15)4.1.单列优化宽度 (15)4.2.单列求和或者取消求和,添加属性 (15)4.3.对其⽅式 (16)4.4.作为图标输出 (16)4.5.固定列和关键列 (16)4.6.列的字符宽度 (17)5.单元格的F1、F4帮助: (17)5.1.F1帮助: (17)5.2.F4帮助: (17)6.输⼊并保存、回调修改内表(输⼊时的⼩数位错位的问题、指定数据类型、⼩说位数) (17)7.界⾯颜⾊的更改 (19)7.1.更改单元格(字体)的前景、背景颜⾊ (19)7.2.更改⾏的颜⾊和列的颜⾊: (19)7.3.利⽤设置字段和列名⼦的FORM(F_FIELDS)⾥来设置列的颜⾊ (20)8.ALV⾃带的最左端复选框按钮和⾃定义复选框按钮 (20)8.1.ALV⾃带的复选框按钮: (20)8.2.⾃定义复选框按钮 (21)9.按照上传的模板格式导出为本地⽂件 (21)9.1.定义导出为EXCEL⽤到的数据变量 (21)9.2.上传模板 (21)9.3.代码 (22)10.为ALV标题添加图⽚ (27)10.1.上传图⽚ (27)10.2.在⼦FORM(F_TOP_OF_PAGE2)⾥的代码 (27)ALV:SAP LIST VIEW,⼀种⽐较美观的报表显⽰⼯具ALV⽤到的函数,⽬前我们有2个:REUSE_ALV_GRID_DISPLAY、REUSE_ALV_GRID_DISPLAY_LVC;两个函数都可以将数据⽤ALV的形式显⽰出来,只是⽅在⼀些⼩的地⽅有些不同。

laravel-admin在列表页添加自定义按钮的例子

laravel-admin在列表页添加自定义按钮的例子

laravel-admin在列表页添加⾃定义按钮的例⼦为了添加⾃定义按钮,按官⽅⽂档分4步⾛:1、先定义⼯具类app/Admin/Extensions/Tools/ShowArtwork.php:<?phpnamespace App\Admin\Extensions\Tools;use Encore\Admin\Admin;use Encore\Admin\Grid\Tools\AbstractTool;use Illuminate\Support\Facades\Request;class ShowArtwork extends AbstractTool{protected $url;protected $icon;function __construct($url,$icon,$text){$this->url = $url;$this->icon = $icon;$this->text = $text;}public function render(){$url = $this->url;$icon = $this->icon;$text = $this->text;return view('admin.tools.button', compact('url','icon','text'));}}2、定义试图⽂件:resources/views/admin/tools/button.blade.php<div class="btn"><a class="btn btn-sm btn-default pull-right" href="{{$url}}" rel="external nofollow" ><i class="fa {{$icon}}"></i> {{$text}}</a></div>3、在model-grid引⼊这个⼯具:$grid->tools(function ($tools)use($artworkid) {$url = "/admin/artimage";$icon = "fa-backward";$text = "Back";$tools->append(new ShowArtwork($url,$icon,$text));$url = "/admin/artimage/".$artworkid."/view";$icon = "fa-eye";$text = "Show Artwork";$tools->append(new ShowArtwork($url,$icon,$text));});⼤功告成!以上这篇laravel-admin 在列表页添加⾃定义按钮的例⼦就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ALV中自定义按钮
----李宝勋
使用alv的时候,我们经常性需要添加自定义按钮,实现用户单击事件调用,这里介绍通过GUI状态增加按钮。

假如你定义了报表程序ZMMR3009,里面已经编写好了alv的实现函数:如下:CALL FUNCTION'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM=W_REPID"当前程序
I_SAVE=''
IS_LAYOUT=I_LAYOUT"子函数layout_build填充的格式定义
IT_FIELDCAT=I_FIELDCAT_ALV[]"子函数fields填充的各列
TABLES
T_OUTTAB=IT_BLNTD
EXCEPTIONS
PROGRAM_ERROR=1
OTHERS=2.
在你的程序里找到函数:‘REUSE_ALV_GRID_DISPLAY’,双击这个函数名,打开这个函数代码窗口:如下图:
点击工具栏上的‘Dispaly Object List’按钮,打开对象浏览器窗口,如下图:
展开函数组:SLVC_FULLSCREEN,并选中GUI状态下的:STANDARD_FULLSCREEN 项,如下图:
右键单击,选择copy选项,在打开的窗体中设置如下,将alv的gui状态复制到你的程序里,程序:ZMMR3009是的目标程序,状态:STANDARD_004是你新建的gui名称,如下图:
然后点击'Copy',直到弹出的窗体全部消失,然后在你的程序里添加如下代码:
CONSTANTS CNS_PF_STATUS TYPE SLIS_FORMNAME VALUE
'ALV_PF_STATUS'."alv自定义按钮
CONSTANTS CNS_USER_COMMAND TYPE SLIS_FORMNAME VALUE
'ALV_USER_COMMAND'."alv自定义按钮响应事件
上面代码写到alv变量定义的代码下面,下面添加设置GUI状态代码:FORM alv_pf_status USING rt_extab TYPE slis_t_extab.
SET PF-STATUS'STANDARD_004'EXCLUDING rt_extab.
ENDFORM.
创建按钮开始:
双击'STANDARD_004',打开如下界面,找个空白的单元格先添加个'|',如下图:
然后在下个单元格输入名称:print,,双击这个名称弹出界面如下图:
确定后,在界面里设置按钮文本和图标等信息,如下图:
确定后,如下图
选择功能键后,确定后,如下图
输入图标文字信息,单击确定,然后点击保存按钮、编译,没有问题后,激活程序。

到此按钮创建完毕。

创建按钮结束。

接下来进行在alv中进行设置自定义按钮,在alv函数:‘REUSE_ALV_GRID_DISPLAY’中添加下面的红色代码部分:
CALL FUNCTION'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM=W_REPID"当前程序
I_CALLBACK_PF_STATUS_SET=CNS_PF_STATUS"设置alv的自定义按钮GUI
I_CALLBACK_USER_COMMAND=CNS_USER_COMMAND"设置alv自定义按钮响应事件
I_SAVE=''
IS_LAYOUT=I_LAYOUT"子函数layout_build填充的格式定义
IT_FIELDCAT=I_FIELDCAT_ALV[]"子函数fields填充的各列
TABLES
T_OUTTAB=IT_BLNTD
EXCEPTIONS
PROGRAM_ERROR=1
OTHERS=2.
编写自定义按钮响应事件:
FORM ALV_USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
CASE R_UCOMM.
WHEN'PRINT'.
PERFORM PRINT_FORM."调用打印程序
WHEN OTHERS.
...
ENDCASE.
到此alv自定义按钮设置完毕,如果你想添加多个按钮,只需将创建按钮开始到创建按钮结束部分重复就行了,在按钮响应事件里根据你设定的功能代码键值进行不同按钮的区别。

创建好的程序运行如下:。

相关文档
最新文档