SAP R/3 форум ABAP консультантов
Russian ABAP Developer's Club

Home - FAQ - Search - Memberlist - Usergroups - Profile - Log in to check your private messages - Register - Log in - English
Blogs - Weblogs News

BAPI_ADDRESSORG_SAVEREPLICA локает поставщика



 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP
View previous topic :: View next topic  
Author Message
den
Старший специалист
Старший специалист



Joined: 11 Oct 2007
Posts: 103

PostPosted: Wed Jul 23, 2008 1:20 pm    Post subject: BAPI_ADDRESSORG_SAVEREPLICA локает поставщика Reply with quote

Коллеги, кто-нибудь сталкивался с ситуацией?
При использовании BAPI_ADDRESSORG_SAVEREPLICA при выходе из ФМ поставщик остается залоканым, если он существует. При создании нового поставщика lock entry не появляется.
COMMIT WORK and WAIT присутствует.
Back to top
View user's profile Send private message
vga
Мастер
Мастер


Age: 165
Joined: 04 Oct 2007
Posts: 1218
Location: Санкт-Петербург

PostPosted: Wed Jul 23, 2008 3:41 pm    Post subject: Reply with quote

Не уверен в абсолютной правильности такого подхода, зависит откуда происходит вызов BAPI. Если это целиком ваша программа, а не user-exit, можете удалять lock entry после выполнения.
Code:
    SET UPDATE TASK LOCAL. " for sync update processes

    CALL FUNCTION 'BAPI_ADDRESSORG_SAVEREPLICA'
      EXPORTING
        obj_type                    = 'LFA1'
        obj_id                      = l_obj_id
        context                     = '0001'
        iv_check_address            = 'X'
        iv_time_dependent_comm_data = 'X'
      IMPORTING
        return                      = ls_return
        address_number              = l_address_number
      TABLES
        bapiad1vl                   = bapiad1vl
        bapiadtel                   = bapiadtel
        bapiadfax                   = bapiadfax
        bapiadttx                   = bapiadttx
        bapiadtlx                   = bapiadtlx
        bapiadsmtp                  = bapiadsmtp
        bapiadrml                   = bapiadrml
        bapiadx400                  = bapiadx400
        bapiadrfc                   = bapiadrfc
        bapiadprt                   = bapiadprt
        bapiadssf                   = bapiadssf
        bapiaduri                   = bapiaduri
        bapiadpag                   = bapiadpag
        bapiad_rem                  = bapiad_rem
        bapicomrem                  = bapicomrem
*        bapiaduse                   = bapiaduse
      EXCEPTIONS
        OTHERS                      = 1.
    IF sy-subrc IS INITIAL AND ls_return IS INITIAL.
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
       EXPORTING
            WAIT    = 'X'
       IMPORTING
            RETURN  = LS_RETURN.
 
      CALL FUNCTION 'DEQUEUE_ALL'
        EXPORTING
          _SYNCHRON = 'X'.
     endif.
Back to top
View user's profile Send private message Blog Visit poster's website
den
Старший специалист
Старший специалист



Joined: 11 Oct 2007
Posts: 103

PostPosted: Thu Jul 24, 2008 11:53 am    Post subject: Reply with quote

Спасибо за пример. Используется в user-exit, поэтому удалять все лок точки не безопасно. Поищу конкретную функцию для удаления лока на вендора.

По ходу возник еще вопрос, BAPI_ADDRESSORG_SAVEREPLICA
не записывает такие поля по налогам, как
lfa1-STCD1
lfa1-STCD2
lfa1-STCD3
lfa1-STCD4
lfa1-STCEG

Возникла такая интересная ситуация, если в приходящем IDOC-е есть эти поля, они записываются через batch-input транзакции xk02. То есть сначала создается новый поставщик через BAPI_ADDRESSORG_SAVEREPLICA, а затем через batch-input обновляются другие поля, которые не записаны через bapi. Если в кастомайзинге для вендора полям транзакции xk02 прописано свойства скрыты или не видимы, то они не обновляются через входящий idoc. Открывать их не хотим, чтобы пользователи их не правили и не вносили разногласия между нашей и удаленной системой.

Поэтому вопрос, существует ли другая BAPI, через которую можно сохранить поля по налогам? Если нет, то как альтернатива видится только прямой update таблицы lfa1.
Back to top
View user's profile Send private message
vga
Мастер
Мастер


Age: 165
Joined: 04 Oct 2007
Posts: 1218
Location: Санкт-Петербург

PostPosted: Thu Jul 24, 2008 1:19 pm    Post subject: Reply with quote

Посмотрите ноту 523930.
В функциональных модулях на создания поставщика через входящий iDOC параметр PI_XK99_USED отвечает за использование или не использование настроек в IMG.

Например:

Code:
      CALL FUNCTION 'IDOC_INPUT_CREDITOR'
        EXPORTING
          input_method          = l_input_method
          mass_processing       = l_mass_processing
          PI_XK99_USED          = 'X'     "\BE Note 523930



Lock entry для поставщика можно удалить
Code:
      CALL FUNCTION 'DEQUEUE_EXLFA1'
        EXPORTING
           LIFNR     = lfa1-lifnr.
Back to top
View user's profile Send private message Blog Visit poster's website
Display posts from previous:   
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG.
SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG.
Every effort is made to ensure content integrity. Use information on this site at your own risk.