ABAP ALV 报表基础模板(两种)
*第一种 :普通模板
*1.定义程序备注
*---------------------------------------------------------------------* * 程序名称 : ZPWH_TEMPLATE * 标 题 : xxxxxxxs报表 * 创 建 者 : xxx * 创建时间 : * 请 求 号 : * 描 述 : 查看XXXXXXX *---------------------------------------------------------------------* * 变更记录: * 修改日期 开发人员 请求号 描述 * -------- -------- ------------- ---------------------------------* * *---------------------------------------------------------------------* REPORT ZPWH_TEMPLATE.
*2.先定义变量常量表 *定义常量 CONSTANTS : C_INT VALUE 1. *定义类型组 图标 TYPE-POOLS ICON. DATA FT TYPE SMP_DYNTXT. *定义类型组 ALV DATA: I_FIELD_D TYPE SLIS_T_FIELDCAT_ALV, WA_LAYOUT TYPE SLIS_LAYOUT_ALV.
*引入表
TABLES : ZAH_VIEW,ZPWH_AZ_DB,SSCRFIELDS.
*定义结构类型 TYPES : BEGIN OF TY_ZAHZPWH, CARRID TYPE SCARR-CARRID, CONNID TYPE SPFLI-CONNID, CARRNAME TYPE SCARR-CARRNAME, CNAME TYPE ZPWH_AZ_DB-CNAME, CNSEX TYPE ZPWH_AZ_DB-CNSEX, CNIDCARD TYPE ZPWH_AZ_DB-CNIDCARD, CMOBLIE TYPE ZPWH_AZ_DB-CMOBLIE, END OF TY_ZAHZPWH.
*定义内表 DATA : GT_ZAH_VIEW TYPE TABLE OF ZAH_VIEW, GT_ZPWH_AZ_DB TYPE TABLE OF ZPWH_AZ_DB, GT_ZAH_ZPWH type TABLE OF TY_ZAHZPWH.
*定义对应内表结构,如果内表带表头,则此处省略 DATA : wa_GT_ZPWH_AZ_DB TYPE ZPWH_AZ_DB, wa_GT_ZAH_ZPWH TYPE TY_ZAHZPWH, wa__ZAH_VIEW TYPE ZAH_VIEW. *3.画屏幕 SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(8) TEXT-001 FOR FIELD P_CNAME. PARAMETERS : P_NAME LIKE ZPWH_AZ_DB-CNAME OBLIGATORY. SELECTION-SCREEN POSITION 40. SELECTION-SCREEN COMMENT 42(5) TEXT-002. PARAMETERS : P_RD1 TYPE C RADIOBUTTON GROUP RD. SELECTION-SCREEN COMMENT 50(2) TEXT-003. SELECTION-SCREEN POSITION 54. PARAMETERS : P_RD2 TYPE C RADIOBUTTON GROUP RD. SELECTION-SCREEN COMMENT 56(2) TEXT-004. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN SKIP 1. SELECTION-SCREEN BEGIN OF BLOCK BLOCK WITH FRAME TITLE TEXT-005. SELECT-OPTIONS : S_CONNID FOR ZAH_VIEW-CONNID MODIF ID cos. SELECTION-SCREEN SKIP 1. * SELECTION-SCREEN COMMENT 2(8) TEXT-006. PARAMETERS : P_CNAME TYPE C AS CHECKBOX USER-COMMAND A1, P_CNAME1 TYPE C AS CHECKBOX USER-COMMAND A2. SELECTION-SCREEN END OF BLOCK BLOCK. SELECTION-SCREEN SKIP 1. SELECTION-SCREEN BEGIN OF BLOCK BLOCK1 WITH FRAME TITLE TEXT-007. PARAMETERS : P_ZCID LIKE ZPWH_AZ_DB-CNIDCARD MODIF ID cos, P_ZMOB TYPE ZPWH_AZ_DB-CMOBLIE MODIF ID ord. SELECTION-SCREEN END OF BLOCK BLOCK1. SELECTION-SCREEN : FUNCTION KEY 1, FUNCTION KEY 2, FUNCTION KEY 3, FUNCTION KEY 4, FUNCTION KEY 5. *4.屏幕事件流
*初始化(OPTIONS设置必填),FT类型赋值 INITIALIZATION. P_NAME = ''. MOVE 'BUT1' TO SSCRFIELDS-FUNCTXT_01. MOVE 'BUT2' TO SSCRFIELDS-FUNCTXT_02. MOVE 'BUT3' TO SSCRFIELDS-FUNCTXT_03. FT-ICON_ID ='@4E@'. FT-ICON_TEXT ='04'. FT-QUICKINFO = 'TEST04'. SSCRFIELDS-FUNCTXT_04 = FT. *屏幕校验 AT SELECTION-SCREEN. CASE SSCRFIELDS-UCOMM.. WHEN 'FC01'. P_NAME = '第一个名字'. WHEN 'FC02'. P_NAME = '第二个名字'. WHEN 'FC03'. MESSAGE E001(ZPWHALLMASSAGE) WITH '1''2'. WHEN 'FC04'. MESSAGE 'INPUT EEEOR!!!' TYPE 'I'. WHEN OTHERS. ..... ENDCASE. *监控屏幕输出时 0ture 1flase AT SELECTION-SCREEN OUTPUT. LOOP AT SCREEN. IF screen-group1 = 'COS'. IF P_CNAME = 'X'. screen-input = 0. screen-active = 0. * screen-invisible = 0. ELSE. screen-input = 1. screen-active = 1. * screen-invisible = 1. ENDIF. ENDIF. IF screen-group1 = 'ORD'. IF P_CNAME1 = 'X'. screen-input = 0. screen-active = 0. * screen-invisible = 0. ELSE. screen-input = 1. screen-active = 1. * screen-invisible = 1. ENDIF. ENDIF. MODIFY SCREEN. ENDLOOP. *点结束数据验证,击执行查询事件 START-OF-SELECTION. DATA : NANE2 TYPE ZPWH_AZ_DB-CNAME. CONCATENATE '%' p_name '%' INTO NANE2. SELECT * FROM ZAH_VIEW INTO TABLE GT_ZAH_VIEW. SELECT * FROM ZPWH_AZ_DB INTO TABLE GT_ZPWH_AZ_DB WHERE CNAME LIKE NANE2."ORDER BY CONNID ASCENDING. SORT GT_ZPWH_AZ_DB BY CONNID DESCENDING. *查询所有数据后,将数据输出页面之前执行 END-OF-SELECTION. LOOP AT gt_ZAH_VIEW into wa__ZAH_VIEW. *放入表一数据 直等 wa_GT_ZAH_ZPWH-CARRID = wa__ZAH_VIEW-CARRID. wa_GT_ZAH_ZPWH-CONNID = wa__ZAH_VIEW-CONNID. *放入表二数据 read READ TABLE GT_ZPWH_AZ_DB INTO wa_GT_ZPWH_AZ_DB WITH KEY CONNID = wa__ZAH_VIEW-CONNID. IF sy-subrc = 0. wa_GT_ZAH_ZPWH-CNSEX = wa_GT_ZPWH_AZ_DB-CNSEX. wa_GT_ZAH_ZPWH-CNIDCARD = wa_GT_ZPWH_AZ_DB-CNIDCARD. wa_GT_ZAH_ZPWH-CMOBLIE = wa_GT_ZPWH_AZ_DB-CMOBLIE. wa_GT_ZAH_ZPWH-CNAME = wa_GT_ZPWH_AZ_DB-CNAME. ENDIF. CLEAR: wa_GT_ZPWH_AZ_DB,wa__ZAH_VIEW. APPEND wa_GT_ZAH_ZPWH TO GT_ZAH_ZPWH. CLEAR wa_GT_ZAH_ZPWH. *READ TABLE gt_ZAH_VIEW FROM wa__ZAH_VIEW into wa__ZAH_VIEW. ENDLOOP.
*5.ALV输出相关 *ALV 列 PERFORM F_SET_CELL. *ALV 显示 PERFORM F_ALV_DISPALY. FORM F_SET_CELL. DATA : LWA LIKE LINE OF I_FIELD_D. DATA : LCI TYPE I. CLEAR LWA. LCI = LCI + C_INT. LWA-COL_POS = LCI. LWA-FIELDNAME = 'CARRID'. LWA-SELTEXT_L = '航线代码'. APPEND LWA TO I_FIELD_D. CLEAR LWA. LCI = LCI + C_INT. LWA-COL_POS = LCI. LWA-FIELDNAME = 'CONNID'. LWA-SELTEXT_L = '航线连线'. APPEND LWA TO I_FIELD_D. CLEAR LWA. LCI = LCI + C_INT. LWA-COL_POS = LCI. LWA-FIELDNAME = 'CARRNAME'. LWA-SELTEXT_L = '航线名称'. APPEND LWA TO I_FIELD_D. CLEAR LWA. LCI = LCI + C_INT. LWA-COL_POS = LCI. LWA-FIELDNAME = 'CNAME'. LWA-SELTEXT_L = '乘客姓名'. APPEND LWA TO I_FIELD_D. CLEAR LWA. LCI = LCI + C_INT. LWA-COL_POS = LCI. LWA-FIELDNAME = 'CNSEX'. LWA-SELTEXT_L = '乘客性别'. APPEND LWA TO I_FIELD_D. CLEAR LWA. LCI = LCI + C_INT. LWA-COL_POS = LCI. LWA-FIELDNAME = 'CNIDCARD'. LWA-SELTEXT_L = '乘客身份证'. APPEND LWA TO I_FIELD_D. CLEAR LWA. LCI = LCI + C_INT. LWA-COL_POS = LCI. LWA-FIELDNAME = 'CMOBLIE'. LWA-SELTEXT_L = '乘客电话'. APPEND LWA TO I_FIELD_D. ENDFORM.
*或者将这些字段在se11里定义成结构,然后这里参照结构,结构里字段还可以多语言等,然后调用函数输出即可
**ZSW_DCC001 是定义好的结构 gt_field_d 是alv输出字段的结构
* DATA: lc_structrue TYPE ZSW_DCC001.
*REFRESH gt_field_d.
*CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
*EXPORTING
*i_structure_name = lc_structrue
*CHANGING
* ct_fieldcat = gt_field_d.
*ALV输出 FORM F_ALV_DISPALY. wa_layout-colwidth_optimize = 'X'. wa_layout-box_tabname = 'GT_ZAH_ZPWH'. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING i_callback_program = sy-cprog it_fieldcat = I_FIELD_D[] is_layout = WA_LAYOUT i_save = 'X' i_default = 'X' TABLES t_outtab = GT_ZAH_ZPWH. ENDFORM.
*第二种 INCLUDE 方法
*先复制底下固定代码结构,在双击名创建即可,逻辑就是通过include包含代码(或者理解叫引入,类似java,引入各种类,每个类里有代码实现)。
*1.备注
*---------------------------------------------------------------------*
* Program : ZFI_023 *
* Title : 机台间成本对比表 *
* Type : Manually *
* Created by: WH *
* Created on: 2022-04-01 *
* Change/Transport Number: SFDK901215 *
* Description : 机台间成本对比表 *
*---------------------------------------------------------------------*
* MODIFICATION LOG: *
* VER DD/MM/YY Author DESCRIPTION CHANGE REQUEST *
* --- -------- ------------- ---------------------- ---------------*
* 000 01/04/22 WH Initial release *
*---------------------------------------------------------------------*
REPORT zfi_023.
*INCLUDE里面top 是定义的内容 sel是开始屏幕 f01是引用方法,内可以写写多个方法,也可以建立多个f02,f03。。。每个里写一个方法
*写好名字后,双击名字--是--保存--输入包名(如果有则省略)--保存,即可创建
*下面的perform是自己写的,如果想用别人的代码块,在include下写上别人创建的(类似引用),底下perform写别人的创建 perform即可用别人写的,如果直接perform不写inclue则无法引用
INCLUDE: zfi_023_top, "Defination
zfi_023_sel, "Selection screen
zfi_023_f01. "Subroutines
*---------------------------------------------------------------------*
* INITIALIZATION *
*---------------------------------------------------------------------*
INITIALIZATION.
*---------------------------------------------------------------------*
* START-OF-SELECTION *
*---------------------------------------------------------------------*
*下面的perform双击名字后,可以选择建立在哪里,一般都是选择建立在上面的xxxx_f01里,也可以选择include,新建一个incude放新建的include里,下面就会出现一个新的include包含,
*当然也可以选择建立在top或者se1里,但是不正规
START-OF-SELECTION.
PERFORM f_get_data.
PERFORM f_process_data.
PERFORM f_output_data.
*---------------------------------------------------------------------*
* END-OF-SELECTION *
*---------------------------------------------------------------------*
END-OF-SELECTION. "释放内存
PERFORM f_free_memory.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本