witam
pilnie poszukuje user-exita odpalanego po nacisnieciu przycisku SAVE w transakcjach IW31/32 modyfikujacego tablice z danymi operacji (afvu, afvg).
dzieki za pomoc.
pozdrawiam,
Leszek
iw31/iw32 - user-exit podpiety pod przycisk SAVE
-
- Posty: 8356
- Rejestracja: wt kwie 03, 2007 4:05 pm
- Has thanked: 1924 times
- Been thanked: 1478 times
- Kontakt:
Re: iw31/iw32 - user-exit podpiety pod przycisk SAVE
BADI WORKORDER_CHANGE, metoda IN_UPDATE jest wywoływana podczas zapisywania zleceń, również remontowych. Co prawda ta metoda nie pozwala na aktualizację danych operacji, jednak możesz je tak zaimplementować, aby wywołać w implementacji BAPI_ALM_ORDER_MAINTAIN lub zmienić dane operacji bezpośrednio w tablicach. Pamiętaj jednak, aby wywołanie BAPI czy aktualizację tablic z operacjami wykonywać w oddzielnej LUW, tak aby zlecenie zdążyło się zapisać w bazie danych.
Re: iw31/iw32 - user-exit podpiety pod przycisk SAVE
czesc,
dzieki za odpowiedz.
znalazlem w koncu rozwiazanie swojego problemu. Skorzystalem z user-exita IWO10009.
Zaimplementowalem w nim nastepujacy kod programu:
Aby wszytko dzialalo tak jak trzeba, zmuszony bylem do stworzenia w SE11 struktury zafvg_bt (Struktura na potrzeby modyfikcji listy operacji w IW31/IW32):
Z mojego punktu widzenia uzywanie FM BAPI_ALM_ORDER_MAINTAIN (i jej podobnych) do tego celu nie ma sensu. Nie zawsze konsultant jest w stanie przekazac informacje co z czego wynika, a co za tym idzie mozna spotkac sie z duzymi problemami przy prawidlowym wypelnieniu struktur niezbednych do osiagniecia zakladanego celu.
Dodatkowo mozna skorzystac z nastepujacych tabel przy wykonywaniu operacji na wspomnianym wyzej user-exicie:
Lechoo
dzieki za odpowiedz.
znalazlem w koncu rozwiazanie swojego problemu. Skorzystalem z user-exita IWO10009.
Zaimplementowalem w nim nastepujacy kod programu:
Kod: Zaznacz cały
DATA: usr00 TYPE usrchar20,
usr04 TYPE usrquan13,
use04 TYPE usrunit,
tabix LIKE sy-tabix.
DATA: BEGIN OF i_afvg_bt OCCURS 0.
INCLUDE STRUCTURE zafvg_bt.
DATA: END OF i_afvg_bt.
FIELD-SYMBOLS: <fs1> TYPE ANY TABLE,
<fs1_line> LIKE LINE OF i_afvg_bt,
<fs1_line_tabix> LIKE LINE OF i_afvg_bt.
DATA: BEGIN OF i_afvu_bt_old OCCURS 0.
INCLUDE STRUCTURE aafvu.
DATA: END OF i_afvu_bt_old.
FIELD-SYMBOLS: <fs1_old> TYPE ANY TABLE,
<fs1_old_line> LIKE LINE OF i_afvu_bt_old.
IF sy-tcode = 'IW31'.
* Retrieve values from calling program
ASSIGN ('(SAPLCOBP)AFVG_BT[]') TO <fs1>.
LOOP AT <fs1> ASSIGNING <fs1_line>.
IF sy-tabix = 1.
usr04 = <fs1_line>-usr04.
use04 = <fs1_line>-use04.
usr00 = <fs1_line>-usr00.
ELSE.
IF <fs1_line>-usr00 IS INITIAL.
<fs1_line>-usr00 = usr00.
ELSE.
usr00 = <fs1_line>-usr00.
ENDIF.
IF <fs1_line>-use04 IS INITIAL.
<fs1_line>-use04 = use04.
ELSE.
use04 = <fs1_line>-use04.
ENDIF.
IF <fs1_line>-usr04 IS INITIAL.
<fs1_line>-usr04 = usr04.
ELSE.
usr04 = <fs1_line>-usr04.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
IF sy-tcode = 'IW32'.
ASSIGN ('(SAPLCOBP)AFVU_BT_OLD[]') TO <fs1_old>.
ASSIGN ('(SAPLCOBP)AFVG_BT[]') TO <fs1>.
CLEAR i_afvu_bt_old. REFRESH i_afvu_bt_old.
APPEND LINES OF <fs1_old> TO i_afvu_bt_old.
LOOP AT <fs1> ASSIGNING <fs1_line>.
READ TABLE i_afvu_bt_old WITH KEY aufpl = <fs1_line>-aufpl aplzl = <fs1_line>-aplzl ASSIGNING <fs1_old_line>.
IF sy-subrc IS INITIAL AND <fs1_old_line> IS ASSIGNED.
* aktualizacja pola kat. obchodu - user field in operations table
IF NOT <fs1_line>-usr00 = <fs1_old_line>-usr00.
usr00 = <fs1_line>-usr00.
ELSE.
IF NOT <fs1_line>-usr00 = usr00 AND NOT usr00 IS INITIAL.
<fs1_line>-usr00 = usr00.
ENDIF.
ENDIF.
* aktualizacja pola jednostka miary - user field in operations table
IF NOT <fs1_line>-use04 = <fs1_old_line>-use04.
use04 = <fs1_line>-use04.
ELSE.
IF NOT <fs1_line>-use04 = use04 AND NOT use04 IS INITIAL.
<fs1_line>-use04 = use04.
ENDIF.
ENDIF.
* aktualizacja pola trasa (przejechana odleglosc) - user field in operations table
IF NOT <fs1_line>-usr04 = <fs1_old_line>-usr04.
usr04 = <fs1_line>-usr04.
ELSE.
IF NOT <fs1_line>-usr04 = usr04 AND NOT usr04 IS INITIAL.
<fs1_line>-usr04 = usr04.
ENDIF.
ENDIF.
ELSE.
**********************************************************************
* sytuacja, kiedy dodano nowy wiersz do istniejacej struktury - new row/rows added to operations table
**********************************************************************
tabix = <fs1_line>-aplzl - 1.
* aktualizacja pola kat. obchodu - user field in operations table
IF <fs1_line>-usr00 IS INITIAL AND NOT usr00 IS INITIAL.
<fs1_line>-usr00 = usr00.
ENDIF.
* aktualizacja pola jednostka miary - user field in operations table
IF <fs1_line>-use04 IS INITIAL AND NOT use04 IS INITIAL.
<fs1_line>-use04 = use04.
ENDIF.
* aktualizacja pola trasa (przejechana odleglosc) - user field in operations table
IF <fs1_line>-usr04 IS INITIAL AND NOT usr04 IS INITIAL.
<fs1_line>-usr04 = usr04.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
ENDIF.
Kod: Zaznacz cały
.INCLUDE AFVGB 0 0 Zlecenie: struktura operacji dla tabeli bufora
INDOLD SYTABIX INT4 10 0 Indeks tabeli wewnętrznej
Dodatkowo mozna skorzystac z nastepujacych tabel przy wykonywaniu operacji na wspomnianym wyzej user-exicie:
- (SAPLMATL)MARA_TAB[]
(SAPLMG21)IMARA[]
(SAPLMG21)TMARA[]
(SAPLBSVA)JEST_BUF[]
(SAPLBSVA)JSTO_BUF[]
(SAPLMATL)IMARC[]
(SAPLMG22)IMARC[]
(SAPLEBNE)BSN[] (Purch reqs)
(SAPLIPAR)HEADER_TAB[]
(SAPLV08D)GT_KNA1[]
(saplcoih)iloa
(saplcoih)afvgd
(saplCOBP)AFVG_BT[]
Lechoo