Текущее время: Пн, июл 21 2025, 01:50

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: СУД бапи BAPI_DOCUMENT_CREATE2 не всегда выдает номер новому договору
СообщениеДобавлено: Пн, дек 08 2008, 10:12 
Начинающий
Начинающий
Аватара пользователя

Зарегистрирован:
Пн, мар 24 2008, 11:20
Сообщения: 18
существует программа которая дает на вход бапишке BAPI_DOCUMENT_CREATE2

все необходимые данные по умолчанию о договоре, периодически
договор не создается, т.к. эта бапишка не выдает ему номер r/3 - doknr.
если смотреть вызовы, в 12 читается табличка nriv смотрится последний заюзаный номер, после чего плюсуется 1 и выдается след. номер для нового договора, в случае когда бапишка отрабатывает без отладчика и новый номер не выдался, просматривая этот же договор еще раз в отладчике 12 вызов отрабатывает правильно, и соотв. проблему понять не удается.

резюмирую. первый раз авт. режим бапишка не срабатывает, повторяя тоже самое в отладчике - срабатывает. если я делаю какую-то глупую нубскую ошибку ткните носом, проблемы не вижу хоть убей, если нужны какие-то подробности данных или еще чего-то скажите отпишу, просто пока не знаю что нужно предоставить для большего понимания

    12 SAPLSNR3 FORM READ_NRIV
    11 SAPLSNR3 FUNCTION NUMBER_GET_NEXT
    10 SAPLCVV8 FUNCTION CVV8_GET_NEXT_NUMBER
    9 Z_MCDOKZNR FORM GET_NUMBER
    8 SAPLCV115 FORM NUMBER_GET_NUMBER
    7 SAPLCV115 FUNCTION CV115_DOC_BEFORE_SAVE
    6 SAPLCVAPI01 FUNCTION CVAPI_DOC_MAINTAIN
    5 SAPLCVAPI01 FUNCTION CVAPI_DOC_CREATE
    4 SAPLCVBAPI FUNCTION API_DOCUMENT_MAINTAIN2
    3 SAPLCVBAPI FUNCTION BAPI_DOCUMENT_CREATE2
    2 ZERD_WEB_SERV_GET FORM CREATE_DOG_FROM_XML
    1 ZERD_WEB_SERV_GET EVENT START-OF-SELECTION


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

Зарегистрирован:
Чт, мар 09 2006, 10:12
Сообщения: 565
Откуда: Волгодонск
Пол: Мужской
Попробуй поставить перед вызовом бапи SET UPDATE LOCAL


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

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
DKiyanov написал:
Попробуй поставить перед вызовом бапи SET UPDATE LOCAL

:) Это называется лечите симптомы.

А причина, думаю, в программе Z_MCDOKZNR, назначенной для вида документа в таблице TDWA (видимо, копия MCDOKZNR).

PS. Глубже 10 уровня опускаться не нужно: в ф.м. NUMBER_GET_NEXT ошибок быть не может, только фичи :)


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

Зарегистрирован:
Пн, мар 24 2008, 11:20
Сообщения: 18
спасибо за ответы, посмотрю.


Последний раз редактировалось fs Пн, дек 08 2008, 12:02, всего редактировалось 1 раз.

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

Зарегистрирован:
Пн, сен 06 2004, 11:43
Сообщения: 1551
Пол: Мужской
Учитывая обе ветки и симптомы, что в отладчике работает - ИМХО все дело в BAPI_COMMIT (вернее его отсутствии)

_________________
Ex ipso fonte bibere
Цитата:
Abyssus abyssum invocat
Dies diem docet
Ducunt volentem fata, nolentem trahunt

Estote prudentes sicut serpentes


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

Зарегистрирован:
Пн, сен 06 2004, 11:43
Сообщения: 1551
Пол: Мужской
Code:

call function 'BAPI_DOCUMENT_CREATE2'
   exporting documentdata               = documentdata
   importing documenttype               = s_documenttype
                 documentnumber             = s_documentnumber
                 documentpart               = s_documentpart
                 documentversion            = s_documentversion
                 return                     = return
       tables documentdescriptions       = documentdescriptions
                 documentfiles              = documentfiles.
if return-type ca 'EA'.
  rollback work.
  clear: s_documenttype,    s_documentnumber,
         s_documentversion, s_documentpart.
  message i002 with return-message.
