Автор Тема: Создать партию для входящей поставки  (Прочитано 22340 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн fil

  • Newbie
  • *
  • Сообщений: 21
  • Репутация: +2/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Может кто сталкивался с проблемой: нужно с помощью BAPI создать входящую поставку с партией (аналогично VL31n) или добавить партию в уже созданной поставке (соответственно VL32n).
Какой ФМ лучше использовать?
Сейчас использую BAPI_DELIVERYPROCESSING_EXEC, но даже если подаю на вход уже созданную партию, на выходе ее все равно нет.



Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 762
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Создать партию для входящей поставки
« Ответ #1 : Июль 19, 2010, 04:12:05 pm »
Приведи кусок кода где заполняешь параметры BAPI.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 762
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Создать партию для входящей поставки
« Ответ #2 : Июль 19, 2010, 04:17:58 pm »
Для изменения входящей поставки посмотри на: BAPI_INB_DELIVERY_CHANGE

Оффлайн fil

  • Newbie
  • *
  • Сообщений: 21
  • Репутация: +2/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Создать партию для входящей поставки
« Ответ #3 : Июль 19, 2010, 04:20:37 pm »
Цитата: Uukrul  link=topic=1228.msg7361#msg7361 date=1279545125
Приведи кусок кода где заполняешь параметры BAPI.

*создаем вх.поставку
  LOOP AT lt_selected_rows INTO ls_selected_row.
    READ TABLE gt_pos_fo INTO lwa_pos INDEX ls_selected_row-row_id.
    IF sy-subrc = 0.
      CLEAR lt_request.
      lt_request-document_type      = 'B'.
      lt_request-document_numb      = gs_head_fo-ebeln.
      lt_request-document_item      = lwa_pos-ebelp.
      lt_request-material           = lwa_pos-matnr.
      lt_request-plant              = lwa_pos-werks.
      lt_request-stge_loc           = lwa_pos-lgort.
      lt_request-quantity_base__uom = lwa_pos-menge_fo_v.
      lt_request-delivery_date      = lwa_pos-bbein.
      lt_request-stge_loc           = lwa_pos-lgort.
      lt_request-transp_id          = gs_head_fo-traid.
      lt_request-trans_cat          = gs_head_fo-traty.
      lt_request-billoflading       = gs_head_fo-bolnr.
      lt_request-batch             = l_batch.
      APPEND lt_request.
    ENDIF.
  ENDLOOP.

   CALL FUNCTION 'BAPI_DELIVERYPROCESSING_EXEC'
* EXPORTING
*   DELIVERY_EXTEND         =
*   TECHN_CONTROL           =
    TABLES
       request                 = lt_request
*   PARTNER                 =
*   PARTNER_ADDR            =
*   TEXT_HEADER             =
*   TEXT_LINES              =
       createditems            = lt_createditems
       return                  = gt_return
*   EXTENSION1              =
*   EXTENSION2              =
*   CO_CHAR_VALUES          =
*   BATCH_ATTRIBUTES        =
*   BATCH_VALUES_CHAR       =
*   BATCH_VALUES_CURR       =
*   BATCH_VALUES_NUM        =
*   TOKENREFERENCE          =
*   EXTENSIONIN             =
*   ITEM_SERIAL_NO          =
            .
« Последнее редактирование: Июль 19, 2010, 04:25:01 pm от fil »

Оффлайн fil

  • Newbie
  • *
  • Сообщений: 21
  • Репутация: +2/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Создать партию для входящей поставки
« Ответ #4 : Июль 19, 2010, 04:24:08 pm »
Цитата: Uukrul  link=topic=1228.msg7362#msg7362 date=1279545478
Для изменения входящей поставки посмотри на: BAPI_INB_DELIVERY_CHANGE

Если я правильно понимаю, то с помощью этого BAPI можно менять количество, объем сроки и удалять позицию.  Изменять партию в нем не получается

Оффлайн Паганель

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
Re: Создать партию для входящей поставки
« Ответ #5 : Июль 19, 2010, 08:27:13 pm »
You are not allowed to view links. Register or Login
Если я правильно понимаю, то с помощью этого BAPI можно менять количество, объем сроки и удалять позицию.  Изменять партию в нем не получается
Ссори, не пробывал, но там есть структура ITEM_DATA типа BAPIIBDLVITEMCHG (Change Item Data in Inbound Delivery) там есть поле BATCH.

P.S. точно, нельзя менять ITEM_CONTROL   (LIKE   BAPIIBDLVITEMCTRLCHG) менять можно только указаные Вами поля.
« Последнее редактирование: Июль 19, 2010, 08:29:11 pm от Паганель »
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

Оффлайн Паганель

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
Re: Создать партию для входящей поставки
« Ответ #6 : Июль 19, 2010, 09:21:34 pm »
Готового решения не дам, не копал в  этом направлении, но кажется мне, что надо делать чуть не так, посмотрел бапишку, есть там несколько структур, которые участвуют в классификации и выборе партии (уже существующей).
Итак, я сделал бы приблизительно так:
- настроил стратегию поиска партии (некоторые моменты есть на форуме, спрашивайте если что, для начала You are not allowed to view links. Register or Login ответ madcat)
- в заказе не указывал бы партии, а настроил выбор партии в поставке
- если надо создавать новую партию (как я понял Вам так надо) то создавал бы с параметрами по которым именно данная партия выбиралась бы при изменении поставки
- при необходимости попытался бы повлиять на выбор партии (екзиты, екзиты и Ваш BAPI, скажем в бапи бы через паять передавал бы какой то код, а в екзите по этому коду производил выбор .....
- посмотрел бы подробнее в Вашей BAPI параметры
 RETURN              LIKE      BAPIRET2              
 EXTENSION1          LIKE      BAPIEXTC              
 EXTENSION2          LIKE      BAPIEXT              
 CO_CHAR_VALUES      LIKE      BAPI_PAOBJNR_FIELD_V  
 BATCH_ATTRIBUTES    LIKE      BAPI3060_ALLOCATION  
 BATCH_VALUES_CHAR   LIKE      BAPI3060_VALUATION_C  
 BATCH_VALUES_CURR   LIKE      BAPI3060_VALUATION_C  
которые судя по описанию влияют на классификацию и выбор партий

P.S. А как Вы создаете партию? Есть пару неприятных моментов You are not allowed to view links. Register or Login, особенно при создании партии в юзер екзитах, у Вас конечно не так, Вы в своей программе создаете партию и меняете поставку, но я бы просмотрел код, мало ли ;-) .....

Не совсем то, но идеи может найдете
You are not allowed to view links. Register or Login,партий.html
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 762
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Создать партию для входящей поставки
« Ответ #7 : Июль 20, 2010, 02:15:01 pm »
Ну есть еще такая функция WS_DELIVERY_UPDATE, она уж очень низкоуровневая, так как фактически делает уже сам апдейт и там таки передаются все данные поставки для обработки. Потом есть еще такой ФМ как RV_DELIVERIES_SAVE, тоже довольно низкоуровневый... потом еще так по ходу есть SHP_BAPI_DELIVERY_CHANGE_SIMU или SHP_BAPI_DELIVERY_CHANGE - Я бы с него начал смотреть, похоже оно вызывается при вызовах BAPI.
« Последнее редактирование: Июль 20, 2010, 02:20:06 pm от Uukrul »

Оффлайн fil

  • Newbie
  • *
  • Сообщений: 21
  • Репутация: +2/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Создать партию для входящей поставки
« Ответ #8 : Июль 22, 2010, 03:56:31 pm »
спасибо за ответы
буду пробовать

Оффлайн fil

  • Newbie
  • *
  • Сообщений: 21
  • Репутация: +2/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Создать партию для входящей поставки
« Ответ #9 : Июль 22, 2010, 03:58:40 pm »
You are not allowed to view links. Register or Login
Сейчас использую BAPI_DELIVERYPROCESSING_EXEC, но даже если подаю на вход уже созданную партию, на выходе ее все равно нет.

проблема решена с помощью EXIT_SAPLV50R_CREA_003

Оффлайн Паганель

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
Re: Создать партию для входящей поставки
« Ответ #10 : Июль 22, 2010, 05:31:30 pm »
You are not allowed to view links. Register or Login
проблема решена с помощью EXIT_SAPLV50R_CREA_003

можно подробнее?
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 762
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Создать партию для входящей поставки
« Ответ #11 : Июль 22, 2010, 10:40:48 pm »
You are not allowed to view links. Register or Login
можно подробнее?
Ну что там подробнее, я так понимаю в этом экзите заполняют поле партии нужным значением и всех делов...

Оффлайн fil

  • Newbie
  • *
  • Сообщений: 21
  • Репутация: +2/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Создать партию для входящей поставки
« Ответ #12 : Июль 26, 2010, 09:20:14 am »
Цитата: Uukrul  link=topic=1228.msg7410#msg7410 date=1279827648
Ну что там подробнее, я так понимаю в этом экзите заполняют поле партии нужным значением и всех делов...

да, верно

Оффлайн fil

  • Newbie
  • *
  • Сообщений: 21
  • Репутация: +2/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Создать партию для входящей поставки
« Ответ #13 : Сентябрь 03, 2010, 01:52:22 pm »
в итоге использован другой ФМ, привожу код, вдруг кому-нибудь пригодится:
Цитировать
*создаем вх.поставку
    LOOP AT gt_pos_fo INTO lwa_pos .
         CLEAR wa_komdlgn.
**** Loading the lt_komdlgn
        wa_komdlgn-vgbel = lwa_pos-ebeln.
        wa_komdlgn-bldat = lwa_pos-bldat.
        wa_komdlgn-vgtyp = '7'.
        wa_komdlgn-vgpos = lwa_pos-ebelp.
        wa_komdlgn-matnr = lwa_pos-matnr.
        wa_komdlgn-ematn = lwa_pos-matnr.
        wa_komdlgn-lifnr = lwa_pos-lifnr.
        wa_komdlgn-werks = lwa_pos-werks.
        wa_komdlgn-meins = lwa_pos-vrkme.
        wa_komdlgn-vrkme = lwa_pos-vrkme.
        wa_komdlgn-lfimg = lwa_pos-menge.
        wa_komdlgn-lfdat = lwa_pos-bbein.
        wa_komdlgn-lgort = lwa_pos-lgort.
         wa_komdlgn-bolnr = lwa_pos-bolnr.
        wa_komdlgn-xabln = lwa_pos-xabln.
        wa_komdlgn-traty = lwa_pos-traty.
        wa_komdlgn-traid = lwa_pos-traid.
**создаем партии, если нужно
        IF gs_head_fo-creat_part = 'X'.
          PERFORM batch_create  USING lwa_pos
                                 CHANGING wa_komdlgn-charg.
        ENDIF.
        APPEND wa_komdlgn TO lt_komdlgn_num.
    ENDLOOP.

** Code from IDOC_INPUT_DESADV1
*** Not Available in 3.1
      CALL FUNCTION 'ME_CONFIRMATION_VIA_EDI'
        TABLES
          t_kom  = lt_komdlgn
          errors = lt_prop
        EXCEPTIONS
          OTHERS = 1.
      IF sy-subrc NE 0.
*        WRITE / 'Error Coccured in ME_CONFIRMATION_VIA_EDI'.
      ENDIF.
      LOOP AT lt_komdlgn INTO wa_komdlgn.
* set default parameter
        wa_komdlgn-vgtyp = 'V'.
        wa_komdlgn-kzazu = 'X'.
        IF wa_komdlgn-lfart IS INITIAL.
          wa_komdlgn-lfart = 'EL'.
        ENDIF.
        MODIFY lt_komdlgn FROM wa_komdlgn TRANSPORTING vgtyp kzazu lfart.
      ENDLOOP.
***** Create
      DATA: nrnr LIKE inri-nrrangenr.
      TABLES: tvsa.
* Sammelgangsnummer vergeben
      CLEAR ls_vbsk.
      ls_vbsk-mandt = sy-mandt.
      ls_vbsk-ernam = sy-uname.
      ls_vbsk-erdat = sy-datum.
      ls_vbsk-uzeit = sy-uzeit.
      ls_vbsk-smart = 'L'.
      SELECT SINGLE * FROM tvsa WHERE smart = ls_vbsk-smart.
      IF sy-subrc = 0.
        nrnr = tvsa-numki.
        CALL FUNCTION 'NUMBER_GET_NEXT'
          EXPORTING
            nr_range_nr = nrnr
            object      = 'RV_SAMMG'
          IMPORTING
            number      = ls_vbsk-sammg
          EXCEPTIONS
            OTHERS      = 1.
      ENDIF.

***** Call Core Function GN_DELIVERY_CREATE.
      REFRESH: lt_vbfs,
               lt_vbls,
               lt_lips.
      CALL FUNCTION 'GN_DELIVERY_CREATE'
        EXPORTING
          vbsk_i         = ls_vbsk
        IMPORTING
          vbsk_e         = ls_vbsk
        TABLES
          xkomdlgn       = lt_komdlgn
          xvbfs          = lt_vbfs
          xvbls          = lt_vbls
          xxlips         = lt_lips
          it_gn_partner    = lt_partner
        EXCEPTIONS
          OTHERS         = 1.


Оффлайн Паганель

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
Re: Создать партию для входящей поставки
« Ответ #14 : Ноябрь 16, 2010, 01:36:35 pm »
P.S. Возможно у них не было настроенно создание партий во входящих поставках
spro- Оперативная логистика - Отгрузка - Поставки - Определение управления созданием партий во входящей поставке
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

Оффлайн rstiv

  • Newbie
  • *
  • Сообщений: 3
  • Репутация: +0/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Создать партию для входящей поставки
« Ответ #15 : Декабрь 15, 2011, 03:01:43 pm »
Здравствуйте! Создаю поставку как в приведенном примере, заполняю поле tddat,  поставка создается, но поле в заголовке остается пустым. Поковырял код фм и не нашел вообще чтобы это поле где то использовалось. Что за дела ума не приложу, мож нота есть какая?

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 762
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Создать партию для входящей поставки
« Ответ #16 : Декабрь 15, 2011, 09:41:48 pm »
You are not allowed to view links. Register or Login
Поковырял код фм и не нашел вообще чтобы это поле где то использовалось. Что за дела ума не приложу, мож нота есть какая?
Я так понял вы заполняете структуру таблицы KOMDLGN-TDDAT, ну так оно заполняется вот к примеру имеет следующие модули:

FV50C301 - строка 56

Потом есть такое

LV50SSVB - строка 21, там если типа эти поля пустые то сбрасывается какой-то флаг cs_v50agl-dates_times_from_bapi для BAPI

Так что оно копируется в нужные поля, только надо понять когда это все вызывается.

PS: Кстати может надо задавать все три даты типа: ПланировТрансп, Погрузка, Плановый ОМ чтобы оно сработало?