Текущее время: Ср, июл 23 2025, 13:38

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


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

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


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

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