• ALV相关汇总


    使用函数显示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属性:

    父类  子类  子类  主要属性(部分)  描述 
    slis_layout_alv  slis_layout_main    dummy  
    slis_layout_alv_spec  slis_layout_alv_spec0  no_colhead(1) type c 没有标题
    zebra(1) type c 行颜色间隔改变
    no_vline(1) type c 没有竖线,由空格代替
    no_hline(1) type c 没有横线,由空格代替
    cell_merge(1) type c 单元格复制形式
    edit(1) type c 可编辑仅为grid
    edit_mode(1) type c 编辑模式仅为grid
    numc_sum(1) type c 数值型字段汇总
    no_input(1) type c 仅输出
    no_keyfix(1) type c 不固定关键字列
    slis_layout_alv_spec1  Display options 显示属性  
    colwidth_optimize(1) type c 自动调整列宽
    no_min_linesize(1) type c line size = width of the list
    min_linesize like sy-linsz if initial min_linesize = 80
    max_linesize like sy-linsz, Default 250
    window_titlebar like sy-title  
    no_uline_hs(1) type c  
    Exceptions 扩展  
    lights_fieldname type slis_fieldname  
    lights_tabname type slis_tabname  
    lights_rollname like dfies-rollname  
    lights_condense(1) type c  
    Sums 合计  
    no_sumchoice(1) type c 不可选择总计
    no_totalline(1) type c 没有合计行
    no_subchoice(1) type c 不可选择小计
    no_subtotals(1) type c 没有小计
    no_unit_splitting type c  
    totals_before_items type c 在明细前显示合计
    totals_only(1) type c 只显示合计
    totals_text(60) type c 合计第一列文本行
    subtotals_text(60) type c 小计第一列文本行
    Interaction 继承  
    box_fieldname type slis_fieldname  
    box_tabname type slis_tabname  
    box_rollname like dd03p-rollname  
    key_hotspot(1) type c keys as hotspot
    flexible_key(1) type c key columns movable
    group_buttons(1) type c buttons for COL1 - COL5
    get_selinfos(1) type c read selection screen
    group_change_edit(1) type c Settings by user for new group
    no_scrolling(1) type c no scrolling
    Detailed screen 屏幕详细  
    detail_popup(1) type c 弹出显示明细
    detail_initial_lines(1) type c 显示初始行
    detail_titlebar like sy-title 详细标题栏
    Display variants 显示变量  
    header_text(20) type c 标题按钮文本
    default_item(1) type c 默认明细
    colour 颜色  
    info_fieldname type slis_fieldname  
    coltab_fieldname type slis_fieldname  
    others 其它(略)  

    ALV6:ALV的fieldcat属性
    ALV里的字段属性可通过定义i_fieldcat TYPE slis_t_fieldcat_alv来使用字段的属性。可双击“slis_t_fieldcat_alv”来查看类型组SLIS里的fieldcat 属性,slis_t_fieldcat_alv 来自类slis_fieldcat_alv,该类主要包含两个类:slis_fieldcat_main、 slis_fieldcat_alv_spec,主要有以下属性: 

    父类  子类  子类  主要属性(部分)  描述 
    Slis_fieldcat_alv  slis_fieldcat_main  slis_fieldcat_main0  row_pos 输出行
    col_pos 列位置
    fieldname  
    tabname 标签名称
    currency(5) 货币单位
    cfieldname field with currency unit
    ctabname Table with currency unit
    ifieldname initial column
    quantity(3) 计量单位
    qfieldname 参考计量单位的字段名称
    qtabname Table with quantity unit
    round ROUND 值
    exponent(3) 流动表示的指数
    key(1) 关键字段
    icon(1) 作为图标输出
    symbol(1) 输出作为符号
    checkbox(1) 作为复选框输出
    just(1) 对齐
    lzero(1) 输出前导零
    no_sign(1) 输出抑制符号
    no_zero(1) 为输出隐藏零
    no_convext(1)  
    edit_mask 为输出编辑掩码
    emphasize(4) 带有颜色的高亮列
    fix_column(1) 固定列
    do_sum(1) 总计列值
    no_out(1) 列没有输出
    tech(1) 技术字段
    outputlen 列的字符宽度
    offset offset
    seltext_l 长文本
    seltext_m 中文本
    seltext_s 短文本
    slis_fieldcat_main1  ref_fieldname  
    ref_tabname  
    roundfieldname  
    roundtabname  
    decimalsfieldn  
    decimalstabnam  
    decimals_out(6) 控制小数点的位数
    text_fieldname  
    reptext_ddic  
    ddic_outputlen  
    slis_fieldcat_alv_spec     key_sel(1) field not obligatory
    no_sum(1) do not sum up
    sp_group(4) group specification
    reprep(1) selection for rep/rep
    input(1) input
    edit(1) internal use only
    hotspot(1) hotspot

    ALV7:ALV式的弹出窗口
    在系统标准程序下,有不少屏幕在检查或过帐时会弹出一个小型的ALV窗口,上面记录着错误信息,这种ALV弹出式窗口可通过以下方法做成:
    (1)定义ALVBOX
    data:box_container type ref to cl_gui_dialogbox_container,
         box_alv type ref to cl_gui_alv_grid.
    class lcl_event_handler definition.
     public section.
     class-methods:
    on_close for event close of cl_gui_dialogbox_container importing sender.
    endclass.
    class lcl_event_handler implementation.
     method on_close.
       call method sender->free.
        free: box_container, box_alv .
     endmethod.
    endclass.
    data: ls_fcat type lvc_s_fcat., "ALV的fieldcat属性行
    lt_fieldcat type lvc_t_fcat. "ALV的fieldcat属性内表
    data: ls_layout type lvc_s_layo. " ALV的layout属性内表
    可双击父类lvc_t_fcat、lvc_s_layo来查看所包含的属性
    (2)建立ALV对象
        create object box_container
          exporting
            width   = 600      " 窗口大小
            height = 200
            top     = 120
            left    = 120
            caption = ' 提示信息' "弹出窗口标题
          exceptions
            others = 1.
    set handler lcl_event_handler=>on_close for box_container.
     create object box_alv
        exporting
          i_parent          = box_container
        exceptions
          others           = 1.
    (3)输出ALV的fieldcat属性和layout属性
    call function 'LVC_FIELDCATALOG_MERGE'
     exporting
       i_structure_name          = 'ZSTAB'   " 输出格式对应的结构
     changing
       ct_fieldcat                = lt_fieldcat "ALV 的fieldcat属性内表
     exceptions
       inconsistent_interface       = 1
       program_error             = 2
       others                    = 3.
    注:要事先在se11创建一个和ALV 输出字段一致的结构ZSTAB;
          " 写入fieldcat的属性
    loop at lt_fieldcat into ls_fcat.
     ls_fcat-icon = 'X '.
     ...
      modify lt_fieldcat from ls_fcat.
    endloop.
    "写入layout属性
    ls_layout-cwidth_opt = 'X '.
    ...
    (4)调用方法显示ALV窗口
    call method box_alv->set_table_for_first_display
     exporting
       i_structure_name              = 'ZBGER' " 输出格式对应的结构
       is_layout                   = ls_layout "layout 属性
       i_default                   = 'X'
     changing
       it_outtab                   = itab " 内表
       it_fieldcatalog               = lt_fieldcat "fieldcat 属性
     exceptions
       others                        = 1.
    弹出式窗口另外做法:可使用write到屏幕的办法,如下:

    (1)在程序中创建一个screen type 为“方式对话框”的屏幕;
    (2)在屏幕输出前,write要输出的数据:
    process before output.
     modiule frm_write_out.
    (3)在module里写输出到屏幕的代码
    module frm_write_out output.
    LEAVE TO LIST-PROCESSING AND RETURN TO SCREEN 0.
    NEW-PAGE NO-TITLE.
    write ...
    LEAVE SCREEN.
    endmodule.

  • 相关阅读:
    软件工程概论第十二周学习进度
    冲刺第十天
    评价搜狗输入法
    冲刺第九天
    冲刺第八天
    冲刺第七天
    冲刺第六天
    冲刺第五天
    软件工程概论第十一周学习进度
    冲刺第四天
  • 原文地址:https://www.cnblogs.com/elegantok/p/1812636.html
Copyright © 2020-2023  润新知