Текущее время: Чт, июл 24 2025, 01:40

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


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


ВНИМАНИЕ!

Вопросы по исходящим поставкам - сюда



Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: Создание заказа на основе контракта BAPI_SALESORDER_CREATEFROMDAT2
СообщениеДобавлено: Пт, янв 18 2008, 14:23 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Пн, сен 03 2007, 13:20
Сообщения: 1658
Откуда: Пермь, Москва
Пол: Мужской
Добрый день кто-нибудь создавал позиции заказа на основе контракта BAPI_SALESORDER_CREATEFROMDAT2? Пробовал передавать номер контракта в VAL_CONTR номер позиции контракта в VAL_CON_I в результате заказ создаётся, но никаких данных из контракта не подтягивается. И в потоке документов заказа никакой ссылки на контракт соответственно тоже нет.

Как при помощи BAPI_SALESORDER_CREATEFROMDAT2 создавать заказ со ссылкой на контракт, чтобы подтягивались данные из контракта и обновлялся поток документов


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, янв 18 2008, 15:01 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, авг 24 2004, 07:19
Сообщения: 3952
Откуда: ECC 6.0, South Kazakhstan
Делал как-то давно, но сейчас сделать какой-то демо-пример уже времени нет (конец рабочего дня), так что просто выложу часть работающего у нас кода, думаю разберешься:
Code:
*&---------------------------------------------------------------------*
*&      Form  create_sd_order
*&---------------------------------------------------------------------*
form create_sd_order tables it_ccrqp structure zpm_ccrqp
                      using is_ccrqk like zpm_ccrqk
                   changing p_msg_type
                            vbeln like vbak-vbeln.


  data: header like bapisdhd1.

  data: it_item like bapisditm occurs 10 with header line,
        it_schedule like bapischdl occurs 10 with header line,
        it_partners like bapiparnr occurs 1 with header line.

  data: return like bapiret2 occurs 1 with header line.
  data: mt_saler(4).

  data: it_vbadr like sadrvb occurs 0 with header line,
        it_vbpa  like vbpavb occurs 0 with header line.

  data posnr(6) type n.
  data l_approve like it_ccrqp-approve.
  data l_ZPM_TVKBZ like ZPM_TVKBZ.

  define create_partner.
     clear it_partners.
     it_partners-partn_role = &1.
     it_partners-partn_numb = &2.
     append it_partners.
  end-of-definition.

* Create Header
  move: 'ZCCO'            to header-doc_type,
        is_ccrqk-vkorg    to header-sales_org,
        is_ccrqk-vtweg    to header-distr_chan,
        is_ccrqk-spart    to header-division,
        is_ccrqk-vkbur    to header-sales_off,
        is_ccrqk-wadat    to header-purch_date,
        is_ccrqk-wadat    to header-doc_date,
*        is_ccrqk-wadat_ist to header-req_date_h,
        is_ccrqk-vbeln_ag to header-ref_doc,
        space             to header-ass_number,
        is_ccrqk-wadat_ist to header-price_date,
        'EXW'             to header-incoterms1,
        'Отгрузка с нефтебазы' to header-incoterms2,
        '0001'            to header-pmnttrms.

  if not is_ccrqk-vbeln_ag is initial.
     move 'G' to header-refdoc_cat.
     select single kdgrp zterm inco1 inco2
            into (header-cust_group,
                  header-pmnttrms,
                  header-incoterms1,
                  header-incoterms2)
            from vbkd where vbeln = is_ccrqk-vbeln_ag
                        and posnr = '000000'.

*    Create Partner with AG reference
     call function 'SD_PARTNER_READ'
       exporting
         f_vbeln                = is_ccrqk-vbeln_ag
       tables
         i_xvbadr               = it_vbadr
         i_xvbpa                = it_vbpa.

     if not it_vbpa[] is initial.
        loop at it_vbpa.
           create_partner it_vbpa-parvw it_vbpa-kunnr.
        endloop.
     endif.

  else.
*    Create Partner Default
     concatenate 'MT' is_ccrqk-vkorg(2)
                 into mt_saler.

     create_partner 'AG' is_ccrqk-kunnr.
     create_partner 'RE' is_ccrqk-kunnr.
     create_partner 'RG' is_ccrqk-kunnr.
     create_partner 'WE' is_ccrqk-kunnr.

     create_partner 'ZG' mt_saler.
     create_partner 'ZP' mt_saler.
     create_partner 'ZR' mt_saler.
  endif.

  concatenate is_ccrqk-vkorg
              is_ccrqk-vkbur
              is_ccrqk-wadat into header-purch_no_c
              separated by '/'.

