SAP ALV相关开发细节(ALV资料三)

1、标准ALV与对象ALV的共同开发细节

2、标准ALV开发相关细节

2.1、ALV中的各种结构类型注解:

        1)TYPE-POOLS: slis:用于指定ALV类型组;

        2)slis_listheader:用于定义top of page的抬头结构;

        3)slis_t_listheader:用于定义top of page的抬头表

        4)slis_t_sortinfo_alv:用于指定ALV排序分类合计等信息的数据对象;

        3)slis_layout_alv :用于定义布局类型数据对象;

        4)slis_t_fieldcat_alv WITH HEADER LINE:用于定义ALV列字段相关类型数据

对象;(slis_t_fieldcat_alv是表字段的整体,slis_fieldcat_alv是某一个字段的内容,将该字段的内容写到 slis_fieldcat_alv后,通过append添加到slis_t_fieldcat_alv中,后者是整个列表的标题,在显示的时候用到。)

        5)slis_t_event :是event的整体可看作event的集合,感觉可以用来写表头。

slis_alv_event是某个event, 需要将slis_alv_event append到slis_t_event.它可以包含图片和listheader等,也就是说listheader等是靠event来显示的。

        6)slis_t_listheader :是listheader的集合,slis_listheader是某个listheader。将slis_listheader赋值后append到slis_t_listheader中。它是内表的表头。

        7)slis_listheader : 包含:typ :H = header,S = Selection,A = action. key :

是和s对应的,是那个的标题吧. info:可以是变量和赋值的。跟在key的标题后面,

是个表达值。

2.2、ALV中所用到的函数:

1)显示ALV函数:

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
  EXPORTING
    i_callback_program = g_repid
    i_callback_pf_status_set = 'FRM_STATUS_ALV'
    i_callback_user_command = 'FRM_USER_COMMAND_ALV'
    is_layout = g_layout
    it_fieldcat = g_fieldcat_alv[]
  TABLES
    t_outtab = it_main.

上面“REUSE_ALV_GRID_DISPLAY “函数的参数说明:

1> g_repid:用于保存当前程序名,例如:

g_repid TYPE sy-repid VALUE sy-repid "保存当前程序名

2> FRM_STATUS_ALV:该子程序用于指定程序状态,例如:

        FORM frm_status_alv USING p_extab TYPE slis_t_extab.

                SET PF-STATUS 'STANDARD'.

        ENDFORM.

3> FRM_USER_COMMAND_ALV:该子程序指定相关函数功能码的响应逻辑,例如:

        FORM frm_user_command_alv USING p_ucomm
                TYPE sy-ucomm p_selfield TYPE slis_selfield.
                ok_code = p_ucomm.
        CASE ok_code.
        WHEN 'CREATE'.
        … …
        WHEN 'DELETE'.
        … …
        ENDCASE.

p_selfield-refresh = 'X'. "ALV被修改时会自动刷新,没有修改不进行刷新

ENDFORM.

4> g_layout:用于设置ALV布局样式,例如:

FORM frm_alv_layout_build.
    g_layout-zebra = 'X'.
    g_layout-colwidth_optimize = 'X'. "列数据最优化显示
    g_layout-box_fieldname = 'SELFLAG'. "表示ALV行项目选中的字段
ENDFORM.

5> g_fieldcat_alv[]:用于指定ALV字段相关属性信息,例如:

FORM frm_alv_set_columns.
    REFRESH g_fieldcat_alv.
    PERFORM frm_set_l_fieldcat USING 1 'LIFNR' '供应商账号'.
ENDFORM.

FORM frm_set_l_fieldcat USING p_pos p_name p_text.
    DATA: l_fieldcat TYPE slis_fieldcat_alv.
    l_fieldcat-col_pos = p_pos.
    l_fieldcat-fieldname = p_name.
    l_fieldcat-seltext_l = p_text.
* l_fieldcat-no_zero = 'X'.
    APPEND l_fieldcat TO g_fieldcat_alv.
ENDFORM.

6> it_main:此内表中保存的是ALV所要展示的数据,例如:

it_main TYPE TABLE OF typ_item WITH HEADER LINE, "ALV对应的内表
SELECT lifnr "供应商账号
        ktokk "账号组
        name1 "名称1
        name2 "名称2
INTO CORRESPONDING FIELDS OF TABLE it_main
FROM zmmjyht003
WHERE (l_where).

此函数的其它参数信息,详见附属信息中的 'REUSE_ALV_GRID_DISPLAY'函数常用参数

2) reuse_alv_events_get : 将各个事件的名字写到slis_t_event的name中。这样,可以在后面,根据名字的不同,对不同的event付不同的form,来实现不同功能。

2.3、ALV其它相关信息:

1)ABAP alv中对数字字段进行去掉小数点后面的零的操作如下:

在slis_t_fieldcat_alv结构中,给demcimals_out字段设为零即可,代码如下:

IF P_FIELD = 'LINE_SUM'.

LS_FIELDCAT-DECIMALS_OUT = '0'.

ENDIF.

2)通过HTML格式来显示表头,示例代码如下:

*-------ALV Commit Setting of 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 = ''.

CALL METHOD cl_dd->html_insert
  EXPORTING
    contents = m_buff
  CHANGING
    position = m_p.
    m_buff = '

配件报废品种汇总表

CALL METHOD CL_DD->HTML_INSERT
  EXPORTING
    CONTENTS = m_buff
  CHANGING
    POSITION = m_p.
CONCATENATE '报表日期:' S_DATE-LOW 'TO' S_DATE-HIGH '' into m_buff.

CALL METHOD CL_DD->HTML_INSERT
  EXPORTING
    CONTENTS = m_buff
  CHANGING
    POSITION = m_p.
    m_buff = '

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ᝰ随心ꦿེএ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值