Sapforum.Biz

Инструменты => ABAP - Инструментальные средства => Тема начата: Паганель от Октябрь 24, 2009, 09:47:12 am

Название: Подстановка последнего номера документа материала в своей транзакции
Отправлено: Паганель от Октябрь 24, 2009, 09:47:12 am
Для некоторых все это очевидно, но вот нам тут понадобилось, вот коллега немного покопался.

Если в чем то ошибся, думаю что коллеги по форуму подправят.  ;)

1. Установливаем значение параметра MBN
Код: You are not allowed to view links. Register or Login
SET PARAMETER ID 'MBN' FIELD mkpf-mblnr. "последний созданный документ товара2. В определении экрана выбора указываем MEMORY ID откуда будет считыватся нужный нам номер.
Код: You are not allowed to view links. Register or Login
SELECT-OPTIONS sv_mblnr FOR mkpf-mblnr MEMORY ID MBN. 
Вроде ничего не забыл?
Название: Re: Подстановка последнего номера документа материала в своей транзакции
Отправлено: Uukrul от Октябрь 24, 2009, 11:20:28 am
Ну как вам сказать, ну для более полного ответа не мешало бы во-первых, уточнить что такой код будет работать не всегда правильно, так как нумерация документов материала привязана к году, а это значит что кроме номера документа еще нужно указать и год документа. Для этого надо:

1. Установливаем значение параметра MJA
Код: You are not allowed to view links. Register or Login
SET PARAMETER ID 'MJA' FIELD mkpf-mjahr. "Год документа2. В определении экрана выбора указываем MEMORY ID откуда будет считыватся нужный нам год.
Код: You are not allowed to view links. Register or Login
SELECT-OPTIONS sv_mjahr FOR mkpf-mjahr MEMORY ID MJA.
Теперь о том откуда можно узнать о параметрах, для этого идем в интересующую нас транзакцию, например просмотра документа материала MB03, на первом экране, рисунок MB03.png видим что для идентификации документа нужно знать номер и год документа. Теперь как узнать код параметра для поля, например поле года. Для этого становимся в поле года и нажимаем кнопку F1, попадаем в справку описания к полю, рисунок MB03-F1.png, затем на этом экране нажимаем кнопку перехода к технической информации и попадаем в экран, рисунок MB03-MJA.png. Вот на этом экране и указан код параметра который можно использовать в своих программах. Как видим для поле год материала это MJA.

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

Вот теперь вроде как все  ;)
Название: Re: Подстановка последнего номера документа материала в своей транзакции
Отправлено: Паганель от Октябрь 24, 2009, 12:13:59 pm
Ну вот, я же говорил что более опытные коллеги с форума, дополнят, спасибо - познавательно
Название: Экспорт последнего номера документа материала в своей транзакции
Отправлено: Паганель от Ноябрь 06, 2009, 06:34:38 pm
Сюда же, что бы не плодить веток....
А как его так сказать экспортнуть? Т.е. в своей проге через бапишку создал документ материала, получил этот номер, теперь хотелось бы его экспортнуть и сделать доступным другим транзакциям?
Название: Re: Экспорт последнего номера документа материала в своей транзакции
Отправлено: Dmitriy от Ноябрь 06, 2009, 08:39:35 pm
You are not allowed to view links. Register or Login
А как его так сказать экспортнуть? Т.е. в своей проге через бапишку создал документ материала, получил этот номер, теперь хотелось бы его экспортнуть и сделать доступным другим транзакциям?
см. п.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, вкладка "Дополнительные свойства".
Название: Re: Подстановка последнего номера документа материала в своей транзакции
Отправлено: Паганель от Ноябрь 06, 2009, 08:42:21 pm
хм, спасибо ... невнимательно читал ответ Уукрула
Название: Re: Подстановка последнего номера документа материала в своей транзакции
Отправлено: Dmitriy от Ноябрь 06, 2009, 08:51:59 pm
You are not allowed to view links. Register or Login
хм, спасибо ... невнимательно читал ответ Уукрула
нема за что...
Нужно еще учесть, что параметр обновляется после ввода его на экран, т.е. ты создал документ, занес его № в память, зашел в др. транзакцию, ввел там совсем другой номер, он сохранился, т.е. тот который тебе нужен - затерся. ;)
Название: Re: Подстановка последнего номера документа материала в своей транзакции
Отправлено: Паганель от Ноябрь 06, 2009, 08:55:07 pm
да нет, все нормально, я понял .... просто тут такая задача, типа куча транзакций, часть самопыисных, а печатаем с другой где куча смартформ забита.... пользователю неудобно как бы провел документ, потом заходит в транзакцию печати, и ищет только что созданный документ.....

