Текущее время: Пн, авг 04 2025, 19:25

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 20 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: BAPI_SALESORDER_CREATEFROMDAT2
СообщениеДобавлено: Ср, янв 09 2008, 11:36 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пн, сен 17 2007, 10:48
Сообщения: 190
Откуда: Нальчик, РФ
Пол: Мужской
Добрый день!

Смотрел пример BAPI_SALESORDER_CREATEFROMDAT1 - для чего заполняем SCHEDULES DATA (ORDER_SCHEDULES_IN, ORDER_SCHEDULES_INX )? Данные необязательные, заказ создается без их указания. В документации к ФМ BAPI_SALESERDER.. кроме никакого описания, кроме "This parameter contains schedule line data" нет.

Code:
см.ниже


Спасибо.

_________________
С уважением, Сергей С.


Последний раз редактировалось east Пт, фев 08 2008, 17:24, всего редактировалось 3 раз(а).

Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, янв 09 2008, 12:50 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, июн 05 2006, 13:33
Сообщения: 805
Пол: Мужской
Это информация о партиях поставки.


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

Зарегистрирован:
Вт, авг 24 2004, 07:19
Сообщения: 3952
Откуда: ECC 6.0, South Kazakhstan
например, требуемую дату поставки можно указать только в SCHEDULES


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, янв 09 2008, 14:30 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пн, сен 17 2007, 10:48
Сообщения: 190
Откуда: Нальчик, РФ
Пол: Мужской
Ясно, дальше буду ориентироваться по полям) Спасибо!

_________________
С уважением, Сергей С.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, фев 08 2008, 17:14 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пн, сен 17 2007, 10:48
Сообщения: 190
Откуда: Нальчик, РФ
Пол: Мужской
Всем доброго времени суток!

Создается счет, в счете не проставляется количество.:? Количество проставляю в item-TARGET_QTY.
Подскажите что не так?

И еще, если кто-нибудь сталкивался, второй менее значимый для меня вопрос: bapi возвращает table return. В одном из полей написано: Документ еще не полон... и т.д. Как уйти появления этой строки? Чем дополнить документ, если я определил весь минимально необходимый набор полей, указанный в документации?
Спасибо.

Создавал так(исправлено):
Code:
FUNCTION Z_SALESORDER_CREATEFROMDAT2.
*-- Data declarations.
*DATA: i_vbeln LIKE likp-vbeln.
DATA: i_ship  type kunnr.
DATA: wait    type BAPITA-WAIT.
DATA: header  LIKE BAPISDHD1.
DATA: headerx LIKE BAPISDHD1X.
DATA: partner LIKE BAPIPARNR OCCURS 0 WITH HEADER LINE.
*----
data: ITEM like BAPISDITM OCCURS 0 WITH HEADER LINE.
data: ITEMX like BAPISDITMX OCCURS 0 WITH HEADER LINE.
data: ORDER_SCHEDULES_IN like BAPISCHDL OCCURS 0 WITH HEADER LINE.
data: ORDER_SCHEDULES_INX like BAPISCHDLX OCCURS 0 WITH HEADER LINE.
*----
data: SENDER LIKE  BAPI_SENDER.
*---
data:wa_makt type makt.

*--header data.
header-doc_type   = 'TA'.   " that is standart sale order (Deutsch)
header-sales_org  = '1000'.
header-distr_chan = '01'.
header-division   = '01'.

*-- headerx data.
headerx-updateflag = 'I'.   " this flag mean that we create a new one sale order
headerx-doc_type   = 'X'.
headerx-sales_org  = 'X'.
headerx-distr_chan = 'X'.
headerx-division   = 'X'.

*-- definition of ship-to party data of partners data.
  call function 'CONVERSION_EXIT_ALPHA_INPUT'
    exporting
      input  = i_sold
    importing
      output = i_sold.

if i_ship is initial.
   move i_sold to i_ship.
endif.

*-- definition of item data.
loop at positions.
  clear item.
    itemx-updateflag ='I'.
    item-itm_number = sy-tabix * 10.
    itemx-itm_number = item-itm_number.
    item-material = positions-material.
    itemx-material = 'X'.

  call function 'CONVERSION_EXIT_ALPHA_INPUT'
    exporting
      input  = item-material
    importing
      output = item-material.
    select single * from makt into wa_makt where matnr eq item-material.
  if sy-subrc eq 0.

    item-target_qty = positions-target_qty.
    itemx-target_qty = 'X'.
*    item-target_qu = positions-target_qu.
*    itemx-target_qu = 'X'.
    item-short_text = wa_makt-maktx.
    itemx-short_text = 'X'.
    item-purch_date = sy-datum.
    itemx-purch_date = 'X'.
    order_schedules_in-itm_number = item-itm_number.
    order_schedules_inx-itm_number = item-itm_number.
    order_schedules_in-req_qty = item-target_qty.
    order_schedules_inx-req_qty = 'X'.
  append item.
  append itemx.
  append order_schedules_in.
  append order_schedules_inx.
  endif.
endloop.

*-- definition of partners data.
partner-partn_role = 'AG'. " sold-to party role (Deutsch)
partner-partn_numb = i_sold.
APPEND partner.
partner-partn_role = 'WE'. " ship-to party role (Deutsch)
partner-partn_numb = i_ship.
APPEND partner.
*-- sender system difinition.
SENDER-LOG_SYSTEM = '*'.

*-- call BAPI
call FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
    EXPORTING
     ORDER_HEADER_IN = HEADER "LIKE  BAPISDHD1 STRUCTURE  BAPISDHD1
     ORDER_HEADER_INX = HEADERX "LIKE  BAPISDHD1X STRUCTURE  BAPISDHD1X  OPTIONAL
     SENDER = SENDER
  IMPORTING
     SALESDOCUMENT  = E_VBELN "LIKE  BAPIVBELN-VBELN
  TABLES
      RETURN = return"STRUCTURE  BAPIRET2 OPTIONAL
      ORDER_ITEMS_IN = item "STRUCTURE  BAPISDITM OPTIONAL
      ORDER_ITEMS_INX = itemx "STRUCTURE  BAPISDITMX OPTIONAL
      ORDER_PARTNERS  = partner "STRUCTURE  BAPIPARNR
      ORDER_SCHEDULES_IN  = ORDER_SCHEDULES_IN  "STRUCTURE  BAPISCHDL OPTIONAL
      ORDER_SCHEDULES_INX = ORDER_SCHEDULES_INX "STRUCTURE  BAPISCHDLX OPTIONAL
.

commit work.

ENDFUNCTION.

_________________
С уважением, Сергей С.


Последний раз редактировалось east Пн, фев 11 2008, 09:45, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, фев 08 2008, 17:46 
Начинающий
Начинающий

Зарегистрирован:
Чт, ноя 08 2007, 10:26
Сообщения: 14
Если тупо сравнить с тем, что google дает?

http://www.google.ru/search?complete=1& ... target_qty


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, фев 11 2008, 09:28 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пн, сен 17 2007, 10:48
Сообщения: 190
Откуда: Нальчик, РФ
Пол: Мужской
:) Спасибо, уже разобрался. Так и делал :lol: Код подправил.

_________________
С уважением, Сергей С.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: BAPI_SALESORDER_CHANGE
СообщениеДобавлено: Вт, фев 19 2008, 11:36 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пн, сен 17 2007, 10:48
Сообщения: 190
Откуда: Нальчик, РФ
Пол: Мужской
Добрый день!
Для изменения количества в заказе на поставку попытался использовать BAPI_SALESORDER_CHANGE.
Исправлен.
Code:
FUNCTION Z_SALESORDER_CHANGE.
*"----------------------------------------------------------------------
*"*"Локальный интерфейс:
*"  IMPORTING
*"     VALUE(I_VBELN) LIKE  BAPIVBELN-VBELN OPTIONAL
*"     VALUE(I_UPDATEFLAG) TYPE  UPDKZ_D OPTIONAL
*"  TABLES
*"      POSITIONS STRUCTURE  ZSALESORDER_CREATE_POS
*"      RETURN STRUCTURE  BAPIRET2
*"----------------------------------------------------------------------
DATA: header  like BAPISDH1X.
DATA: item    like BAPISDITM  OCCURS 0 WITH HEADER LINE.
DATA: itemx   like BAPISDITMX OCCURS 0 WITH HEADER LINE.
DATA: schdl   like BAPISCHDL  OCCURS 0 WITH HEADER LINE.
DATA: schdlx  like BAPISCHDLX OCCURS 0 WITH HEADER LINE.
DATA: wa_makt type makt.
DATA: salesdocument like BAPIVBELN-VBELN.
header-updateflag = i_updateflag.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
  EXPORTING
    INPUT  = i_vbeln
  IMPORTING
    OUTPUT = salesdocument.

