Sapforum.Biz
Инструменты => ABAP - Инструментальные средства => SMOD/CMOD - Расширения => Тема начата: Uukrul от Сентябрь 08, 2009, 12:44:35 pm
-
MBCFC004 - В данном экзите можно выполнить автоматическое присвоение значений для полей классификации партии. Экзит автоматически вызывается при задании партии и мы можем заполнить значения полей. Список полей передается в структуре attributes, так что все что нужно это заполнить параметр VALUES.
LOOP AT attributes.
MOVE-CORRESPONDIG attributes TO values.
CASE/IF <в зависимости от имени признака>
values-atwtb = <значение присвоенное признаку>.
ENDCASE/ENDIF.
APPEND values.
ENDLOOP.
PS: Случайно вместо имени экзита указал имя инклуда.
-
Что то не могу найти этот экзит, твоей прогой искал - http://sapforum.biz/index.php/topic,654.0.html
Нашел SAPLV1ZN - EXIT_SAPLV01Z_014
Мне кажется что ты перепутал с ZXVBZU10.
Как мне найти в каком Enhancement"е находится ZXMBCU04?
-
Что то не могу найти этот экзит, твоей прогой искал - http://sapforum.biz/index.php/topic,654.0.html
Нашел SAPLV1ZN - EXIT_SAPLV01Z_014
Мне кажется что ты перепутал с ZXVBZU10.
Как мне найти в каком Enhancement"е находится ZXMBCU04?
FM "EXIT_SAPMM07M_004"
-
А имя расширения, которое можно указать в smod
т.е. есть у нас екзит EXIT_SAPMM07M_010, есть инклуд ZXMBCU10, как определить название расширения которое надо в проекте присвоить?
-
FM "EXIT_SAPMM07M_004"
Расширение MBCFC004
-
А имя расширения, которое можно указать в smod
т.е. есть у нас екзит EXIT_SAPMM07M_010, есть инклуд ZXMBCU10, как определить название расширения которое надо в проекте присвоить?
MBCFC010 ;)
-
В общем-то имя экзита MBCFC004, но чтобы он вызвался нужно для вида движения убедиться что классификация активна. Для этого зайдите в транзакцию настройки классификации партий для видов движений OMCV и установите требуемый код для вида движения. Например если вы классифицируете в экзите тогда можно поставить режим 1 - Классификация выполняется в фоновом режиме (все партии) или 3 - Классификация вызывается всегда в ДиалогРежиме (все партии), при этом для режима три будет вызван экзит, а потом пользователю будет показан экран классификации с заполненными в экзите полями.
-
Т.е. это экзит вызывается когда в миго нажимают кнопку "Классификация"?
А как же заполнять в фоне?
-
Т.е. это экзит вызывается когда в миго нажимают кнопку "Классификация"?
А как же заполнять в фоне?
Не знаю... я в новых транзакциях не смотрел, но в 4.6 работает без нажатия на кнопочку... а ты точно там поставил тип 1? Кстати попробуй через MB01 сделать приход...
-
mb01 не катит ....
-
Например если вы классифицируете в экзите тогда можно поставить режим 1 - Классификация выполняется в фоновом режиме (все партии)
Не могу найти экзит
-
uukrul:
экзит я тебе сказал...
блин,типа если для ВД утановить это индикатор, то будет вызыватся MBCFC004?
-
Типа таки вот как оно работает, только что проверил по всей цепочки в ECC 6.0 с созданием экзита и всех шагов. У меня работает:
1. Создал материал, система IDES, за основу взял P-100, создал P-100-B, вид материала HAWA, на закладках "Классификация" присвоил свой класс YTOV_BATCH для вида класса 023 с одним признаком для тестирования, на ракусе "Закупка" поставил ведение по партиям, на закладке "БухУчет1" поставил оценка типа X, класс оценки 3100 и цена среднескользящая. Пример на рисунках MM01-1.png, MM01-2.png и MM01-3.png
2. Зашел в создание расширения, там сделал проект с расширением MBCFC004 и в нем написал вот такой вот текст:
*&---------------------------------------------------------------------*
*& Include ZXMBCU04
*&---------------------------------------------------------------------*
LOOP AT attributes.
MOVE-CORRESPONDING attributes TO values.
values-atwtb = '00005'.
APPEND values.
ENDLOOP.
В общем типа всегда заполняю признак, там он только один, значением 00005.
3. В транзакции OMCV, поставил для вида движения 501 поставил так как на рисунке OMVC.png, в общем классификация только в фоне, чтобы диалог не вызвался.
4. Пошел в MB1C и затем тоже в MIGO сделал 501 вид движения, все красиво отклассифицировалось MIGO-1.png и MIGO-2.png
Так что не знаю... у меня как видим в двух разных системах все работает.
-
Прикольно, у меня так что-то не работает .... сделал бади в нем вызываю VB_CREATE_BATCH всеравно .... получилось создавать партию, только как бы там не было вызывается (показывается) диалог классификации
-
Прикольно, у меня так что-то не работает .... сделал бади в нем вызываю VB_CREATE_BATCH всеравно .... получилось создавать партию,
Ну я бади как-то у себя в примере не вижу... а так как сделал, то.. еще раз в двух разных системах это работает. Отсюда вывод или у ритейла что-то не то?! Сомневаюсь однако... или кто-то уже что-то хорошо поломал где-то.
-
Прикольно, у меня так что-то не работает .... сделал бади в нем вызываю VB_CREATE_BATCH всеравно .... получилось создавать партию, только как бы там не было вызывается (показывается) диалог классификации
Ну частично решили:
1- у меня для автоматичесского и принудительного создания партии при движении материала, в MB_MIGO_ITEM_BADI вызывается VB_CREATE_BATCH (http://sapforum.biz/index.php/topic,827.0/highlight,vb_create_batch.html), только там была ошибка с передачей параметра kzcla = 'X', надо было передавать '1'
2. Стандартный механизм, поисанный Уукрулом не срабатывал, так как в Ритейле, нету закладки "Классификация" в ОЗМ, и присвоить класс ..... как бы нельзя, или я просто его не нашел.
Есть идеи?
-
2. Стандартный механизм, поисанный Уукрулом не срабатывал, так как в Ритейле, нету закладки "Классификация" в ОЗМ, и присвоить класс ..... как бы нельзя, или я просто его не нашел.
Так это вообще такой закладки нет или может ее для вида материала не активировали?
-
Вообще в Ритейле нету такого ракурса
-
Добавлю небольшие свои 5 копеек, относящиеся к первой половине топика.
Если известно имя Include, то с первого экрана SE38 ч/з журнал использования можно найти программу, в которой он используется. Возникал вопрос: а если он еще не создан, то как узнать имя расширения? Попробовал для двух расширений:
1. MBCFC010, Include ZXMBCU10.
2. HRESSW4 (http://sapforum.biz/index.php/topic,688.msg4280.html#msg4280), Include ZXWWWU03 соответственно.
Ни один из Includes в моей тестовой системе еще не создан. SE38 -> Журнал использования (все галочки):
1. LXMBCU10, однозначно указывающий нам на ФМ "EXIT_SAPMM07M_010".
2. Сообщение ES240 "ZXWWWU03 - не Include", по аналогии со случаем 1 меняем Z на L, жмем просмотр и видим ФМ "EXIT_SAPLEHUS_001". Также ZXWWWU03 можно было просто создать, затем удалить, если не нужен.
Ну а зная имя ФМ ищем расширение так, как написал Удав здесь (http://sapforum.biz/index.php/topic,688.msg4554.html#msg4554) и показано на рисунке.
-
Типа таки вот как оно работает, только что проверил по всей цепочки в ECC 6.0 с созданием экзита и всех шагов. У меня работает:
1. Создал материал, система IDES, за основу взял P-100, создал P-100-B, вид материала HAWA, на закладках "Классификация" присвоил свой класс YTOV_BATCH для вида класса 023 с одним признаком для тестирования, на ракусе "Закупка" поставил ведение по партиям, на закладке "БухУчет1" поставил оценка типа X, класс оценки 3100 и цена среднескользящая. Пример на рисунках MM01-1.png, MM01-2.png и MM01-3.png
2. Зашел в создание расширения, там сделал проект с расширением MBCFC004 и в нем написал вот такой вот текст:
*&---------------------------------------------------------------------*
*& Include ZXMBCU04
*&---------------------------------------------------------------------*
LOOP AT attributes.
MOVE-CORRESPONDING attributes TO values.
values-atwtb = '00005'.
APPEND values.
ENDLOOP.
В общем типа всегда заполняю признак, там он только один, значением 00005.
3. В транзакции OMCV, поставил для вида движения 501 поставил так как на рисунке OMVC.png, в общем классификация только в фоне, чтобы диалог не вызвался.
4. Пошел в MB1C и затем тоже в MIGO сделал 501 вид движения, все красиво отклассифицировалось MIGO-1.png и MIGO-2.png
Так что не знаю... у меня как видим в двух разных системах все работает.
Не подскажете, сделал все как описано выше, в инклюде ZXMBCU04 сделал точку остановы (брейк поинт) но программа не попадает туда, посоветуйте что нужно проверить или сделать?
-
Не подскажете, сделал все как описано выше, в инклюде ZXMBCU04 сделал точку остановы (брейк поинт) но программа не попадает туда, посоветуйте что нужно проверить или сделать?
Так это вы проект расширения создали и его активировали?
-
Так это вы проект расширения создали и его активировали?
Смотрите -создал в CMOD MBCFC004, в нем дважды нажал на "EXIT_SAPMM07M_004" выбрал перешел в папку где находится этот
user- exits и через нажатие правой кнопки мыши "создать инклюд" создал "ZXMBCU04" написал код остановы, активировал, вышел и в cmod активировал - верно?
P.S. это первый мой опыт создания user- exits, читал литературу, вроде так и писали как делать, как я написал, если дадите ссылку на другой ресурс, или книгу где все это описывается внятно, буду очень признателен...
-
или книгу где все это описывается внятно, буду очень признателен...
Ну не знаю.. сейчас накидаю, что-то... минут за 20... чтобы было понятно что и как... а то у меня чувство что вы проект не правильно создали.
-
читал литературу, вроде так и писали как делать, как я написал, если дадите ссылку на другой ресурс, или книгу где все это описывается внятно, буду очень признателен...
Ну в общем тут пример набросал: http://sapforum.biz/index.php/topic,1649.msg8905.html#msg8905
-
Ну в общем тут пример набросал: http://sapforum.biz/index.php/topic,1649.msg8905.html#msg8905
Uukrul - большое спасибо, завтра утром попробую!
-
все сделал как по ссылке результат = 0
Тогда хочу уточнить, может это расширение не к этой классификации, что мне нужно.
Когда захожу в MIGO - закладка "Партии" - кнопка "Классификация" после нажатия, если посмотреть то запускается:
Транзакция MSC3N
Программа SAPLCHRG
Это оно?
-
все сделал как по ссылке результат = 0
В смысле не заходит в расширение или заходит но классифицирование не просиходит?
Когда захожу в MIGO - закладка "Партии" - кнопка "Классификация" после нажатия, если посмотреть то запускается:
Транзакция MSC3N
Программа SAPLCHRG
Ну запускается стандартная транзакция, но тебе ж нужно присвоить признаки классу или что вообще нужно сделать?
-
В смысле не заходит в расширение или заходит но классифицирование не просиходит?
не заходит в расширение
Ну запускается стандартная транзакция, но тебе ж нужно присвоить признаки классу или что вообще нужно сделать?
Мне нужно при создании Классификации (из MIGO) что бы присваивалось значение признаку
(http://)
-
не заходит в расширение
Значит нужно смотреть чего расширение не вызывается, у меня на 4.6 работало. Нужно глянуть настройку видов материала, там определяется способ вызова классификации, если ничего не путаю, может у вас там стоит только в диалоге, поэтому и не срабатывает.
-
Значит нужно смотреть чего расширение не вызывается, у меня на 4.6 работало. Нужно глянуть настройку видов материала, там определяется способ вызова классификации, если ничего не путаю, может у вас там стоит только в диалоге, поэтому и не срабатывает.
Проверила, для вдв 101, в OMCV стоит заполнение в фоне, а вот галки для расширения не было.
(А вот в виде материала не нашла как определить способ вызова классификации, там только вид класса и класс.)
Но после того, как установила галку расширение классификации....все равно не сработала точка остановки ???
Может быть дело еще в настройке признака ???
-
Таки да, все дело в созданном признаке.
Добавила проверку по ФМ и в migo при проверке мы попадаем в него.
-
Uukrul большое спасибо
-
Uukrul большое спасибо
Да вроде ж как сами разобрались где собака порылась :-)
-
Добрый день. Не стала открывать новую тему, т.к. у меня вопрос по классификации при сохранении документа с помощью MIGO.
Как можно прочитать (с помощью чего) значения признаков классификации, перед сохранением?
Проблема такова, что перед сохранением документа необходимо проверить значения некоторых признаков. Если они не заполнены остановить обработку документа и выдать сообщение.
Используем UserExit MB_MIGO_BADI для проверки информации при сохранении. Можно ли каким-то образом в нем сделать проверку признаков классификации?
Будем благодарны за ответ.
-
Добрый день. Может кому-нибудь понадобится считать признаки классификации:
в UserExit MB_MIGO_BADI проверяем :
CALL FUNCTION 'VB_BATCH_READ_BUFFER_DB'
EXPORTING
matnr = ls_goitem-matnr " материал
charg = ls_goitem-charg " партия
werks = ls_goitem-werks "завод
* LGORT =
read_from_buffer = 'X'
read_from_db = 'X'
IMPORTING
batch_cuobj = cuobj0
batch_objek = objek0 " то что нам нужно
batch_class = class0
EXCEPTIONS
no_material = 1
no_batch = 2
no_plant = 3
lock_on_batch = 4
OTHERS = 5
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
IF objek0 IS NOT INITIAL.
CALL FUNCTION 'CLFM_GET_AUSP_FROM_BUFFER'
EXPORTING
object = objek0
classytpe = '023'
ptable = 'MCH1'
mafid = 'O'
atinn = atinn1 "признак классификации по которону нужно считать ин-ю
TABLES
exp_ausp = lt_ausp.
READ TABLE lt_ausp INTO ls_ausp1 INDEX 1.
Можно обойтись и без 1-го ФМ, но тогда в objek0 нужно положить материал+партию
-
Можно обойтись и без 1-го ФМ, но тогда в objek0 нужно положить материал+партию[/color]
Думаю лучше считать настройку (хоть и медленнее) http://sapforum.biz/index.php/topic,1293.0.html
-
Думаю лучше считать настройку (хоть и медленнее) http://sapforum.biz/index.php/topic,1293.0.html
Добрый день.
Я написала часть кода, для случая, когда создается новая партия в MIGO. Если пользователь не ввел значения в нужные признаки. Пока не нажата кнопка "сохранить" - читать по ФМ BAPI_OBJCL_CHANGE и с прозрачных раблиц нечего.
Код внизу продолжается , если партия уже ранее создана. Вот в этом случае можно учесть Вашу ссылку. Спасибо.