Думаю проблем не будет...
Название: Резюме: Подстановка последнего номера доl
Отправлено: Паганель от Ноябрь 11, 2009, 01:47:03 pm
Краткое резюме для себя (тут снова понадобилось, вот читал пост и сидел, вспоминал где же эти куски кода прописывать)

Экспорт последнего номера документа материала в своей транзакции
Код: You are not allowed to view links. Register or Login
SET PARAMETER ID 'MJA' FIELD mkpf-mjahr. "Год документа
SET PARAMETER ID 'MBN' FIELD mkpf-mblnr. "№ документа

Импорт последнего номера документа материала в своей транзакции

Перед объявлением select-options вставляем код:
Код: You are not allowed to view links. Register or Login
GET PARAMETER ID 'MBN' FIELD mkpf-mblnr. "последний созданный документ товара
GET PARAMETER ID 'MJA' FIELD mkpf-mjahr. "Год документа

Пример:

Код: You are not allowed to view links. Register or Login
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.
Название: Re: Подстановка последнего номера документа материала в своей транзакции
Отправлено: Uukrul от Ноябрь 11, 2009, 01:57:46 pm
Не это явно какую-то фигню написал, так как если ты в своей первой программе сделал SET, то вот это вот ниже.. явная пурга, так как получается что ты в другой программе перетираешь переменные памяти какими-то значениями из mkpf-mblnr и mkpf-mjahr., после чего у тебя в SELECT-OPTIONS будет пустота.

Код: You are not allowed to view links. Register or Login
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.
Название: Re: Подстановка последнего номера документа материала в своей транзакции
Отправлено: Dmitriy от Ноябрь 11, 2009, 02:01:39 pm
Перед объявлением 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  
Название: Re: Подстановка последнего номера документа материала в своей транзакции
Отправлено: Паганель от Ноябрь 11, 2009, 02:02:27 pm
Спасибо, ошибся в посте, мало того, я эту пургу и в код проги прописал.

Спасибо, подправил .....
Название: Re: Подстановка последнего номера документа материала в своей транзакции
Отправлено: Dmitriy от Ноябрь 11, 2009, 02:08:17 pm
Кстати, рекомендую на СЭ использовать следующие обозначения:
p_* - параметр, so_* - select-options, сам использую просто s_ для последних.
Название: Re: Подстановка последнего номера документа материала в своей транзакции
Отправлено: Паганель от Ноябрь 11, 2009, 02:15:42 pm
You are not allowed to view links. Register or Login
Кстати, рекомендую на СЭ использовать следующие обозначения:
p_* - параметр, so_* - select-options, сам использую просто s_ для последних.


ну всегда так и делаю, просто данную прогу делал другой человек, я лишь подправлял, и переименовывать  не стал (зачем лишняя работа).

Т.е.  все просто и достаточно этого:
Экспорт последнего номера документа материала в своей транзакции
Код: You are not allowed to view links. Register or Login
SET PARAMETER ID 'MJA' FIELD mkpf-mjahr. "Год документа
SET PARAMETER ID 'MBN' FIELD mkpf-mblnr. "№ документа

Импорт последнего номера документа материала в своей транзакции
Пример:
Код: You are not allowed to view links. Register or Login
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.
Название: Re: Подстановка последнего номера документа материала в своей транзакции
Отправлено: Dmitriy от Ноябрь 11, 2009, 02:26:06 pm
Именно. ;)