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

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


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

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


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

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