ALV总结
- 格式:docx
- 大小:37.81 KB
- 文档页数:8
主题一:ABAP ALV 总结整理目录一、ALV简介1、简介2、ALV_GRID介绍3、其它描述二、开发ALV的基本流程三、ALV相关开发细节1、标准ALV与对象ALV的共同开发细节2、标准ALV开发相关细节3、对象ALV开发相关细节四、注意事项五、附属信息1、ALV快捷工具栏功能说明(如下图)2、类型SLIS_FIELDCAT_ALV常用参数说明3、类型SLIS_T_SORTINFO_ALV常用参数说明4、类型SLIS_LAYOUT_ALV常用参数说明5、类型SLIS_T_EVENT常用参数说明6、结构LVC_S_FCAT参数说明(清单观察器控制的字段目录)7、结构LVC_S_LAYO参数说明(ALV 控制: 布局结构)8、打印的参数控制请参考结构 [LVC_S_PRNT]9、排序的参数控制请参考结构[LVC_S_SORT]11、'REUSE_ALV_GRID_DISPLAY'函数常用参数12、'REUSE_ALV_LIST_DISPLAY'函数常用参数13、方法"set_table_for_first_display"的参数说明14、方法"REFRESH_TABLE_DISPLAY"的参数说明六、ALV常见问题七、示例程序一、ALV简介1、简介ALV――SAP LIST VIEWER是SAP中的一种报表方式,这里姑且称之为ABAP表单浏览器,用它可以标准化,简单化R/3系统中的表单,它可以提供给用户一个统一的表单格式及用户接口。
ALV是系统的一种网格的显示方式,这种方式带有汇总\排序\筛选等功能,ALV格式的数据是以单元格为单位显示,SAP提供了一套ALV的功能模块,可以对输出报表的样式作修饰,提高报表输出的可读性和功能性,对于动态报表程序是一个很有效率的工具。
ALV家族包含3中ALV工具:简易的,两层ALV,分等级连续的列表和树形结构的ALV。
sap abap屏幕显示调用总结-alv双击打开窗口和弹出窗1)alv及其事件定义CLASS lcl_event_receiver DEFINITION.PUBLIC SECTION.METHODS handle_f4FOR EVENT onf4 OF cl_gui_alv_gridIMPORTING e_fieldnamees_row_noer_event_dataet_bad_cells.METHODS catch_doubleclickFOR EVENT double_click OF cl_gui_alv_gridIMPORTING e_rowe_columnes_row_no .ENDCLASS. "lcl_event_receiver DEFINITION *---------------------------------------------------------------------* * CLASS lcl_event_receiver IMPLEMENTATION*---------------------------------------------------------------------* CLASS lcl_event_receiver IMPLEMENTATION. METHOD handle_f4.PERFORM f4 USING e_fieldnamees_row_noer_event_dataet_bad_cells.ENDMETHOD. "handle_f4 METHOD catch_doubleclick.PERFORM atdoubleclick USING e_rowe_columnes_row_no.ENDMETHOD. "catch_doubleclickENDCLASS. "lcl_event_receiver IMPLEMENTATIONFORM atdoublec lick USING p_e_rowp_e_columnp_es_row_no.* MESSAGE '双击' TYPE 'I'.READ TABLE itab INDEX p_e_row.IF p_e_column = 'EBELN'.SET PARAMETER ID 'BES' FIELD itab-ebeln.CALL FUNCTION 'ME_DISPLAY_PURCHASE_DOCUMENT' "相应双击事件,根据双击列进行调用相应的方法EXPORTINGi_ebeln = itab-ebelni_enjoy = 'X'.ELSEIF p_e_column = 'LIFNR'.CALL FUNCTION 'MMPUR_VENDOR_DISPLAY'EXPORTINGim_lifnr = itab-lifnrim_ekorg = 'B000'.else.CALL SCREEN 200."(弹出窗口)ENDIF.ENDFORM. " atdoubleclickMODULE status_0100 OUTPUT.SET PF-STATUS 'MAIN200'.gs_variant-report = sy-repid."注册事件到alvIF g_custom_container IS INITIAL.CREATE OBJECT g_custom_containerEXPORTING container_name = g_container.IF go_grid IS INITIAL.CREATE OBJECT go_gridEXPORTINGi_parent = g_custom_container."cl_gui_container=>screen0."CREATE OBJECT event_receiver.SET HANDLER event_receiver->handle_f4 FOR go_grid.CALL METHOD go_grid->register_f4_for_fieldsEXPORTINGit_f4 = gt_f4."gt_f4用于保存产生f4事件的字段SET HANDLER event_receiver->catch_doubleclick FOR go_grid.IF sy-batch IS INITIAL.CALL METHOD go_grid->register_edit_eventEXPORTINGi_event_id = cl_gui_alv_grid=>mc_evt_enter.ENDIF.PERFORM load_data_into_grid.ENDIF.ENDIF.ENDMODULE.(2)弹出窗口200显示:CLASS lcl_event_handler DEFINITION.PUBLIC SECTION.CLASS-METHODS:on_close FOR EVENT close OF cl_gui_dialogbox_container IMPORTING sender.ENDCLASS. "lcl_event_handler DEFINITION*----------------------------------------------------------------------** CLASS lcl_event_handler IMPLEMENTATION*----------------------------------------------------------------------* CLASS lcl_event_handler IMPLEMENTATION.METHOD on_close.CALL METHOD sender->free.FREE: con_diabox, l_alv.CALL SCREEN '100'.ENDMETHOD. "on_closeENDCLASS.MODULE STATUS_0200 OUTPUT.SELECT * FROM sflight INTO TABLE lt_sflight.IF con_diabox IS INITIAL.CREATE OBJECT con_diaboxEXPORTINGwidth = 600height = 200top = 70left = 140caption = 'Title'EXCEPTIONSOTHERS = 1.SET HANDLER lcl_event_handler=>on_close FOR con_diabox .CREATE OBJECT l_alvEXPORTINGi_parent = con_diabox.ENDIF.CALL METHOD l_alv->set_table_for_first_display EXPORTINGi_structure_name = 'SFLIGHT'CHANGINGit_outtab = lt_sflight.ENDMODULE.。
一.ALV介绍The ALV Grid Control (ALV =S A P L ist V iewer)是一个显示列表的灵活的工具,它提供了基本功能的列表操作,也可以通过自定义来进行增强,因此可以允许你可以在大型的应用程序中使用.SAP提示: 在SAP的开发项目中,ALV GRID也可以作为修改和创建数据的一种工具,然而,目前这个功能只在实验计划中使用,还没有向客户发布.下面是一个ALV GRID的图片:它包括3大部分,工具栏,标题,用于显示数据的网格控制器.如果有必要,用户可以隐藏标题和工具栏.ALV家族包含3中ALV工具:简易的,两层ALV,分等级连续的列表和树形结构的ALV.二.ALV GRID CONTROL (ALV网格控制器)ALV GRID CONTROL使用了控制器技术以实现艺术性的屏幕显示,象所有的控制器一样,ALV GRID CONTROL法,以响应它的动作.使用了ABAP的对象以后,列表是通过ALV的一个实例(INSTANCE)来显示的,程序员可以使用ABAP对象的事件管理.三.ALV GRID CONTROL 实例ALV GRID实例的定义,参照CL_GUI_ALV_GRID类data ALV_GRID1 type ref to cl_gui_alv_grid.ALV GRID继承结构:四、ALV GRID相关的几个控制结构1.字段目录 [Field catalog]字段目录是用来控制ALV显示的网格中每个字段的属性的,比如字段的顺序,对齐方式,可编辑状态,颜色,等等.常用的控制字段如下:(下面的示例将说明这些字段的使用,参考STRUCT URE LVC_S_FCAT)93INDX_ROUND 自然数 94INDX_DECML 自然数 95GET_STYLE 字符字段长度 1 96MARK字符字段长度 12.布局控制[layout]布局是用来控制整个ALV 的一个布局,比如ALV 的标题,是否可编辑,行颜色,列颜色.参照ALV 的控制结构[LVC_S_LAYO ],以后的例子我将详细介绍如何设置行颜色和列颜色. 详细的结构说明字段名 描述 Value range CWIDTH_OPT 最优化宽度 SPACE, 'X'SMALLTITLE 小标题,如果设置了这个字段,则标题与列标题大小一样SPACE, 'X'GRID_TITLE 标题,在网格和工具条之间 最长70个字符 NO_HEADERS 如果被设置,列标题隐藏 SPACE, 'X' NO_HGRIDLN 隐藏水平线 SPACE, 'X' NO_MERGING 禁用单元格合并 SPACE, 'X'NO_ROWMARK 如果被设置,选择列在选择模式为D 和A 的时候隐藏SPACE, 'X'NO_TOOLBAR 隐藏工具条 SPACE, 'X' NO_VGRIDLN 隐藏垂直线 SPACE, 'X' SEL_MODE 选择模式 SPACE, 'A', 'B', 'C', 'D' EXCP_CONDS 合计例外 SPACE, 'X' EXCP_FNAME 字段名称带有例外编码 最长30个字符 EXCP_LED 例外作为 LED SPACE, 'X' EXCP_ROLLN 例外文档的数据元素 SPACE, 'X'CTAB_FNAME 带有复杂单元格颜色编码的字段名称最长30个字符INFO_FNAME 带有简单行彩色代码的字段名称 最长30个字符ZEBRA 可选行颜色,如果设置了,出现了间隔色带SPACE, 'X'NO_TOTLINE 没有总计 SPACE, 'X' NUMC_TOTAL 可以对NUMC 字段进行合计 SPACE, 'X'TOTALS_BEF 总计输出在第一行,小计在新的值之前SPACE, 'X'STYLEFNAME 设置单元格,比如PUSHBUTTON 最长30个字符3.打印和排序,过滤控制打印的参数控制请参考结构[LVC_S_PRNT]排序的参数控制请参考结构[LVC_S_SORT]过滤的参数控制请参考结构[LVC_S_FILT]这里不再一一解释,进入中文版本,里面应该也有解释的,虽然一些不是很清楚.五.编写简单的ALV程序.首先这里就不详细介绍DIALOG的用法了.OO的ALV GRID必须存在于一个容器当中,就是FUNCTION的ALV,其实也是一样的,底层也是使用CL_GUI_ALV_GRID这个类的.首先ALV的显示需要有几个先决条件.1,字段目录,这个是必须的,如果没有这个参数,参考一个数据字典也是可以的,就是参数I_STRUCTUR E_NAME.2.存放数据的内表,最好内表的结构和字段目录是一致的,否则可能会出现一些无法预知的错误,当然你说我非要不一样,那也不一定会出现错误.我建议是最好一样的.这2个是必须的,布局的话,应该是可以不设置的,使用默认的就可以了.第一步:创建个SCREEN,在屏幕上创建个容器,CONTAINER.定义变量.DATA:WCL_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,WCL_ALV TYPE REF TO CL_GUI_ALV_GRID .*--- 存放字段目录的内表DATA gt_fieldcat TYPE lvc_t_fcat .*--- 布局结构DATA gs_layout TYPE lvc_s_layo .*----声明需要显示的内表(以SFLIGHT为例)DATA BEGIN OF gt_list OCCURS 0 .INCLUDE STRUCTURE SFLIGHT .DATA END OF gt_list .第二步: 创建ALV这个对象,它的父组件是那个容器.在PBO中写入如下代码:PROCESS BEFORE OUTPUT .MODULE display_alv .创建DISPLAY_ALV的MODULE后,写下如下代码:MODULE display_alv OUTPUT .PERFORM display_alv .ENDMODULE .在FORM DISPLAY_ALV中,判断ALV实例是否存在,如果不存在,则创建:IF WCL_ALV IS INITIAL .CREATE OBJECT: WCL_CONTAINEREXPORTINGCONTAINER_NAME = 'ALV_CON'.CREATE OBJECT WCL_ALVEXPORTINGI_PARENT = WCL_CONTAINER.*-----准备获取字段目录PERFORM prepare_field_catalog CHANGING gt_fieldcat .*-----设置布局PERFORM prepare_layout CHANGING gs_layout .*-----显示ALVCALL METHOD gr_alvgrid->set_table_for_first_display EXPORTING* I_BUFFER_ACTIVE =* I_CONSISTENCY_CHECK =* I_STRUCTURE_NAME =* IS_VARIANT =* I_SAVE =* I_DEFAULT = 'X'is_layout = gs_layout* IS_PRINT =* IT_SPECIAL_GROUPS =* IT_TOOLBAR_EXCLUDING =* IT_HYPERLINK =CHANGINGit_outtab = gt_list[]it_fieldcatalog = gt_fieldcat* IT_SORT =* IT_FILTER =EXCEPTIONSinvalid_parameter_combination = 1program_error = 2too_many_lines = 3OTHERS = 4 .ELSE .*----刷新ALVCALL METHOD gr_alvgrid->refresh_table_display * EXPORTING* IS_STABLE =* I_SOFT_REFRESH =EXCEPTIONSfinished = 1OTHERS = 2 .IF sy-subrc <> 0.*--异常处理ENDIF.ENDIF .方法"set_table_for_first_display"的参数说明I_DEFAULT 决定用户是否可以定义默认的布局:'X' 可以定义默认布局,这个参数是默认的SPACE 不可以定义默认布局IS_LAYOUT布局参数,传递布局控制的一些信息IS_PRINT后台打印属性的参数IT_SPECIAL_GROUPS 如果在字段目录中,一些字段通过SP_GROUP被分组在一起.我们就必须为这些组传递一个组的文本内表进去IT_TOOLBAR_EXCLUDING需要隐藏的标准的按钮的内表IT_HYPERLINK 为每个句柄分配了超连接的内表,LVC_S_HYPE中的HREF存放了超连接的地址,HANDLE指定了句柄,使用这些句柄,你可以在GRID中使用超连接IT_ALV_GRAPHICS 比较复杂,没有用过,意思好象是可以在图表中显示ALV.IT_OUTTAB输出数据存放的内表,数据都是存放在这个内表里IT_FIELDCATALOG字段目录IT_SORT排序的标准IT_FILTER过滤的标准方法"REFRESH_TABLE_DISPLAY"的参数说明参数含义IS_STABLE 刷新的稳定性,有2个参数,一个是行,一个是列.如果设置了相应的值,那么对应的行,或者列,在刷新的时候,将会保持稳定,就是滚动条保持不动.I_SOFT_REFRESH 这个参数只是在异常情况下被使用,如果设置了这个参数,任何创建的合计,任何排序次序,任何为了显示数据而设置的过滤都将保持不变.这个是非常有意义的.例如:当然你没有修改数据内表里的数据而想刷新ALV,仅仅只是改变一下布局和字段目录.第三步,获取要显示数据的字段目录.有两种方式.1.手动创建FORM prepare_field_catalog CHANGING pt_fieldcat TYPE lvc_t_fcat . DATA ls_fcat type lvc_s_fcat .ls_fcat-fieldname = 'CARRID' .ls_fcat-inttype = 'C' .ls_fcat-outputlen = '3' .ls_fcat-coltext = 'Carrier ID' .ls_fcat-seltext = 'Carrier ID' .APPEND ls_fcat to pt_fieldcat .CLEAR ls_fcat .ls_fcat-fieldname = 'CONNID' .ls_fcat-ref_table = 'SFLIGHT' .ls_fcat-ref_table = 'CONNID' .ls_fcat-outputlen = '3' .ls_fcat-coltext = 'Connection ID' .ls_fcat-seltext = 'Connection ID' .APPEND ls_fcat to pt_fieldcat .ENDFORM .2.半自动的创建FORM prepare_field_catalog CHANGING pt_fieldcat TYPE lvc_t_fcat .DATA ls_fcat type lvc_s_fcat .CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'EXPORTINGi_structure_name = 'SFLIGHT'CHANGINGct_fieldcat = pt_fieldcat[]EXCEPTIONSinconsistent_interface = 1program_error = 2OTHERS = 3.IF sy-subrc <> 0.*--Exception handlingENDIF.LOOP AT pt_fieldcat INTO ls_fcat .CASE pt_fieldcat-fieldname .WHEN 'CARRID' .ls_fcat-outpulen = '10' .ls_fcat-coltext = 'Airline Carrier ID' .MODIFY pt_fieldcat FROM ls_fcat .WHEN 'PAYMENTSUM' .ls_fcat-no_out = 'X' .MODIFY pt_fieldcat FROM ls_fcat .ENDCASE .ENDLOOP .ENDFORM .第四步,设置布局FORM prepare_layout CHANGING ps_layout TYPE lvc_s_layo.ps_layout-zebra = 'X' .ps_layout-grid_title = 'Flights' .ps_layout-smalltitle = 'X' .ENDFORM. " prepare_layout第五步,排除不需要的标准按钮(可选,这个是第一种方法,还有另外一种,在添加自定义的按钮的时候介绍)在你的ALV上,如果你想排除一些你不想要的标准按钮,你可以把需要排除的按钮填入到表UI_FUNC TIONS中,然后传给set_table_for_first_display方法的参数"IT_TOOLBAR_EXCLUDING".这些按钮的功能码一般都可以通过查看类cl_gui_alv_grid的常量属性中获取到,或者自己加个断点,在after_us er_command事件中.如果你要隐藏全部的工具条,你可以把layout中的no_toolbar设置为"X".FORM exclude_tb_functions CHANGING pt_exclude TYPE ui_functions .DATA ls_exclude TYPE ui_func.ls_exclude = cl_gui_alv_grid=>mc_fc_maximum .APPEND ls_exclude TO pt_exclude.ls_exclude = cl_gui_alv_grid=>mc_fc_minimum .APPEND ls_exclude TO pt_exclude.ls_exclude = cl_gui_alv_grid=>mc_fc_subtot .APPEND ls_exclude TO pt_exclude.ls_exclude = cl_gui_alv_grid=>mc_fc_sum .APPEND ls_exclude TO pt_exclude.ls_exclude = cl_gui_alv_grid=>mc_fc_average .APPEND ls_exclude TO pt_exclude.ls_exclude = cl_gui_alv_grid=>mc_mb_sum .APPEND ls_exclude TO pt_exclude.ls_exclude = cl_gui_alv_grid=>mc_mb_subtot .ENDFORM .按照上面的步骤,一个ALV的DEMO基本可以创建了.下面我们将讲述一些功能.功能一:在第一次显示以后,修改字段目录和布局.在运行的时候,很有可能需要在显示之后,需要设置一个新的布局或者字段目录.有下面这些方法去实现.字段目录: get_frontend_fieldcatalogset_frontend_fieldcatalog布局:get_frontend_layoutset_frontend_layout使用这些方法,你在执行的任何时候,可以获取这些内容,然后修改他们.DATA ls_fcat TYPE lvc_s_fcat .DATA lt_fcat TYPE lvc_t_fcat .DATA ls_layout TYPE lvc_s_layo .CALL METHOD gr_alvgrid->get_frontend_fieldcatalogIMPORTINGet_fieldcatalog = lt_fcat[] .LOOP AT lt_fcat INTO ls_fcat .IF ls_fcat-fieldname = 'PAYMENTSUM' .ls_fcat-no_out = space .MODIFY lt_fcat FROM ls_fcat .ENDIF .ENDLOOP .CALL METHOD gr_alvgrid->set_frontend_fieldcatalogEXPORTINGit_fieldcatalog = lt_fcat[] .CALL METHOD gr_alvgrid->get_frontend_layoutIMPORTINGes_layout = ls_layout .ls_layout-grid_title = 'Flights (with Payment Sums)' .CALL METHOD gr_alvgrid->set_frontend_layoutEXPORTINGis_layout = ls_layout .功能二:设置排序条件有时候我们需要使用到数据的排序.这个可以通过填充参考结构LVC_T_SORT创建的内表来实现,这个内表中包含了排序的标准.可以传递给set_table_for_first_display这个方法的IT_SORT参数来初始化一个排序.FORM prepare_sort_table CHANGING pt_sort TYPE lvc_t_sort .DATA ls_sort TYPE lvc_s_sort .ls_sort-spos = '1' .ls_sort-fieldname = 'CARRID' .ls_sort-up = 'X' . "A to Zls_sort-down = space .APPEND ls_sort TO pt_sort .ls_sort-spos = '2' .ls_sort-fieldname = 'SEATSOCC' .ls_sort-up = space .ls_sort-down = 'X' . "Z to AAPPEND ls_sort TO pt_sort .ENDFORM. " prepare_sort_table这有2点特别的说明:1.如果这边排序的字段名,不存在于字段目录中,那将出现DUMP.2.排序以后,垂直的网格中,如果出现相同的内容,就会合并,如果要避免,请在布局中设置"no_mer ging"为"X" .你可以通过使用方法“get_sort_criteria” 和“set_sort_criteria”来获取和设置排序的标准.功能三:设置过滤(和排序类似)ALV的标准按钮中已经有过滤的功能,我们也可以在初始显示的时候就设置过滤条件.我们需要把过滤条件填充到参考表类型"LVC_T_FILT"创建的内表中.过滤条件是类似一个RANGES结构的.然后把这个内表传递给方法"SET_TABLE_FOR_FIRST_DISPLAY"中的参数"IT_FILTER"FORM prepare_filter_table CHANGING pt_filt TYPE lvc_t_filt .DATA ls_filt TYPE lvc_s_filt .ls_filt-fieldname = 'FLDATE' .ls_filt-sign = 'E' .ls_filt-option = 'BT' .ls_filt-low = '20030101' .ls_filt-high = '20031231' .APPEND ls_filt TO pt_filt .ENDFORM. " preparefiltertable我们可以使用"get_filter_criteria" 和"set_filter_criteria"来获取过滤条件和设置过滤条件.功能四:选择方式有时候,我们需要选择一些单元格,行或者列,在布局中,有个参数"SEL_MODE"可以设置我们不同的选择方式.下面是参数的介绍.和不同的地方.值模式可能的选择注释SPACE等同于B参考B默认设置'A'行和列的选择,无法选择单元格多行,多列用户可以使用最左边的选择按钮来选择多行'B'单选,不可以多选行,不可以多选单元格多行,多列'C'多选,可以多选行,不可以多选单元格多行,多列'D'单元格的选择,可以多选单元格多行,多列,任何单元格多选用户可以使用最左边的选择按钮来选择多行注意:1.如果你设置了ALV是可编辑的,可能会覆盖你在布局中选择方式的设置的.2.设置了选择方式以后,我们可以使用很多方法来获取用户的选择.比如"GET_SELECTED _CELLS","GET_SELECTED_CELLS_ID","GET_SELECTED_ROWS","GET_SEL ECTED_COLUMNS"3.在执行PAI以后,用户所选择的单元格,行或者列可能丢失.你可以在PBO中,使用对应的S ET方法来恢复这些选择.功能五:颜色设置有的时候,我们需要在ALV网格上绘上一些颜色.可以给特定的行,某个特定的列,某个特定的单元格绘制颜色.如果某列被设置为关键列,这列的颜色将被自动绘制,而不需要我们额外的指定.先介绍ALV里色码.就是颜色编码,4位CHAR型.Cx y z---Color | | || 1/0: 相反开/关1/0: 强化开/关其中C是固定的第一位,第二位代表是颜色编码(1到7),第三位是加强的设置,第四位是相反,人理解,在强化关闭的情况下,相反的作用是背景和字体的变化.颜色编码:x颜色主要使用在1Gray-blue headers2Light gray List bodies3yellow totals4Blue-green Key columns5green Positive threshold value6red Negative threshold value7orange Control levelsA)设置列的颜色.我们可以通过字段目录的"emphasize"控制字段来控制某列的颜色.这个字段同样是4位的CHAR型,传入上述的颜色编码.例如:LS_FCAT-EMPHASIZE = 'C701'.如果这列被设置为关键列,就是 LS_FCAT-KEY = 'X' ,那么颜色设置就不会起作用.请注意,自动产生的字段目录中,KEY的设置是自动获取的.B)设置行的颜色为某行设置颜色,是有点复杂的,我们需要在要显示的数据内表中增加一个字段,这个字段不需要在字段目录中存在.同样,这个字段也是4位的CHAR型,符合颜色编码的定义.那我们就需要这样来定义我们的数据内表:DATA BEGIN OF gt_list OCCURS 0 .INCLUDE STRUCTURE SFLIGHT .DATA rowcolor(4) TYPE c .DATA END OF gt_list .很明显,填入颜色编码以后,ALV怎么知道它是我们用来设置颜色的呢,在布局中,有个控制字段"INFO_FNAME",我们可以设置这个字段来告诉ALV,我们的颜色字段是哪个.ps_layout-info_fname = 'ROWCOLOR'.请注意,这个字段随便你起名字,但是记住,一定是数据内表里的字段,一定要大写.你可以在任何时候设置行的颜色,只需要去修改内表里的这个字段的值,但是记得一定要刷新以后才起作用.C)设置单元格的颜色设置单元格和设置行的颜色,本质上没有什么大的区别,但是定位单元格需要2个参数.我们需要在数据内表中插入一个表类型的字段,这样我们的数据内表就变成了DEEP结构了,不过ALV是可以处理的.不需要担心.插入的这个表类型的类型为"LVC_T_SCOL".里面有3个参数:FNAME告诉我们你需要设置的是哪个字段,如果为空,然后直接在COLOR中设置颜色,就是整行设置为这个颜色.如果具体到某个单元格,必须指定是哪个字段.COLOR字段是用来设置颜色的.NOKEYCOL字段比较关键了.设置为关键列的一些字段,我们的颜色设置可能被覆盖.通过这个字段的设置,可以避免被关键列覆盖.同样,ALV在布局中有个字段"CTAB_FNAME"告诉我们,数据内表中,哪个字段是用来设置单元格的颜色的.DATA BEGIN OF gt_list OCCURS 0 .INCLUDE STRUCTURE SFLIGHT .DATA rowcolor(4) TYPE c .DATA cellcolors TYPE lvc_t_scol .DATA END OF gt_list .DATA ls_cellcolor TYPE lvc_s_scol ....READ TABLE gt_list INDEX 5 .ls_cellcolor-fname = 'SEATSOCC' .ls_cellcolor-color-col = '7' .ls_cellcolor-color-int = '1' .APPEND ls_cellcolor TO gt_list-cellcolors .MODIFY gt_list INDEX 5 .注意:颜色设置中有优先级顺序,他们是单元格--->行--->列.功能六:插入超链接插入超链接是通过一个含有超级链接和句柄的表来实现的.这个表类型为"LVC_T_HYPE" ,句柄是一个INT4类型的字段,我们需要在数据显示的内表中,加入这样的字段,来告诉ALV,我们的字段指定的句柄,从而找到对应的超级链接.在字段目录中,WEB_FIELD是用来指定对应的句柄名的.下面举个例子来说明,我们要为字段CARRID,CONNID建立超级链接:首先,内表定义中,我们加入2个句柄字段:DATA BEGIN OF gt_list OCCURS 0 .INCLUDE STRUCTURE SFLIGHT .DATA rowcolor(4) TYPE c .DATA cellcolors TYPE lvc_t_scol .DATA carrid_handle TYPE int4 .DATA connid_handle TYPE int4 .DATA END OF gt_list .第二: 建立一个超级链接内表,里面存放句柄所对应的超级链接.创建的时候注意,它参考的表类型,一定是"LVC_T_HYPE".FORM prepare_hyperlinks_table CHANGING pt_hype TYPE lvc_t_hype . DATA ls_hype TYPE lvc_s_hype .ls_hype-handle = '1' .ls_hype-href = '/carrids/car1' .APPEND ls_hype TO pt_hype .ls_hype-handle = '2' .ls_hype-href = '/carrids/car1' .APPEND ls_hype TO pt_hype .ls_hype-handle = '3' .ls_hype-href = '/carrids/car1' .APPEND ls_hype TO pt_hype .ls_hype-handle = '4' .ls_hype-href = '/connids/con11' .APPEND ls_hype TO pt_hype .ls_hype-handle = '5' .ls_hype-href = '/connids/con12'APPEND ls_hype TO pt_hype ... ..ENDFORM .第三.通过字段目录FIELDCATLOG来指定相应的句柄字段.对于CARRID的field catalogLs_fieldcat-web_field = ‘CARRID_HANDLE’.对于CONNID的field catalogLs_fieldcat-web_field = ‘CONNID_HANDLE’.在方法"SET_TABLE_FOR_FIRST_DISPLAY"中把句柄内表传给参数it_hyperlink。
(Illustrator)学习总结报告(精选五篇)第一篇:(Illustrator)学习总结报告《图形设计(Illustrator)》学习总结报告姓名:******学号:******班级:任课教师:递交日期:201*/**/**图形设计(Illustrator)总结报告学习Illustrator有两个月,在我看来它是一款强大的设计绘画软件,在平面广告设计这方面运用的非常多。
这段期间,可以说我学到了不少东西,但是我又不得不承认还有很多东西我还没有学到。
两个月真的学不到太多的东西,更多的要靠自己在课后努力琢磨,而认真研究一种东西才能真正体现一个人的能力。
都是Adobe公司的产品,有变化但是差距都不大,所以学起来不是很难。
我是从学习Photoshop后,因为课程需要才开始接触Illustrator 的。
Illustrator和Adobe公司其他产品在操作上有点小小的差别,主要是在快捷键上。
由于键位的小小改动,所以在使用Illustrator时还保留Photoshop的习惯,以至于使用起来老感觉不对劲。
接下来我就说一下我学习的一些内容和基本情况。
Illustrator的工作界面和photoshop差不多。
在学习内容方面,学习了文件的新建与保存;工具的选择与切换;部分快捷键的使用;直线、选框、钢笔工具绘制简单的图形;色彩的调和与填充;图层的排列、变换、编组、粘贴;滤镜的使用。
然后练习部分有信纸、标志、插画、图标以及特殊图形的绘制等。
基本上学习的东西都能使用上。
以制作信纸为例,我说一下我的制作过程和心得。
新建一个信纸命名的文档,然后用矩形工具绘制一个跟画板大小一样的矩形,最好是使用渐变填充一个喜欢的颜色来作为背景色,在使用ctrl+2将制作的背景锁定在画板上,接下来就是绘制一下喜欢的图案(如花草,星星等)。
绘制图案可以直接使用钢笔工具来完成,但如果你控制不好的话,可以使用几种选框工具来绘制合适的图形,组合成你需要的图案,如利用椭圆工具加循环旋转来绘制花朵,利用多边形工具绘制五角星等。
abap alv分类汇总案例ABAP(Advanced Business Application Programming)是一种针对SAP软件系统开发的编程语言。
在ABAP中,ALV(ABAP List Viewer)是一种用于在SAP系统中创建和显示表格的工具。
ALV的分类汇总功能可以根据指定的字段对表格数据进行分类,并将分类后的数据进行汇总统计。
下面列举了10个ABAP ALV分类汇总的案例。
1. 根据销售订单对销售数据进行分类汇总在SAP系统中,可以使用ABAP ALV来对销售数据进行分类汇总。
根据销售订单号,可以将销售数据按照订单进行分类,并对每个订单的销售额进行汇总统计。
这样可以方便用户对销售数据进行分析和监控。
2. 根据物料号对库存数据进行分类汇总在SAP系统中,可以使用ABAP ALV来对库存数据进行分类汇总。
根据物料号,可以将库存数据按照物料进行分类,并对每个物料的库存量进行汇总统计。
这样可以方便用户对库存数据进行查询和管理。
3. 根据供应商对采购数据进行分类汇总在SAP系统中,可以使用ABAP ALV来对采购数据进行分类汇总。
根据供应商,可以将采购数据按照供应商进行分类,并对每个供应商的采购金额进行汇总统计。
这样可以方便用户对采购数据进行分析和对比。
4. 根据地区对销售数据进行分类汇总在SAP系统中,可以使用ABAP ALV来对销售数据进行分类汇总。
根据地区,可以将销售数据按照地区进行分类,并对每个地区的销售额进行汇总统计。
这样可以方便用户对销售数据进行地区间的比较和分析。
5. 根据部门对人员数据进行分类汇总在SAP系统中,可以使用ABAP ALV来对人员数据进行分类汇总。
根据部门,可以将人员数据按照部门进行分类,并对每个部门的人员数量进行汇总统计。
这样可以方便用户对人员数据进行部门间的比较和统计。
6. 根据年龄段对客户数据进行分类汇总在SAP系统中,可以使用ABAP ALV来对客户数据进行分类汇总。
函数alvalv 函数是一个编程中常用的函数,它可以实现各种功能,包括数学计算、字符串操作以及数组处理等等。
本篇文章主要介绍alv函数的使用及其相关内容。
一、函数alv的基本介绍在编程中,alv函数是语言中的一个函数,可以理解为某个子程序或功能模块。
它通常包含有输入和输出两个部分,可以接受相关参数进行运算和处理,返回相应的结果。
在其他程序中调用alv函数可以充分利用已经实现好的代码模块,提高开发效率。
二、alv函数的常用操作常用的alv函数包括数学函数、字符串函数、日期与时间函数以及数组函数等。
1.数学函数:alv函数的数学计算功能包括各种常见数学运算,如加减乘除、取绝对值、幂函数、求余数、求最大最小值、取整数等等。
数学函数在数值计算、统计分析等领域应用广泛。
例如,alv函数可以通过以下方式实现求和运算:data: r(3) type i value 3.call function 'ALV_HIERARCHY_SUM'exportingi_mode = 1it_table = ri_fieldname = 'FIELD'importinge_value = sum.2.字符串函数:alv函数的字符串操作功能包括字符串连接、分隔、截取、查找替换等。
字符串函数在文本处理、数据清洗等领域应用广泛。
3.日期与时间函数:alv函数的日期与时间操作功能包括日期时间格式化、计算与比较、日期时间转换等。
日期时间函数在时间戳处理、时区转换、日历计算等领域应用广泛。
由于alv函数是经过封装的代码模块,其具有高通用性、可重复使用、易维护等优势。
1.高通用性。
alv函数可以适用于不同编程语言和不同平台,使得代码的移植和集成更加便捷。
2.可重复使用。
开发者只需按需调用alv函数,无需每次重复编写相同的功能代码,从而提高开发效率和可维护性。
3.易维护。
alv函数的封装使得代码更加清晰、简洁,易于维护,有助于减少代码出错概率,提高代码可读性。
1)颜色含义1:海蓝;2:浅清;3:黄色;4:浅蓝;5:青色;6:红色;7:橙色。
(1)首位为主颜色;(2)次位为辅助颜色;(3)末位为0时,表示首位数字表为表格的底色;末位为1时,则表示以1为底色,首位数字则表为表格字体的颜色;末位为其它颜色时,则表示底色为ALV的默认颜色;以上三条是本人大概总结出来的规律,本人发现的现象基本如上,但也不一定全部正确。
其中C200与系统标准ALV底色比较相似;C410与系统标准关键字颜色比较相似。
2)列颜色:设置ALV字段fieldcat属性:i_fieldcat-emphasize = &3. "颜色把fieldcat属性写入属性内表allfields:alv_append_field 'WERKS' '工厂' 'C110'.C110:为颜色代码; 3)行颜色:(1)在内表itab定义一个字段line_color来存储颜色;loop内表itab,在需要显示颜色的行其值赋为颜色'C110';(2)在定义alv显示格式定义:设置ALV显示layout属性:i_layout-info_fieldname = 'LINE_COLOR',line_color为内表定义的存储颜色的列名。
4)单元格颜色单元格颜色属性:LVC_S_SCOL,该属性为一结构,含三个字段:FNAME(30)、COLOR(颜色结构,含三个字段:col(10)、int(3)、inv(10))、NOKEYCOL(1)(覆盖码颜色)ALV列属性: coltab_fieldnameexa:定义内表itab含字段FLDNAME type LVC_S_SCOL;定义单元格颜色结构cellcolor type LVC_S_SCOL;循环内表,当要设置单元格颜色所在的列字段colname要设置颜色时fldname-FNA ME = ‘COLNAME’fldname-COLOR-col = ‘2’(颜色代码)fldname-COLOR-int = ‘1’fldname-COLOR-inv = ‘0’。
ALV Simple Introduction一、ALV相关概念ALV――ALV = SAP List Viewer,这里我们姑且称之为ABAP表单浏览器,用它可以标准化,简单化R/3系统中的表单,它可以提供给用户一个统一的表单格式以及用户接口。
二、结合一个具体的实例来看ALV的功能首先我们看下图中的这个ALV的布局(这是一般ALV程序表单的典型布局):根据上面对ALV的直观形象,下面将屏幕上的区域划分成几块,分别来解释它的作用:1.快捷工具栏(如下图)细节按钮,你首先必须选中列表中的一行,然后点击它的话,就会弹出一个窗口,显示选中行的细节内容。
(另外:你双击你要选择的行,也可以显示细节)按升序排列,首先选中一列,然后再点击它,就可以看到该列是按照升序重新排列。
按降序排列,首先选中一列,然后再点击它,就可以看到该列是按照降序重新排列。
设置过滤器,通过设置它可以达到筛选的目的,以列名称作为筛选的筛选标准,填入过滤器相应的标准值,然后就可以筛选出满足自己条件的记录。
打印预览,点击它之后,就可以预览一下将要打印内容的布局情况。
Microsoft Excel,调用MS的Excel到当前ALV的列表显示区域。
(前提:必须安装了MS的Excel)字处理,字处理的相关设置。
本地文件,将当前表单存储到本地机器上,有几种供选择的存储格式。
邮件收件人,给系统内用户发邮件图形,点击它可以根据表单情况绘制相关图表。
更改布局,点击它可以对表单中的列项目排列次序的互换,删减等。
选择布局,从已经保存的布局中选择自己满意的布局。
保存布局,对于自己满意的布局,可以通过点击它来将布局保存起来。
2.表单标题区这个区域主要是用来显示一些抬头信息(总揽信息),类似于WORD中的页眉。
我们在使用的时候根据需要来进行相关填写。
3.表单显示区这个区域主要是用来显示我们通过代码筛选出来的数据,相关的操作在下面的程序编写部分详细介绍。
三、程序的编写1.写一个ALV程序的基本流程:第一步:定义将要用到的表,即TALBES定义部分,然后定义TYPE-POOLS: SLIS.第二步:定义第一步中提到的这些数据类型或者内表的实体对象第三步:定义一些需要用到的变量第四步:定义自己的选择屏幕第五步:start-of-selection部分○1用一个子函数完成自己所需要数据的抓取○2用一个子函数完成要显示列表的列名行(第一行)的相关赋值(i_fieldcat_alv)以及设置○3用一个子函数完成输出格式的设置(i_layout),比如双击一条记录是否弹出对话框啊?是用哪个功能键触发等等○4用一个子函数FORM DISPLAY_DATA来显示上面我们已经分别封装好的数据,需要调用两个常用的FUNCTION MODULE:FUNCTION 'REUSE_ALV_GRID_DISPLAY' “用来显示表单数据FUNCTION 'REUSE_ALV_COMMENTARY_WRITE' “用来显示表单标题2.在我们写ALV程序的时候,有一个类型组是肯定要用到的:TYPE-POOLS:SLIS。
ABAP ALV F4标准一、概述ABAP ALV(Advanced List Viewer)是SAP系统中用于生成、显示和修改表格数据的一套标准工具。
而F4标准则是ALV的一个重要功能,用于提供字段值的可选择清单。
本文将从ABAP ALV和F4标准的基本概念介绍开始,逐步深入到具体的实践应用和案例分析,帮助读者全面了解和掌握这一重要功能。
二、ABAP ALV的基本概念1. ABAP ALV是什么ABAP ALV是SAP系统中的一套标准工具,用于生成、显示和修改表格数据。
它不仅提供了丰富的表格显示和编辑功能,还具有灵活的定制能力,可根据用户需求进行定制开发。
2. ABAP ALV的使用场景ABAP ALV广泛应用于SAP系统中的各个模块,如采购管理、生产管理、财务会计等领域。
它可以用于显示各种业务数据,如订单信息、库存数据、财务报表等,并支持用户对数据的查看、编辑和导出等操作。
三、F4标准的基本概念1. F4标准是什么F4标准是ABAP ALV的一个重要功能,用于提供字段值的可选择清单。
它在输入字段时,可通过F4键或按下候选按钮,弹出可选择清单供用户选择,从而减少用户的输入工作并提高数据准确性。
2. F4标准的使用场景F4标准通常用于需要输入字段值的场景,如订单创建、物料信息维护等。
它可以弹出各种可选择清单,如物料清单、供应商清单、客户清单等,为用户提供便捷的数值选择功能。
四、ABAP ALV F4标准的实践应用1. 如何在ABAP程序中使用F4标准在ABAP程序中使用F4标准,首先需要定义输入字段的参数和事件处理逻辑。
然后通过调用相应的函数模块或方法,将F4标准与输入字段关联起来,实现字段值的可选择清单功能。
2. F4标准的定制开发除了使用标准的F4功能外,ABAP开发人员还可以根据具体需求进行定制开发。
他们可以通过修改F4帮助事件、使用自定义帮助对象等方式,实现更灵活、个性化的F4功能。
3. F4标准与其他功能的结合应用F4标准还可以与其他功能结合应用,如输入带有F4帮助的字段值后,自动填充相关字段信息、触发特定的逻辑处理等。
al工作总结
AL工作总结。
在过去的一段时间里,我有幸参与了公司的AL工作。
通过这段时间的工作,
我不仅学到了很多新知识,也收获了很多宝贵的经验。
在这篇文章中,我将对我的AL工作进行总结,并分享一些心得体会。
首先,AL工作对于我来说是一次挑战和机遇。
在这个岗位上,我需要不断地
学习和探索,以应对日益复杂的市场环境和客户需求。
在这个过程中,我学会了如何运用AL技术来提升产品的质量和效率,以及如何与团队合作,共同解决问题和
实现目标。
其次,AL工作也让我更加深入地了解了公司的业务和发展方向。
通过与不同
部门的同事合作,我了解了公司的整体运作和各个部门的职能,这不仅帮助我更好地理解自己的工作,也为我未来的职业发展提供了更广阔的空间。
最后,AL工作也让我更加自信和成熟。
在这个岗位上,我需要不断地面对挑
战和压力,不断地克服困难和提升自己。
通过这个过程,我变得更加坚定和自信,也更加成熟和理性。
总的来说,AL工作对我来说是一次宝贵的经历。
通过这段时间的工作,我不
仅学到了很多新知识,也收获了很多宝贵的经验。
我相信,这段经历将成为我未来职业发展的宝贵财富,也将成为我人生道路上的一份宝贵的财富。
感谢公司给予我这次机会,让我能够在AL工作中不断成长和进步。
我期待着未来,也会继续努力,为公司的发展贡献自己的力量。
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中MB52的ALV格式在SAP中,MB52是一个非常重要的功能模块,用于物料库存的查询和管理。
在MB52功能模块中,ALV(ABAP List Viewer)格式起着至关重要的作用,它能够以表格的形式展示物料的库存情况,并提供了丰富的功能和操作选项。
本文将对SAP中MB52的ALV格式进行深度解析,探讨其功能、特点和使用技巧,帮助读者更全面地了解和掌握这一功能模块。
1. MB52的ALV格式概述在SAP系统中,MB52是一个常用的库存管理功能模块,它主要用于查询和展示物料的库存情况。
ALV格式是一种用于显示和操作表格数据的强大工具,它可以将查询结果以表格的形式直观地展示出来,并提供了丰富的功能和操作选项,如排序、筛选、导出等。
在MB52功能模块中,ALV格式被广泛应用,帮助用户更便捷地管理和分析物料的库存情况。
2. ALV格式的特点和功能ALV格式在SAP系统中具有以下几个突出的特点和功能:- 表格展示:ALV格式能够将查询结果以表格的形式清晰地展示出来,用户可以一目了然地看到物料的库存情况。
- 排序和筛选:ALV格式提供了排序和筛选功能,用户可以根据需要对查询结果进行排序或筛选,便于快速定位和分析数据。
- 导出和打印:ALV格式支持查询结果的导出和打印,用户可以将数据导出到Excel等外部工具进行进一步分析,或者直接打印成报表进行备份和归档。
3. 如何使用MB52的ALV格式在SAP系统中,使用MB52的ALV格式非常简单,只需按照以下步骤操作即可:- 进入MB52功能模块:在SAP系统中,选择相应的菜单路径或直接输入MB52的事务码,进入MB52的主界面。
- 输入查询条件:在主界面中,输入相应的查询条件,如物料号、仓库号等,然后点击查询按钮进行查询。
- 查看查询结果:系统将根据输入的查询条件,将查询结果以ALV格式展示出来,用户可以通过表格操作选项对查询结果进行查看、排序、筛选等操作。
alv 树变换原理Alv 树变换原理Alv 树,也称平衡二叉树,是一种自平衡的二叉搜索树,它能够保证在最坏情况下,查找、插入和删除等操作的时间复杂度为 O(log n)。
但是,当我们进行一系列的插入和删除操作后,Alv 树可能会失去平衡,从而影响其性能。
为了解决这一问题,我们需要进行树的变换操作。
1. 旋转操作旋转操作是 Alv 树的核心变换操作,它通过旋转子树使得树重新平衡。
旋转操作一般分为左旋和右旋两种,具体操作如下:左旋:将当前节点的右子节点替换其位置,使其成为左子节点的父节点,将原左子节点成为其右子节点。
右旋:将当前节点的左子节点替换其位置,使其成为右子节点的父节点,将原右子节点成为其左子节点。
2. 小幅度调整除了旋转操作,我们还可以进行一些小幅度的调整操作,例如:节点的高度调整:每次插入或删除节点后,计算其子树高度并更新到当前节点。
节点的平衡因子调整:对于根节点的任意一个节点,其平衡因子为其左子树高度减去右子树高度。
插入或删除节点时,需要更新其平衡因子并进行相应的旋转操作。
3. 变换原理利用上述操作,我们可以实现 Alv 树的平衡。
具体操作步骤如下:1. 插入节点向 Alv 树中插入一个节点后,从该节点开始向根节点遍历,依次进行以下操作:1. 计算并更新节点的高度和平衡因子;2. 判断当前节点是否平衡,即左右子树的高度差是否大于 1;3. 若当前节点平衡,则继续向其父节点遍历;4. 若当前节点不平衡,则进行旋转操作,以使其重新平衡,并向其父节点遍历。
2. 删除节点从 Alv 树中删除一个节点后,从该节点的父节点开始向根节点遍历,依次进行以下操作:1. 计算并更新节点的高度和平衡因子;2. 判断当前节点是否平衡,即左右子树的高度差是否大于 1;3. 若当前节点平衡,则继续向其父节点遍历;4. 若当前节点不平衡,则进行旋转操作,以使其重新平衡,并向其父节点遍历。
4. 总结Alv 树变换原理是实现 Alv 树高效平衡的核心,旋转操作和小幅度调整是其关键操作。
ALV⾏选择及双击事件ALV功能总结Forwarded from:⾏选择⽬前个⼈只知道两种⽅法:W_LAYOUT TYPE SLIS_LAYOUT_ALV,1. 在输出内标加CHECK BOX 列类型:C(1)* W_STR_ALV-FIELDNAME = 'CHECK'. "列名* W_STR_ALV-EDIT = 'X'. "可编辑* W_STR_ALV-CHECKBOX = 'X'. "功能:CHECKBOX更新ALV 判断CHECK是否为'x'.2.在输出内标加CHECK 列,标识选中。
⽤法同excel.变⾊即为选中。
W_LAYOUT-BOX_FIELDNAME = 'CHECK'.W_layout-box_tabname = 'IT_DATA'.其他同上。
双击事件:在定义ALV字段处:W_STR_ALV-HOTSPOT = 'X'.则该列响应双击事件。
W_LAYOUT-F2CODE = 'DIS'. " SY-UCOMM 响应值。
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'EXPORTINGI_CALLBACK_PROGRAM = SY-REPIDIT_FIELDCAT = W_IT_ALVIS_LAYOUT = W_LAYOUTI_CALLBACK_HTML_TOP_OF_PAGE = 'ALV_TOP_OF_PAGE 'I_CALLBACK_USER_COMMAND = 'USER_COMMAND'I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'TABLEST_OUTTAB = IT_DATAEXCEPTIONSPROGRAM_ERROR = 1OTHERS = 2.IF SY-SUBRC <> 0.MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNOWITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.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 netwr INTO 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。
abap_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的形式显⽰出来,只是⽅在⼀些⼩的地⽅有些不同。
alphago的总结概括
AlphaGo 是一个著名的人工智能程序,由谷歌公司开发。
它能够在围棋比赛中打败世界顶尖的选手,引起了全球的关注。
AlphaGo 使用了深度学习技术,通过分析大量的围棋棋谱来学习围棋的策略和技巧。
它的出现标志着人工智能在围棋领域的重大突破,也引发了人们对于人工智能在其他领域的应用和发展的思考。
AlphaGo 的成功不仅仅是技术上的突破,更是对于人类智慧的一种挑战和启示。
它让人们认识到人工智能的潜力和可能性,同时也提醒人们需要更加重视人工智能的发展和应用。
AlphaGo 是人工智能发展历程中的一个重要里程碑,它的出现推动了人工智能技术的发展和应用,也让人们对于人工智能的未来充满了期待。
ALV1:使用函数显示ALV格式报表
1)定义ALV
type-pools slis. "调用类型组
data: myrepid like sy-repid. "程序为当前程序
data: i_layout type slis_layout_alv. "ALV显示格式内表
data: allfields type slis_t_fieldcat_alv. " ALV显示字段内表
data: i_fieldcat type line of slis_t_fieldcat_alv. "ALV字段信息结构
data: e_status type slis_formname value 'STANDARD_ER01'. "ALV自定义非标准按钮myrepid = sy-repid.
2)ALV显示属性
i_layout-colwidth_optimize = 'X'. "自动调整列宽
i_layout-zebra = 'X'. "变换行颜色
2)ALV写法,有两种:
(1)法一,写成块形式
data: pos type i.
define alv_append_field. "定义模块
i_fieldcat-col_pos = pos. "列标志
i_fieldcat-fieldname = &1. "字段名
i_fieldcat-seltext_l = &2. "字段描述
i_fieldcat-no_zero = 'X'. "不显示值为0的数据和前导0
... "其它的fieldcat属性
append i_fieldcat to allfields. "写进显示字段内表
clear i_fieldcat.
pos = pos + 1. "下一列
end-of-definition.
refresh allfields.
pos = 1.
clear i_fieldcat.
alv_append_field 'FLDNAME' 'FLDTXT' .
(2)法二:标准形式
clear i_fieldcat.
i_fieldcat-fieldname = 'FLDNAME'. "字段名
i_fieldcat-seltext_l = 'FLDTXT'. "字段描述
i_fieldcat-no_zero = 'X'.
... "其它fieldcat属性
append i_fieldcat to allfields.
... "循环同上
3)调用ALV显示函数
call function 'REUSE_ALV_GRID_DISPLAY' "statt LIST
exporting
i_callback_program = myrepid
i_callback_pf_status_set = e_status "使用非标准按钮
is_layout = i_layout
i_CALLBACK_USER_COMMAND = 'USER_COMMAND' "非标准按钮动作
it_fieldcat = allfields "显示字段的内表
i_save = 'A' "是否打开保存
tables
t_outtab = itab " 内表名
exceptions
program_error = 1
others = 2.
注:alv有两种显示格式的function:(1)REUSE_ALV_LIST_DISPLAY(和write到屏幕一样的样式);(2)REUSE_ALV_GRID_DISPLAY(单元格样式)。
ALV2:ALV列、行、单元格颜色设置
1)颜色含义
1:海蓝;2:浅清;3:黄色;4:浅蓝;5:青色;6:红色;7:橙色。
(1)首位为主颜色;
(2)次位为辅助颜色;
(3)末位为0时,表示首位数字表为表格的底色;
末位为1时,则表示以1为底色,首位数字则表为表格字体的颜色;
末位为其它颜色时,则表示底色为ALV的默认颜色;
以上三条是本人大概总结出来的规律,本人发现的现象基本如上,但也不一定全部正确。
其中C200与系统标准ALV底色比较相似;C410与系统标准关键字颜色比较相似。
2)列颜色:
设置ALV字段fieldcat属性:i_fieldcat-emphasize = &3. "颜色
把fieldcat属性写入属性内表allfields:alv_append_field 'WERKS' '工厂' 'C110'.
C110:为颜色代码;
3)行颜色:
(1)在内表itab定义一个字段line_color来存储颜色;loop内表itab,在需要显示颜色的行其值赋为颜色'C110';
(2)在定义alv显示格式定义:
设置ALV显示layout属性:i_layout-info_fieldname = 'LINE_COLOR',line_color为内
表定义的存储颜色的列名。
4)单元格颜色
单元格颜色属性:LVC_S_SCOL,该属性为一结构,含三个字段:FNAME(30)、COLOR(颜色结构,含三个字段:col(10)、int(3)、inv(10))、NOKEYCOL(1)(覆盖
码颜色)
ALV列属性:coltab_fieldname
exa:
定义内表itab含字段FLDNAME type LVC_S_SCOL;
定义单元格颜色结构cellcolor type LVC_S_SCOL;
循环内表,当要设置单元格颜色所在的列字段colname要设置颜色时
fldname-FNAME = …COLNAME‟
fldname-COLOR-col = …2‟(颜色代码)
fldname-COLOR-int = …1‟
fldname-COLOR-inv = …0‟。
ALV3:ALV的html表头
在ALV的function的exporting里添加属性:
I_CALLBACK_HTML_TOP_OF_PAGE = 'HTML_TOP_OF_PAGE 定义form响应上述ALV属性
form html_top_of_page using document type ref to cl_dd_document. DATA: text TYPE SDYDO_TEXT_ELEMENT.
text = titlname
CALL METHOD DOCUMENT->ADD_TEXT
EXPORTING
TEXT = text
SAP_STYLE = 'HEADING'.
"换行写另一标题
CALL METHOD DOCUMENT->NEW_LINE.
或使用空格
CALL METHOD DOCUMENT->ADD_GAP
EXPORTING
WIDTH = 10. "空格宽10
...
endform.
ALV4:ALV里显示状态灯
1)在alv引用类型池定义时加入icon,如type-pools: slis, icon.
2)给显示内表itab定义一字段statu存储状态灯;
3)循环内表itab给字段statu值赋:
绿灯:itab-statu = icon_led_green.
红灯:itab-statu = icon_led_red.
4)alv的fieldcat属性i_fieldcat-icon = 'X'.
ALV5:ALV的layout属性
ALV里的显示属性可通过定义i_layout TYPE slis_layout_alv来使用不同的显示风格。
可双击“slis_layout_alv”来查看类型组SLIS里的layout属性:。