ALV FIELDCAT添加属性 – REUSE_ALV_FIELDCATALOG_MERGE函数

2023-11-09

在 ALV 定义 Fieldcat 的时候,我们往往需要通过 slis_fieldcat_alv 的赋值给Fieldcat导入结构。

如上篇文章中给出的例子:

01
02
03
04
05
06
07
08
09
10
11
12
13
DATA : wa_fieldcat  TYPE slis_fieldcat_alv ,   
       i_fieldcat   TYPE slis_t_fieldcat_alv ,  
       i_layout     TYPE slis_layout_alv.
 
wa_fieldcat-tabname     =  'I_TAB' .
wa_fieldcat-fieldname   =  'MATNR' .        " 需要输出的内表的字段名
wa_fieldcat-seltext_l   =  'Material NO.' . " 字段的描述-长字段标签
wa_fieldcat-seltext_m   =  'Material NO.' . " 字段描述-中字段标签
wa_fieldcat-seltext_s   =  'Material NO.' . " 字段描述-短字段标签
wa_fieldcat-fix_column  =  'X' .           " 是否是固定列
 
APPEND wa_fieldcat  TO i_fieldcat.
CLEAR  wa_fieldcat.


 

上面的例子中,只给 fieldcat 中增加了一行记录,即 ALV 只输出一列数据;

如若我们需要输出的 ALV 字段非常多,比如50个字段(会有这种需求);

这时候,就会重复操作同样的赋值语句,这只会增加我们的开发量,没法提高效率;

如果开发中又需要对一些字段做属性修改,又需要对相应的 Fieldcat 字段添加属性,这又是一个烦躁的过程;

 

一般这种情况下,可以通过两种方法解决上面的问题。

一种是通过定义宏,来为Fieldcat 赋值;

一种是通过REUSE_ALV_FIENDCATALOG_MERGE函数为Fieldcat赋值。

或者是两种方法结合。

1. 宏定义

宏定义的操作较为简单,不做详细说明,这里直接给出示例:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
DATA : gw_fieldcat_print  TYPE lvc_s_fcat,
       gt_fieldcat_print  TYPE lvc_t_fcat.
 
* 定义宏
DEFINE def_fieldcat_print.
 
   clear gw_fieldcat_print.
 
   gw_fieldcat_print-fieldname = &1. "字段名称
   gw_fieldcat_print-ref_table = &2. "参考内表
   gw_fieldcat_print-reptext   = &3. "字段名称
   gw_fieldcat_print-coltext   = &3. "字段名称
   gw_fieldcat_print-scrtext_l = &3. "长文本
   gw_fieldcat_print-scrtext_m = &3. "中文本
   gw_fieldcat_print-scrtext_s = &3. "短文本
   gw_fieldcat_print-no_zero   = &4. "去零显示
   gw_fieldcat_print-edit      = &5. "编辑
   gw_fieldcat_print-outputlen = &6. "字段输出长度
   gw_fieldcat_print-checkbox  = &7. "以复选框形式输出
   gw_fieldcat_print-do_sum    = &8. "小计
 
   append gw_fieldcat_print  to gt_fieldcat_print.
 
END - OF - DEFINITION .
 
* 定义宏
def_fieldcat_print  'CHECK' '' '选择'       ''  'X' '10' 'X' '' .
def_fieldcat_print  'KDAUF' '' '订单号'     'X' ''  '10' ''  '' .
def_fieldcat_print  'KDPOS' '' '行项目号'   ''  ''  '6'  ''  '' .
def_fieldcat_print  'WERKS' '' '工厂'       ''  ''  '6'  ''  '' .
def_fieldcat_print  'AUFNR' '' '生产工单号' 'X' ''  '10' ''  '' .

 

2. REUSE_ALV_FIENDCATALOG_MERGE函数

REUSE_ALV_FIENDCATALOG_MERGE函数可以根据现有的内表结构返回FIELDCAT字段结构信息;

其中包括数据字典中的结构、透明表、视图,自定义的Add-On表、结构、视图;

也包括程序中定义的全局、局部结构、内表。

 

REUSE_ALV_FIENDCATALOG_MERGE 函数的输入输出参数:

1) Import参数:

I_PROGRAM_NAME:程序名称

I_INTERNAL_TABNAME:内表名称,必须为输出内表的自定义STRUCTURE

