Текущее время: Ср, июл 30 2025, 04:41

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: Как получить данные о документе материала?
СообщениеДобавлено: Вт, дек 12 2006, 17:22 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, сен 19 2005, 08:33
Сообщения: 56
Откуда: Воронеж
Здравствуйте!
Подскажите, пожалуйста, как помимо номера документа материала, узнать и год документа материала в следующем коде
Code:
  CALL TRANSACTION 'ZMB1A' USING BDC
      MODE 'A' MESSAGES INTO MSGITAB.
  LEAVE TO LIST-PROCESSING.


в sy-MSGV1 или в MSGITAB-MSGV1 я нахожу номер документа материала, а как узнать его год? или номера вполне достаточно для получения всех данных об этом документе? например, в mkpf 2 ключевых поля номер и год документа...
Спасибо!

_________________
4.0B


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, дек 12 2006, 18:19 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, дек 20 2004, 16:05
Сообщения: 1080
Откуда: 4.0B
Пол: Мужской
get parameter id 'MJA' field <год>.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, дек 13 2006, 08:55 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, сен 19 2005, 08:33
Сообщения: 56
Откуда: Воронеж
Lars написал:
get parameter id 'MJA' field <год>.


спасибо, а это действительно год документа материала, в той транзакции, о которой речь, он напрямую не вводится, только косвенно, через дату документа материала?

_________________
4.0B


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, дек 13 2006, 10:05 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, сен 19 2005, 08:33
Сообщения: 56
Откуда: Воронеж
и еще вопрос, подскажите пожалуйста в чем дело, в коде ниже если ставить точку останова после LEAVE TO LIST-PROCESSING, то программа прекрасно выполняется и выводит список данных на экран, а вот если его убрать, то ничего не выводит, только номер документа в статусной строке?

Code:
CALL TRANSACTION 'ZMB1A' USING BDC
MODE 'A' MESSAGES INTO MSGITAB.
LEAVE TO LIST-PROCESSING.

READ TABLE MSGITAB WITH KEY MSGID = 'M7'
                            MSGTYP = 'S'
                            MSGNR = '060'.
IF SY-SUBRC = 0.

.......

      WRITE:/ MSEG_ITAB-SELECTED AS CHECKBOX,
......


т.е. как продолжить выполнение программы после завершения работы транзакции, данные в транзакции вводятся вручную оператором, поэтому wait up не подойдет.
Спасибо!

_________________
4.0B


Последний раз редактировалось const Ср, дек 13 2006, 10:08, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, дек 13 2006, 10:05 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, дек 20 2004, 16:05
Сообщения: 1080
Откуда: 4.0B
Пол: Мужской
Думаю, что он :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, дек 13 2006, 10:12 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, сен 19 2005, 08:33
Сообщения: 56
Откуда: Воронеж
Lars написал:
Думаю, что он :)

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

_________________
4.0B


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, дек 13 2006, 10:38 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, дек 20 2004, 16:05
Сообщения: 1080
Откуда: 4.0B
Пол: Мужской
const написал(а):
и еще вопрос, подскажите пожалуйста в чем дело, в коде ниже если ставить точку останова после LEAVE TO LIST-PROCESSING, то программа прекрасно выполняется и выводит список данных на экран, а вот если его убрать, то ничего не выводит, только номер документа в статусной строке?

Code:
CALL TRANSACTION 'ZMB1A' USING BDC
MODE 'A' MESSAGES INTO MSGITAB.
LEAVE TO LIST-PROCESSING.

READ TABLE MSGITAB WITH KEY MSGID = 'M7'
                            MSGTYP = 'S'
                            MSGNR = '060'.
IF SY-SUBRC = 0.

.......

      WRITE:/ MSEG_ITAB-SELECTED AS CHECKBOX,
......


т.е. как продолжить выполнение программы после завершения работы транзакции, данные в транзакции вводятся вручную оператором, поэтому wait up не подойдет.
Спасибо!


Я честно говоря не очень понял но.

После LEAVE TO LIST-PROCESSING можно проставить SUPPRESS DIALOG.

Но, на мой взгляд, лучше вызвать другой экран, где уже WRITE делать и использовать при этом конструкцию
LEAVE TO LIST-PROCESSING and return to screen <scr>.
suppress dialog.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, дек 13 2006, 10:44 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, сен 19 2005, 08:33
Сообщения: 56
Откуда: Воронеж
Lars, если запускать код в обычном режиме, то Write ничего не выводит....
В режиме же отладки, дело до Write доходит, вот в чем проблема.

SUPPRESS DIALOG не помог

_________________
4.0B


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, дек 13 2006, 12:18 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, сен 19 2005, 08:33
Сообщения: 56
Откуда: Воронеж
Чтобы дождаться окончания ввода пользователя и завершения транзакции сделал следующее, то что не работало (писал выше)....заработало!

Code:
CALL TRANSACTION 'ZMB1A' USING BDC
MODE 'A' MESSAGES INTO MSGITAB.
WHILE FLAG EQ SPACE.
  WAIT UP TO 5 SECONDS.
  DESCRIBE TABLE MSGITAB LINES LINE.
  IF LINE NE 0.
    FLAG = 'X'.
  ENDIF.
ENDWHILE.


Может быть есть более правильное решение? А то при таком раскладе, если транзакцию покинуть без сообщений в табличке MSGITAB, то программа звцикливается. Спасибо!

_________________
4.0B


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, дек 14 2006, 14:41 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 14:35
Сообщения: 1519
Откуда: В ВЕЧНОМ БАНЕ
const написал(а):
Чтобы дождаться окончания ввода пользователя и завершения транзакции сделал следующее, то что не работало (писал выше)....заработало!

Code:
CALL TRANSACTION 'ZMB1A' USING BDC
MODE 'A' MESSAGES INTO MSGITAB.
WHILE FLAG EQ SPACE.
  WAIT UP TO 5 SECONDS.
  DESCRIBE TABLE MSGITAB LINES LINE.
  IF LINE NE 0.
    FLAG = 'X'.
  ENDIF.
ENDWHILE.

Может быть есть более правильное решение? А то при таком раскладе, если транзакцию покинуть без сообщений в табличке MSGITAB, то программа звцикливается. Спасибо!



А может проще объекты блокировки проверить на материалы которые этой транзакцией дергаются? Если уже сняты тогда транзакция точно прошла и данные уже есть в таблицах.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, дек 14 2006, 14:49 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, сен 19 2005, 08:33
Сообщения: 56
Откуда: Воронеж
Uukrul, я переделал, сделал диалоговую программу, с экрана пользователь уходит в транзакцию, а когда возвращается давит на кнопочку обновить, это всех устроило...

_________________
4.0B


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

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


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

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


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

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