技术文章
从Excel单元格到SAP文档到Adobe表单单元格的长文本
中国有句谚语说:墨迹不清,记忆不牢。当然,有时我急于谷歌一些东西,并找出一个问题没有任何形式的存档;然后,当它再次发生时,这完全是一个新的问题。
在本文中,我将简要介绍从excel文件的单个单元格上传长文本到SAP中保存为长文本的基本方法,然后介绍如何以Adobe表单的形式在输出的单个单元格中显示此长文本。
1.从Excel Cell到SAP
在用纯FM复制和修改扩展这个长度后,它不会为我工作,因为它会丢失一些例程,所以我复制并创建一个基于ALSMEX的新函数组ZALSMEX。并在顶部的包括程序(如LZALSMEXTOP)中更新类型定义以跳过语法错误。
随着FM的更新,我们现在可以接受超过50个字符的长文本。然后将单元格中输入的文本处理为一段中的一大块文本,如上所述文章使用该方法首先获取整个文本的长度,然后将其截断为每行固定长度的几行(这里使用53)。
DATA: LV_LEN TYPE I. DATA: LV_OFF TYPE I. LV_LEN = STRLEN(p_text)。总长度LV_LEN = LV_LEN / 53 + 1。“查找行数被长文本做lv_LEN TIMES。移动“*”到it_lines-tdformat。移动p_text + lv_off(53)到it_lines-tdline。将it_lines-tdline左移,删除前导' '。Lv_off = Lv_off + 53。附加IT_LINES。明确IT_LINES。ENDDO。
这种方法将强制每53个字符切换新行,但它不考虑原始的换行和换行。还是不完美~
使用分裂成表的分隔符一样cl_abap_char_utilities= >换行符也不能完美地生成表TLINE,因为不能确保内容包含那种分隔符。另一个调频”VB_CP_CONVERT_STRING_2_ITF”会处理得很好!只需将文本从单元格转换为字符串类型作为输入,然后您将得到TLINE表行如下对齐。保存长文本使用TLINE表由FM:“READ_TEXT”。
2.从SAP长文本到Adobe窗体的单元格
当想要以adobe形式显示从SAP文本编辑器中获得的长文本时,我们必须将TLINE内容转换回具有对齐方式的字符串。
用FM得到TLINE后:“READ_TEXT”只需要使用FM:”IDMX_DI_TLINE_INTO_STRING”将TLINE转换回字符串即可。除此之外,还有一些事情需要检查:
- 勾选单元格的“允许多行”复选框
- 选中“展开以适合”复选框,用于与此特定单元格共享同一行的所有字段
亲爱的张继刚张吉刚
非常感谢你的帖子!真的很有帮助。
我认为它可以帮助我解决我在ADOBE中遇到的SO10文本的问题。让我简单解释一下:
我们有一个很长的SO10文本,我们想调整文本的宽度的形式。
找到下面的链接了吗FM用于将段落分割为固定长度的| SAP博客但我没有
我完全能做到。
有什么方法可以“轻松地”调整文本内容吗?
如果能有它的示例代码就太好了。
亲切的问候
劳尔代密尔
也许您可以像下面这样尝试使用SO10对象的属性来获得格式化的长文本。然后绑定这个长文本,正如我在这个博客中提到的。
亲爱的张继刚:
非常感谢您的样品!!:)。
我测试了你的建议,它对我来说有90%的效果是完美的。
内容存储在一个字符串变量中…
但是,通过检查IDMX_xxxx可用的FM,我找到了可以帮助我的FM。
调用函数“IDMX_DI_SPLIT_TEXT”
出口
iv_character_chain=ld_string
IV_LENGTH=95
进口
ET_STRING_TABLE=it_lines_adjusted
异常
错误=1
其他人=2
结果正是我所期望的!!
非常感谢!!!!!!!!。
嗨,济钢,
谢谢你精彩的博客,我尝试使用这个功能,但文本格式一旦转换为字符串并下载到excel中就消失了。
对此有什么建议吗?
Jayvardhan沙玛
什么样的格式?这篇博客更多的是关于对齐,对于文本格式,如字体,粗体,或颜色的富文本,它可能不起作用。