SMARTFORM字符显示不完全

问题描述:
    SMARTFORM中显示PO 行项目的物料描述时,只显示一部分,
    例子:
    物料描述:ABC-一二三
    物料号字段长度为系统默认的40位,CHAR类型
    SMARTFORM中,字段位于LOOP中的TEMPLATE中,长度为3.4CM
    
    显示结果:ABC-


问题原因:
    1. SMARTFORM的字段长度本身超出了3.4cm显示的范围导致跳行(具体跟字体大小也有关)
    2. 字符'-'很奇怪,当总长度(汉字2位,字母数字灯1位)超过Form中能显示的长度,如果描述中有'-',不会显示'-'之后的内容,没有'-',系统会按显示宽度截取。若总长度未超出,不管有没有'-',都能正常显示。
    经测试发现,当有'-'时,系统会在此处做一个换行
SMARTFORM字符显示不完全

SMARTFORM字符显示不完全

解决办法(前提含有'-'):
    方法一:
        判断内容长度是否超出SMARTFORM能显示的最大长度,如果超出,设计截取,如果未超过,不做处理
    方法二:
        更改TEMPLATE中该字段的长度,或者LOOP+TEMPLATE 换成 TABLE

判断中文:(以下内容转自:http://blog.chinaunix.net/uid-15016030-id-22250.html)
DATA: alpha_num(120) TYPE c.
alpha_num = ' abcdefghijklopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789,./;''[]\-=`<>?:"{}|_+~!@#$%^&*()'.
IF input CA alpha_num.
  output = '不仅仅全是汉字'.
ELSE.
  output = '全是汉字'.
ENDIF.
IF NOT input CO alpha_num.
  output = '含有汉字'.
ELSE.
  output = '不含有任何汉字'.
ENDIF.

提取汉字
data len type i.
data n type i.
len = strlen( input ).
do len times.
  n = sy-index - 1.
  if not alpha_num cs input+n(1).
    concatenate output input+n(1) into output.
  endif.
enddo.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值