1

gui_upload を使用してファイルを電子メールに添付しています。Gui_upload は、内部テーブルを 16 進形式で埋めます。ただし、常に、内部テーブルの最後のレコードは、その長さに収まるまでゼロ '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 に答える