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接口设计的扩展性考虑

    由于现在的系统和SAP的接口出现了几次变更 xff0c 因此需要对系统进行设计改造 由于系统中和SAP交互的接口不止一处 xff0c 而且也是在不同的时间段进行开发 xff0c 并由不同的人员来完成的 xff0c 因此我在维护升级的过程中
  • 在SAP中创建并运用条形码

    原文地址 xff1a http blog chinaunix net u2 64924 showart 715473 html 在 SAP 中创建并运用条形码的过程如下 xff1a 1 以 T CODE xff1a SE73 进行后如图 x
  • 【SAP-FI】承诺项目(Commitment item)详解

    定义 xff1a 承诺项目表示组织在财务管理区域 xff08 FM区域 xff09 内的功能分组 用途 xff1a 承诺项目将影响流动性的预算交易和商业交易分类为收入 xff0c 支出和现金余额项目 您可以将特定责任区域 xff08 资金中
  • SAP有用的知识(持续更新)

    一 安装SAP 1 1 产品可用性矩阵 xff08 Product Availability Matrix xff09 SAP官网 Maintenance Product Availability Matrix xff0c 点击页面的Acc
  • sap上传excel文档字符限制处理

    abap中有多个函数处理上传的excel文档中的数据 xff0c 记录数据的信息 xff08 行 列 值 xff09 如 xff0c 函数KCD EXCEL OLE TO INT CONVERT xff1a data lt data in
  • SAP PO上传异步接口(PO从对方中间表读取数据)

    导语 最近的项目上出现了一个奇奇怪怪的需求 上传接口居然不是外围系统给我传输 而是他数据丢到他的中间表 然后PO去取过来 真就他不动 我自己动 下面说一下需要怎么来实现吧 其实跟PO下传接口写入中间表一样 只不过方向变了 还有一些小变动 这
  • ABAP 新语法记录(一)

    主要内容 内联声明 构造表达式 内表操作 Open SQL 其他 本文列出了ABAP新语法的一些使用方式 供大家学习参考 内联声明 代码实现 pre amp 主题一 内联声明 语法 DATA FILED SYMBOL 1 定义变量 2 定义
  • SAP之FIORI(7)-MVC加载模式

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

    用户提出的报表 是用EXCLE显示的 有许多特殊格式 比如 加粗 大小字体等 普通的ALV报表输出并不能满足用户的要求 那么只能用ALV与EXCLE的集成技术 目前已知的技术有两种 一种是OLE技术 用SMW0上传模板 然后填写数据 多数用
  • SAP如何控制采购价格不显示(适用ME23N、ME2L、ME2M、ME2K、ME2J、ME2C、ME2B、ME2N等)

    适用场景 需要给非采购 财务岗位显示采购凭证 但不得查看到价格 针对上述事务 可不作任何修改 通过角色 权限进行细致控制 即可达到采购价格不显示的效果 一 赋给目标用户的权限最小化 仅赋以下 必要权限 权限对象 字段 值 说明 备注 S T
  • SAP 资产屏幕增强(AS01/AS02/AS03)

    导语 最新需要在资产屏幕上增加增强字段 效果图在最后 下面分享一下实现过程 一 在表中增强字段 本次增强的是 资产主数据 gt 源 中的字段 选择储存在ANLU表中 二 创建屏幕 在函数组XAIS中创建屏幕9001 在屏幕上绘制需要增强的字
  • SAP/FICO/BAPI_ACC_DOCUMENT_POST-外币凭证金额和本位币误差问题处理

    场景 通过BAPI ACC DOCUMENT POST创建USD币别凭证SAP会自动带出CNY本位币金额 本位币金额是USD通过SAP配置的汇率计算出来的 有时候会有误差 想要实现的功能 凭证金额和本位币金额都有外部系统传入设置不需要SAP
  • SAP S/4实操LTMC 数据迁移驾驶舱

    SAP S 4实操LTMC 数据迁移驾驶舱 文章目录 SAP S 4实操LTMC 数据迁移驾驶舱 前言 一 LTMC是什么 二 使用步骤 1 配置好SICF并正常启用LTMC服务 2 数据迁移 2 1 创建迁移项目 2 2 数据整理 总结
  • S/4 Coding block 增加扩张字段与error的解决方法

    在做FICO项目中经常要遇到往标准画面或者标准表追加客户自定义字段 网上也有很多方法 但是都有点不太连贯 今天总结一下初级实施人员也可以掌握的方法分享给大家 1 T CODE OXK3 进入到初期画面里面 我们的扩张对象CI COBL应该是
  • SAP之FIORI(1)-绪论

    SAP之FIORI 1 绪论 web IDE的下载地址 https tools hana ondemand com sapui5 下载好运行之后orion exe之后登录网址 http localhost 8080 webide index
  • SAP ABAP 数据填充进EXCEL模板或代码生成EXCEL并维护数据下载到本地

    文章目录 需求 一 针对有EXCEL模板只填充数据的情况 二 没有模板需要凭空生成Excel的情况 如果需要把大量数据整理后转化为excel传向OA 三 检查Excel是否正确安装 四 如果系统中没有ZCL EXCEL 的帮助类 总结 需求
  • 国际MES供应商与产品大全

    最近花了一点时间 将国际上知名的MES厂商和其产品整理了一下 如下 ABB ABB 苏黎世 瑞士 是一个240亿美元的自动化和电力技术的全球业务的供应商 它的制造软件利用其控制及自动化产品通用解决方案的一部分 其系统800xa控制体系结构
  • SAP BAPI_ACC_DOCUMENT_POST记账码问题

    今天遇见一个问题 使用BAPI ACC DOCUMENT POST过账 或BAPI ACC DOCUMENT CHECK检查数据 时 报错 借 贷标记不一致 刚开始以为是数据的问题 调试后发现数据的借贷平衡 金额也没有问题 联想到记账码是通
  • 何谓离散制造

    离散制造 Intermittent Discrete Manufacturing 产品的生产过程通常被分解成很多加工任务来完成 每项任务仅要求企业的一小部分能力和资源 企业一般将功能类似的设备按照空间和行政管理建成一些生产组织 部门 工段或
  • ABAP--新语法--Open SQL--第四天-- From Table

    From Table Internal Table 在 ABAP 7 52 后 支持将内表作为数据源使用 内表作为数据源使用时 需要定义别名并使用转义符 该用法可以用来代替 FOR ALL ENTRIES IN 但FROM 语句中最多使用一

随机推荐

  • 使用 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