在老白的QQ群里(15881589)看到有人讨论字符串空格的问题,想起之前做过的一个需求,把WBS描述按层级显示,代码如下:
*
ls_prps-post1 = repeat( val = ` ` occ = ls_prps-stufe - 1 ) && ls_prps_post1.但是当放到ALV里展示的时候,空格都被吞了。
当时没办法,只认为是SAP的ALV控件的bug,就把半角空格换成了全角空格。
今天群里知名大佬Sariel说SALV可以显示空格,然后搜到了一下DEMO程序SALV_DEMO_TABLE_REAL_SIMPLE,复制出来,更改后代码如下:
DATA: gt_outtab TYPE TABLE OF sflight.DATA: gr_table TYPE REF TO cl_salv_table.
SELECT * FROM sflight INTO CORRESPONDING FIELDS OF TABLE gt_outtab.gt_outtab[ 1 ]-planetype = ` ` && gt_outtab[ 1 ]-planetype.
CALL METHOD cl_salv_table=>factory IMPORTING r_salv_table = gr_table CHANGING t_table = gt_outtab.gr_table->get_columns( )->get_column( 'PLANETYPE' )->set_leading_spaces( 'X' ).
gr_table->display( ).
WOC,确实可以显示空格。认知又被颠覆了……
不死心。跟一下程序,看它是怎么实现的。
盲猜SALV也是用的CL_GUI_ALV_GRID的OO控件,所以肯定也会依托屏幕作为容器来展示,于是按" CALL SCREEN
"打断点,顺利DEBUG进到REUSE_ALV_GRID_DISPLAY函数代码中。
然后看函数中FIELDCAT的参数,对比了一下,很容易就发现有这么个不同之处。
于是写个DEMO看一下:
DATA: lt_makt LIKE TABLE OF makt, lt_fcat TYPE lvc_t_fcat.
APPEND VALUE #( maktx = '1' ) TO lt_makt.APPEND VALUE #( maktx = ' 1' ) TO lt_makt.
APPEND VALUE #( fieldname = 'MATNR' ) TO lt_fcat.APPEND VALUE #( fieldname = 'MAKTX' parameter0 = 'X' ) TO lt_fcat.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC' EXPORTING it_fieldcat_lvc = lt_fcat TABLES t_outtab = lt_makt EXCEPTIONS OTHERS = 1.运行效果如下:
最后,特别感谢大S(Sariel)。
结论很简单,就是 parameter0参数 。至于其他参数有什么用,期待大家的探索了。
上面的问题分析过程,你学废了吗?
我的SE38插件工具箱——视频介绍:
** https://www.bilibili.com/video/BV1hP4y1N7Qz/ **
联系286503700获取
> **ABAP文章汇总:**
>
> **https://mp.weixin.qq.com/s/djmMeM0qfDxPPwxbjuJABA**
>
> **Excel文章汇总:**
>
> **https://mp.weixin.qq.com/s/NwJ0SzIrn9hVmaCMo-UYyA**
>
> **网盘永久链接:**
>
> **https://mp.weixin.qq.com/s/f_WwKZdwM-vPEstTjjz_eQ**
**关注公众号,点下方菜单打开上面的链接,更方便哦。**
**笔者微信:** **** **286503700(QQ同号)** ****
**如果喜欢,谢谢转发。**