GUI_UPLOAD无法正常工作

时间:2013-03-29 12:40:17

标签: sap abap

我正在使用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.

是否应手动删除这些零或我是否遗漏了使用该功能的内容?

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分: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
...