I_STRUCTURE_NAME:结构名称,直接参考数据字典中的透明表、视图或STRUCTURE

I_CLIENT_NEVER_DISPLAY:显示Client字段

I_INCLNAME:Include 名称

 

2) Changing参数:

CT_FIELDCAT:导出的Fieldcat结构信息

 

这里需要注意的是,I_INTERNAL_TABNAME 与 I_STRUCTURE_NAME 参数只需一项。

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
DATA : BEGIN OF gt_out,  "输出表
      machine(5)  TYPE n,
      ton(5)  TYPE n,
   END OF gt_out.
 
DATA :i_fieldcat   TYPE slis_t_fieldcat_alv.
 
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
   EXPORTING
     i_program_name         = sy-repid
     i_internal_tabname     =  'GT_OUT'
*    i_structure_name       = 'GT_OUT'
     i_inclname             = sy-repid
   CHANGING
     ct_fieldcat            = i_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 .

 

从上面的程序可以看出,在定义内表结构时,使用了 Data 关键字来定义内表结构;

有时候,也会习惯于用TYPES关键字定义内表结构;但在这里,如若用Types定义结构时,该函数则会取不到任何相关的信息:

reuse_alv_fieldcatalog_merge

reuse_alv_fieldcatalog_merge

 

然后,还要注意的一点是,由于REUSE_ALV_FIELDCATALOG_MERGE 函数中导出的Fieldcat结构为slis_t_fieldcat_alv;

故该函数只能和 REUSE_ALV_GRID_DISPLAY 函数一起使用,不能用于 REUSE_ALV_GRID_DISPLAY_LVC 函数。

必须需要使用REUSE_ALV_GRID_DISPLAY_LVC 函数的,则可以通过前面讲到的定义宏来为Fieldcat提交相关信息。

 

下面给出一个示例:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
DATA :
BEGIN OF gt_out  OCCURS 0,  "输出表
      machine(5)  TYPE n,         "机台
      ton(5)  TYPE n,             "吨位
      extwg  LIKE mara-extwg,     "客户
      zeinr  LIKE mara-zeinr,     "机种
      matnr  LIKE mara-matnr,     "内部品番
      maktx  LIKE makt-maktx,     "外部品番
      vgw04  LIKE afvv-vgw04,     "周期
      bmsch(16)  TYPE n,          "取数
      ngrad  LIKE kako-ngrad,     "收率
      abili(7)   TYPE p,         "日生产能力
      kpcs01(7)  TYPE p   DECIMALS 3,         "产量
      days01(5)  TYPE p   DECIMALS 2,         "生产天数
      work01(2)  TYPE n,                     "工作天数
      acti01  LIKE konv-kbetr,               "稼动率
END OF gt_out.
 
* ALV 定义
TYPE - POOLS :slis.
 
DATA : g_repid  LIKE sy-repid,
       gt_fieldcat  TYPE slis_t_fieldcat_alv  WITH HEADER LINE ,
       gt_layout    TYPE slis_layout_alv.
 
DEFINE modify_fieldcat1.
 
   READ TABLE gt_fieldcat  INDEX &1.
   gt_fieldcat-seltext_m  = &2.
   gt_fieldcat-ddictxt    =  'M' .
   MODIFY gt_fieldcat  INDEX &1.
 
END - OF - DEFINITION .
 
 
DATA :lv_index  LIKE sy-tabix,
      lv_text  TYPE scrtext_m.
 
g_repid = sy-repid.
 
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
   EXPORTING
     i_program_name         = g_repid
     i_internal_tabname     =  'GT_OUT'
     i_inclname             = g_repid
   CHANGING
     ct_fieldcat            = gt_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 .
 
 
 
modify_fieldcat1: 1   '机台' ,
                   2   '吨位' ,
                   3   '客户' ,
                   4   '机种' ,
                   5   '内部品番' ,
                   6   '外部品番' ,
                   7   '周期' ,
                   8   '取数' ,
                   9   '收率' ,
                   10  '日生产能力' .
 
 
