Текущее время: Вт, июл 29 2025, 15:39

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 18 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: лишнии знаки при отправке attachment через SO_DOCUMENT_SEND_API1
СообщениеДобавлено: Чт, фев 18 2010, 17:17 
Специалист
Специалист

Зарегистрирован:
Вт, июл 07 2009, 13:24
Сообщения: 235
Hello
помогите пожалуйста

Отправляю attachment (имеет бинарный вид) функцией SO_DOCUMENT_SEND_API1
передаю описание файла в ls_mail_data, lt_packing_list и lt_attach - фаил в бинарном виде,

в том числе и передается размер файла (длина его текста )

к примеру длина текста 887 символов
,следовательно, последняя строчка в lt_attach дополняется нулями до 255 символов.
,но по идеи должны спасти свойства файла (его длинна) чтобы итоговый фаил.csv не содержал пробелов. если я не прав и поправте меня пожалуйста ,

проблема в том что фаил в итоге содержат пробелы, если я прав и функция должна работать так как описано выше возможно есть какието ноты чтобы исправить ошибку с пробелами


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: лишнии знаки при отправке attachment через SO_DOCUMENT_SEND_API1
СообщениеДобавлено: Пт, фев 19 2010, 09:51 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
DaV написал(а):
Hello
помогите пожалуйста

Отправляю attachment (имеет бинарный вид) функцией SO_DOCUMENT_SEND_API1
передаю описание файла в ls_mail_data, lt_packing_list и lt_attach - фаил в бинарном виде,

в том числе и передается размер файла (длина его текста )

к примеру длина текста 887 символов
,следовательно, последняя строчка в lt_attach дополняется нулями до 255 символов.
,но по идеи должны спасти свойства файла (его длинна) чтобы итоговый фаил.csv не содержал пробелов. если я не прав и поправте меня пожалуйста ,

проблема в том что фаил в итоге содержат пробелы, если я прав и функция должна работать так как описано выше возможно есть какието ноты чтобы исправить ошибку с пробелами

Неплохо было бы, так как здесь не форум телепатов, если Вы кроме общего описания используемых вн. переменных привели фрагменты кода где Вы эти переменные заполняете. И сам вызов SO_DOCUMENT_SEND_API1 так же не помешал бы.

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: лишнии знаки при отправке attachment через SO_DOCUMENT_SEND_API1
СообщениеДобавлено: Пт, фев 19 2010, 11:40 
Специалист
Специалист

Зарегистрирован:
Вт, июл 07 2009, 13:24
Сообщения: 235
sy-uname написал(а):
Неплохо было бы, так как здесь не форум телепатов, если Вы кроме общего описания используемых вн. переменных привели фрагменты кода где Вы эти переменные заполняете. И сам вызов SO_DOCUMENT_SEND_API1 так же не помешал бы.

Вызываю не я, я только пытаюсь исправить ошибку

Code:
  CLEAR ls_content.
  DATA: lv_new_line TYPE c.
  DATA : lv_char(255) TYPE c, lv_len TYPE i.
  OPEN DATASET p_file FOR INPUT IN BINARY MODE.
  READ DATASET p_file INTO lv_string.
  lv_doc_size = STRLEN( lv_string ).
  DO.
    ls_content = lv_string.
    APPEND ls_content TO lt_attach.
    SHIFT lv_string BY 255 PLACES.

    IF STRLEN( lv_string ) < 255.
      ls_content = lv_string.
      APPEND ls_content TO lt_attach.
      EXIT.
    ENDIF.
  ENDDO.
  CLEAR ls_content.

* closing file
  CLOSE DATASET p_file.
  lv_filename = p_file.

-------
CLEAR ls_mail_data.
  DESCRIBE TABLE lt_attach LINES lv_cnt.
  ls_mail_data-doc_size =
     ( lv_cnt - 1 ) * 255 + STRLEN(lv_string ).
  ls_mail_data-obj_langu  = lv_langu.
  ls_mail_data-obj_name   = 'SAPRPT'.
  ls_mail_data-obj_descr  = lv_subject.
  ls_mail_data-sensitivty = 'F'.
-------

