Текущее время: Чт, апр 18 2024, 17:53

Часовой пояс: UTC + 3 часа


Правила форума


Вопросы по ППМ (MRP) - сюда.
Вопросы по классификации - сюда.
Вопросы по входящим поставкам - сюда.



Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: Доп. аналитика в давальческой схеме
СообщениеДобавлено: Вт, июн 30 2015, 14:59 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Чт, ноя 02 2006, 11:27
Сообщения: 51
Откуда: Ярославль
Пол: Мужской
Доп. аналитика в давальческой схеме.
Тема обсуждалась тут: viewtopic.php?t=30470

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

Мы использовали для этих целей партийный учет. В партии много стандартных полей. Например, поле Вид Оценки сразу решает проблему с раздельной оценкой на отдельном балансовом счете. Можно создать пользовательские поля и указать свой объект учета, например, объект строительства. Можно завести классификацию партии и там указать нужные признаки.

Таким образом, нам необходимо создать новую партию у давальца. В поставке SD это принимающая партия. Принимающую партию можно создавать и указывать автоматически при создании поставки.
Итак, транзакция ME2O, программа RM06ELLB. Найдем вот такой код в подпрограмме «CREATE_DELIVERY»:
Code:
FORM CREATE_DELIVERY.
CALL FUNCTION 'GN_DELIVERY_CREATE'
      EXPORTING
        vbsk_i               = vbsk
        vbls_pos_rueck = 'X'
        no_commit        = 'X'
        if_no_deque      = 'X'                                "641451
      TABLES
        xkomdlgn       = xkomdlgn
        xvbfs              = xvbfs
        xvbls              = xvbls
      EXCEPTIONS
        OTHERS         = 1.

Видим внутреннюю таблицу с позициями поставки «XKOMDLGN». Внутри есть отпускающий материал, завод, склад, партия и т.д. Есть поля принимающего материала, завода, склада, партии. Перед вызовом этого ФМ заполним поле принимающая партия своими данными, и задача решена:
Code:
FORM CREATE_DELIVERY.

LOOP AT xkomdlgn.
CALL METHOD zcl_batch->bapi_bwtar_create.  “схематично для примера
CALL METHOD zcl_batch->bapi_batch_create.  “схематично для примера
xkomdlgn-ummat = xkomdlgn-matnr.
xkomdlgn-umwrk = xkomdlgn-werks.
xkomdlgn-umlgo = xkomdlgn-lgort.
xkomdlgn-umbar = z_bwtar.
xkomdlgn-umcha = z_charg.
xkomdlgn-umsok = 'O'.
MODIFY xkomdlgn.
ENDLOOP.   “ xkomdlgn

CALL FUNCTION 'GN_DELIVERY_CREATE'…


2. Мы пошли дальше – указываем в поставке отпускающую партию проекта, СПП, так как нам нужно отпустить запас с проекта PS, заказ мм (там номер контракта), позицию заказа (там контировка). То есть, и в документах и в запасе – везде есть аналитика.
Некоторые подробности типа создания партии на складе опустим. Делаем следующим образом. СПП и экран выбора партии проекта:
найти код:
Code:
FORM CREATE_DELIVERY.
LOOP AT xkomdlgn.
h_tabix = sy-tabix.


Добавить код:
Code:
FORM CREATE_DELIVERY.
LOOP AT xkomdlgn.
h_tabix = sy-tabix.

*“CALL SCREEN 0100 STARTING AT 30 05
*“                                    ENDING   AT 70 17.

CALL SCREEN 0101 STARTING AT 30 05
                       ENDING   AT 70 17.
xkomdlgn-ps_psp_pnr = z_ps_psp_pnr.
xkomdlgn-lgort = z_lgort.

MODIFY xkomdlgn.
ENDLOOP.   “ xkomdlgn
DELETE xkomdlgn WHERE lfimg EQ 0.


Заказ ММ и позицию заказа прописываем вместе с партией в поставку:
найти код -
Code:
FORM CREATE_DELIVERY.
CALL FUNCTION 'GN_DELIVERY_CREATE'…


вставить перед ним код:
Code:
FORM CREATE_DELIVERY.

LOOP AT xkomdlgn.
CALL METHOD zcl_batch->bapi_bwtar_create.  “схематично
CALL METHOD zcl_batch->bapi_batch_create.  “схематично
xkomdlgn-ummat = xkomdlgn-matnr.
xkomdlgn-umwrk = xkomdlgn-werks.
xkomdlgn-umlgo = xkomdlgn-lgort.
xkomdlgn-umbar = z_bwtar.
xkomdlgn-umcha = z_charg.
xkomdlgn-umsok = 'O'.
xkomdlgn-vbelv = z_ebeln.
xkomdlgn-posnv = z_ebelp.
*”xkomdlgn-ps_psp_pnr = z_ps_psp_pnr.   “ так не получается
MODIFY xkomdlgn.
ENDLOOP.   “ xkomdlgn

