Текущее время: Чт, июл 31 2025, 13:15

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


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


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 13 ] 
Автор Сообщение
 Заголовок сообщения: BAPI_INCOMINGINVOICE_PARK
СообщениеДобавлено: Ср, янв 28 2009, 23:32 
Начинающий
Начинающий

Зарегистрирован:
Чт, июн 12 2008, 20:09
Сообщения: 17
Подскажите, плиз, как можно добиться того, чтобы в созданном с помощью BAPI_INCOMINGINVOICE_PARK счет-фактуре стоял тип позициии "Запланированные затраты на доставку", а не " Позиции материалов/услуг"
У меня пока не получилось
Буду очень благодарен за подсказку и особенно за пример
Заранее спасибо


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BAPI_INCOMINGINVOICE_PARK
СообщениеДобавлено: Чт, янв 29 2009, 08:16 
Директор
Директор

Зарегистрирован:
Пт, окт 07 2005, 09:10
Сообщения: 752
Откуда: 4.6C
Пол: Мужской
Документацию к ФМ смотрели:
Example: Incoming invoice with planned delivery costs?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BAPI_INCOMINGINVOICE_PARK
СообщениеДобавлено: Чт, янв 29 2009, 09:55 
Начинающий
Начинающий

Зарегистрирован:
Чт, июн 12 2008, 20:09
Сообщения: 17
Документацию смотрел, не получилось как там написано, возможно что-то не понял.
Прошу если у кого-то получалось, выложить пример, тк документацию и интернет уже смотрел, хотя может что-то и упустил.
Получается пустой документ вообще без строк и тип все равно не "Дополнительные расходы"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BAPI_INCOMINGINVOICE_PARK
СообщениеДобавлено: Чт, янв 29 2009, 14:30 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
Я передаю в этот BAPI только позиции затрат на транспортировку.
В позициях (помимо обычных данных по кол-ву и т.п.) заполняю cond_type и freight_ven. Получаются "Запланированные затраты на доставку". Если надо - могу вариант кода скинуть.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BAPI_INCOMINGINVOICE_PARK
СообщениеДобавлено: Пт, янв 30 2009, 01:22 
Начинающий
Начинающий

Зарегистрирован:
Чт, июн 12 2008, 20:09
Сообщения: 17
Получилось! Всем большое спасибо за ответы.
Дело было в правильном указании поля COND_TYPE, я просто не понимал, откуда это можно взять.
А взял я в итоге из ekbz.
Вываливаю свой код, сорри если где-то не очень красивый, но работает ))
Вдруг кому-то поможет

