跳转到内容
技术文章
作者头像张继刚张吉万博新体育手机客户端刚

从Excel单元格到SAP文档到Adobe表单单元格的长文本

中国有句谚语说:墨迹不清,记忆不牢。当然,有时我急于谷歌一些东西,并找出一个问题没有任何形式的存档;然后,当它再次发生时,这完全是一个新的问题。

在本文中,我将简要介绍从excel文件的单个单元格上传长文本到SAP中保存为长文本的基本方法,然后介绍如何以Adobe表单的形式在输出的单个单元格中显示此长文本。

1.从Excel Cell到SAP

首先,需要从单个单元格的excel文件中上传长文本到SAP。(请原谅,由于一些限制,我还没有开始在生产环境中使用ABAP2XLSX ~.)我指的是这个方法通过基于功能模块的复制和修改实现:ALSM_EXCEL_TO_INTERNAL_TABLE该限制是ALSMEX_TABLINE-VALUE字段只能包含来自单元格的最多50个字符的文本。

在用纯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转换回字符串即可。除此之外,还有一些事情需要检查:

  • 勾选单元格的“允许多行”复选框

  • 选中“展开以适合”复选框,用于与此特定单元格共享同一行的所有字段
  • 然后,无论单元格的列长度是多少,您将在主项目的单个单元格上获得对齐的长文本。

指定的标签

      6个评论
      你一定是登录评论:评论或回复一篇文章
      作者头像张继刚张吉万博新体育手机客户端刚
      张继刚张吉刚
      博客作者
      下载长文本作为excel的单元格是相同的方法:
      1、使用READ_TEXT获取长文本的内容;
      2,使用函数'IDMX_DI_TLINE_INTO_STRING'生成包含所有文本格式的字符串;
      唯一的问题:需要点击excel的单个单元格的内容一次,格式如换行将显示;否则它将在单元格中显示为一个长字符串。

      作者的个人资料照片万博新体育手机客户端Raul Daimiel
      劳尔代密尔

      亲爱的张继刚张吉刚

      非常感谢你的帖子!真的很有帮助。

      我认为它可以帮助我解决我在ADOBE中遇到的SO10文本的问题。让我简单解释一下:

      我们有一个很长的SO10文本,我们想调整文本的宽度的形式。

      找到下面的链接了吗FM用于将段落分割为固定长度的| SAP博客但我没有

      我完全能做到。

      有什么方法可以“轻松地”调整文本内容吗?

      如果能有它的示例代码就太好了。

      亲切的问候

      作者头像张继刚张吉万博新体育手机客户端刚
      张继刚张吉刚
      博客作者

      劳尔代密尔

      也许您可以像下面这样尝试使用SO10对象的属性来获得格式化的长文本。然后绑定这个长文本,正如我在这个博客中提到的。

      *&---------------------------------------------------------------------* *& 形式FRM_GET_LONG_TEXT  *&---------------------------------------------------------------------* * 文本  *----------------------------------------------------------------------* * --> P_LD_ID文本*——> P_LD_NAME文本*——> P_LD_OBJECT文本* <——P_LS_INTERFACE_ZSHIP_INSTRU文本  *----------------------------------------------------------------------* 形式frm_get_long_text使用pd_id类型thead-tdid pd_name thead-tdname类型pd_object TYPE thead-tdobject正在改变pd_longtext。DATA: lt_tline TYPE TABLE OF tline, ls_tline TYPE tline, ld_string TYPE字符串。CALL FUNCTION 'READ_TEXT' export client = sys -mandt id = pd_id language = sys -langu name = pd_name object = pd_object * ARCHIVE_HANDLE = 0 * LOCAL_CAT = ' ' * IMPORTING * HEADER = * OLD_LINE_COUNTER = TABLES lines = lt_tline EXCEPTIONS id = 1 language = 2 name = 3 not_found = 4 object = 5 reference_check = 6 wrong_access_to_archive = 7 OTHERS = 8。IF sy-subrc = 0。调用函数'IDMX_DI_TLINE_INTO_STRING'导出it_tline = lt_tline导入ev_text_string = ld_string。Pd_longtext = ld_string。ENDIF。ENDFORM。”FRM_GET_LONG_TEXT
      作者的个人资料照片万博新体育手机客户端Raul Daimiel
      劳尔代密尔

      亲爱的张继刚:

      非常感谢您的样品!!:)。

      我测试了你的建议,它对我来说有90%的效果是完美的。

      内容存储在一个字符串变量中…

      但是,通过检查IDMX_xxxx可用的FM,我找到了可以帮助我的FM。

      调用函数“IDMX_DI_SPLIT_TEXT”
      出口
      iv_character_chainld_string
      IV_LENGTH95
      进口
      ET_STRING_TABLEit_lines_adjusted
      异常
      错误1
      其他人2

      结果正是我所期望的!!

      非常感谢!!!!!!!!。

      作者资料照片Jay万博新体育手机客户端vardhan Sharma
      Jayvardhan沙玛

      嗨,济钢,

      谢谢你精彩的博客,我尝试使用这个功能,但文本格式一旦转换为字符串并下载到excel中就消失了。

      对此有什么建议吗?

      作者头像张继刚张吉万博新体育手机客户端刚
      张继刚张吉刚
      博客作者

      Jayvardhan沙玛

      什么样的格式?这篇博客更多的是关于对齐,对于文本格式,如字体,粗体,或颜色的富文本,它可能不起作用。