Sapforum.Biz
Инструменты => ABAP - Инструментальные средства => Тема начата: Паганель от Октябрь 24, 2009, 09:47:12 am
-
Для некоторых все это очевидно, но вот нам тут понадобилось, вот коллега немного покопался.
Если в чем то ошибся, думаю что коллеги по форуму подправят. ;)
1. Установливаем значение параметра MBN
SET PARAMETER ID 'MBN' FIELD mkpf-mblnr. "последний созданный документ товара
2. В определении экрана выбора указываем MEMORY ID откуда будет считыватся нужный нам номер.
SELECT-OPTIONS sv_mblnr FOR mkpf-mblnr MEMORY ID MBN.
Вроде ничего не забыл?
-
Ну как вам сказать, ну для более полного ответа не мешало бы во-первых, уточнить что такой код будет работать не всегда правильно, так как нумерация документов материала привязана к году, а это значит что кроме номера документа еще нужно указать и год документа. Для этого надо:
1. Установливаем значение параметра MJA
SET PARAMETER ID 'MJA' FIELD mkpf-mjahr. "Год документа
2. В определении экрана выбора указываем MEMORY ID откуда будет считыватся нужный нам год.
SELECT-OPTIONS sv_mjahr FOR mkpf-mjahr MEMORY ID MJA.
Теперь о том откуда можно узнать о параметрах, для этого идем в интересующую нас транзакцию, например просмотра документа материала MB03, на первом экране, рисунок MB03.png видим что для идентификации документа нужно знать номер и год документа. Теперь как узнать код параметра для поля, например поле года. Для этого становимся в поле года и нажимаем кнопку F1, попадаем в справку описания к полю, рисунок MB03-F1.png, затем на этом экране нажимаем кнопку перехода к технической информации и попадаем в экран, рисунок MB03-MJA.png. Вот на этом экране и указан код параметра который можно использовать в своих программах. Как видим для поле год материала это MJA.
Аналогичным способом можно узнать параметры для любых полей, но помните, что не каждое поле экрана к сожалению имеет код параметра.
Вот теперь вроде как все ;)
-
Ну вот, я же говорил что более опытные коллеги с форума, дополнят, спасибо - познавательно
-
Сюда же, что бы не плодить веток....
А как его так сказать экспортнуть? Т.е. в своей проге через бапишку создал документ материала, получил этот номер, теперь хотелось бы его экспортнуть и сделать доступным другим транзакциям?
-
А как его так сказать экспортнуть? Т.е. в своей проге через бапишку создал документ материала, получил этот номер, теперь хотелось бы его экспортнуть и сделать доступным другим транзакциям?
см. п.1 поста Uukrul...
Установка значений ID-параметров:
SET PARAMETER ID 'MJA' FIELD mkpf-mjahr. "Год документа
SET PARAMETER ID 'MBN' FIELD mkpf-mblnr. "№ документа
Получение значений ID-параметров (в своей программе, уже после создания документа и экспорта в память):
GET PARAMETER ID 'MJA' FIELD gv_mjahr. "Год документа
GET PARAMETER ID 'MBN' FIELD gv_mblnr. "№ документа
Значения ID-параметров сохраняются в рамках одной сессии (вне зависимости от кол-ва режимов) и привязаны к конкретному пользователю. Существует также конструкция: EXPORT/IMPORT lt_mkpf TO/FROM MEMORY ID 'ZMKPF', где lt_mkpf - твоя внутренняя таблица. ID-параметры создаются в SE80: "Shift+F5" - "Другой объект", вкладка "Другие" см. рисунок, указатель мыши на кнопочке "Другой объект", а привязываются к ЭД в SE11, вкладка "Дополнительные свойства".
-
хм, спасибо ... невнимательно читал ответ Уукрула
-
хм, спасибо ... невнимательно читал ответ Уукрула
нема за что...
Нужно еще учесть, что параметр обновляется после ввода его на экран, т.е. ты создал документ, занес его № в память, зашел в др. транзакцию, ввел там совсем другой номер, он сохранился, т.е. тот который тебе нужен - затерся. ;)
-
да нет, все нормально, я понял .... просто тут такая задача, типа куча транзакций, часть самопыисных, а печатаем с другой где куча смартформ забита.... пользователю неудобно как бы провел документ, потом заходит в транзакцию печати, и ищет только что созданный документ.....
Думаю проблем не будет...
-
Краткое резюме для себя (тут снова понадобилось, вот читал пост и сидел, вспоминал где же эти куски кода прописывать)
Экспорт последнего номера документа материала в своей транзакции
SET PARAMETER ID 'MJA' FIELD mkpf-mjahr. "Год документа
SET PARAMETER ID 'MBN' FIELD mkpf-mblnr. "№ документа
Импорт последнего номера документа материала в своей транзакции
Перед объявлением select-options вставляем код:
GET PARAMETER ID 'MBN' FIELD mkpf-mblnr. "последний созданный документ товара
GET PARAMETER ID 'MJA' FIELD mkpf-mjahr. "Год документа
Пример:
SET PARAMETER ID 'MBN' FIELD mkpf-mblnr. "последний созданный документ товара
SET PARAMETER ID 'MJA' FIELD mkpf-mjahr. "Год документа
SELECTION-SCREEN BEGIN OF BLOCK choice WITH FRAME TITLE text-001.
SELECT-OPTIONS: p_belnr FOR mkpf-mblnr MEMORY ID MBN.
PARAMETERS: p_gjahr TYPE mkpf-mjahr MEMORY ID MJA. "DEFAULT '2009'.
PARAMETERS: p_budat TYPE mkpf-budat. "OBLIGATORY.
SELECTION-SCREEN END OF BLOCK choice.
-
Не это явно какую-то фигню написал, так как если ты в своей первой программе сделал SET, то вот это вот ниже.. явная пурга, так как получается что ты в другой программе перетираешь переменные памяти какими-то значениями из mkpf-mblnr и mkpf-mjahr., после чего у тебя в SELECT-OPTIONS будет пустота.
SET PARAMETER ID 'MBN' FIELD mkpf-mblnr. "последний созданный документ товара
SET PARAMETER ID 'MJA' FIELD mkpf-mjahr. "Год документа
SELECTION-SCREEN BEGIN OF BLOCK choice WITH FRAME TITLE text-001.
SELECT-OPTIONS: p_belnr FOR mkpf-mblnr MEMORY ID MBN.
PARAMETERS: p_gjahr TYPE mkpf-mjahr MEMORY ID MJA. "DEFAULT '2009'.
PARAMETERS: p_budat TYPE mkpf-budat. "OBLIGATORY.
SELECTION-SCREEN END OF BLOCK choice.
-
Перед объявлением select-options ничего вставлять не нужно.
SELECT-OPTIONS: p_belnr FOR mkpf-mblnr MEMORY ID MBN.
PARAMETERS: p_gjahr TYPE mkpf-mjahr MEMORY ID MJA.
То, что выделено жирным и дает нам нужный эффект:
1. Подстановка из памяти перед выводом
2. Занесение в память после ввода на СЭ.
Поэтому и написал чуть выше, чтобы внимательно последовательность при цепочке операций соблюдал. Попробуй, открой 2 режима и в обоих поиграй с MB03, например.
Update 4 Uukrul: ну дык это ж Паганель, что бы мы вообще тут без него делали! :D
-
Спасибо, ошибся в посте, мало того, я эту пургу и в код проги прописал.
Спасибо, подправил .....
-
Кстати, рекомендую на СЭ использовать следующие обозначения:
p_* - параметр, so_* - select-options, сам использую просто s_ для последних.
-
Кстати, рекомендую на СЭ использовать следующие обозначения:
p_* - параметр, so_* - select-options, сам использую просто s_ для последних.
ну всегда так и делаю, просто данную прогу делал другой человек, я лишь подправлял, и переименовывать не стал (зачем лишняя работа).
Т.е. все просто и достаточно этого:
Экспорт последнего номера документа материала в своей транзакции
SET PARAMETER ID 'MJA' FIELD mkpf-mjahr. "Год документа
SET PARAMETER ID 'MBN' FIELD mkpf-mblnr. "№ документа
Импорт последнего номера документа материала в своей транзакции
Пример:
SELECTION-SCREEN BEGIN OF BLOCK choice WITH FRAME TITLE text-001.
SELECT-OPTIONS: p_belnr FOR mkpf-mblnr MEMORY ID MBN.
PARAMETERS: p_gjahr TYPE mkpf-mjahr MEMORY ID MJA. "DEFAULT '2009'.
PARAMETERS: p_budat TYPE mkpf-budat. "OBLIGATORY.
SELECTION-SCREEN END OF BLOCK choice.
-
Именно. ;)