else.
  [b]commit work.[/b]
  zvvvscanhist-dokar = s_documenttype.
  zvvvscanhist-doknr = s_documentnumber.
  zvvvscanhist-dokvr = s_documentversion.
  zvvvscanhist-doktl = s_documentpart.
  zvvvscanhist-lifnr = s_lifnr.
  zvvvscanhist-frbnr = s_frbnr.
  zvvvscanhist-ersda = sy-datum.
  zvvvscanhist-ernam = sy-uname.
  zvvvscanhist-ersti = sy-uzeit.
  zvvvscanhist-mater = s_mat.
  insert zvvvscanhist.
  call function 'Z_REMOVE_LOCAL_FILE'
   exporting documentpath       = filename.
  clear filename.
endif.

_________________
Ex ipso fonte bibere
Цитата:
Abyssus abyssum invocat
Dies diem docet
Ducunt volentem fata, nolentem trahunt

Estote prudentes sicut serpentes


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

Зарегистрирован:
Пн, мар 24 2008, 11:20
Сообщения: 18
vvvictor написал:
Учитывая обе ветки и симптомы, что в отладчике работает - ИМХО все дело в BAPI_COMMIT (вернее его отсутствии)


после бапишки стоит коммит,
wait = X.

так что проблема имхо не в этом


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

Зарегистрирован:
Пн, мар 24 2008, 11:20
Сообщения: 18
vvvictor написал:
Code:

call function 'BAPI_DOCUMENT_CREATE2'
   exporting documentdata               = documentdata
   importing documenttype               = s_documenttype
                 documentnumber             = s_documentnumber
                 documentpart               = s_documentpart
                 documentversion            = s_documentversion
                 return                     = return
       tables documentdescriptions       = documentdescriptions
                 documentfiles              = documentfiles.
if return-type ca 'EA'.
  rollback work.
  clear: s_documenttype,    s_documentnumber,
         s_documentversion, s_documentpart.
  message i002 with return-message.
else.
  [b]commit work.[/b]
  zvvvscanhist-dokar = s_documenttype.
  zvvvscanhist-doknr = s_documentnumber.
  zvvvscanhist-dokvr = s_documentversion.
  zvvvscanhist-doktl = s_documentpart.
  zvvvscanhist-lifnr = s_lifnr.
  zvvvscanhist-frbnr = s_frbnr.
  zvvvscanhist-ersda = sy-datum.
  zvvvscanhist-ernam = sy-uname.
  zvvvscanhist-ersti = sy-uzeit.
  zvvvscanhist-mater = s_mat.
  insert zvvvscanhist.
  call function 'Z_REMOVE_LOCAL_FILE'
   exporting documentpath       = filename.
  clear filename.
endif.


даже после неправильного срабатывания RET у бапишки пустой, ед-е по чему можно определить не правильность ее срабатывания это пустое поле documentnumber


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

Зарегистрирован:
Пн, сен 06 2004, 11:43
Сообщения: 1551
Пол: Мужской
fs, а может стоит фрагмент кода кинуть ?

_________________
Ex ipso fonte bibere
Цитата:
Abyssus abyssum invocat
Dies diem docet
Ducunt volentem fata, nolentem trahunt

Estote prudentes sicut serpentes


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

Зарегистрирован:
Пн, мар 24 2008, 11:20
Сообщения: 18
vvvictor написал:
fs, а может стоит фрагмент кода кинуть ?


конечно стоит! вот пож-а

Code:
        CALL FUNCTION 'BAPI_DOCUMENT_CREATE2'
         EXPORTING
          DOCUMENTDATA               = DOCUMENTDATA_BAPI
     "     HOSTNAME                   =
*     DOCBOMCHANGENUMBER         = '1000900002'
          DOCBOMVALIDFROM            = date_beg2
     "     DOCBOMREVISIONLEVEL       =
*          CAD_MODE                   = ''
*          PF_FTP_DEST                = ''
*          PF_HTTP_DEST               = ''
        IMPORTING
          DOCUMENTTYPE               = DOCTYPE
          DOCUMENTNUMBER             = DOCNUMBER
          DOCUMENTVERSION            = DOCVERSION
          DOCUMENTPART               = DOCPART
          RETURN                     = RET
        TABLES
          CHARACTERISTICVALUES       = CHARACTERISTICVALUES
          CLASSALLOCATIONS           = CLASSALLOCATIONS
     "     DOCUMENTDESCRIPTIONS       =
           OBJECTLINKS                = OBJECTLINKS
     "     DOCUMENTSTRUCTURE          =
          DOCUMENTFILES              = docfiles_3
          LONGTEXTS                  = longtxt
     "     COMPONENTS                 =
     .



          if ret-TYPE eq 'E'.
            t_err-flg_er = 'X'.
            CONCATENATE 'ret after:' t_err-KOMMENT
            RET-TYPE
            RET-ID
            RET-NUMBER
            RET-MESSAGE
            RET-LOG_NO
            RET-LOG_MSG_NO
            RET-MESSAGE_V1
            RET-MESSAGE_V2
            RET-MESSAGE_V3
            RET-MESSAGE_V4
            RET-PARAMETER ';' into t_err-KOMMENT SEPARATED BY space.

              CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'
                IMPORTING
                  RETURN = RET.
          else.
