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

Расширения материала на вид оценки при поступлении материала



 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP
View previous topic :: View next topic  
Author Message
Mania4e11o
Участник
Участник


Age: 33
Joined: 12 Dec 2011
Posts: 47
Location: Рязань

PostPosted: Thu Sep 27, 2012 11:20 am    Post subject: Расширения материала на вид оценки при поступлении материала Reply with quote

Добрый день!

Необходимо, при проводке поступления материала(ПМ) через MIGO, автоматически расширять материал на вид оценки(партия).

Создал внедрение MB_CF001, ФМ EXIT_SAPLMBMB_001. Собираю в нем нужные данные и запускаю ФМ обновления в V2 процессе, в котором выполняется запуск BAPI 'BAPI_MATERIAL_SAVEDATA'.

Проблема, материал блокирован.

Предполагаю, что, наверно я не так запускаю ФМ, или же расширение не то выбрал.

Если кто-то делал подобное, подскажите,плиз.

Код инклуда в ФМ EXIT_SAPLMBMB_001.

Code:
CALL FUNCTION 'ZENTC_GETDATA' IN UPDATE TASK
    TABLES
      tmkpf  = xmkpf
      tmseg  = xmseg
      tvm07m = xvm07m.


Код ФМ

Code:
FUNCTION ZENTC_GETDATA .
*"----------------------------------------------------------------------
*"*"Функциональный модуль обновления:
*"
*"*"Локальный интерфейс:
*"  TABLES
*"      TMKPF STRUCTURE  MKPF
*"      TMSEG STRUCTURE  MSEG
*"      TVM07M STRUCTURE  VM07M
*"----------------------------------------------------------------------

  CONSTANTS:
              lc_q TYPE c VALUE 'Q'.

  DATA:
        lt_mseg TYPE TABLE OF mseg,
        lt_mkpf TYPE TABLE OF mkpf,
        lt_vm07m TYPE TABLE OF vm07m,
        lv_bwtty TYPE mbew-bwtty,
        lv_bklas TYPE mbew-bklas.

  DATA:
        lw_headdata TYPE bapimathead,
        lw_valuationdata TYPE bapi_mbew,
        lw_valuationdatax  TYPE bapi_mbewx,
        lw_return TYPE bapiret2,
        lv_memory TYPE I.

  FIELD-SYMBOLS:
                 <fwa_mseg> TYPE mseg,
                 <fs_xmbew> TYPE ts_xmbew.

  MOVE tmkpf[] TO lt_mkpf.
  MOVE tmseg[] TO lt_mseg.
  MOVE tvm07m[] TO lt_vm07m.
  CLEAR gt_xmbew.

  LOOP AT lt_mseg ASSIGNING <fwa_mseg> WHERE sobkz = lc_q AND ( bwart = '101' OR bwart = '105' ).
    SELECT SINGLE bwtty bklas FROM mbew
      INTO (lv_bwtty, lv_bklas)
      WHERE matnr = <fwa_mseg>-matnr AND
            bwkey = <fwa_mseg>-werks AND
            bwtar = space.

    IF lv_bwtty = abap_true.
      SELECT SINGLE bwtty bklas FROM mbew
      INTO (lv_bwtty, lv_bklas)
      WHERE matnr = <fwa_mseg>-matnr AND
      bwkey = <fwa_mseg>-werks AND
      bwtar = <fwa_mseg>-charg.
      IF sy-subrc <> 0.
        APPEND INITIAL LINE TO gt_xmbew ASSIGNING <fs_xmbew>.
        <fs_xmbew>-matnr = <fwa_mseg>-matnr.
        <fs_xmbew>-werks = <fwa_mseg>-werks.
        <fs_xmbew>-charg = <fwa_mseg>-charg.
        <fs_xmbew>-bklas = lv_bklas.
      ENDIF.
    ENDIF.

  ENDLOOP.

  DELETE ADJACENT DUPLICATES FROM gt_xmbew COMPARING matnr werks.

  LOOP AT gt_xmbew ASSIGNING <fs_xmbew>.
    lw_headdata-material = <fs_xmbew>-matnr.

    lw_valuationdata-val_area = <fs_xmbew>-werks.
    lw_valuationdata-val_type = <fs_xmbew>-charg.
    lw_valuationdata-val_class = <fs_xmbew>-bklas.

    lw_valuationdatax-val_area = <fs_xmbew>-werks.
    lw_valuationdatax-val_type = <fs_xmbew>-charg.
    lw_valuationdatax-val_class = 'X'.

    CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
    EXPORTING
      headdata       = lw_headdata
      valuationdata  = lw_valuationdata
      valuationdatax = lw_valuationdatax
    IMPORTING
      RETURN         = lw_return.

  ENDLOOP.
  CLEAR gt_xmbew.