READ TABLE gt_fieldcat  INDEX 8.
gt_fieldcat-no_zero  =  'X' .
MODIFY gt_fieldcat  INDEX 8.
 
 
gt_layout-colwidth_optimize =  'X' .
 
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
   EXPORTING
     i_callback_program = g_repid
     is_layout          = gt_layout
     it_fieldcat        = gt_fieldcat[]
     i_save             =  'X'
   TABLES
     t_outtab           = gt_out
   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 .
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ALV FIELDCAT添加属性 – REUSE_ALV_FIELDCATALOG_MERGE函数 的相关文章

  • sap上传excel文档字符限制处理

    abap中有多个函数处理上传的excel文档中的数据 xff0c 记录数据的信息 xff08 行 列 值 xff09 如 xff0c 函数KCD EXCEL OLE TO INT CONVERT xff1a data lt data in
  • SAP smartforms 打印失败 消息类型:SSFCOMPOSER 消息号:601 (货币和数字字段设置参考及格式)

    首先先感谢大佬 上连接 SAP smartforms 打印失败 首先说一下问题 在全局给的变量 在表中找不到 就是这两个参数 类型QUAN 报错信息 消息类型 SSFCOMPOSER 消息号 601 然后渠道se91查找该消息表示并搜索消息
  • 在SAP中创建并运用条形码

    原文地址 xff1a http blog chinaunix net u2 64924 showart 715473 html 在 SAP 中创建并运用条形码的过程如下 xff1a 1 以 T CODE xff1a SE73 进行后如图 x
  • SAP HR模块配置假期日历和缺勤类型

    目录 一 配置假期日历 二 配置缺勤信息类型 2 1 定义缺勤类型 2 2 定义缺勤的计算规则 2 3 分配缺勤计算规则到缺勤类型 一 配置假期日历 SAP的HR模块中 xff0c 业务顾问在实施的时候一般会配置未来10年的假期日历 xff
  • SAP查看SPRO配置对应的事务码

    在SPRO里面 xff0c 选中配置项 xff0c 然后点击菜单 编辑 显示IMG活动 在显示实施指南活动 xff1a 已分配对象 维护对象 里面 xff0c 点维护对象 xff0c 找到定制对象 xff0c 就可以查看对应的事务码 但是不
  • sap上传excel文档字符限制处理

    abap中有多个函数处理上传的excel文档中的数据 xff0c 记录数据的信息 xff08 行 列 值 xff09 如 xff0c 函数KCD EXCEL OLE TO INT CONVERT xff1a data lt data in
  • rc=20 > Connect to SAP gateway failed

    这种错误 xff0c 我是在一台用户的电脑上碰到的 xff0c 解决方案很简单 xff1a 把Computer Name换成英文 汗了许久
  • ABAP 新语法记录(一)

    主要内容 内联声明 构造表达式 内表操作 Open SQL 其他 本文列出了ABAP新语法的一些使用方式 供大家学习参考 内联声明 代码实现 pre amp 主题一 内联声明 语法 DATA FILED SYMBOL 1 定义变量 2 定义
  • ME28/ME2L/ME2N增强字段

    导语 用户希望在ME28采购订单审批的时候显示采购订单创建人以及描述 需要通过增强字段来实现 查询了一下SAP有标准的BADI可以进行增强 好像ME28 ME2L ME2N都是通过这里实现 使用不同的展示结构 这里没有深入测试其他事物 仅以
  • SAP之FIORI(7)-MVC加载模式

    SAP之FIORI 7 MVC加载模式 MVC 是Model View Controller的简称 用于将程序的数据 界面展示和用户交互分离 通过这种分离 可以简化开发 以及让某部分变动的时候 不需要影响其他部分 从而降低耦合 Model
  • SAP ABAP HANA 使用ECLIPSE而不是HANA Studio

    首先是ECLIPSE下载 链接 在这个网页中找到SAP HANA Tools这一块 然后跟着procedure的操作来做 即下图 安装完成后 连接SAP系统 打开Eclipse 点图中的按钮或菜单栏Windows gt Perspectiv
  • 创建利润中心在利润中心组选择时提示不存在利润中心组

    已经KCH1创建好利润中心组的情况下KE51选刚才创建好的利润中心组依然会有如题这样的提示 原因是没有0KE5进行成本控制范围设置 如图下图 设置好后再KE51创建利润中心就可以了
  • 网络系统实现技术之IPX与SPX

    IPX SPX Novell NetWare网络 Novell公司为适应网络发展 将主机网络转换为PC网络 开发了Novell NetWare网络系统 该系统中基于客户机 服务器模式 以普通PC机做为客户机 以性能强大的服务器做为服务器 为
  • SAP MM ME2M ME2L ME28 增强自定义字段

    本人诚心接ABAP远程开发任务 价格公道 有需要的联系我 欢迎个人 甲方爸爸 乙方私信联系 目前项目需要增强ME2L 去增加客制化的字段 一开始顾问要求是copy标准程序 然后增加字段 查阅资料之后发现 SAP 预留了标准的增强出口去做增强
  • SAP MM学习笔记31 - 已割当供给元的购买依赖

    上次学习了未割当供给元的购买依赖 未分配供应商采购申请 咱们本章来学习一下 已割当供给元的购买依赖如何处理 SAP MM学习笔记30 未割当供给元的购买依赖 东京老树根的博客 CSDN博客 如下图所示 利用 购买依赖割当一览 手动 从购买依
  • SAP 程序中权限检查和用户权限缺失检查 SU53

    1 在程序中调用权限对象 在很多SAP标准程序中 已经存在了对权限数据的调用及管控功能 在程序中可以通过ABAP程序编辑器快速插入调用权限的代码 权限代码需要放在AT SELECTION SCREEN 事件块里 AUTHORITY CHEC
  • SAP/FICO/BAPI_ACC_DOCUMENT_POST-外币凭证金额和本位币误差问题处理

    场景 通过BAPI ACC DOCUMENT POST创建USD币别凭证SAP会自动带出CNY本位币金额 本位币金额是USD通过SAP配置的汇率计算出来的 有时候会有误差 想要实现的功能 凭证金额和本位币金额都有外部系统传入设置不需要SAP
  • ABAP GN_DELIVERY_CREATE 报错 VL 561

    GN DELIVERY CREATE 去创建内向交货单的时候 报错 VL 561 Essential transfer parameters are missing in record 表示一些必输字段没输入 诸如一些 物料号 单位 等一些
  • ABAP DOI详解

    导语 DOI是SAP与Office集成的一种技术 是早期OLE的升级版本 把Excel嵌套在程序当中进行展示 需要提前上传模板 在Excel模板中 可以事先设计好公式 在SAP将数据写入Excel中之后会自动用公式进行计算 对于习惯于用Ex
  • 配置SAP用户密码策略(不用重启服务器的方法)

    最近公司审计 给我们提出了要优化密码策略的建议 原因是我们的密码策略太简单了 我稍稍研究了一下 之前是通过RZ10来配置 但是这种方法需要重启服务器 这就比较麻烦 其实有一种方法是通过配置密码策略 不要要重启的方法 事务代码 SECPOL

