1

我正在使用 gui_upload 将文件附加到电子邮件。Gui_upload 以十六进制格式填充内部表。但是,内部表的最后一条记录总是用零“0”填充,直到它适合它的长度。

认为这是内部表(t_mailhex)

85020E0368CEE8AEFF98BEF9100800880C2D773CAEEF95C63 5005151AC1FEB1228FBB1F4C68D715468E0934AB24B8799A7 A2B67D3456A8B370FF12578966738CC7805D088A0BAD81DD3 86941AE43776E4F255FF1ED461FE0D9702F596EE0CBD89C2E 492A27EF90500000000000000000000000000000000000000

像这样。最后一条记录以零结尾。所以我附加的文件不是我想要的文件。它有一些奇怪的空字符代替那个零。

这就是功能。

DATA: t_mailhex   TYPE STANDARD TABLE OF solix.

CALL FUNCTION 'GUI_UPLOAD'
    EXPORTING
      filename                = l_file
      filetype                = 'BIN'
    TABLES
      data_tab                = t_mailhex
    EXCEPTIONS
      file_open_error         = 1
      file_read_error         = 2
      no_batch                = 3
      gui_refuse_filetransfer = 4
      invalid_type            = 5
      no_authority            = 6
      unknown_error           = 7
      bad_data_format         = 8
      header_not_allowed      = 9
      separator_not_allowed   = 10
      header_too_long         = 11
      unknown_dp_error        = 12
      access_denied           = 13
      dp_out_of_memory        = 14
      disk_full               = 15
      dp_timeout              = 16
      OTHERS                  = 17.

应该手动删除这些零还是我使用该功能遗漏了什么?

4

2 回答 2

3

该功能完全按预期工作,您只是没有正确使用它。您忽略了告诉您读取了多少字节的附加参数。由于表格的行具有固定长度,因此在技术上不可能省略这些尾随零。您可以将字节连接成一个XSTRING,但您必须跟踪您已经收集了多少字节并在此过程中切断尾随零。

于 2013-03-29T13:13:02.303 回答
0

好的,这是整个解决方案;

首先,您需要将文件长度导入一个整数变量。

CALL METHOD cl_gui_frontend_services=>gui_upload
...
    IMPORTING
    filelength              = fleng_i
...

将其写入字符类型变量,并将i_attachment_size作为参数添加到添加附件的类中;

CALL METHOD w_document->add_attachment
EXPORTING
    i_attachment_size  = fleng
...
于 2013-04-15T12:32:31.753 回答