Пакетник LSMW для транзакции EN99

Автор midasvenis32, Червень 09, 2016, 06:25:31 ПП

Попередня тема - Наступна тема

0 Користувачі і 1 Гість дивляться цю тему.

midasvenis32

Всем привет!

Вопрос следующего характера. Написал пакетник LSMW, чтобы массово обновить три поля в транзакции EN99, а именно, в данных заголовка на вкладке примечание есть три поля (см.скрин 1).

Из файла будут грузиться данные и заполнять эти поля (см.скрин 1). При загрузке в фоновом режиме, все время загрузка прерывается с ошибкой (дамп). Поговорил с разработчиком и как он мне объяснил, что в фоне недоступны средства SAP GUI: классы, ФМ и т.д. Поэтому и дамп.

Если грузить в "Видимом режиме" (см.скрин 2), то загружается успешно. Но есть одно НО!
Каждый раз при переходе с экрана на экран, система просить подтверждать ОК-Code (см.рисунок 3), пока позиция из файла не загрузится.

Кто нибудь сталкивался с такой проблемой и как устраняли, если сталкивались?

В интернете нашел подсказки как писал пакетник, но там не рассматривается такая проблема и ее в инете нигде не обговаривают, к сожалению

Uukrul

Цитата: midasvenis32 від Червень 09, 2016, 06:25:31 ПП
Если грузить в "Видимом режиме" (см.скрин 2), то загружается успешно. Но есть одно НО!
Каждый раз при переходе с экрана на экран, система просить подтверждать ОК-Code (см.рисунок 3), пока позиция из файла не загрузится.
Ну так запускайте со статусом "Просмотр только ошибок", будет вам остановка только если при обработке записи возникнет ошибка.

midasvenis32

Цитата: Uukrul від Червень 10, 2016, 11:07:43 ДП
Ну так запускайте со статусом "Просмотр только ошибок", будет вам остановка только если при обработке записи возникнет ошибка.
Да, но если в нужных мне полях для фактуры есть данные, то ошибка повторяется. Если грузить 1 000 000 записей и в 800 000 будут данные, то... хз че будет...

Uukrul

Цитата: midasvenis32 від Червень 10, 2016, 03:03:44 ПП
Да, но если в нужных мне полях для фактуры есть данные, то ошибка повторяется. Если грузить 1 000 000 записей и в 800 000 будут данные, то... хз че будет...
Ну посмотрите там на ключи запуска пакетного ввода в LSMW. Запуск может идти со следующими ключами А - это аналоги выбора вами в видимом режиме, далее E - Остановка в случае ошибки и следующий полезный ключа N - выполнить без вывода сообщений в диалоге. Посмотрите может там есть где-то возможность задавать вот эти ключи запуска пакетного ввода, это именно в LSMW а не через выполнение сеанса в SM35.

midasvenis32

Цитата: Uukrul від Червень 10, 2016, 04:33:36 ПП
Ну посмотрите там на ключи запуска пакетного ввода в LSMW. Запуск может идти со следующими ключами А - это аналоги выбора вами в видимом режиме, далее E - Остановка в случае ошибки и следующий полезный ключа N - выполнить без вывода сообщений в диалоге. Посмотрите может там есть где-то возможность задавать вот эти ключи запуска пакетного ввода, это именно в LSMW а не через выполнение сеанса в SM35.
[/quote

Никак не могу найти это место. Вы устанавливали такое значение когда нибудь?

Uukrul

Цитата: midasvenis32 від Червень 10, 2016, 10:30:12 ПП
Никак не могу найти это место. Вы устанавливали такое значение когда нибудь?
Это как в том анекдоте, да не одну сотню раз, но знаете ли есть один ньюанс, я пакетные вводы обычно из своих программ вызвал всегда, а там это делается гораздо проще (ну как-то так):

DATA: pt_bdcdata TYPE STANDART TABLE bdcdata WITH HEADER LINE.
DATA: pt_itab TYPE STANDART TABLE bdcmsgcoll WITH HEADER LINE.


CALL TRANSACTION 'ME41' USING pt_bdcdata MODE 'N' UPDATE 'S' MESSAGES INTO pt_itab.

midasvenis32

Цитата: Uukrul від Червень 11, 2016, 04:27:59 ПП
Это как в том анекдоте, да не одну сотню раз, но знаете ли есть один ньюанс, я пакетные вводы обычно из своих программ вызвал всегда, а там это делается гораздо проще (ну как-то так):

DATA: pt_bdcdata TYPE STANDART TABLE bdcdata WITH HEADER LINE.
DATA: pt_itab TYPE STANDART TABLE bdcmsgcoll WITH HEADER LINE.


CALL TRANSACTION 'ME41' USING pt_bdcdata MODE 'N' UPDATE 'S' MESSAGES INTO pt_itab.


Переписал Record, но теперь другая фишка.

Допустим, в полях, которые нам нужно обновить данными из файла, уже есть значение (см.рисунок 4).

После запуска загрузки данных, если данные в обновляемых полях есть, то система выдает сообщение:
>>
Данные пакетного ввода для экрана SAPLV50E 0100 отсутствуют.
<<
(см.рисунок 5)

Я ожидал, что результат будет в журнале, а не вываливаться пользователю.

Коллеги по цеху, подскажете, как обычно устраняется такая проблема, то есть чтобы не пользователю вываливался, а записывалась в журнал? Наверняка вы сталкивались?

Uukrul

Цитата: midasvenis32 від Червень 16, 2016, 03:21:11 ПП
Допустим, в полях, которые нам нужно обновить данными из файла, уже есть значение (см.рисунок 4).

После запуска загрузки данных, если данные в обновляемых полях есть, то система выдает сообщение:
>>
Данные пакетного ввода для экрана SAPLV50E 0100 отсутствуют.
<<
(см.рисунок 5)
Такое сообщение выдается если вы не правильно сделали пакетный ввод. К заполнению полей данными это отношения не имеет, т.е. вы пытаетесь заполнить поле в программа/экран, которого нет на данном экране. Короче, проверяйте свой пакетный ввод.

midasvenis32

Цитата: Uukrul від Червень 16, 2016, 04:00:57 ПП
Такое сообщение выдается если вы не правильно сделали пакетный ввод. К заполнению полей данными это отношения не имеет, т.е. вы пытаетесь заполнить поле в программа/экран, которого нет на данном экране. Короче, проверяйте свой пакетный ввод.

А почему тогда, если перед загрузкой данных в нужных полях нет, то загружается без проблем?

А потом когда делаю повторную загрузку (всё тоже самое) полей в которых уже данные есть после первой загрузки - выпадает в ошибку:
Данные пакетного ввода для экрана SAPLV50E 0100 отсутствуют.

Ведь в первый раз успешно всё загрузилось, то есть экраны все есть и последовательность верная. А когда данные есть в обновляемых полях - ошибка.

Uukrul

Цитата: midasvenis32 від Червень 17, 2016, 04:22:13 ПП
А почему тогда, если перед загрузкой данных в нужных полях нет, то загружается без проблем?
Ну значит меняется последовательность обработки при первоначальной загрузке и обновлении. Еще раз, запустите в видимом режиме пакетный ввод и увидите где система остановится. Но к заполнению полей это отношения не имеет.