[代码]REUSE_ALV_GRID_DISPLAY_LVC-代码模板详解编程语言

一个简单的调用REUSE_ALV_GRID_DISPLAY_LVC显示ALV的abap程序模板。

实现一下几个简单功能:

1,双击跳转-‘&IC1’

2,在自定义状态栏(status)上添加按钮,copy自函数组KKBL中的status。

SE80:

[代码]REUSE_ALV_GRID_DISPLAY_LVC-代码模板详解编程语言

3,行选择功能

基本上能满足简单的ALV显示。

完整代码:

REPORT ztest_alv_lvc_template. 
TYPES:BEGIN OF gty_ekko, 
ebeln TYPE ekko-ebeln, 
verkf TYPE ekko-verkf, 
sel   TYPE c,  "用来标识行选择的字段 
END OF gty_ekko. 
DATA:git_ekko TYPE STANDARD TABLE OF gty_ekko, 
gwa_ekko TYPE gty_ekko. 
DATA:git_fcat   TYPE lvc_t_fcat, 
gwa_fcat   LIKE LINE OF git_fcat, 
gwa_layout TYPE lvc_s_layo. 
CONSTANTS: gco_callback_user_command TYPE slis_formname  VALUE 'FRM_USER_COMMAND', 
gco_callback_status       TYPE slis_formname  VALUE 'FRM_USER_STATUS'. 
START-OF-SELECTION. 
SELECT ebeln 
verkf 
INTO CORRESPONDING FIELDS OF TABLE git_ekko 
FROM ekko 
UP TO 10 ROWS. 
PERFORM frm_set_catalog. 
gwa_layout-zebra = 'X'. 
gwa_layout-box_fname = 'SEL'.  "指定行选择字段 
gwa_layout-cwidth_opt = 'X'. 
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC' 
EXPORTING 
i_callback_program       = sy-repid 
is_layout_lvc            = gwa_layout 
it_fieldcat_lvc          = git_fcat 
i_callback_pf_status_set = gco_callback_status 
i_callback_user_command  = gco_callback_user_command 
TABLES 
t_outtab                 = git_ekko[] 
EXCEPTIONS 
program_error            = 1 
OTHERS                   = 2. 
IF sy-subrc = 0. 
ENDIF. 
*&---------------------------------------------------------------------* 
*&      Form  FRM_SET_PF_STATUS 
*&---------------------------------------------------------------------* 
*       text 
*----------------------------------------------------------------------* 
*  -->  p1        text 
*  <--  p2        text 
*----------------------------------------------------------------------* 
FORM frm_user_status USING i_it_extab TYPE slis_t_extab. 
SET PF-STATUS 'S0001' . 
ENDFORM.                    " FRM_SET_PF_STATUS 
FORM frm_user_command USING i_ucomm       TYPE sy-ucomm 
i_wa_selfield TYPE slis_selfield. 
DATA:l_count TYPE n, 
l_msg   TYPE char100. 
CASE i_ucomm. 
WHEN 'POP'.  "click POP button in application toolbar 
LOOP AT git_ekko TRANSPORTING NO FIELDS WHERE sel = 'X'. 
l_count = l_count + 1. 
ENDLOOP. 
CONCATENATE 'Select' 
l_count 
'rows' 
INTO l_msg 
SEPARATED BY space. 
MESSAGE l_msg TYPE 'I'. 
WHEN '&IC1'.  "Double click 
*     if click on PO field, jump to me23n 
IF i_wa_selfield-fieldname = 'EBELN'. 
SET PARAMETER ID 'BES' FIELD i_wa_selfield-value. 
CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN. 
ENDIF. 
WHEN OTHERS. 
ENDCASE. 
ENDFORM. 
*&---------------------------------------------------------------------* 
*&      Form  FRM_SET_CATALOG 
*&---------------------------------------------------------------------* 
*       text 
*----------------------------------------------------------------------* 
*  -->  p1        text 
*  <--  p2        text 
*----------------------------------------------------------------------* 
FORM frm_set_catalog . 
DATA:l_pos TYPE i VALUE 1. 
CLEAR: l_pos. 
l_pos = l_pos + 1. 
gwa_fcat-coltext   = 'PO'. 
gwa_fcat-scrtext_l = 'PO'. 
gwa_fcat-scrtext_m = 'PO'. 
gwa_fcat-scrtext_s = 'PO'. 
gwa_fcat-fieldname = 'EBELN'. 
gwa_fcat-col_pos = l_pos. 
gwa_fcat-outputlen = '10'. 
APPEND gwa_fcat TO git_fcat. 
l_pos = l_pos + 1. 
gwa_fcat-coltext   = 'PO item'. 
gwa_fcat-scrtext_l = 'PO item'. 
gwa_fcat-scrtext_m = 'PO item'. 
gwa_fcat-scrtext_s = 'PO item'. 
gwa_fcat-fieldname = 'VERKF'. 
gwa_fcat-col_pos = l_pos. 
gwa_fcat-outputlen = '20'. 
APPEND gwa_fcat TO git_fcat. 
ENDFORM.

运行结果:

[代码]REUSE_ALV_GRID_DISPLAY_LVC-代码模板详解编程语言

以上。

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/19240.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论