关于 REUSE_ALV_FIELDCATALOG_MERGE 用法

  • Post author:
  • Post category:其他

往往在ALV展示时候,想要对fcat属性设置修改。那这样的话,如何获取我想要的那列并对其设置属性呢?
在这里插入图片描述
实现上面的设置前,需要获取ALV的表头目录。两种方式如下;

1.定义好结构的
I_STRUCTURE_NAME 传入se11里定义好的结构名

 call function 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
     I_STRUCTURE_NAME             = '结构名'
     changing
       ct_fieldcat                  = lt_fieldcat
*    EXCEPTIONS
*      INCONSISTENT_INTERFACE       = 1
*      PROGRAM_ERROR                = 2
*      OTHERS                       = 3
             .
   if sy-subrc <> 0.
* Implement suitable error handling here
   endif.

2.未在SE11定义结构,而是使用内部定义表
先data定义内部表的类型(不是TYPES:BEGIN OF)
like参照字段名,
继续定义标准表lt_makt LIKE STANDARD TABLE OF str_makt.
i_program_name 和 i_inclname 参数都要写为本程序名 (sy-repid)

DATA: BEGIN OF str_makt,
   matnr like makt-matnr,
  maktx like makt-maktx,
  END OF str_makt.

  DATA: lt_makt LIKE STANDARD TABLE OF str_makt.
  DATA: lt_fieldcat TYPE slis_t_fieldcat_alv.

  select matnr maktx
    INTO TABLE lt_makt
    FROM makt
    WHERE spras = sy-langu.

   call function 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
      I_PROGRAM_NAME               = sy-repid
      I_INTERNAL_TABNAME           = 'STR_MAKT'
*      I_STRUCTURE_NAME             =
*      I_CLIENT_NEVER_DISPLAY       = 'X'
      I_INCLNAME                   = sy-repid
      I_BYPASSING_BUFFER           = 'X'
*      I_BUFFER_ACTIVE              =
     changing
       ct_fieldcat                  = lt_fieldcat
*    EXCEPTIONS
*      INCONSISTENT_INTERFACE       = 1
*      PROGRAM_ERROR                = 2
*      OTHERS                       = 3
             .
   if sy-subrc <> 0.
* Implement suitable error handling here
   endif.


   call FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      IT_FIELDCAT = LT_FIELDCAT
      TABLES
        T_OUTTAB = LT_MAKT.

之前参考了一个博客只让用like,但是我用了type有时候也可以出来,有时候又找不到,比如下面方式。你要是知道为什么欢迎告诉我呀!
在这里插入图片描述


版权声明:本文为weixin_43885987原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。