SAP ALV 到处Excel负号前置(EDIT_MASK应用)
2026/5/14 23:06:56 网站建设 项目流程

前言

  • 业务场景

报表程序在不做任何修改的情况下,ALV 中金额字段的数据 - 负号将会显示在右侧

对于用户而言,他们希望实现 ALV 中金额字段的负号在左侧,提升可读性

并且还要让导出到 EXCEL 的数据也要做到这一点

  • 概览

开发 负责处理「负号前置」的转换例程函数
调用例程实现 ALV 中的金额数据 负号前置
参照指定字段实现导出到 EXCEL 后的金额数据 负号前置

实际操作

  • 创建自定义函数

SE37 或者「SE80 在当前模块 Package 下」创建 函数组 & 函数模块

函数组名称 按照公司开发规范来即可:

函数组:ZFI01

关于自开发的 转换例程函数 名称,SAP 系统规范格式按照:CONVERSION_EXIT_XXXX_OUTPUT 命名

函数模块:CONVERSION_EXIT_ZSIGN_OUTPUT

参数
如下为 导入导出 参数:INPUT & OUTPUT

源代码

FUNCTION conversion_exit_zsign_output. *"---------------------------------------------------------------------- *"*"本地接口: *" IMPORTING *" REFERENCE(INPUT) *" EXPORTING *" REFERENCE(OUTPUT) *"---------------------------------------------------------------------- DATA: lv_output1 TYPE char30. IF input >= 0. WRITE input TO lv_output1. ELSE. WRITE abs( input ) TO lv_output1 . CONCATENATE '-' lv_output1 INTO lv_output1. ENDIF. CONDENSE lv_output1 NO-GAPS . output = lv_output1. ENDFUNCTION.
  • 程序调用

Macro 宏定义 区域 添加参数:

然后在 调用 宏的位置,对于「需要负号前置的字段」,配置参数:'==ZSIGN'

gs_fieldcat-edit_mask = ‘==ZSIGN’.

"设置ALV输出格式字段格式 clear ls_fcat. ls_fcat-fieldname = 'ZJE'. ls_fcat-inttype = 'P'. ls_fcat-intlen = 10. ls_fcat-coltext = '金额'. ls_fcat-seltext_s = '金额'. ls_fcat-seltext_m = '金额'. ls_fcat-seltext_l = '金额'. ls_fcat-edit_mask = '==ZSIGN'. append ls_fcat to ct_fcat. "3、调用函数就可达到负数符号前显的效果。 call function 'REUSE_ALV_GRID_DISPLAY' exporting it_fieldcat = lt_fcat tables t_outtab = gt_outtab exceptions program_error = 1 others = 2.

至此 ALV 金额字段数据 负号前置 功能已经实现,如下图所示:

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询