Текущее время: Вт, июл 22 2025, 01:55

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


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

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


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

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