问题描述:
SMARTFORM中显示PO 行项目的物料描述时,只显示一部分,
例子:
物料描述:ABC-一二三
物料号字段长度为系统默认的40位,CHAR类型
SMARTFORM中,字段位于LOOP中的TEMPLATE中,长度为3.4CM
显示结果:ABC-
1. SMARTFORM的字段长度本身超出了3.4cm显示的范围导致跳行(具体跟字体大小也有关)
2. 字符'-'很奇怪,当总长度(汉字2位,字母数字灯1位)超过Form中能显示的长度,如果描述中有'-',不会显示'-'之后的内容,没有'-',系统会按显示宽度截取。若总长度未超出,不管有没有'-',都能正常显示。
经测试发现,当有'-'时,系统会在此处做一个换行
方法一:
判断内容长度是否超出SMARTFORM能显示的最大长度,如果超出,设计截取,如果未超过,不做处理
方法二:
更改TEMPLATE中该字段的长度,或者LOOP+TEMPLATE 换成 TABLE
output = '不仅仅全是汉字'.
output = '全是汉字'.
output = '含有汉字'.
output = '不含有任何汉字'.
n = sy-index - 1.
if not alpha_num cs input+n(1).
concatenate output input+n(1) into output.
endif.
问题原因:
解决办法(前提含有'-'):
判断中文:(以下内容转自:http://blog.chinaunix.net/uid-15016030-id-22250.html)
DATA: alpha_num(120) TYPE c.
alpha_num = ' abcdefghijklopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWX YZ0123456789,./;''[]\-=`<>?:"{}|_+~!@#$%^&*()'.
IF input CA alpha_num.
ELSE.
ENDIF.
IF NOT input CO alpha_num.
ELSE.
ENDIF.
提取汉字
data len type i.
data n type i.
len = strlen( input ).
do len times.
enddo.