2013-03-29 2 views
1

Я использую gui_upload для прикрепления файла к электронной почте. Gui_upload заполняет внутреннюю таблицу в шестнадцатеричном формате. Но, всегда, последняя запись внутренней таблицы заполняется нулем '0', пока она не будет соответствовать ее длине.GUI_UPLOAD не работает должным образом

Думайте, что это внутренняя таблица (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. 

Следует ли удалить эти нули вручную или я что-то упустил с помощью этой функции?

+0

пытается получить страницу стеки SAP начала, проверить его http://area51.stackexchange.com/proposals/41621/sap-systems-applications-and-products – Jared

ответ

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 
... 
3

Функция работает точно так, как предполагалось, вы просто не используете ее правильно. Вы игнорируете дополнительный параметр, который сообщает вам, сколько байтов было прочитано. Так как строки вашей таблицы имеют фиксированную длину, технически невозможно опустить эти конечные нули. Вы можете объединить байты в XSTRING, но вам нужно будет отслеживать, сколько байтов вы уже собрали, и обрезать конечные нули в этом процессе.

+0

Спасибо за ваш ответ. Мне жаль, что я не знаю, как узнать, сколько байтов было прочитано. Кстати, я всегда получаю от вас «устаревшую функцию». :-) – Mtok

+0

@Mtok. Тогда почему вы настаиваете на использовании устаревших и неподдерживаемых устаревших функциональных модулей, где существует поддерживаемая альтернатива? Что касается размера файла, то в функциональном модуле 'GUI_UPLOAD' есть параметр экспорта' FILELENGTH', который вы решили не использовать .... – vwegert

+2

CL_GUI_FRONTEND_SERVICES помечен как не выпущенный для использования пользователем в моей системе 7.01, в то время как GUI_UPLOAD не отмечен как устаревшие или неподдерживаемые. 7.01 - это не древняя система, в которой никто еще не работает. Вы можете быть немного мягче в своих ответах, ИМО. –

Смежные вопросы