ENDFUNCTION.


[/code]
Back to top
View user's profile Send private message Blog
Shvetz
Специалист
Специалист



Joined: 05 Oct 2007
Posts: 53

PostPosted: Fri Sep 28, 2012 11:26 am    Post subject: Reply with quote

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

BAPI часто выдают ошибки не касающиеся реальности, а просто из-за того, что поле не так заполнено, или какое-то поле наоборот не заполнено.
Back to top
View user's profile Send private message
Mania4e11o
Участник
Участник


Age: 33
Joined: 12 Dec 2011
Posts: 47
Location: Рязань

PostPosted: Fri Sep 28, 2012 5:01 pm    Post subject: Reply with quote

Shvetz wrote:
Попробуйте выполнить BAPI_MATERIAL_SAVEDATA для одного материала не в бэкграунде. Проверить у функциональщиков, что проблема не в настройках. Посмотреть примеры с гугла, может быть какие-то поля не заполнены

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


Естественно, я это уже делал. Расширить материал на вид оценки труда не составляет.

Проблема в блокировках.

Юзал метод RESET в расширении BADI(срабатывает при запуске и при окончании каждой проводки), пытался туда передать необходимые данные через группу функций,полученные в выше указанном расширении EXIT. Но в момент работы RESET данных в группе функций нет. По всей видимости создается новый процесс, и данные их ГФ затираются...

Пробовал так же через память SAP, результат такой же.
Back to top
View user's profile Send private message Blog
vga
Мастер
Мастер


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

PostPosted: Fri Sep 28, 2012 5:17 pm    Post subject: Reply with quote

Делал через промежуточный FM.

1) Из badi стартует ZFM_1 in update task

( ZFM_1 - v2 update module )

2) Внутри ZFM_1 стартует ZFM_2 in background

3) Внтури ZFM_2 сначало ожидает освобождения блокировки через ENQUEUE_READ, потом вызывает bapi и commit work

_________________
Молитва - это запрос разработчику на изменение кода программы.


Last edited by vga on Fri Sep 28, 2012 5:20 pm; edited 1 time in total
Back to top
View user's profile Send private message Blog Visit poster's website
Shvetz
Специалист
Специалист



Joined: 05 Oct 2007
Posts: 53

PostPosted: Fri Sep 28, 2012 5:28 pm    Post subject: Reply with quote

Только после поста vga понял какая блокировка Very Happy Думал связанная с бизнесом.

А эта BADI разве тоже ошибку блокировки генерит?

MB_DOCUMENT_BADI -> MB_DOCUMENT_UPDATE
Back to top
View user's profile Send private message
Mania4e11o
Участник
Участник


Age: 33
Joined: 12 Dec 2011
Posts: 47
Location: Рязань

PostPosted: Fri Sep 28, 2012 5:56 pm    Post subject: Reply with quote

Shvetz wrote:
А эта BADI разве тоже ошибку блокировки генерит?


Да Smile

Спасибо, коллеги!
Back to top
View user's profile Send private message Blog
Mania4e11o
Участник
Участник


Age: 33
Joined: 12 Dec 2011
Posts: 47
Location: Рязань

PostPosted: Mon Oct 01, 2012 11:08 pm    Post subject: Reply with quote

vga wrote:
Делал через промежуточный FM.

1) Из badi стартует ZFM_1 in update task

( ZFM_1 - v2 update module )

2) Внутри ZFM_1 стартует ZFM_2 in background

3) Внтури ZFM_2 сначало ожидает освобождения блокировки через ENQUEUE_READ, потом вызывает bapi и commit work


Реализовал. Все работает. Спасибо! Smile
Back to top
View user's profile Send private message Blog
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.