SMARTFORMS利用tablelate时,文字排版问题处理

1、当我们用tablelate创建的时候,有时候需要显示多行,这种情况下,行里的文字会进行自动换行,直到行高用完。

2、有一个问题就是:当有多行的时候,第一行如果有空格或者其它特殊情况的时候,第一行并不会填充完,而是自动被分配到下一行了,这种显示结果显然不符合实际的显示需求。

3、没有处理前的效果:

实际上应该把第一行填写完,再填写后面的数据。

4、这种其实就是要处理一下文本的显示,第一,要把需要显示的文本进行格式化,把前面的空格给处理干净,这样才能在Debug的时候,看到具体的内容,否则会有很多的空格难以判断。第二、通过函数:SCMS_STRING_TO_FTEXT,重复排列一下长文本.第三、通过函数:CONVERT_STREAM_TO_ITF_TEXT按自己的文本长度要求进行再分配。

5、通过以上处理后就可以了。

SHIFT is_data-bstkd RIGHT DELETING TRAILING space.
SHIFT is_data-bstkd LEFT DELETING LEADING space.

SHIFT ls_labels-zcustomer_po RIGHT DELETING TRAILING
 space
.
SHIFT ls_labels-zcustomer_po LEFT DELETING LEADING space.

*CONCATENATE  LS_LABELS-ZCUSTOMER_PO  is_data-bstkd
*INTO LV_PO.

DATA:
  lt_stram_lines TYPE STANDARD TABLE OF string,
  ls_string      TYPE string,
  lt_text        TYPE tline_t.
DATA : length TYPE i.
DATA: itab TYPE TABLE OF char50.

CONCATENATE ls_labels-zcustomer_po
         is_data-bstkd
        INTO ls_string.

CALL FUNCTION 'SCMS_STRING_TO_FTEXT'
  EXPORTING
    text      = ls_string
  IMPORTING
    length    = length
  TABLES
    ftext_tab = itab.

 LOOP AT  itab INTO DATA(ls_tab).
   clear:ls_string.
   ls_string = ls_tab.
   APPEND ls_string to lt_stram_lines.
 ENDLOOP.

CALL FUNCTION 'CONVERT_STREAM_TO_ITF_TEXT'
  EXPORTING
    stream_lines = lt_stram_lines
    lf           = 'X'
  TABLES
    itf_text     = lv_po.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值