* Create Item & Schedule
  clear: it_item,
         it_schedule.

  posnr = 10.
  loop at it_ccrqp.
     clear: it_item,
            it_schedule.

     move: posnr          to it_item-itm_number,
           it_ccrqp-matnr to it_item-material,
           is_ccrqk-werks to it_item-plant,
           it_ccrqp-lgort to it_item-store_loc,
           is_ccrqk-wadat_ist to it_item-price_date.

     select single vstel into it_item-ship_point
                         from ZPM_TVKBZ
                        where vkorg = is_ccrqk-vkorg
                          and vtweg = is_ccrqk-vtweg
                          and spart = is_ccrqk-spart
                          and werks = is_ccrqk-werks
                          and lgort = it_ccrqp-lgort.

     if sy-subrc ne 0.
        move: '0001'         to it_item-ship_point.
    endif.

     if it_ccrqp-approve > '1.1'.
        it_item-overdlvtol = 100 / it_ccrqp-approve.
        l_approve = it_item-overdlvtol * it_ccrqp-approve.
        if l_approve < 100.
           it_item-overdlvtol = it_item-overdlvtol + '0.1'.
        endif.
     else.
        it_item-overdlvtol = 50.
     endif.

     if not is_ccrqk-vbeln_ag is initial.
         select * from vbap up to 1 rows where vbeln = is_ccrqk-vbeln_ag
                                           and matnr = it_ccrqp-matnr.

            move: vbap-vbeln to it_item-ref_doc,
                  vbap-posnr to it_item-ref_doc_it,
                  'G'        to it_item-ref_doc_ca.

            select single zterm inco1 inco2 into (it_item-pmnttrms,
                                                  it_item-incoterms1,
                                                  it_item-incoterms2)
                                  from vbkd
                                 where vbeln = is_ccrqk-vbeln_ag
                                   and posnr = vbap-posnr.
         endselect.
      else.
         move: 'EXW'                  to it_item-incoterms1,
               'Отгрузка с нефтебазы' to it_item-incoterms2,
               '0001'                 to it_item-pmnttrms.
      endif.

      move: posnr              to it_schedule-itm_number,
            it_ccrqp-approve   to it_schedule-req_qty,
            is_ccrqk-wadat_ist to it_schedule-req_date,
            is_ccrqk-wadat_ist to it_schedule-dlv_date.

      append: it_item,
              it_schedule.

      add 10 to posnr.

  endloop.

* Exec BAPI
  call function 'BAPIT_SALESORDER_CREATEFROMDAT2'
       exporting
           order_header_in = header
       importing
             salesdocument = vbeln
          tables
                    return = return
            order_items_in = it_item
            order_partners = it_partners
        order_schedules_in = it_schedule.


* EXEC Message_log
  if not return[] is initial.
     delete it_msg where kunnr = is_ccrqk-kunnr.
     loop at return.
        clear it_msg.
        move is_ccrqk-kunnr to it_msg-kunnr.
        move-corresponding return to it_msg.
        insert it_msg into table it_msg.
     endloop.
  endif.

* EXEC COMMIT
  if not vbeln is initial.
     call function 'BAPIT_TRANSACTION_COMMIT'.
  endif.

  p_msg_type = 'S'.

  read table return with key type = 'A'.
  if sy-subrc = 0.
     p_msg_type = return-type.
     exit.
  endif.

  read table return with key type = 'E'.
  if sy-subrc = 0.
     p_msg_type = return-type.
     exit.
  endif.

  read table return with key type = 'W'.
  if sy-subrc = 0.
     p_msg_type = return-type.
     exit.
  endif.

  read table return with key type = 'I'.
  if sy-subrc = 0.
     p_msg_type = return-type.
     exit.
  endif.

endform.                    " create_sd_order
Code:


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, янв 28 2008, 18:04 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Пн, сен 03 2007, 13:20
Сообщения: 1658
Откуда: Пермь, Москва
Пол: Мужской
[quote="OlegDm"]Делал как-то давно, но сейчас сделать какой-то демо-пример уже времени нет (конец рабочего дня), так что просто выложу часть работающего у нас кода, думаю разберешься:



Спасибо большое

Вышел сегодня из отпуска и получил работающий код :))

Разобрался, всё просто оказалось. Для того чтобы был поток документов на уровне заголовка следует передать параметры:
header-ref_doc, header-ass_number, 'G' to header-refdoc_cat

Для потока документов на уровне позиции: REF_DOC, REF_DOC_IT и
REF_DOC_CA


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

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


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

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


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

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