IF i_updateflag <> 'D'.
  LOOP AT positions.
    item-itm_number  = itemx-itm_number = positions-itm_number.
    itemx-updateflag = positions-updateflag.
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        INPUT  = positions-material
      IMPORTING
        OUTPUT = item-material.

      itemx-material   = 'X'.

    SELECT SINGLE * FROM makt INTO wa_makt WHERE matnr EQ item-material.
      IF sy-subrc EQ 0.
        item-target_qty = positions-target_qty.
        itemx-target_qty = 'X'.
        item-short_text = wa_makt-maktx.
        itemx-short_text = 'X'.
        item-purch_date = sy-datum.
        itemx-purch_date = 'X'.
        PERFORM correct_schdl TABLES schdl
                                     schdlx
                               USING salesdocument
                                     item-itm_number
                                     item-target_qty.
        APPEND item.
        APPEND itemx.
        APPEND schdl.
        APPEND schdlx.
      ENDIF.
  ENDLOOP.
ENDIF.

CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
  EXPORTING
    SALESDOCUMENT               = salesdocument
    ORDER_HEADER_INX            = header
    BEHAVE_WHEN_ERROR           = space
  TABLES
    RETURN                      = return
    ORDER_ITEM_IN               = item
    ORDER_ITEM_INX              = itemx
    SCHEDULE_LINES              = schdl
    SCHEDULE_LINESX             = schdlx.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
   WAIT          = 'X'
IMPORTING
   RETURN        = return.

ENDFUNCTION.
*&-------------------------------------------------------------------
*&-- FORM CORRECT SCHEDULE
*&-------------------------------------------------------------------
FORM correct_schdl TABLES lt_schdl   STRUCTURE bapischdl
                          lt_schdlx  STRUCTURE bapischdlx
                    USING l_vbeln
                          l_posnr
                          l_tar_qty.

DATA: BEGIN OF lt_sh OCCURS 0.
DATA: ETENR LIKE vbep-etenr.
DATA: WMENG LIKE vbep-wmeng.
DATA: END OF lt_sh.

  SELECT SINGLE etenr WMENG INTO lt_sh FROM vbep WHERE vbeln eq l_vbeln
                                                   AND posnr eq l_posnr.
    IF sy-subrc eq 0.
      lt_schdl-itm_number = lt_schdlx-itm_number = l_posnr.
      lt_schdl-sched_line = lt_schdlx-sched_line = lt_sh-etenr.
      lt_schdl-req_qty = l_tar_qty.
      lt_schdlx-req_qty = 'X'.
      lt_schdlx-updateflag = 'U'.
    ENDIF.
ENDFORM.


При positions-updateflag = 'U' количество positions-target_qty добавляется к ранее существующему количеству заказа позиции itm-number, а не обновляет его. Что уже только не делал:?

_________________
С уважением, Сергей С.


Последний раз редактировалось east Вт, фев 19 2008, 16:11, всего редактировалось 2 раз(а).

Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, фев 19 2008, 12:23 
Специалист
Специалист

Зарегистрирован:
Чт, июн 23 2005, 18:05
Сообщения: 119
Вы должны прочитать в vbep все созданные партии.
А затем сформировать аналогичные записи в таблицах schdl
и schdlx.
Я например их удаляю с updateflag = 'D' а потом записываю изменяемую партию в первую строку (у меня всего одна партия) с флагом U.

Пример:

Code:
FORM corect_shad TABLES lt_shad  STRUCTURE bapischdl
                        lt_shadx  STRUCTURE bapischdlx
                   USING l_beln.
  DATA: BEGIN OF lt_sh OCCURS 0,
         posnr LIKE vbep-posnr,
         etenr LIKE vbep-etenr,
       END OF lt_sh.

  SELECT * INTO CORRESPONDING FIELDS OF TABLE lt_sh
    FROM vbep WHERE vbeln = l_beln.

  LOOP AT lt_sh FROM 2.
    lt_shadx-updateflag = 'D'.
    lt_shad-itm_number = lt_shadx-itm_number = lt_sh-posnr.
    lt_shad-sched_line = lt_shadx-sched_line = lt_sh-etenr.
    lt_shad-req_qty = 0.
    lt_shadx-req_qty = 'X'.
    APPEND lt_shadx.
    APPEND lt_shad.
  ENDLOOP.
  READ TABLE lt_shadx INDEX 1.
  lt_shadx-sched_line = 1.
  lt_shadx-updateflag = 'U'.
  MODIFY lt_shadx INDEX 1.
  REFRESH lt_sh.CLEAR lt_sh.
ENDFORM.                    "corect_sh


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, фев 19 2008, 16:03 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пн, сен 17 2007, 10:48
Сообщения: 190
Откуда: Нальчик, РФ
Пол: Мужской
Спасибо, помогло! :) Код исправил. Так же решил отказаться от партий, т.к на данный момент не вижу в них необходимости (Операции с etenr оставил на будущее, сейчас etenr всегда равно 0001)

