MBCFC004 - Заполнение классификации для партий

Автор Uukrul, Вересень 08, 2009, 12:44:35 ПП

Попередня тема - Наступна тема

0 Користувачі і 1 Гість дивляться цю тему.

Uukrul

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?

Dmitriy

#2
Цитата: Паганель від Вересень 27, 2009, 11:02:14 ДП
Что то не могу найти этот экзит, твоей прогой искал - http://sapforum.biz/index.php/topic,654.0.html
Нашел SAPLV1ZN - EXIT_SAPLV01Z_014
Мне кажется что ты перепутал с ZXVBZU10.

Как мне найти в каком  Enhancement"е находится ZXMBCU04?
FM "EXIT_SAPMM07M_004"


Паганель

#3
А имя расширения, которое можно указать в smod

т.е. есть у нас екзит EXIT_SAPMM07M_010, есть инклуд ZXMBCU10, как определить название расширения которое надо в проекте присвоить?

Dmitriy


Dmitriy

Цитата: Паганель від Вересень 27, 2009, 12:15:29 ПП
А имя расширения, которое можно указать в smod

т.е. есть у нас екзит EXIT_SAPMM07M_010, есть инклуд ZXMBCU10, как определить название расширения которое надо в проекте присвоить?
MBCFC010 ;)

Uukrul

В общем-то имя экзита MBCFC004, но чтобы он вызвался нужно для вида движения убедиться что классификация активна. Для этого зайдите в транзакцию настройки классификации партий для видов движений OMCV и установите требуемый код для вида движения. Например если вы классифицируете в экзите тогда можно поставить режим 1 - Классификация выполняется в фоновом режиме (все партии) или 3 - Классификация вызывается всегда в ДиалогРежиме (все партии), при этом для режима три будет вызван экзит, а потом пользователю будет показан экран классификации с заполненными в экзите полями.

Паганель

Т.е. это экзит вызывается когда в миго нажимают кнопку "Классификация"?
А как же заполнять в фоне?

Uukrul

Цитата: Паганель від Вересень 27, 2009, 07:19:03 ПП
Т.е. это экзит вызывается когда в миго нажимают кнопку "Классификация"?
А как же заполнять в фоне?
Не знаю... я в новых транзакциях не смотрел, но в 4.6 работает без нажатия на кнопочку... а ты точно там поставил тип 1? Кстати попробуй через MB01 сделать приход...


Паганель

Цитата: Uukrul  link=topic=782.msg5095#msg5095 date=1254067966
Например если вы классифицируете в экзите тогда можно поставить режим 1 - Классификация выполняется в фоновом режиме (все партии)

Не могу найти экзит

Паганель

Цитата: Паганель від Вересень 27, 2009, 07:27:54 ПП
uukrul:
экзит я тебе сказал...

блин,типа если для ВД утановить это индикатор, то будет вызыватся MBCFC004?

Uukrul

Типа таки вот как оно работает, только что проверил по всей цепочки в 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 всеравно .... получилось создавать партию, только как бы там не было вызывается (показывается) диалог классификации

Uukrul

Цитата: Паганель від Вересень 27, 2009, 08:30:44 ПП
Прикольно, у меня так что-то не работает .... сделал бади в нем вызываю VB_CREATE_BATCH всеравно .... получилось создавать партию,
Ну я бади как-то у себя в примере не вижу... а так как сделал, то.. еще раз в двух разных системах это работает. Отсюда вывод или у ритейла что-то не то?! Сомневаюсь однако... или кто-то уже что-то хорошо поломал где-то.

Паганель

#15
Цитата: Паганель від Вересень 27, 2009, 08:30:44 ПП
Прикольно, у меня так что-то не работает .... сделал бади в нем вызываю VB_CREATE_BATCH всеравно .... получилось создавать партию, только как бы там не было вызывается (показывается) диалог классификации

Ну частично решили:
1- у меня для автоматичесского и принудительного создания партии при движении материала, в MB_MIGO_ITEM_BADI вызывается VB_CREATE_BATCH, только там была ошибка с передачей параметра kzcla = 'X', надо было передавать '1'
2. Стандартный механизм, поисанный Уукрулом не срабатывал, так как в Ритейле, нету закладки "Классификация" в ОЗМ, и присвоить класс ..... как бы нельзя, или я просто его не нашел.

Есть идеи?

Uukrul

Цитата: Паганель від Жовтень 07, 2009, 01:48:10 ПП
2. Стандартный механизм, поисанный Уукрулом не срабатывал, так как в Ритейле, нету закладки "Классификация" в ОЗМ, и присвоить класс ..... как бы нельзя, или я просто его не нашел.
Так это вообще такой закладки нет или может ее для вида материала не активировали?


Dmitriy

Добавлю небольшие свои 5 копеек, относящиеся к первой половине топика.
Если известно имя Include, то с первого экрана SE38 ч/з журнал использования можно найти программу, в которой он используется. Возникал вопрос: а если он еще не создан, то как узнать имя расширения? Попробовал для двух расширений:
1. MBCFC010, Include ZXMBCU10.
2. HRESSW4, Include ZXWWWU03 соответственно.
Ни один из Includes в моей тестовой системе еще не создан. SE38 -> Журнал использования (все галочки):
1. LXMBCU10, однозначно указывающий нам на ФМ "EXIT_SAPMM07M_010".
2. Сообщение ES240 "ZXWWWU03 - не Include", по аналогии со случаем 1 меняем Z на L, жмем просмотр и видим ФМ "EXIT_SAPLEHUS_001". Также ZXWWWU03 можно было просто создать, затем удалить, если не нужен.
Ну а зная имя ФМ ищем расширение так, как написал Удав здесь и показано на рисунке.

Sed0Y

Цитата: Uukrul від Вересень 27, 2009, 08:21:55 ПП
Типа таки вот как оно работает, только что проверил по всей цепочки в 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 сделал точку остановы (брейк поинт) но программа не попадает туда, посоветуйте что нужно проверить или сделать?

Uukrul

Цитата: Sed0Y від Травень 03, 2011, 11:40:44 ПП
Не подскажете, сделал все как описано выше, в инклюде ZXMBCU04 сделал точку остановы (брейк поинт) но программа не попадает туда, посоветуйте что нужно проверить или сделать?
Так это вы проект расширения создали и его активировали?

Sed0Y

Цитата: Uukrul від Травень 03, 2011, 11:43:47 ПП
Так это вы проект расширения создали и его активировали?

Смотрите -создал в CMOD MBCFC004, в нем дважды нажал на "EXIT_SAPMM07M_004" выбрал перешел в папку где находится этот
user- exits и через нажатие правой кнопки мыши "создать инклюд" создал "ZXMBCU04" написал код остановы, активировал, вышел и в cmod активировал - верно?

P.S. это первый мой опыт создания user- exits, читал литературу, вроде так и писали как делать, как я написал, если дадите ссылку на другой ресурс, или книгу где все это описывается внятно, буду очень признателен...


Uukrul

Цитата: Sed0Y від Травень 04, 2011, 12:02:52 ДП
или книгу где все это описывается внятно, буду очень признателен...
Ну не знаю.. сейчас накидаю, что-то... минут за 20... чтобы было понятно что и как... а то у меня чувство что вы проект не правильно создали.

Uukrul

Цитата: Sed0Y від Травень 04, 2011, 12:02:52 ДП
читал литературу, вроде так и писали как делать, как я написал, если дадите ссылку на другой ресурс, или книгу где все это описывается внятно, буду очень признателен...
Ну в общем тут пример набросал: http://sapforum.biz/index.php/topic,1649.msg8905.html#msg8905

Sed0Y


Sed0Y

все сделал как по ссылке результат = 0

Тогда хочу уточнить, может это расширение не к этой классификации, что мне нужно.
Когда захожу в MIGO - закладка "Партии" - кнопка "Классификация" после нажатия, если посмотреть то запускается:
Транзакция           MSC3N
Программа            SAPLCHRG

Это оно?

Uukrul

