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

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


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

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


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

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