_________________
С уважением, Сергей С.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, апр 04 2008, 11:53 
Ассистент
Ассистент

Зарегистрирован:
Вт, дек 11 2007, 12:15
Сообщения: 31
У меня тоже возникла проблема с этим методом. Когда я вызываю BAPI_SALESORDER_CREATEFROMDAT2 в программе из SE80. Все работает, IDOC создаётся. Но нужно сделать, чтобы при создании заказа в VA01, такой IDOC создавался автоматически. Вроде все настроил, сохраняю заказ, пишет сохранено. Выхожу из VA01, сообщение: Экспрес документ "Операция была прервана" автором ... получен. Заказа с указанным номером как оказалось не существует. Пробовал удалить COMMIT WORK после вызова BAPI_SALESORDER_CREATEFROMDAT2, заказ успешно создавался, но мой Output оказался с красным светофором, без описания ошибки, IDOC создан не был. Как выкрутиться в такой ситуации?

Code:
CALL FUNCTION 'ALE_SALESORDER_CREATEFROMDAT2'
        EXPORTING
          salesdocumentin      = '2812'
          orderheaderin        = header
          orderheaderinx       = headerx
          sender               = sender
        TABLES
          orderitemsin         = item
          orderitemsinx        = itemx
          orderpartners        = partner
          orderschedulesin     = order_schedules_in
          orderschedulesinx    = order_schedules_inx
          receivers            = bapi_logsys
        EXCEPTIONS
          error_creating_idocs = 1.

        COMMIT WORK.
   
     


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, апр 04 2008, 13:00 
Ассистент
Ассистент

Зарегистрирован:
Вт, дек 11 2007, 12:15
Сообщения: 31
Извиняюсь, речь все время идет о ALE_SALESORDER_CREATEFROMDAT2, а не о BAPI_SALESORDER_CREATEFROMDAT2


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, апр 04 2008, 21:52 
Президент
Президент

Зарегистрирован:
Пт, апр 28 2006, 22:39
Сообщения: 2514
Откуда: North Taxolina, USA
Пол: Женский
dmkm написал(а):
Но нужно сделать, чтобы при создании заказа в VA01, такой IDOC создавался автоматически. Вроде все настроил, сохраняю заказ, пишет сохранено. Выхожу из VA01, сообщение: Экспрес документ "Операция была прервана" автором ... получен. Заказа с указанным номером как оказалось не существует. Пробовал удалить COMMIT WORK после вызова BAPI_SALESORDER_CREATEFROMDAT2, заказ успешно создавался, но мой Output оказался с красным светофором, без описания ошибки, IDOC создан не был. Как выкрутиться в такой ситуации?


Что-то вы мудрите там по-моему... Если вам нужно, чтобы при создании заказа создавался IDoc, сконфигурируйте ALE (EDI) output и он должен работать вне зависимости от того, каким образом заказ создается (через BAPI, транзакцию и т.д.). "Красный" output без сообщения об ошибке - это что-то из области фантастики. :? Вы Processing Log посмотрели?

А этот ALE... ФМ оставьте в покое лучше. IMHO.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, апр 07 2008, 17:05 
Ассистент
Ассистент

Зарегистрирован:
Вт, дек 11 2007, 12:15
Сообщения: 31
Спасибо, думаю, проблема решена. Этот COMMIT действительно не должен там быть, так как одновременно сохраняется заказ (написано в документации САП). Красный светофор без сообщения об ошибке, потому что система тестовая, не настроена как положено. Выяснили,что проблема в том, что в тестовой программе забыл сменить RETURNCODE на 0 и САП ругался, что не может найти функцию. Теперь разобрался, все работает.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, июл 14 2008, 08:10 
Начинающий
Начинающий

Зарегистрирован:
Пн, июл 14 2008, 07:47
Сообщения: 3
Откуда: Perm
Добрый день. Опыт работы с SAP небольшой, поэтому если что-то не так, то <я не знать русский языка>. Возникли следующие трудности с данным BAPI:
1. Документ "Заказ клиента" создается даже если лимит кредитования превыщен. Хотя при создании через VA01 ругается.
2. Для позиций документа "Заказ клиента" не нужно указывать партии, поэтому таблицу с типом BAPISDHDL оставляем пустой, но тогда не проставляется количество материала. Возможно ли как-то обойти это?

Заранее спасибо.


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 20 ]  На страницу 1, 2  След.

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


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

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


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

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