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

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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