*Attachment of the message
    CLEAR: ls_packing_list.
    ls_packing_list-transf_bin = 'X'.
    ls_packing_list-head_start = 1.
    ls_packing_list-head_num   = 1.
    ls_packing_list-body_start = 1.

    DESCRIBE TABLE lt_attach LINES ls_packing_list-body_num.
    ls_packing_list-doc_type   =  'CSV'.

*    Get filename
    lv_strg1 = lv_filename.                                 
    LOOP AT gt_file_wo_dir INTO ls_file.
      lv_strg2 = ls_file-filename.
      IF lv_strg1 CS lv_strg2.
        EXIT.
      ENDIF.
    ENDLOOP.
    ls_packing_list-obj_descr  =  ls_file-filename.


    ls_packing_list-obj_name   =  p_file.
    ls_packing_list-doc_size = lv_doc_size.
    APPEND  ls_packing_list TO lt_packing_list.



Code:
  CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
    EXPORTING
      document_data = ls_mail_data
      commit_work   = 'X'
    TABLES
      packing_list  = lt_packing_list
      contents_bin  = lt_attach
      contents_txt  = lt_content
      receivers     = lt_rec.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: лишнии знаки при отправке attachment через SO_DOCUMENT_SEND_API1
СообщениеДобавлено: Сб, фев 20 2010, 01:25 
Президент
Президент

Зарегистрирован:
Пт, апр 28 2006, 22:39
Сообщения: 2514
Откуда: North Taxolina, USA
Пол: Женский
Навскидку - для того, чтобы работало нормально, в этом куске переменная lv_string должна содержать последнюю запись в таблице lt_attach:
Code:
  DESCRIBE TABLE lt_attach LINES lv_cnt.
  ls_mail_data-doc_size =
     ( lv_cnt - 1 ) * 255 + STRLEN(lv_string ).

А, судя по манипуляциям в коде выше (назначение которых не совсем понятно), она к этому моменту может содержать черт знает что.

_________________
"One of the symptoms of an approaching nervous breakdown is the belief that one's work is terribly important." Bertrand Russell


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: лишнии знаки при отправке attachment через SO_DOCUMENT_SEND_API1
СообщениеДобавлено: Вс, фев 21 2010, 12:56 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
Jelena написала:
Навскидку - для того, чтобы работало нормально, в этом куске переменная lv_string должна содержать последнюю запись в таблице lt_attach:
Code:
  DESCRIBE TABLE lt_attach LINES lv_cnt.
  ls_mail_data-doc_size =
     ( lv_cnt - 1 ) * 255 + STRLEN(lv_string ).

А, судя по манипуляциям в коде выше (назначение которых не совсем понятно), она к этому моменту может содержать черт знает что.

У меня больше подозрений вызывает фрагмент
Code:
    ls_packing_list-transf_bin = 'X'.
    ls_packing_list-head_start = 1.
    ls_packing_list-head_num   = 1.

В остальном, за исключением относительно неряшлевого кода, на первый взгляд, особых промахов не видно.

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: лишнии знаки при отправке attachment через SO_DOCUMENT_SEND_API1
СообщениеДобавлено: Ср, фев 24 2010, 12:55 
Специалист
Специалист

Зарегистрирован:
Вт, июл 07 2009, 13:24
Сообщения: 235
sy-uname не подскажите что именно Вас здесь смущает

Jelena написала:
У меня больше подозрений вызывает фрагмент

Код:
ls_packing_list-transf_bin = 'X'.
ls_packing_list-head_start = 1.
ls_packing_list-head_num = 1.


В остальном, за исключением относительно неряшлевого кода, на первый взгляд, особых промахов не видно.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: лишнии знаки при отправке attachment через SO_DOCUMENT_SEND_API1
СообщениеДобавлено: Ср, фев 24 2010, 13:03 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
DaV написал(а):
sy-uname не подскажите что именно Вас здесь смущает

ls_packing_list-head_num = 1.

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: лишнии знаки при отправке attachment через SO_DOCUMENT_SEND_API1
СообщениеДобавлено: Ср, фев 24 2010, 21:17 
Президент
Президент

Зарегистрирован:
Пт, апр 28 2006, 22:39
Сообщения: 2514
Откуда: North Taxolina, USA
Пол: Женский
sy-uname написал(а):
DaV написал(а):
sy-uname не подскажите что именно Вас здесь смущает

ls_packing_list-head_num = 1.


Мда, возможно проблема в этом. У нас обычно не посылаются "пустые" email, с одним аттачментом. Вот пример "упаковки" для email с body text и с аттачментом:

Цитата:
* Packing for body text.
DESCRIBE TABLE itab_objtxt LINES l_lines.
CLEAR itab_objpack-transf_bin.
itab_objpack-head_start = 1.
itab_objpack-head_num = 0.
itab_objpack-body_start = 1.
itab_objpack-body_num = l_lines.
itab_objpack-doc_type = 'RAW'.
itab_objpack-doc_size = l_lines * 255.
APPEND itab_objpack.

* Packing for PDF.
DESCRIBE TABLE itab_pdf LINES l_lines.
itab_objpack-transf_bin = c_yes.
itab_objpack-head_start = 1.
itab_objpack-head_num = 1.
itab_objpack-body_start = 1.
itab_objpack-body_num = l_lines.
itab_objpack-doc_type = 'PDF'.
itab_objpack-obj_name = 'Quote'.
CONCATENATE itab_objpack-obj_name '.pdf' INTO itab_objpack-obj_descr.
itab_objpack-doc_size = l_lines * 255.
APPEND itab_objpack.


По описанию поля (Number of lines of an object header in object packet), честно говоря, не поняла, в чем его сакральный смысл. :?

_________________
"One of the symptoms of an approaching nervous breakdown is the belief that one's work is terribly important." Bertrand Russell


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: лишнии знаки при отправке attachment через SO_DOCUMENT_SEND_API1
СообщениеДобавлено: Чт, фев 25 2010, 16:09 
Специалист
Специалист

Зарегистрирован:
Вт, июл 07 2009, 13:24
Сообщения: 235
вроде бы нашел в чем проблема по моему мнению проблема в самой функции "SO_DOCUMENT_SEND_API1" а именно

Code:
DESCRIBE TABLE CONTENTS_BIN LINES HEX_SIZE.
IF HEX_SIZE GT 0.
   call function 'SO_CONVERT_CONTENTS_BIN'
    exporting
      it_contents_bin = contents_bin[]
    importing
      et_contents_bin = contents_bin[].
   data l_new_size     type i.
   data l_line_size    type i.
   data l_new_doc_size type i.
   describe table contents_bin lines l_new_size.
   if l_new_size <> hex_size.
     describe field contents_bin-line length l_line_size in character mode.
     loop at packing_list where transf_bin = on.
       packing_list-body_start = packing_list-body_start * 2 - 1.
       packing_list-body_num = packing_list-body_num * 2.
       l_new_doc_size = packing_list-body_num * l_line_size / 2.
       if packing_list-doc_size <= l_new_doc_size.
     [color=#FF0000]    packing_list-doc_size = l_new_doc_size * 2.[/color]
       endif.
       modify packing_list.
     endloop.
   endif.
ENDIF.


здесь происходит переписование длины файла ,а именно ее удвоение вклучая и пробелы, которые присутствуют в конце строки дополняя ее до 255 символов (вместо удвоения фактической длины packing_list-doc_size которая передается в функцию )
если в деббаге задать длину packing_list-doc_size = 2*packing_list-doc_size , то все работает правельно

не знаете есть какие либо ноты к данной функции (SO_DOCUMENT_SEND_API1)?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: лишнии знаки при отправке attachment через SO_DOCUMENT_SEND_API1
СообщениеДобавлено: Чт, фев 25 2010, 17:21 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
DaV написал(а):
вроде бы нашел в чем проблема по моему мнению проблема в самой функции "SO_DOCUMENT_SEND_API1" а именно

Code:
DESCRIBE TABLE CONTENTS_BIN LINES HEX_SIZE.


...
Может тогда просто использовать CONTENTS_HEX ??? Тем более что BIN обозван "Obsolet - siehe CONTENTS_HEX"

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: лишнии знаки при отправке attachment через SO_DOCUMENT_SEND_API1
СообщениеДобавлено: Чт, фев 25 2010, 18:04 
Специалист
Специалист

Зарегистрирован:
Вт, июл 07 2009, 13:24
Сообщения: 235
DaV написал(а):
Может тогда просто использовать CONTENTS_HEX ??? Тем более что BIN обозван "Obsolet - siehe CONTENTS_HEX"

если использовать CONTENTS_HEX то еще хуже из файла пропали 3 строки из 6.
нашел ноты
1151258
1430123
936447
незнаю помогут или нет


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: лишнии знаки при отправке attachment через SO_DOCUMENT_SEND_API1
СообщениеДобавлено: Чт, фев 25 2010, 22:18 
Президент
Президент

Зарегистрирован:
Пт, апр 28 2006, 22:39
Сообщения: 2514
Откуда: North Taxolina, USA
Пол: Женский
Приведенный вами фрагмент у нас выглядит точно так же (ECC 6.0 SP18). Тем не менее у нас все аттачменты работают совершенно нормально. Обратите внимание на эти два момента:
1) У вас производятся какие-то манипуляции с файлом после его чтения. Попробуйте временно от них избавиться и посмотрите, что будет. Похожая программа у нас тоже читает файл с OPEN DATASET ... BINARY..., но напрямую в таблицу, которая передается в CONTENTS_BIN.
2) Почитайте документацию к ФМ. Меня по поводу все той же PACKING_LIST немного смущают комментарии "In the first row of the table, this field is not used". Похоже, что эта таблица должна иметь две записи.