CALL FUNCTION 'GN_DELIVERY_CREATE'…



Проводка отпуска. Перенос запаса проекта на обычный тут:
находим код:
Code:
FORM FV50WF0W.

********* Localization Brazil ***********************
*         Transfer with transfer order
*  IF LIKP-VBTYP EQ VBTYP_LINO AND NOT LIKP-WERKS IS INITIAL
*     AND TVLK-AUFER EQ CHARB.
*    perform j_1b_im_tf_assign_txcd tables imseg
*                                          xlips
*                                   using  likp-vkorg
*                                          tvko.
*  ENDIF.
**********End of Localization Brazil*****************


вставляем код:
**********End of Localization Brazil*****************

Code:
PERFORM z_bapi_mb1b_411q USING likp
                                xlips
                                imkpf.
    LOOP AT imseg.
      IF  imseg-called_by CS 'VL02N'
      AND ( imseg-bwart = '541' OR imseg-bwart = '941' )
      AND imseg-kzbew = 'L'.
      *”       чтобы проводка прошла - иначе ERROR!
        imseg-ps_psp_pnr = ''.
        MODIFY imseg.
      ENDIF.      "imseg.
    ENDLOOP.



После переноса уже обычный запас отпускается подрядчику стандартным образом.
Сторно отпуска:
находим код:
Code:
CALL FUNCTION 'WS_REVERSE_GOODS_ISSUE'
            EXPORTING
              i_vbeln                   = xlikpukwa-vbeln
              i_budat                   = xlikpukwa-stdat
              i_count                   = count
              i_mblnr                   = xlikpukwa-mblnr
              i_tcode                   = 'VL09'
              i_vbtyp                   = xlikpukwa-vbtyp
            TABLES
              t_mesg                    = xmesg
            EXCEPTIONS
              error_reverse_goods_issue = 1
              OTHERS                    = 2.


вставляем код:
Code:
CALL FUNCTION 'WS_REVERSE_GOODS_ISSUE'
            EXPORTING
              i_vbeln                   = xlikpukwa-vbeln
              i_budat                   = xlikpukwa-stdat
              i_count                   = count
              i_mblnr                   = xlikpukwa-mblnr
              i_tcode                   = 'VL09'
              i_vbtyp                   = xlikpukwa-vbtyp
            TABLES
              t_mesg                    = xmesg
            EXCEPTIONS
              error_reverse_goods_issue = 1
              OTHERS                    = 2.
*END-ENHANCEMENT-SECTION.
*... Fehlermeldungen? - Dann Fehlertabelle (TMESG) aufbauen
          IF NOT sy-subrc IS INITIAL.
            MOVE charx TO storno_not_ok.
          ENDIF.
*... Alles gut gelaufen? - Dann sichern!
          IF sy-subrc IS INITIAL.
            COMMIT WORK AND WAIT.           "*--lфuft hier extern
*ENHANCEMENT-POINT rvv50l09_02 SPOTS es_rvv50l09.
*** start of usercode
***       ЗЮ NPZ   2006-11-08
***       перенос запаса (СвИсп) -> (Q ЗпсПроекта)
***       при сторно ДвлПоставки 542 вдв
            PERFORM z_cancel_411      USING xlikpukwa-stdat likp.
*** end of usercode


3. Дальше еще интереснее – нужно переписать интерфейс так, как удобно пользователю. Нашел вот такой BAPI – «BAPI_OUTB_DELIVERY_CREATENOREF» - он не подходит для создания двл. поставки.
Здесь учитываем, что главная изюминка транзакции ME2O – это опять же наш ФМ «GN_DELIVERY_CREATE» , все остальное это, грубо говоря, интерфейс. ФМ оставляем, интерфейс меняем. Теперь у нас выводится список запасов по критериям с селекционного экрана, количество выданного и требуемого запаса с нужной аналитикой, ставятся галочки напротив и создается поставка. Кода много, весь не показать, извините.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Доп. аналитика в давальческой схеме
СообщениеДобавлено: Вт, июл 21 2015, 12:41 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Вт, май 17 2005, 13:35
Сообщения: 4842
Откуда: Москва
Пол: Мужской
Идеи интересные, как я понял, при ОМ к поставки происходит перенос запаса из Q в O.
Так как тема
Цитата:
PERFORM z_bapi_mb1b_411q
не раскрыта, хотелось бы понять, как вы сделали это движение - одним документом материала или двумя?

_________________
Удача - результат нашего желания (© А. Нортон)


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Часовой пояс: UTC + 3 часа


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

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


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

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