前言
业务场景
报表程序在不做任何修改的情况下,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 金额字段数据 负号前置 功能已经实现,如下图所示: