当前位置: 首页 > news >正文

SAP ABAP 输出结果带有空格

方法一:

字段内容前增加空格,需使用全角空格,使用半角空格时,ALV显示无效,空格无法显示,

全角与半角的切换方法:shift+空格切换,

如下的标记部分,要想通过ALV显示空格,表里需存储为全角空格。

 或者

展示结果:

 

方法二:

一般情况下SAP这边填写内容不会以空格开头,此次需求是EDI平台将客户的叫料计划传到SAP生成销售计划协议计划行,其中有一些客户特定信息需要存下以便后面交货生成ASN信息回传给客户,因为没有SAP前台字段,所以存在自建表中。

其中有个信息“EDI客户件号”客户填写时候会以空格开头,并且中间还可能出现空格或者连续空格。

ALV如果不特别设置参数,默认中间空格会显示,而开头空格不会显示。

自建表中数据

ALV报表查询结果 

 

翻遍ALV常用传入参数类型LVC_S_LAYO和LVC_S_FCAT都没有发现描述与此问题相关的参数。

发现了SE16查看表数据也是用的ALV格式,而且能够显示前导空格。

 调试发现SE16查看数据调用的是ALV函数REUSE_ALV_GRID_DISPLAY

查看传入参数IS_LAYOUT并未发现异样,查看传入参数IT_FIELDCAT,看到PARAMETER0打上了“X"。

 

解决方法:

将ALV传入参数IT_FIELDCAT里的PARAMETER0设为“X",即可输出前导空格。这时候我不反对大家尽情吐槽SAP的晦涩难懂。

 

如果是OO ALV,使用了类CL_GUI_ALV_GRID,则调用方法SET_TABLE_FOR_FIRST_DISPLAY时将参数IT_FIELDCATALOG里的PARAMETER0设为“X"。

如果是SALV,使用了类CL_SALV_TABLE,则可以调用类CL_SALV_COLUMN的方法SET_LEADING_SPACES实现,参考如下
 

*SALV相关参数
DATA: GR_TABLE     TYPE REF TO CL_SALV_TABLE,GR_FUNCTIONS TYPE REF TO CL_SALV_FUNCTIONS_LIST,GR_DISPLAY   TYPE REF TO CL_SALV_DISPLAY_SETTINGS,GR_COLUMNS   TYPE REF TO CL_SALV_COLUMNS_TABLE,GR_COLUMN    TYPE REF TO CL_SALV_COLUMN_TABLE.FORM FRM_SALV.DATA: LX_MSG TYPE REF TO CX_SALV_MSG.DATA: LV_TITLE TYPE LVC_TITLE,LV_CONT  TYPE I,LV_CONTT TYPE LVC_TITLE.ASSIGN GR_DATA->* TO <GT_DYN>.TRY .CL_SALV_TABLE=>FACTORY( IMPORTING R_SALV_TABLE = GR_TABLE CHANGING T_TABLE = <GT_DYN> ).CATCH CX_SALV_MSG INTO LX_MSG.GV_MESSAGE = LX_MSG->GET_TEXT( ).MESSAGE GV_MESSAGE TYPE 'E'.RETURN.ENDTRY.LV_CONT = LINES( <GT_DYN>[] ).LV_CONTT = LV_CONT.CONDENSE LV_CONTT NO-GAPS.CONCATENATE '总计共' LV_CONTT  '条数据' INTO LV_TITLE.CONDENSE LV_TITLE NO-GAPS.GR_FUNCTIONS = GR_TABLE->GET_FUNCTIONS( ).GR_FUNCTIONS->SET_ALL( ABAP_TRUE ).GR_DISPLAY = GR_TABLE->GET_DISPLAY_SETTINGS( ).
*  gr_display->set_striped_pattern( cl_salv_display_settings=>true ).GR_DISPLAY->SET_LIST_HEADER( EXPORTING VALUE = LV_TITLE ).GR_COLUMNS = GR_TABLE->GET_COLUMNS( ).TRY.LOOP AT GR_COLUMNS->GET( ) INTO DATA(LR_COLUMNS).IF LR_COLUMNS-COLUMNNAME = 'MESG'.GR_COLUMN ?= GR_COLUMNS->GET_COLUMN( LR_COLUMNS-COLUMNNAME ).GR_COLUMN->SET_OUTPUT_LENGTH( VALUE = |50|  ).ELSEIF LR_COLUMNS-COLUMNNAME = 'ICON'.GR_COLUMN ?= GR_COLUMNS->GET_COLUMN( LR_COLUMNS-COLUMNNAME ).GR_COLUMN->SET_OUTPUT_LENGTH( VALUE = |5|  ).GR_COLUMN->SET_ALIGNMENT( VALUE = IF_SALV_C_ALIGNMENT=>CENTERED ).ELSE.GR_COLUMN ?= GR_COLUMNS->GET_COLUMN( LR_COLUMNS-COLUMNNAME ).IF SY-TCODE <> 'ZFI001'.GR_COLUMN->SET_OUTPUT_LENGTH( VALUE = |20|  ).ELSE.GR_COLUMN->SET_OPTIMIZED( VALUE = 'X').ENDIF.GR_COLUMN->SET_ALIGNMENT( VALUE = IF_SALV_C_ALIGNMENT=>LEFT ).GR_COLUMN->SET_LEADING_SPACES( VALUE = 'X' ).CLEAR GS_ZTAB0002.READ TABLE GT_ZTAB0002 INTO GS_ZTAB0002WITH KEY FNAME = LR_COLUMNS-COLUMNNAME.IF SY-SUBRC = 0.GR_COLUMN->SET_LONG_TEXT( GS_ZTAB0002-TEXT_L ).GR_COLUMN->SET_MEDIUM_TEXT( GS_ZTAB0002-TEXT_M ).GR_COLUMN->SET_SHORT_TEXT( GS_ZTAB0002-TEXT_S ).ENDIF.ENDIF.ENDLOOP.CATCH CX_SALV_NOT_FOUND.ENDTRY."IF SY-BATCH IS INITIAL.TRY.GR_TABLE->SET_SCREEN_STATUS(PFSTATUS      = 'ZCMRP001_STATUS'REPORT        = SY-REPIDSET_FUNCTIONS = GR_TABLE->C_FUNCTIONS_ALL ).CATCH CX_SALV_MSG.ENDTRY.DATA(GR_EVENT) =  GR_TABLE->GET_EVENT( ).CREATE OBJECT EVENT_HANDLER.SET HANDLER EVENT_HANDLER->ON_USER_COMMAND  FOR GR_EVENT." ENDIF.GR_TABLE->DISPLAY( ).
ENDFORM.

http://www.lryc.cn/news/7997.html

相关文章:

  • Opengl ES之踩坑记
  • 设计模式第六讲:责任链模式和迭代器模式详解
  • K8s 架构简介(一)
  • xshell6运行报错:由于找不到mfc110u.dll、MSVCR110.dll无法继续执行代码
  • Baklib知识库管理平台,协助组织提升知识管理水平
  • 一文搞懂core-scheduling核心机制
  • IP地址在金融行业有哪些应用?
  • GT-suite v2016解决许可证过期问题(附新版liscense下载地址)
  • 小红书商业笔记与普通笔记区别是什么?小红书笔记有哪几种
  • DataWhale-统计学习方法打卡Task01
  • Java面试——Spring 事务
  • Python语言零基础入门教程(十九)
  • 重生之我是赏金猎人-SRC漏洞挖掘(一)-某SRC测试系统无脑Getshell
  • Sciter 结合 PReact 实现组件公共逻辑抽离
  • OpenTracing协议规范链接
  • 金三银四面试必看,自动化测试如何解决日志问题
  • 微信怎么开小店?【企业商家微信开店】
  • Java 中FastJson的使用【吃透FastJson】
  • Redis5.0集群搭建
  • 继企业级信息系统开发学习1.1 —— Spring配置文件管理Bean
  • Web 容器、HTTP 服务器 、Servlet 容器区别与联系
  • eBPF 进阶: 内核新特性进展一览
  • 2.输入子系统学习-multi-touch-protocol-2023.02
  • 【靶机】vulnhub靶机pylington
  • 【大数据】大数据学习路线
  • 【Python爬虫案例教学】采集某网站壁纸,实现壁纸自由
  • 波卡2022年第四季度报告
  • 第一章:初始化react项目+antd+less
  • 图的基本概念
  • MySQL必会四大函数-窗口函数