Текущее время: Вт, июн 24 2025, 14:44

Часовой пояс: 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
Сообщения: 4871
Откуда: Москва
Пол: Мужской
Идеи интересные, как я понял, при ОМ к поставки происходит перенос запаса из Q в O.
Так как тема
Цитата:
PERFORM z_bapi_mb1b_411q
не раскрыта, хотелось бы понять, как вы сделали это движение - одним документом материала или двумя?

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


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

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


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

Сейчас этот форум просматривают: Ahrefs [Bot]


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

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