• ALV概念讲解


    类型池:SLIS

    Fieldcat TYPE slis_t_fieldcat_alv
    作用:
    列格式设置(表单)
    字段名称,列是否可修改,列宽度等

    Layout YEPE slis_layout_alv
    作用:
    全局格式设置(结构)
    整表字段是否可修改,是否以斑马纹输出,是否显示选择按钮字段等

    函数:REUSE_ALV_FIELDCATALOG_MERGE
    根据内表结构返回fieldcat字段结构信息

    函数:REUSE_ALV_GRID_DISPLAY/REUSE_ALV_LIST_DISPLAY
    使用GRID/LIST模式输出ALV报表

    ALV调用设计内容

    START-OF-SELECTION
    数据表单数据选取
    END-OF-SELECTION
    作用:
    对FIELDCAT赋值:设置每列格式
    对LAYOUT赋值:设置表单格式(可选)
    对SPRT表等赋值:设置排序内容等(可选)
    给EVENT表赋值:增加程序交互事件(可选)
    调用函数,输出ALV

    案例:

    REPORT		ZHQ_10	MESSAGE-ID	ZHQ.
    INCLUDE	ZHQ_10TOP.
    INCLUDE	ZHQ_10FORM.
    
    START-OF-SELECTION.
    PERFORM	GET_DATA.
    ENDOF	SELECTION.
    
    	IF	GET_MARD[]		IS		NOT	INITIAL.
    		PERFORM	WRITE_DATA.
    	ELSE	
    		MESSAGE	S001	DISPLAY	LIKE	'E'.
    	ENDIF.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    FORM WRITE DATA.
    	PERFORM	BUILD_FIELDCAT.
    	PERFORM	BUILD_LAYOUT.
    	PERFORM	BUILD_SORT.
    	PERFORM	BUILD_EVEBT.
    	PERFORM	BUILD_ALV.
    ENDFORM.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    创建fieldcat

    fieldcat是一张内表,记录的是ALV输出时每列的属性信息

    字段 说明
    KEY 将该列设置为关键字(‘X’/“)
    ICON 以图表显示(‘X’/”)
    CHECKBOX 以复选框显示(‘X’/“)
    JUST 定义对齐方式(‘R’/‘L’/‘C’)
    IZERO 增加前导零
    NO_SIGN 不显示符号(‘X’/”)
    NO_ZERO 不显示前导零(‘X’/“)
    COL_POS 作为第几列输出(数字)
    DO_SUM 对字段进行汇总(‘X’/”)
    SELTEXT_L/M/S 字段名称描述长/中/短(字符串)
    HOTSPOT 设置为热点(显示为有下划线)

    案例

    写法一:

    FORM 	BUILD_FIELDCAT.
    	GS_FIELDCAT-COL_POS		=	'1'.
    	GS_FIELDCAT-FIELDNAME	=	'ZCODE'.
    	GS_FIELDCAT-OUTPUTLEN	=	'10'.
    	GS_FIELDCAT-SELTEXT_M	=	'学生编号'.
    	APPEND	GS_FIELDCAT	TO	GT_FIELDCAT.
    	
    	FORM 	BUILD_FIELDCAT.
    	GS_FIELDCAT-COL_POS		=	'2'.
    	GS_FIELDCAT-FIELDNAME	=	'ZCODE'.
    	GS_FIELDCAT-OUTPUTLEN	=	'20'.
    	GS_FIELDCAT-SELTEXT_M	=	'学生姓名'.	
    	APPEND	GS_FIELDCAT	TO	GT_FIELDCAT.
    ENDFORM.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    写法二:宏相关

    *宏	---每个宏中最多可以定义9个参数	
    FORM 	BUILD_FIELDCAT.
    		%%APPEND_FIELDCAT:	'1'		'ZCODE'		'10'		'学生编号',
    													'2'		'ZNAME'		'20'		'姓名编号',
    													'3'		'SEX'		'	3'		'性别',
    													'4'		'ZSCHOOL'		'10'		'学校',
    													'5'		'WEIGHT'		'15'		'体重',
    													
    ENDFORM
    		
    DEFINE	%%APPEND_FIELDCAT.		"一般用两个百分号开头,但并不是强制如此,只是为了与其他变量区别
    	CLEAR	GS_FIELDCAT.
    	GS_FIELDCAT-COL_POS		=	&1.
    	GS_FIELDCAT-FIELDNAME	=	&2.
    	GS_FIELDCAT-OUTPUTLEN	=	&3.
    	GS_FIELDCAT-SELTEXT_M	=	&4.	
    	APPEND	GS_FIELDCAT	TO	GT_FIELDCAT.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    使用子程序或者宏等方式,向FIELDCAT的内表中增加行
    表单中的每一列为FIELDCAT中的一行

    *ALV输出参数
    DATA: GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
    GS_FIRLDCAT TYPE SLIS_FIELDCAT_ALV,

    FROM BUILD_FIELDCAT.
    CLEAR GT_FIELDCAT[].
    PERFORM ADD_FIELDCAT USING ‘WERKS’ ‘工厂’ ‘1’ ‘5’ ‘’.
    PERFORM ADD_FIELDCAT USING ‘LGORT’ ‘仓库’ ‘2’ ‘5’ ‘’.
    PERFORM ADD_FIELDCAT USING ‘WERKS’ ‘工厂’ ‘3’ ‘20’ ‘’.
    PERFORM ADD_FIELDCAT USING ‘WERKS’ ‘工厂’ ‘4’ ‘20’ ‘X’.

    FORM ADD_FIELDCAT USING P_FIELDNAME
    P_SELTEXT
    P_COL
    P_LEN
    P_SUM.
    CLEAR GS_FIELDCAT.
    GS_FIELDCAT-FIELDNAME = P_FIELDNAME. "字段名
    GS_FIELDCAT-SELTEXT_M = P_SELTEXT . "描述文本
    GS_FIELDCAT-COL_POS = P_COL. "列
    GS_FIELDCAT-OUTPUTLEN = P_LEN. "输出长度
    GS_FIELDCAT-DO_SUM = P_SUM. "是否合计
    APPEND GS_FIELDCAT TO GT_FIELDCAT.

    ENDFORM.

    使用函数: REUSE_ALV-FIELDCATALOG_MERGE
    作用:
    参照数据库(给I_STRUCTURE_NAME传值)或参照内表(给I_INTERNAL_TABNAME传值),直接将内表格式转为fieldcat表单内容
    注意转换过的fieldcat可能需要再次修改

    直接在ALV调用时,给I_STRUCTURE_NAME传值数据字典结构
    作用:
    可以混合使用,

  • 相关阅读:
    排序算法之归并排序
    SSM框架-Spring(三)
    学习c++的第十二天
    leetcode 刷题 log day 52(子序列系列
    微服务架构项目open-cloud的认证方式及单点登录应用
    MAC电脑连接外接显示屏,颜色显示有问题,又粉、紫色蒙版,问题处理(1)
    C# HTML
    从零开始自己动手写自旋锁
    Linux系统下数据同步服务RSYNC
    软件测试/测试开发丨明确的编码规范,避免冗余和混乱
  • 原文地址:https://blog.csdn.net/weixin_43847969/article/details/126096811