随机推荐

  • 使用 Docker 快速上手中文版 LLaMA2 开源大模型

    本篇文章 我们聊聊如何使用 Docker 容器快速上手朋友团队出品的中文版 LLaMA2 开源大模型 国内第一个真正开源 可以运行 下载 私有部署 并且支持商业使用 写在前面 感慨于昨天 Meta LLaMA2 模型开放下载之后 GitHu
  • C++中随机数的生成

    一 伪随机数 在C 中要生成随机数 首先要include一个文件
  • 手机屏幕测试html,华为手机屏幕检测代码是什么

    类型 系统工具大小 1 4M语言 中文 评分 10 0 标签 立即下载 华为手机很多操作代码用户记住后是可以快捷使用的 有小伙伴想要进行屏幕检测 那华为手机屏幕检测代码是什么 西西小编来为大家介绍 华为手机屏幕检测代码是什么 华为手机屏幕检
  • C语言最大子序列和三种常用解决方法

    注 看不懂评论区提问 有问必答 问题 给定K个整数组成的序列 N 1 N 2 N K 连续子列 被定义为 N i N i 1 N j 其中 1 i j K 最大子列和 则被定义为所有连续子列元素的和中最大者 例如给定序列 2 1 3 4 1
  • BGP一网双平面实验

    实验说明 1 A面 顶面 路由器在AS2 B面 底面 路由器在AS3 宁波路由器在AS1 西安路由器在AS4 2 IP设计 协议号设计如图所示 3 宁波办公路由IP 10 100 1 1 业务路由IP10 100 2 2 西安办公路由IP1
  • Windows 注册表(Registry) 学习

    目录 一 注册表 Registry 介绍 1 注册表简介 2 开启 禁用 注册表编辑器 3 注册表位置 二 注册表的结构 三 修改注册表实现 应用程序开机自启动 一 注册表 Registry 介绍 1 注册表简介 注册表是windows系统
  • 【安装文档】TRex流量分析仪保姆级安装指南--基于VMware虚拟机(ubantu18.04@Intel 82545EM

    前言 DPDK 网络数据开发中文网开发中文网致力于整理收录dpdk spdk ovs vpp dpvs virtiohost sdn ovn qemu等方向 的github开源项目 资料文档 书籍 讲解视频 各大企业招聘信息 23 1 12
  • react hooks useCallback useMemo的区别

    最近在看react hooks useState和useEffect较好理解 到useCallback和useMemo的时候 看官网不太懂 后来通过查阅资料 算是搞明白了 下面实例都是基于react native 不过原理和react是一样
  • Oracle ADG自动切换脚本分享

    为大家分享一个 Oracle ADG自动切换 的脚本 由云和恩墨工程师HongyeDBA编写 支持Switchover Failover 下载链接 https www modb pro download 5 DG环境需求 DG使用服务名必须
  • Python之匿名函数lambda使用方法

    文章目录 一 lambda函数介绍 1 1 语法 1 2 特性 1 3 示例 二 结合内置函数 map filter 使用 2 1 python内置的map 2 2 python内置的filter 一 lambda函数介绍 1 1 语法 在
  • golang面试题:json包变量不加tag会怎么样?

    问题 json包里使用的时候 结构体里的变量不加tag能不能正常转成json里的字段 怎么答 如果变量首字母小写 则为private 无论如何不能转 因为取不到反射信息 如果变量首字母大写 则为public 不加tag 可以正常转为json
  • Android 如何从活动向碎片传递数据

    踩了些坑 做个笔记 方便以后看 方法一 利用碎片的setArguments 方法传递bundle 首先 先穿插一个活动间传递数据的方法 活动间传递数据 两种方法 方法一 直接使用intent提供的put方法 如putString putpu
  • Java操作pdf的工具类itextpdf

    一 什么是iText 在企业的信息系统中 报表处理一直占比较重要的作用 iText是一种生成PDF报表的Java组件 通过在服务器端使用Jsp或JavaBean生成PDF报表 客户端采用超链接显示或下载得到生成的报表 这样就很好的解决了B
  • TS学习(二) :安装ts与ts配置

    一 安装TypeScript npm i g typescript 二 安装完成后 创建ts 使用ts语法 可能遇到的报错问题 在啥都没配置的默认情况下 TS会做出下面几种假设 假设当前的执行环境是dom 如果 代码中没有使用模块化语句 i
  • vscode-server离线安装及配置

    vscode server离线安装及配置 八字环 博客园 cnblogs com 获取当前版本vscode的commit id Help gt About gt Commit 根据commit id下载对应版本的vscode server
  • 保留IP地址

    保留IP地址不会在互联网中使用 其主要被用在企业机构内部作为局域网地址使用 例如 我们经常用到192 168 1 等 保留地址主要在以下四类 A类 10 0 0 0 10 255 255 255 长度相当于1个A类IP地址 A类 100 6
  • 在k8s集群中Kubernetes仪表板dashboard使用RABC机制限制指定用户针对指定名称空间中的资源进行管理实践...

    公众号关注 WeiyiGeek 设为 特别关注 每天带你玩转网络安全运维 应用开发 物联网IOT学习 本章目录 Dashboard 利用rbac机制限制指定用户针对指定名称空间中的资源进行UI管理 原文地址 https blog weiyi
  • 数据结构入门(二):顺序表

    目录 1 顺序表的概念 2 注意事项 3 接口的实现 4 顺序表的问题及思考 1 顺序表的概念 2 注意事项 在进行任意位置删除的时候 一定要注意是否越界 因为顺序表是以一个连续的线性表 3 接口的实现 3 1任意插入 头插和尾插 3 2任
  • \n,\r,\n\r的区别,windows、unix、mac中的换行区别

    转自 http www oschina net question 925405 132872 n 软回车 在Windows 中表示换行且回到下一行的最开始位置 相当于Mac OS 里的 r 的效果 在Linux unix 中只表示换行 但不
  • ALV FIELDCAT添加属性 – REUSE_ALV_FIELDCATALOG_MERGE函数

    在 ALV 定义 Fieldcat 的时候 我们往往需要通过 slis fieldcat alv 的赋值给Fieldcat导入结构 如上篇文章中给出的例子 01 02 03 04 05 06 07 08