Текущее время: Ср, июл 30 2025, 17:35

Часовой пояс: 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 часа


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

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


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

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