通过模式使用变量进行翻译

2020-08-14 10:59发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)你好专家 我使用CONVERT...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好专家

我使用CONVERT_ABAPSPOOLJOB_2_PDF来将ABAP线轴转换为PDF。 之后,我用翻译命令将132个长字符串转换为255个长字符串。

写作时:

使用'〜'转换ls_pdf_output。

然后在打开pdf时有时可以,但是有时我会收到错误消息"无法提取嵌入式字体…"

写作时:

数据:lv_translate_str TYPE字符串VALUE'〜'

使用lv_translate_str来翻译ls_pdf_output。

然后,当打开pdf时,到目前为止,一切正常。

预先感谢

Hagit

 FORM convert_spool_to_pdf 
使用pv_job_id类型tsp01-rqident
更改pt_mess_att类型esy_tt_solisti1


常量:lc_no(1)TYPE C VALUE''
,lc_device(4)类型c值'LOCL'


数据:lt_pdf_output tline的类型表
,lv_buffer TYPE字符串
,ls_mess_att TYPE solisti1"如pt_mess_att的行


通话功能'CONVERT_ABAPSPOOLJOB_2_PDF'
出口
src_spoolid = pv_job_id
no_dialog = lc_no
dst_device = lc_device
*导入
* pdf_bytecount =
表格
pdf = lt_pdf_output
例外情况
err_no_abap_spooljob = 1
err_no_spooljob = 2
err_no_permission = 3
err_conv_not_possible = 4
err_bad_destdevice = 5
user_cancelled = 6
err_spoolerror = 7
err_temseerror = 8
err_btcjob_open_failed = 9
err_btcjob_submit_failed = 10
err_btcjob_close_failed = 11
其他=12。
如果sy-subrc <> 0.
RAISE no_conv2pdf。
ELSE。
数据:lv_translate_str TYPE字符串值'〜'
,lv_translate_back_str TYPE字符串VALUE'〜'


*将132个长字符串转换为255个长字符串
循环AT lt_pdf_output INTO DATA(ls_pdf_output)。
*使用'〜'转换ls_pdf_output。
使用lv_translate_str来翻译ls_pdf_output。
合并lv_buffer ls_pdf_output INTO lv_buffer。
ENDLOOP。

*使用'〜'转换lv_buffer。
使用lv_translate_back_str转换lv_buffer。


ls_mess_att = lv_buffer。
附加ls_mess_att至pt_mess_att。
左移lv_buffer 255个位置。
如果lv_buffer是INITIAL。
退出。
ENDIF。
ENDDO。
ENDIF。


ENDFORM。 " convert_spool_to_pdf
6条回答
打个大熊猫
2020-08-14 11:43 .采纳回答
 DATA lv_translate_back_str TYPE字符串VALUE'〜'。
 使用lv_translate_back_str转换lv_buffer。
 

与使用'〜'的TRANSLATE lv_buffer不同。

是因为,如翻译

  • " 数据对象文本和掩码中的尾随空白适用于数据对象":在第二种情况下,尾随的空白在那里,因此lv_buffer的所有〜都替换为空格。
  • " 如果mask包含奇数个字符,则忽略最后一个字符":在第一种情况的DATA语句中,值'〜'的尾部空格(即 类型C和长度2,因为它是使用直/引号定义的)被忽略,并且字符串最终仅由一个字符组成(波浪号〜),因此TRANSLATE不会替换〜,因为它是掩码的最后一个字符,因此被忽略 解决方案:要使这两种形式等效,请将这两个字符定义为2个字符的STRING,并使用反引号将其尾部空格替换为奇数个字符(1)。

在分配过程中保存:

数据lv_translate_back_str TYPE字符串VALUE`〜`。

PS:我说的与PDF无关,是ABAP固有的。 关于 CONCATENATE ,您可以使用附加的RESPECTING BLANKS 而不是使用TRANSLATE技巧来保持空白是非常危险的,因为在使用TRANSLATE之前PDF可能包含波浪号,并猜测会发生什么...

一周热门 更多>