Кстати, попробуйте еще такую штуку: doc_type = 'EXT', а имя файла вместе с расширением передайте в object_header. Помнится в коде у SAP иногда на 'EXT' кое-какие вещи завязаны.

_________________
"One of the symptoms of an approaching nervous breakdown is the belief that one's work is terribly important." Bertrand Russell


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: лишнии знаки при отправке attachment через SO_DOCUMENT_SEND_API1
СообщениеДобавлено: Пт, фев 26 2010, 11:10 
Специалист
Специалист

Зарегистрирован:
Вт, июл 07 2009, 13:24
Сообщения: 235
DaV написал(а):
2) Почитайте документацию к ФМ. Меня по поводу все той же PACKING_LIST немного смущают комментарии "In the first row of the table, this field is not used". Похоже, что эта таблица должна иметь две записи


в нашем случаи она также имеет 2 строчки, но первая строка содержит информацию самого письма(в текстовом виде) а не атачмента и обрабатывается полностью нормально.

насчет магипуляций конечно они не совсем красивы и для меня тоже не по душе , но наверное они необходимы для того чтобы запихнуть текст в таблицу а именно разбить их по 255 символов как требует того структура таблицы, а Вы не смотрели у Вас есть такие ноты

1151258
1430123
936447

правда возможно они идут и в пакетах


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: лишнии знаки при отправке attachment через SO_DOCUMENT_SEND_API1
СообщениеДобавлено: Пт, фев 26 2010, 12:34 
Специалист
Специалист

Зарегистрирован:
Вт, июл 07 2009, 13:24
Сообщения: 235
Jelena написала:
Кстати, попробуйте еще такую штуку: doc_type = 'EXT', а имя файла вместе с расширением передайте в object_header. Помнится в коде у SAP иногда на 'EXT' кое-какие вещи завязаны.

попробовал все равно получаются лишнии пробелы (((

Jelena
Jelena написала:
Похожая программа у нас тоже читает файл с OPEN DATASET ... BINARY..., но напрямую в таблицу, которая передается в CONTENTS_BIN.

а какие типы файлов вы передаете возможно что просто у вас не используются файлы типа csv и xls(в других типах пробелы не так заметны) или просто не обращали на них внимание


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: лишнии знаки при отправке attachment через SO_DOCUMENT_SEND_API1
СообщениеДобавлено: Ср, мар 03 2010, 23:40 
Президент
Президент

Зарегистрирован:
Пт, апр 28 2006, 22:39
Сообщения: 2514
Откуда: North Taxolina, USA
Пол: Женский
PDF, DOC, XLS - со всеми работает. CSV мы не используем, но это же вроде обычный текстовый формат по сути?

_________________
"One of the symptoms of an approaching nervous breakdown is the belief that one's work is terribly important." Bertrand Russell


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 18 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB