调用REUSE_ALV_FIELDCATALOG_MERGE函数来获取FIELDCAT

简介:   REUSE_ALV_FIELDCATALOG_MERGE函数可根据内表结构返回FIELDCAT字段结构信息,具体的参数等信息请查看ALV调用的几个标准函数里相关的介绍,好的,那么让我们开始学习如何使用此函数。

  REUSE_ALV_FIELDCATALOG_MERGE函数可根据内表结构返回FIELDCAT字段结构信息,具体的参数等信息请查看ALV调用的几个标准函数里相关的介绍,好的,那么让我们开始学习如何使用此函数。

  REPORT  ZZWEI_ALV_DEMO.

  *ALV START
  TYPE-POOLS:SLIS. "调用该类型池

  *定义FIELDCAT与LAYOUT
  DATA:fieldCat TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
        layout TYPE SLIS_LAYOUT_ALV,
        w_repid LIKE SY-REPID.

  TABLES:SPFLI.
  DATA:LSPFLI LIKE STANDARD TABLE OF SPFLI WITH HEADER LINE.

  *屏幕开始事件
  START-OF-SELECTION.
    PERFORM GETDATA.
    PERFORM CATALOG.
    PERFORM ALVSHOW.
  

  *The Function Of GETDATA
  FORM GETDATA.
    SELECT FROM SPFLI INTO CORRESPONDING FIELDS OF TABLE LSPFLI.
  ENDFORM.
  

  *FORM CATALOG 根据结构体获取FIELDCAT
  FORM CATALOG.
    w_repid = SY-REPID.
    CLEAR fieldCat.
    CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
     EXPORTING
       I_PROGRAM_NAME               = w_repid
      *I_INTERNAL_TABNAME           =
       I_STRUCTURE_NAME             = 'SPFLI'
     *I_CLIENT_NEVER_DISPLAY       = 'X'
     *I_INCLNAME                   =
     *I_BYPASSING_BUFFER           =
     *I_BUFFER_ACTIVE              =
     CHANGING

        CT_FIELDCAT                  = fieldCat[] "导出FIELDCAT内表数据
      EXCEPTIONS
        INCONSISTENT_INTERFACE       = 1
        PROGRAM_ERROR                = 2
      OTHERS                       3
          .
    IF SY-SUBRC <> 0.
       MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.

    "对fieldcat属性的修改
    *READ TABLE fieldCat INDEX 2. "将第二列设为热点显示
    *fieldCat-HOTSPOT = 'X'.
    *MODIFY fieldCat INDEX 2.
    *
    *READ TABLE fieldCat INDEX 4. "将第四列设为KEY值字段
    *fieldCat-KEY = 'X'.
    *MODIFY fieldCat INDEX 4.
    *
    *READ TABLE fieldCat INDEX 5. "将第五列设为CHECKBOX
    *fieldCat-CHECKBOX = 'X'.
    *MODIFY fieldCat INDEX 5.
    layout-COLWIDTH_OPTIMIZE = 'X'"设置LAYOUT输出格式最优化
  ENDFORM.

  

  *The Function Of Show ALV
  FORM ALVSHOW.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
     EXPORTING
        I_CALLBACK_PROGRAM                = w_repid
        I_GRID_TITLE                      = 'ALV REPORT TEST'
"ALV显示标题

        IS_LAYOUT                         = layout
        IT_FIELDCAT                       = fieldCat[]
      TABLES
        T_OUTTAB                          = LSPFLI
      EXCEPTIONS
        PROGRAM_ERROR                     = 1
        OTHERS                            2
            .
     IF SY-SUBRC <> 0.
       MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
          WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
     ENDIF.
  ENDFORM.

  最终运行结果如下:
  

  错误排查:
  有的时候写好代码调用 REUSE_ALV_FIELDCATALOG_MERGE 时会莫名的出错提示为 READ_REPORT_LINE_TOO_LONG 下面列出的错误信息有这么一句.
  The internal table "/FUNCTION=K_KKB_FIELDCAT_MERGE/DATA=L_ABAP_SOURCE[]" is 72
     characters wide. The program line is 99 characters wide.
   该FM会把整个程序代码拷贝至其内表中,如果程序的行超过72个字符,即报如上错误。可以做以下设置。
  
  

  

 

目录
相关文章
|
索引
SAP ABAP——内表(十)【读取内表数据】
本文主要介绍一下SAP ABAP中内表的增删查改语句中的读取内表数据的相关语句,包括利用关键字读取数据,利用索引读取数据
1176 0
SAP ABAP——内表(十)【读取内表数据】
|
数据库
alv被display后随数据的变化随时刷新
创建一个report显示alv,在gui上提供一个按钮,更改数据点击按钮后的效果如下如上面2图所示,实时依据按钮的触发,刷新alv上的数据,将最新的数据内容显示出来。
3502 0
|
数据库
工作笔记之 SELECT 语句在 SAP ABAP 中的用法总结(下)(3)
在上一篇文章中,我们介绍了 ABAP 的查询语句关键的三个部分: 1.SELECT result 部分 2.FROM source 部分 3.INTO target 部分
|
存储 SQL 数据库
工作笔记之 SELECT 语句在 SAP ABAP 中的用法总结(上)(1)
日常开发过程中,最常用的语句可能就是查询语句了。那么如果从数据库表中查询数据呢?
工作笔记之 SELECT 语句在 SAP ABAP 中的用法总结(上)(1)
|
存储 人工智能 JSON
用 SAP ABAP 接入国内 AI 产品通用接口技术指南 1、调用AI接口
SAP 系统与国内先进的 AI 产品(如百度文心一言、阿里通义千问、字节跳动云雀模型、华为盘古大模型、豆包、Deepsheek 等)集成通用接口技术指南
2459 23
SAP:S4财务差异点:ACDOCA与BSEG表不一致问题
关于ACDOCA与BSEG明细数据内容存在差异部分来源分享
1776 0
|
索引
SAP ABAP——内表(九)【删除内表数据】
本文主要介绍一下SAP ABAP中内表的增删查改语句中的删除内表数据的相关语句,包括利用关键字删除数据,利用索引删除数据,利用WHERE语句删除数据,删除重复语句行
1647 0
SAP ABAP——内表(九)【删除内表数据】

热门文章

最新文章