Цитата: Sed0Y від Травень 04, 2011, 09:26:16 ДП
все сделал как по ссылке результат = 0
В смысле не заходит в расширение или заходит но классифицирование не просиходит?

Цитата: Sed0Y від Травень 04, 2011, 09:26:16 ДП
Когда захожу в MIGO - закладка "Партии" - кнопка "Классификация" после нажатия, если посмотреть то запускается:
Транзакция           MSC3N
Программа            SAPLCHRG

Ну запускается стандартная транзакция, но тебе ж нужно присвоить признаки классу или что вообще нужно сделать?

Sed0Y

#27
Цитата: Uukrul від Травень 04, 2011, 10:06:13 ДП
В смысле не заходит в расширение или заходит но классифицирование не просиходит?
не заходит в расширение

Цитата: Uukrul від Травень 04, 2011, 10:06:13 ДП
Ну запускается стандартная транзакция, но тебе ж нужно присвоить признаки классу или что вообще нужно сделать?
Мне нужно при создании Классификации (из MIGO) что бы присваивалось значение признаку


Uukrul

Цитата: Sed0Y від Травень 04, 2011, 10:18:56 ДП
не заходит в расширение
Значит нужно смотреть чего расширение не вызывается, у меня на 4.6 работало. Нужно глянуть настройку видов материала, там определяется способ вызова классификации, если ничего не путаю, может у вас там стоит только в диалоге, поэтому и не срабатывает.

MM_ka

Цитата: Uukrul від Травень 04, 2011, 10:36:04 ДП
Значит нужно смотреть чего расширение не вызывается, у меня на 4.6 работало. Нужно глянуть настройку видов материала, там определяется способ вызова классификации, если ничего не путаю, может у вас там стоит только в диалоге, поэтому и не срабатывает.
Проверила, для вдв 101, в OMCV стоит заполнение в фоне, а вот галки для расширения не было.
(А вот в виде материала не нашла как определить способ вызова классификации, там только вид класса и класс.)
Но после того, как установила галку расширение классификации....все равно не сработала точка остановки  ???

Может быть дело еще в настройке признака ???

MM_ka

Таки да, все дело в созданном признаке.
Добавила проверку по ФМ и в migo при проверке мы попадаем в него.

Sed0Y


Uukrul

Цитата: Sed0Y від Травень 04, 2011, 12:14:52 ПП
Uukrul большое спасибо
Да вроде ж как сами разобрались где собака порылась :-)

dev403k

Добрый день. Не стала открывать новую тему, т.к.  у меня вопрос по классификации при сохранении документа с помощью MIGO.

Как можно прочитать (с помощью чего) значения признаков классификации, перед сохранением?
Проблема такова, что перед сохранением документа необходимо проверить значения некоторых признаков. Если они не заполнены остановить обработку документа и выдать сообщение.
Используем UserExit MB_MIGO_BADI для проверки информации при сохранении. Можно ли каким-то образом в нем сделать проверку признаков классификации?

Будем благодарны за ответ.

dev403k

Добрый день. Может кому-нибудь понадобится считать признаки классификации:
в 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 нужно положить материал+партию

Паганель

Цитата: dev403k від Липень 26, 2011, 02:30:55 ПП
Можно обойтись и без 1-го ФМ, но тогда в objek0 нужно положить материал+партию[/color]
Думаю лучше считать настройку (хоть и медленнее) http://sapforum.biz/index.php/topic,1293.0.html

dev403k

Цитата: Паганель від Липень 26, 2011, 10:44:52 ПП
Думаю лучше считать настройку (хоть и медленнее) http://sapforum.biz/index.php/topic,1293.0.html

Добрый день.
Я написала часть кода, для случая, когда создается новая партия в MIGO. Если пользователь не ввел значения в нужные признаки. Пока не нажата кнопка "сохранить" -  читать по ФМ BAPI_OBJCL_CHANGE и с прозрачных раблиц нечего.
Код внизу продолжается , если партия уже ранее создана. Вот в этом случае можно учесть Вашу ссылку. Спасибо.



SMF spam blocked by CleanTalk