ABAP 简单的ALV使用经验

论坛 期权论坛 脚本     
匿名技术用户   2021-1-4 16:12   11   0



REPORT ZTEST_020.

TABLES:ZDSMT_BMXHTJB_D2.
TYPE-POOLS: SLIS.
DATA:BEGIN OF WA_XHB,
HH TYPE SY-TABIX.
INCLUDE STRUCTURE ZDSMT_BMXHTJB_D2.
DATA: END OF WA_XHB.
data: head1 like TABLE OF WA_XHB WITH HEADER LINE.
data: i_fieldcat_alv type slis_t_fieldcat_alv with header line,
i_layout type slis_layout_alv, "alv的格式
i_fieldcat type slis_fieldcat_alv,
w_repid like sy-repid.
*它对应的start-of-selection中定义子函数如下:
start-of-selection.
perform getdata. "从数据库中取数据到相应内表中
perform layout_build. "用于定义ALV表单的相关格式、属性
perform fields. "用来定义表单中的各个列的相关信息,比如列名等
perform display_data. "用来显示ALV表单
* 子函数定义如下:
form layout_build.
i_layout-zebra = 'X'.
i_layout-detail_popup = 'X'. "是否弹出详细信息窗口
w_repid = sy-repid. "程序为当前程序
i_layout-f2code = '&ETA'. "设置触发弹出详细信息窗口的功能码,这里是双击
i_layout-no_vline = 'X'. "这个用来设置列间隔线
i_layout-colwidth_optimize = 'X'. "优化列宽选项是否设置
i_layout-detail_initial_lines = 'X'.
i_layout-detail_titlebar = '详细内容'. "设置弹出窗口的标题栏
endform. "layout_build
*&---------------------------------------------------------------------*
*& Form fields
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
form fields.
* 下面继续添加要显示的列及对应名称文本,
data:pos type i.
refresh i_fieldcat_alv.
pos = 1.
clear i_fieldcat.

pos = pos + 1.
i_fieldcat-col_pos = pos.
i_fieldcat-fieldname = 'HH'.
i_fieldcat-seltext_l = '行号'.
append i_fieldcat to i_fieldcat_alv.
clear i_fieldcat.

i_fieldcat-col_pos = pos. "第几列
i_fieldcat-fieldname = 'KOSTL'.
i_fieldcat-seltext_l = '成本中心'. "列名
append i_fieldcat to i_fieldcat_alv.



pos = pos + 1.
i_fieldcat-col_pos = pos.
i_fieldcat-fieldname = 'LTEXT'.
i_fieldcat-seltext_l = '成本中心名称'.
append i_fieldcat to i_fieldcat_alv.
clear i_fieldcat.

pos = pos + 1.
i_fieldcat-col_pos = pos.
i_fieldcat-fieldname = 'CJMC'.
i_fieldcat-seltext_l = '车间名称'.
append i_fieldcat to i_fieldcat_alv.
clear i_fieldcat.

pos = pos + 1.
i_fieldcat-col_pos = pos.
i_fieldcat-fieldname = 'ZZMC'.
i_fieldcat-seltext_l = '装置名称'.
append i_fieldcat to i_fieldcat_alv.
clear i_fieldcat.

Endform.
*&---------------------------------------------------------------------*
*& Form DISPLAY_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DISPLAY_DATA .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER = ' '
* I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = w_repid "当前程序
* 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 = i_layout "子函数layout_build填充的格式定义
IT_FIELDCAT = i_fieldcat_alv[] "子函数fields填充的各列 tables
* 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 =
TABLES
T_OUTTAB = head1. "假设数据都在head1内表中
* EXCEPTIONS
* PROGRAM_ERROR = 1
* OTHERS = 2
.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.

ENDFORM. " DISPLAY_DATA
*&---------------------------------------------------------------------*
*& Form GETDATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GETDATA .
SELECT * from ZDSMT_BMXHTJB_D2
into CORRESPONDING FIELDS OF TABLE head1.

LOOP AT head1 .
head1-HH = SY-TABIX.
MODIFY head1.
ENDLOOP.
ENDFORM. " GETDATA
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP