Автор Тема: BAPI_AGREEMENT_MAINTAIN  (Прочитано 27423 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Паганель

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
BAPI_AGREEMENT_MAINTAIN
« : Сентябрь 11, 2007, 02:03:21 pm »
BAPI_AGREEMENT_MAINTAIN  - ктонибудь пользовался ?
А то что-то не проходит обновление измененных полей
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: BAPI_AGREEMENT_MAINTAIN
« Ответ #1 : Сентябрь 11, 2007, 02:54:58 pm »
Ну судя по всему это типичный бачинпут, так что ставишь точку останова на строке 200 где стоит вызов:
Код: You are not allowed to view links. Register or Login
CALL TRANSACTION lv_transaction
                   USING         lt_bdcdata
                   MODE          lv_transaction_mode
                   UPDATE        'S'
                   MESSAGES INTO lt_bdcmsgcoll.
Перед выполнением этого оператора в отладчике меняешь lv_transaction_mode = 'A' и жмешь выполнить оператор. Бачинпут будет выполняться в видимом режиме, вот и посмотришь на чем оно вылетает.

Оффлайн Паганель

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
Re: BAPI_AGREEMENT_MAINTAIN
« Ответ #2 : Сентябрь 11, 2007, 02:56:25 pm »
Спасибо за совет
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: BAPI_AGREEMENT_MAINTAIN
« Ответ #3 : Сентябрь 11, 2007, 03:12:07 pm »
You are not allowed to view links. Register or Login
Спасибо за совет
Ну о результате сюда надеюсь напишешь?

Оффлайн Паганель

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
Re: BAPI_AGREEMENT_MAINTAIN
« Ответ #4 : Сентябрь 11, 2007, 03:42:45 pm »
напишу конечно
только попожже

пока вот тестовый вариант, может руки просто кривые

DATA agreement_header LIKE BAPIOAHEAD occurs 0 with header line.
  "DATA ls_agreement_header LIKE LINE OF agreement_header.
  DATA agreement_headerx LIKE BAPIOAHEAX occurs 0 with header line.
  "DATA ls_agreement_headerx LIKE LINE OF agreement_headerx.

  LOOP AT gt_alvtab INTO ls_alvtab.
    agreement_header-agmt_no    = ls_alvtab-ebeln.
    agreement_header-DOC_CAT    = ls_alvtab-bstyp.
    agreement_header-DOC_TYPE   = ls_alvtab-bsart.
    agreement_header-pur_group  = ls_alvtab-ekgrp.
    APPEND agreement_header.

    " agreement_headerx-agmt_no = ls_alvtab-ebeln.
    agreement_headerx-agmt_no = 'X'.
    agreement_headerx-pur_group = 'X'.
    APPEND agreement_headerx.

    CALL FUNCTION 'BAPI_AGREEMENT_MAINTAIN'
    EXPORTING
      IM_AGREEMENT_HEADER = agreement_header
      IM_AGREEMENT_HEADER_X = agreement_headerx
      "IM_ALL_ITEMS_PASSED = space
    TABLES
      EXT_RETURN = po_bapiret2
      .
   

  ENDLOOP.
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: BAPI_AGREEMENT_MAINTAIN
« Ответ #5 : Сентябрь 11, 2007, 07:49:28 pm »
Да братан... чего-то ты тут накрутил, сам черт ногу сломает... вообще все кажется гораздо проще. Вот рабочий пример для конкретного документа контракта:

Код: You are not allowed to view links. Register or Login
REPORT ytov_test_mk31k .

DATA: l_im_agreement_header LIKE bapioahead,
      l_im_agreement_header_x LIKE bapioaheax,
      lt_imt_agreement_items LIKE bapioaitem OCCURS 1 WITH HEADER LINE,
     lt_imt_agreement_items_x LIKE bapioaitex OCCURS 1 WITH HEADER LINE,
      lt_return LIKE bapiret2 OCCURS 1 WITH HEADER LINE.


CLEAR: l_im_agreement_header, l_im_agreement_header_x,
       lt_imt_agreement_items, lt_imt_agreement_items_x, lt_return,
       lt_imt_agreement_items[], lt_imt_agreement_items_x[],
       lt_return[].

* Параметры для обработки (номер документа, типа документа контракт -
* можно чиать из таблицы если это изменение для создания надо задать,
* код валюты - ну в 4.6 почему-то требует заполнения этого поля, иначе
* говорит, что ошибка валюта не определена, надо читать из таблицы EKKO
* ну если это изменение, а иначе заполняем).
l_im_agreement_header-agmt_no    = '4600000001'.
l_im_agreement_header-doc_cat    = 'K'.
l_im_agreement_header-currency   = 'UAH'.

* Изменяемые поля заголовка (Для примера группа закупок)
l_im_agreement_header-pur_group = '004'.
l_im_agreement_header_x-pur_group = 'X'.

* Параметры для обработки (номер изменяемой строки/позиции договора)
lt_imt_agreement_items-agrmt_item = '00010'.
lt_imt_agreement_items_x-agrmt_item = '00010'.

* Изменяемы позиции контракта (Для примера количество)
lt_imt_agreement_items-target_qty = '12'.
lt_imt_agreement_items_x-target_qty = 'X'.
APPEND: lt_imt_agreement_items, lt_imt_agreement_items_x.

CALL FUNCTION 'BAPI_AGREEMENT_MAINTAIN'
     EXPORTING
          im_agreement_header   = l_im_agreement_header
          im_agreement_header_x = l_im_agreement_header_x
          im_all_items_passed   = space
     TABLES
          ext_return            = lt_return
          imt_agreement_items   = lt_imt_agreement_items
          imt_agreement_items_x = lt_imt_agreement_items_x.

LOOP AT lt_return WHERE type = 'A' OR type = 'E'.
  MESSAGE ID lt_return-id TYPE lt_return-type NUMBER lt_return-number
          WITH lt_return-message_v1 lt_return-message_v2
               lt_return-message_v3 lt_return-message_v4.
ENDLOOP.
Опять же в структуру l_im_agreement_header_x, как и для lt_imt_agreement_items_x включаем галки только для полей которые меняем. Если поле не меняется, из примера это код валюты, то в эту структуру для поля валюты галку ставить не нужно.

Кстати по значению поля l_im_agreement_header-doc_cat, оно определяет тип транзакции которую следует вызвать для обработки документа. Вариантов там судя по тексту:
Код: You are not allowed to view links. Register or Login
  CASE im_bstyp.
    WHEN 'K'.
      IF im_bapi_mode EQ gc_create_mode.
        IF sy-saprl(1) EQ '3'.
          ch_tcode = 'ME31'.
        ELSE.
          ch_tcode = 'ME31K'.
        ENDIF.
      ELSE.
        IF sy-saprl(1) EQ '3'.
          ch_tcode = 'ME32'.
        ELSE.
          ch_tcode = 'ME32K'.
        ENDIF.
      ENDIF.
    WHEN 'L'.
      IF im_bapi_mode EQ gc_create_mode.
        IF sy-saprl(1) EQ '3'.
          ch_tcode = 'ME31'.
        ELSE.
          ch_tcode = 'ME31L'.
        ENDIF.
      ELSE.
        IF sy-saprl(1) EQ '3'.
          ch_tcode = 'ME32'.
        ELSE.
          ch_tcode = 'ME32L'.
        ENDIF.
      ENDIF.
    WHEN OTHERS.
  ENDCASE.
т.е. может быть или K-Контракт или L-Соглашение о поставках, любой другой тип документа закупки проезжает мимо кассы. Ну и типа если система до версии 4, то используется старые транзакции, а если старше, то новые.

PS: Ну и это... тех коде-бокс не просто так присобачен для галочки, так что если текст вставляем, то и оформление делаем соответствующее.
« Последнее редактирование: Сентябрь 11, 2007, 07:54:58 pm от Uukrul »

Оффлайн Паганель

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
Re: BAPI_AGREEMENT_MAINTAIN
« Ответ #6 : Сентябрь 12, 2007, 07:38:01 am »
You are not allowed to view links. Register or Login
PS: Ну и это... тех коде-бокс не просто так присобачен для галочки, так что если текст вставляем, то и оформление делаем соответствующее.

Исправлюсь.

За помощь спасибо. Сейчас буду пробывать.
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

Alexey

  • Гость
Re: BAPI_AGREEMENT_MAINTAIN
« Ответ #7 : Январь 29, 2009, 04:18:29 pm »
Спасибо за бапишку, помогла, а вот можете еще подсказать такую штуку: в 200 строке меняю параметр на А, захожу в видимый режим, вижу изменения - они применяются. А если не захожу в видимый режим, то изменения не применяются. Подскажите плиз причину и как с ней бороться

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: BAPI_AGREEMENT_MAINTAIN
« Ответ #8 : Январь 29, 2009, 04:31:47 pm »
You are not allowed to view links. Register or Login
Спасибо за бапишку, помогла, а вот можете еще подсказать такую штуку: в 200 строке меняю параметр на А, захожу в видимый режим, вижу изменения - они применяются. А если не захожу в видимый режим, то изменения не применяются. Подскажите плиз причину и как с ней бороться
Ну ты бы это... может свой коду привел? Может ты там COMMIT WORK не дергаешь? Хотя вроде как он там не нужен, но я бы поставил после вызова функции и проверил что получится.

Оффлайн Паганель

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
Re: BAPI_AGREEMENT_MAINTAIN
« Ответ #9 : Январь 29, 2009, 06:01:28 pm »
Эта же бапишка построена на bathinput, кажись вызывать COMMIT WORK не нужно .....

Все равно не помагает.
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

Alexey

  • Гость
Re: BAPI_AGREEMENT_MAINTAIN
« Ответ #10 : Январь 29, 2009, 06:04:52 pm »
код вырезан тот, что сверху
l_im_agreement_header-agmt_no    = '3000000065'.
l_im_agreement_header-doc_cat    = 'K'.
l_im_agreement_header-currency   = 'UAH'.

l_im_agreement_header-DOC_DATE = '20090228'.
l_im_agreement_header_x-DOC_DATE = 'X'.
l_im_agreement_header-VPER_START = '20090228'.
l_im_agreement_header_x-VPER_START = 'X'.
APPEND: lt_imt_agreement_items, lt_imt_agreement_items_x.

CALL FUNCTION 'BAPI_AGREEMENT_MAINTAIN'
     EXPORTING
          im_agreement_header   = l_im_agreement_header
          im_agreement_header_x = l_im_agreement_header_x
          im_all_items_passed   = space
     TABLES
          ext_return            = lt_return
          imt_agreement_items   = lt_imt_agreement_items
          imt_agreement_items_x = lt_imt_agreement_items_x.

COMMIT WORK AND WAIT.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: BAPI_AGREEMENT_MAINTAIN
« Ответ #11 : Январь 29, 2009, 06:13:18 pm »
You are not allowed to view links. Register or Login
Эта же бапишка построена на bathinput, кажись вызывать COMMIT WORK не нужно .....
Да оно по разному может быть...  странно что не сохраняет, тот пример что я нарисовал работает без проблем и изменения проводит. А если в отладке выполнить и посмотреть что в таблице lt_return на выходе, т.е. в сам ФМ заходить не надо.

Alexey

  • Гость
Re: BAPI_AGREEMENT_MAINTAIN
« Ответ #12 : Январь 29, 2009, 06:58:35 pm »
в ls_return в меседже пишет: "Данные пакетного ввода для экрана SAPLSPO1 0300 отсутствуют."

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: BAPI_AGREEMENT_MAINTAIN
« Ответ #13 : Январь 29, 2009, 08:53:45 pm »
You are not allowed to view links. Register or Login
в ls_return в меседже пишет: "Данные пакетного ввода для экрана SAPLSPO1 0300 отсутствуют."
Ну так... тут уже совсем другой коленкор, это экран какого-то подтверждения которое надо нажать... а вот что это за подтверждение?  Уже надо смотреть на контракт который модифицируешь или вот что, можно еще просто, это функция POPUP_TO_CONFIRM_WITH_MESSAGE ну которой этот экран вызывается. Поставь в ней точку останова и попадешь в отладку как раз в тот момент, когда оно выскакивает, нажмешь F7 и посмотришь что спрашивает... и всех делов.

PS: Не забудь отписать результат...

Оффлайн Паганель

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
Re: BAPI_AGREEMENT_MAINTAIN
« Ответ #14 : Январь 29, 2009, 10:06:53 pm »
я так и думал, там выскакиевает сообщение, что выходные документы не найдены,
при этом все это есть как в манданте разработки так и в тестовом (давно собирался почистить/разобратся но руки так и не доходят), а в продуктиве нету

из-за этого и делали через batchinput предидущую разработку, а не через эту бапишку ...
т
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

Оффлайн Паганель

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
Re: BAPI_AGREEMENT_MAINTAIN
« Ответ #15 : Январь 29, 2009, 10:08:08 pm »
как отключить? с чего начать?
попробую убрать сейчас ...
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: BAPI_AGREEMENT_MAINTAIN
« Ответ #16 : Январь 29, 2009, 10:59:23 pm »
You are not allowed to view links. Register or Login
как отключить? с чего начать?
попробую убрать сейчас ...
С чего начать... ну наверное надо посмотреть какой выходной документ оно хочет вывести...

Alexey

  • Гость
Re: BAPI_AGREEMENT_MAINTAIN
« Ответ #17 : Январь 30, 2009, 01:26:49 pm »
Пытаюсь настроить выходные документы, выдает сообщение 515 (Для выходного документa NEU принтер не определен.)

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: BAPI_AGREEMENT_MAINTAIN
« Ответ #18 : Январь 30, 2009, 02:41:33 pm »
You are not allowed to view links. Register or Login
Пытаюсь настроить выходные документы, выдает сообщение 515 (Для выходного документa NEU принтер не определен.)
Ну попробуй присвоить принтер своей группе закупки, должно вроде как по быстрому сработать... а вообще из документации типа так:
Цитировать
How is the printer determined for message output purposes?
The system checks whether a printer has been specified in the condition record.
If so, it is used.
If not, it checks the message type to see whether a print parameter has been set. If no parameter has been set, no message is generated.
If a parameter has been set, a printer is sought in accordance with this parameter. If a printer is found, it is used to output the message. If not, no message is generated.

Note:
You can change the printer when outputting messages (e.g. via the menu options Purchasing document> -> Messages -> Print/transmit). Select the desired message and choose Goto -> Message details -> Edit -> Means of communication.

PS: Кстати на будущее когда пишешь номер сообщения, то указывай так же и класс сообщений, так как 515 номер в каждом классе наверное есть.

Alexey

  • Гость
Re: BAPI_AGREEMENT_MAINTAIN
« Ответ #19 : Январь 30, 2009, 03:14:38 pm »
В этих настройках как раз и лазил, а вот группе закупок значение по умолчпанию поставил только сей час :) В общем получилось. Большое спасибо за помощь!!!

Оффлайн Паганель

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
Re: BAPI_AGREEMENT_MAINTAIN
« Ответ #20 : Декабрь 27, 2010, 01:57:11 pm »
Приятная новость, в 6-ке (возможно и в 5-ке) появились новые бапишки для нормальной работы с контрактами
BAPI_CONTRACT_CHANGE
BAPI_CONTRACT_CREATE
BAPI_CONTRACT_GETDETAIL
которые работают (судя по коду) не на бачинпуте.
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

Sapforum.Biz

Re: BAPI_AGREEMENT_MAINTAIN
« Ответ #20 : Декабрь 27, 2010, 01:57:11 pm »