*==========================================
            t_err-mandt  = sy-mandt.
            t_err-date_m_st = date2.
            t_err-date_m_fn = date1.
            t_err-offnum = S_ERD-Contract_DocNumber.
            t_err-regnum = S_ERD-Contract_Number.
            t_err-erd_id = S_ERD-erd_id.
            t_err-data = sy-datum.
            t_err-time = sy-uzeit.
            t_err-flg_ok = 'X'.
            t_err-doknr = DOCNUMBER.
            t_err-dokvr = DOCVERSION.
            t_err-doktl = DOCPART.
            t_err-dokar = DOCTYPE.
            t_err-reason = reason.

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

          endif.


          IF tmp_DOKST = 2 or tmp_DOKST = 3.

            CALL FUNCTION 'BAPI_DOCUMENT_SETSTATUS'
              EXPORTING
                DOCUMENTTYPE          = DOCTYPE
                DOCUMENTNUMBER        = DOCNUMBER
                DOCUMENTPART          = DOCPART
                DOCUMENTVERSION       = DOCVERSION
*   STATUSEXTERN          = ' '
               STATUSINTERN          = tmp_DOKST
*   STATUSLOG             = ' '
             IMPORTING
               RETURN                = RET_ST
                      .

            if RET_st-TYPE ne 'E'.
              CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
                EXPORTING
                  WAIT   = 'X'
                IMPORTING
                  RETURN = Ret.
            ELSE.
              CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'
                IMPORTING
                  RETURN = RET.
            ENDIF.

          ENDIF.


Последний раз редактировалось fs Ср, дек 10 2008, 09:55, всего редактировалось 1 раз.

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

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
Есть неуверенность по поводу этой строчки (просто не видно происвоений этим переменным)
Code:
IF tmp_DOKST = 2 or tmp_DOKST = 3.

И еще после вызова BAPI_DOCUMENT_SETSTATUS происходит проверка предыдущей структурки RET, а не возвращаемой RET_ST.


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

Зарегистрирован:
Пн, сен 06 2004, 11:43
Сообщения: 1551
Пол: Мужской
Note 717327 - Document cannot be created using BAPI_DOCUMENT_CREATE2.
Note 1018184 - Unable to create new version using Bapi_Document_Create2
А эти вещи не имеют отношения к проблеме ?

_________________
Ex ipso fonte bibere
Цитата:
Abyssus abyssum invocat
Dies diem docet
Ducunt volentem fata, nolentem trahunt

Estote prudentes sicut serpentes


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

Зарегистрирован:
Пн, мар 24 2008, 11:20
Сообщения: 18
John Doe написал:
Есть неуверенность по поводу этой строчки (просто не видно происвоений этим переменным)
Code:
IF tmp_DOKST = 2 or tmp_DOKST = 3.

И еще после вызова BAPI_DOCUMENT_SETSTATUS происходит проверка предыдущей структурки RET, а не возвращаемой RET_ST.


спасибо проглядел, но это особого значения не имело потому что мы бы имели только не правильное выставление статуса документу. спасибо поправил


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

Зарегистрирован:
Пн, мар 24 2008, 11:20
Сообщения: 18
vvvictor написал:


нота 717327 уже стоит она довольно старенькая
нота 1018184 не для нашего релиза и ставится нам не должна


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

Зарегистрирован:
Пн, сен 06 2004, 11:43
Сообщения: 1551
Пол: Мужской
fs написал(а):
нота 717327 уже стоит она довольно старенькая
нота 1018184 не для нашего релиза и ставится нам не должна
Я же не телепат... :wink:

А ты можешь проверить по "сработкам" а оно точно "не берет" номер ? или же все-таки после "холостого выстрела" - номер следующего документа все-таки изменяется ?

_________________
Ex ipso fonte bibere
Цитата:
Abyssus abyssum invocat
Dies diem docet
Ducunt volentem fata, nolentem trahunt

Estote prudentes sicut serpentes


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

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


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

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


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

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