ALV-GRID参考案例

往外张望的人在做梦,向内审视的人才是清醒的。

需求:
******ekpo表部分字段报表,及双击ALV跳转字段详情

使用:
****** ALV–REUSE_ALV_GRID_DISPLAY ******

详细案例:

*&-----------------------------------------*
*&Report XXX_XXX_XX
*&-----------------------------------------*
*& ekpo表部分字段报表,及双击ALV跳转字段详情
*&	使用: REUSE_ALV_GRID_DISPLAY
*&-----------------------------------------*
eport XXX_XXX_XX .

TYPE-POOLS SLIS .
DATA myrepid LIKE sy-repid .
DATA gt_ekpo TYPE TABLE OF ekpo WITH HEADER LINE .
DATA gs_ekpo ekpo .
DATA gt_fieldcat TYPE SLIS_T_FIELDCAT_ALV .
DATA gs_fieldcat TYPE SLIS_FIELDCAT_ALV .

DATA: BEGIN OF item OCCURS 10,
	EBELN like EKPO-EBELN,
	EBELP like EKPO-EBELP,
	LOEKZ like EKPO-LOEKZ,
	STATU like EKPO-STATU,
	AEDAT like EKPO-AEDAT,
END OF ITEM .

"选择屏幕
SELECTION-SCREEN: BEGIN OF BLOCK blk1 WITH FRAME TITLE text01 .
	SELECT-OPTIONS s_ebeln for gs_ekpo-ebeln OBLIGATORY .
	SELECT-OPTIONS s_loekz for gs_ekpo-loekz OBLIGATORY .
	SELECT-OPTIONS s_statu for gs_ekpo-statu .
SELECTION-SCREEN:END OF  BLOCK blk1 .

"取数
PERFORM get_data .
 IF gt_ekpo[] is INITIAL .
    MESSAGE '请重新输入查询条件' TYPE 'S' .
    EXIT .
 ENDIF.

START-OF-SELECTION .
 "宏
 DEFINE %%append_fieldcat .
 	CLEAR gs_fieldcat.
 	gs_fieldcat-col_pos = &1.
 	gs_fieldcat-fieldname = &2 .
 	gs_fieldcat-outputlen = &3 .
    gs_fieldcat-select_m = &4 .
    APPEND gs_fieldcat to gt_fieldcat .
END-OF-DEFINITION .
END-OF-SELECTION .

PERFORM display_data .


"alv
FORM display_data .
	PERFORM build_fieldcat .
	PERFORM build_alv .
ENDFORM .

FORM get_data .
	SELECT
	  ....
	FROM ekpo
	INTO CORRESPONDING FIELDS OF TABLE gt_ekpo
	WHERE ebeln = s_ebeln and 
		loekz = s_loekz and 
		statu = s_statu .
ENDFORM .

FORM build_fieldcat .
clear gs_fieldcat .   
	**
	*gs_fieldcat-fieldname = 'EBELN '.
	*gs_fieldcat-seltext_l = 'Purchasing Document Number' .
	*APPEND gs_fieldcat TO gt_fieldcat .
	*...
	**这里使用宏定义,方便后期维护 :
	%%append_fieldcat:  '1' 'EBELN' '10' 'Purchasing Document number' ,
						'2' 'EBELP' '15' 'XXXXX' ,
						'3' 'LOEKZ' '1' 'XXXXX' ,
						...
						...
						....
ENDFORM .	

FORM build_alv .
	myrepid = sy-repid .
	CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
		EXPORTING
			I_CALLBACK_PROGRAM       = myrepid  						"当前程序名
			I_CALLBACK_USER_COMMAND  = 'USER_COMMAND'					"鼠标事件操作子程序
			I_GRID_TITLE             = 'Purchasing Document Item'
			IT_FIELDCAT              = gt_fieldcat  					"字段定义描述表
		TABLES
			t_outtab                 = gt_ekpo
	if sy-subrc <> 0 .
	endif .		
ENDFORM .

FORM user_command USING r_ucomm LIKE sy-ucomm
		 re_selfield TYPE slis_selfield .
	IF r_ucomm = '&IC1' .                                       "鼠标双击
		PERFORM po_item_information USING re_selfield .
	ENDIF .
ENDFORM.

FORM po_item_information USING re_selfield TYPE slis_selfied .
	READ TABLE gt_ekpo INDEX re_selfield-tabindex .
	SELECT 
		..
	FROM ekpo
	INTO CORRESPONDING FIELDS OF TABLE item
	WHERE ebeln = gt_ekpo-ebeln .

	PERFORM item_output .
ENDFORM .

FORM item_output .

	"定义字段详情
	clear gs_fieldcat .   
	gs_fieldcat-fieldname = 'EBELN '.
	gs_fieldcat-seltext_l = 'Purchasing Document Number' .
	APPEND gs_fieldcat TO gt_fieldcat .
	clear gs_fieldcat .
	gs_fieldcat-fieldname = 'EBELP '.
	gs_fieldcat-seltext_l = 'ITEM Number of Purchasing Document' .
	APPEND gs_fieldcat TO gt_fieldcat .
	...
	...
	...


	myrepid = sy-repid .
	CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
		EXPORTING
			I_CALLBACK_PROGRAM  = myrepid
			IT_FIELDCAT   gt_fieldcat
		TABLES
			T_OUTTAB  = item

	if sy-subrc <> 0 .
	endif .
ENDFORM.






  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值