Code:
FORM run_transaction_miro3.

  DATA: lwa_header          TYPE BAPI_INCINV_CREATE_HEADER,
        lh_invnumb          LIKE BAPI_INCINV_FLD-INV_DOC_NO,
        lh_gjahr            LIKE BAPI_INCINV_FLD-FISC_YEAR,
        lwa_item            TYPE BAPI_INCINV_CREATE_ITEM,
        lit_items           TYPE TABLE OF BAPI_INCINV_CREATE_ITEM,
        RETURN              TYPE TABLE OF  BAPIRET2 WITH HEADER LINE,
        addressdata         TYPE BAPI_INCINV_CREATE_ADDRESSDATA,
        lit_lips            TYPE TABLE OF lips,
        lwa_lips            TYPE lips,
        lit_likp            TYPE TABLE OF likp,
        lwa_likp            TYPE likp,
        lh_ebelp            LIKE ekpo-ebelp,
        lh_netpr            LIKE ekpo-netpr,
        lwa_ekpo            TYPE ekpo,
        lwa_ekko            TYPE ekko,
        lwa_ek08bn          TYPE ek08bn,
        lit_ek08bn          TYPE TABLE OF ek08bn,
        lwa_ziic_created    TYPE zsd_ziic_created,
        lh_text             TYPE STRING,
        opt                 LIKE ctu_params,
        lh_wrbtr            LIKE rseg-wrbtr,
        lh_has_created(1)   TYPE C,
        lh_error(1)         TYPE C.

  SELECT *
    FROM lips
    INTO CORRESPONDING FIELDS OF TABLE lit_lips
    WHERE vbeln IN S_VBELN
    ORDER BY vgbel vgpos.

  IF sy-subrc <> 0.
    MESSAGE 'Поставка не найдена, проверьте ввод' TYPE 'I'.
    RETURN.
  ENDIF.

  DELETE ADJACENT DUPLICATES FROM lit_lips COMPARING vgbel vgpos.

  READ TABLE lit_lips INDEX 1 INTO lwa_lips.

  lwa_header-comp_code = '2000'.
  lwa_header-invoice_ind = 'X'.
  lwa_header-doc_type = 'RE'.
  lwa_header-doc_date = p_bldat.
  lwa_header-pstng_date = p_budat.
  lwa_header-bline_date = p_bdate.
  lwa_header-diff_inv   = p_lifnr.

  lwa_header-calc_tax_ind = 'X'.
  IF P_CURR IS NOT INITIAL.
    lwa_header-currency = P_CURR.
  ELSE.
    lwa_header-currency = 'RUB'.
  ENDIF.
  lwa_header-currency_iso = lwa_header-currency.

  SELECT SINGLE zaccount_num
    INTO lwa_header-ref_doc_no
    FROM likp
    WHERE vbeln = lwa_lips-vbeln.

  CLEAR lh_has_created.
  LOOP AT lit_lips INTO lwa_lips.

    lh_ebelp = lwa_lips-vgpos.

    SELECT SINGLE *
      FROM ekpo
      INTO CORRESPONDING FIELDS OF lwa_ekpo
      WHERE ebeln = lwa_lips-vgbel
        AND ebelp = lh_ebelp.

    SELECT SINGLE *
      FROM ekko
      INTO CORRESPONDING FIELDS OF lwa_ekko
      WHERE ebeln = lwa_ekpo-ebeln.

    CHECK sy-subrc = 0.

    CLEAR lwa_item.
    lwa_item-invoice_doc_item = sy-tabix.
    lwa_item-po_number        = lwa_ekpo-ebeln.
    lwa_item-po_item          = lwa_ekpo-ebelp.
    lwa_item-po_unit          = lwa_ekpo-meins.
    lwa_item-po_unit_iso      = lwa_ekpo-meins.
    lwa_item-tax_code         = P_TXCODE.

    " Просто позиции - тянем цены из заказов
    IF p_wxbkn = '1'.

      PERFORM convert_summ USING lwa_header-pstng_date
                                 lwa_ekko-waers
                                 lwa_header-currency
                                 lwa_ekpo-netwr
                                 'M'
                        CHANGING lh_netpr.
      lwa_item-item_amount      = lh_netpr.
      lwa_item-quantity         = lwa_ekpo-menge.
      lwa_header-gross_amount = lwa_header-gross_amount + lwa_item-item_amount.

    " Доп. затраты
    ELSEIF p_wxbkn = '2'.

      PERFORM get_cond_type USING lwa_ekpo-ebeln lwa_ekpo-ebelp p_lifnr
                         CHANGING lwa_item-cond_type.
      lwa_item-FREIGHT_VEN = p_lifnr.

      lh_ebelp = lwa_lips-vgpos.
      REFRESH lit_ek08bn[].
      CALL FUNCTION 'ME_READ_COND_INVOICE'
        EXPORTING
          i_ebeln       = lwa_lips-vgbel
          i_ebelp       = lh_ebelp
          i_lifnr       = p_lifnr
        TABLES
          XEK08BN       = lit_ek08bn
        EXCEPTIONS
          error_message = 02.

      IF lit_ek08bn[] IS NOT INITIAL.
        READ TABLE lit_ek08bn INDEX 1 INTO lwa_ek08bn.

        PERFORM convert_summ USING lwa_header-pstng_date
                                   'RUB'
                                   lwa_header-currency
                                   lwa_ek08bn-wewrt
                                   'M'
                        CHANGING lh_netpr.

        lwa_item-item_amount = lh_netpr.
        lwa_item-quantity = lwa_ek08bn-wemng.
      ENDIF.
    ENDIF.

    IF ( p_wxbkn = '2' AND ( lwa_item-item_amount IS NOT INITIAL OR lwa_item-quantity IS NOT INITIAL )
                       AND lwa_item-cond_type IS NOT INITIAL )
      OR p_wxbkn <> '2'.

      APPEND lwa_item TO lit_items.
      lh_has_created = 'X'.
    ENDIF.
  ENDLOOP.

  IF lh_has_created IS INITIAL AND p_wxbkn = '2'.
    MESSAGE 'Строки не выбраны, проверьте наличие прихода и введенных доп. затрат в документе фрахта' TYPE 'I'.
    RETURN.
  ENDIF.

"  CALL FUNCTION 'BAPI_INCOMINGINVOICE_CREATE' " Эта BAPI сразу проводит
  CALL FUNCTION 'BAPI_INCOMINGINVOICE_PARK'    " Эта BAPI предварительно сохраняет
    EXPORTING
      HEADERDATA = lwa_header
      ADDRESSDATA = addressdata
    IMPORTING
      INVOICEDOCNUMBER = lh_invnumb
      FISCALYEAR       = lh_gjahr
    TABLES
      ITEMDATA = lit_items
      RETURN   = RETURN.

  READ TABLE RETURN WITH KEY TYPE = 'E'.
  IF sy-subrc = 0.
    lh_error = 'X'.
  ENDIF.

  READ TABLE RETURN WITH KEY TYPE = 'A'.
  IF sy-subrc = 0.
    lh_error = 'X'.
  ENDIF.

  IF lh_error = 'X'.

    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.

    write: / 'Произошла ошибка:'.
    LOOP AT RETURN WHERE TYPE = 'A' OR TYPE = 'E'.
      write: / RETURN-MESSAGE.
    ENDLOOP.

  ELSE.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        WAIT = 'X'.
    CALL FUNCTION 'DEQUEUE_ALL'.
ENDFORM.

* Возвращает тип позиции для строки заказа на поставку на доп. затраты
FORM get_cond_type USING pi_ebeln         LIKE ekko-ebeln
                         pi_ebelp         LIKE ekpo-ebelp
                         pi_lifnr         LIKE ekko-lifnr
                   CHANGING pc_cond_type  TYPE kschl.

  DATA: lit_ekbz   TYPE TABLE OF ekbz,
        lwa_ekbz   TYPE ekbz.

  SELECT *
    FROM ekbz
    INTO CORRESPONDING FIELDS OF TABLE lit_ekbz
    UP TO 1 ROWS
    WHERE ebeln = pi_ebeln
      AND ebelp = pi_ebelp
      AND lifnr = pi_lifnr
      AND vgabe = '1'        " Приход
    ORDER BY belnr DESCENDING.

  READ TABLE lit_ekbz INDEX 1 INTO lwa_ekbz.
  pc_cond_type = lwa_ekbz-kschl.
ENDFORM.        "  get_cond_type   


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BAPI_INCOMINGINVOICE_PARK. Фактурирование запланированных затрат на доставку.
СообщениеДобавлено: Ср, авг 26 2009, 14:39 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, авг 28 2006, 11:24
Сообщения: 292
Пол: Мужской
Добрый день.
Пытаюсь отфактурировать запланированные затраты на доставку с помощью фм BAPI_INCOMINGINVOICE_PARK.
Написал код, аналогичный приведенному выше. полученная программа нормально создает фактуру для позиций заказа, имеющих ровно одно поступление материала.
Если же позиция поставлена несколькими ПМ, фм выдает ошибки: "Эта функция еще не спрограммирована.", "Обработка условий у затрат на доставку невозможна".
При этом вручную, через MIRO, такая фактура успешно создается.

Как побороть такую проблему, куда копать?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BAPI_INCOMINGINVOICE_PARK
СообщениеДобавлено: Ср, авг 26 2009, 15:14 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
В позициях заполните поля REF_DOC, REF_DOC_YEAR, REF_DOC_IT данными соответствующих документов материала.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BAPI_INCOMINGINVOICE_PARK
СообщениеДобавлено: Ср, авг 26 2009, 15:19 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, авг 28 2006, 11:24
Сообщения: 292
Пол: Мужской
John Doe написал:
В позициях заполните поля REF_DOC, REF_DOC_YEAR, REF_DOC_IT данными соответствующих документов материала.

Эти поля заполнены.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BAPI_INCOMINGINVOICE_PARK
СообщениеДобавлено: Ср, авг 26 2009, 16:11 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
Да, забыл. Еще вместо COND_TYPE нужно использовать связку COND_ST_NO и COND_COUNT.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BAPI_INCOMINGINVOICE_PARK
СообщениеДобавлено: Ср, авг 26 2009, 18:57 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, авг 28 2006, 11:24
Сообщения: 292
Пол: Мужской
Цитата:
Да, забыл. Еще вместо COND_TYPE нужно использовать связку COND_ST_NO и COND_COUNT.


Именно так и сделано.
Самое странное, что проблема появляется только по позиции несколько ПМ.
Насколько я понял из кода, ошибка генерится из-за наличия двух разных видов оценок.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BAPI_INCOMINGINVOICE_PARK
СообщениеДобавлено: Пт, авг 28 2009, 16:21 
Младший специалист
Младший специалист

Зарегистрирован:
Вт, окт 28 2008, 10:39
Сообщения: 86
тр.MIRO - RM08M-XWARE_BNK - Индикатор: позици товаров/расходы на доставку/все
по умолчанию стави 1, анужно 3

может кто знает какой параметр в BAPI_INCOMINGINVOICE_PARK отвечает за ето поле


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BAPI_INCOMINGINVOICE_PARK
СообщениеДобавлено: Пт, сен 04 2009, 17:03 
Младший специалист
Младший специалист

Зарегистрирован:
Вт, окт 28 2008, 10:39
Сообщения: 86
Ну параметра так и не удалось найти в BAPI-шке, ,
зато в MIR4 нашол где его можно редактировать


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BAPI_INCOMINGINVOICE_PARK
СообщениеДобавлено: Ср, мар 03 2010, 09:58 
Специалист
Специалист

Зарегистрирован:
Ср, май 30 2007, 11:07
Сообщения: 135
тр.MIR7 - RM08M-REFERENZBELEGTYP- 1 Заказ на поставку/соглашение о поставках

по умолчанию ставит 1, а нужно 3 Транспортная накладная


может кто знает какой параметр в BAPI_INCOMINGINVOICE_PARK отвечает за это поле


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

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


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

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


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

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