Attivazione della registrazione modifiche dati per le tabelle VBEP e VBLB
In alcune transazioni come la VA31 o la VA32, o mediante Idoc, per le tabelle VBEP e VBLB, le modifiche di tali tabelle non sono presenti nelle tabelle CHDR e CDPOS. Mentre per la transazione VA02 tali modifiche vengono riportate nelle tabelle CHDR e CDPOS perchè è attivato il seguente customing.per il Sap
Change Document Object VERKBELEG
Transazione SCDO, inserire l'oggetto VERKBELEG premere visualizza, e come si può vedere le 2 tabelle sono state già abilitate al LOG
Per attivare queste registrazioni, ho usato il FM VERKBELEG_WRITE_DOCUMENT ho effettuato le seguenti modifiche:1. Nella User exit MV45AFZZ (userexit_save_document_prepare), ho inserito il seguente codice:
DATA: lv_uname TYPE uname,
* Questo metodo mi consente di ricavare l'utenza e la transazione richiamata
CALL METHOD cl_change_document_util=>get_external_call_data
IMPORTING
ev_uname = lv_uname
ev_tcode = lv_tcode.
* Questo FM custom che ho creato mi gestisce la registrazione dei log, e gli passo tra gli altri i seguenti parametri XVBEP, contiene i valori nuovi modificati per la tabella VBEP, YVBEP contiene i valori vecchi della tabella VBEP, XVBLB, contiene i valori nuovi modificati per la tabella VBLB, YVBLB contiene i valori vecchi della tabella VBLB
CALL FUNCTION 'ZSD_LOG_RECORDING'
EXPORTING
i_uname = lv_uname
i_tcode = lv_tcode
i_vbak = vbak
i_xvbep = xvbep[]
i_yvbep = yvbep[]
i_xvblb = xvblb[]
i_yvblb = yvblb[].
2. Creato il seguente FM ZSD_LOG_RECORDING:
FUNCTION zsd_log_recording.
*"----------------------------------------------------------------------
*"*"Interfaccia locale:
*" IMPORTING
*" VALUE(I_UNAME) TYPE UNAME
*" VALUE(I_TCODE) TYPE TCODE
*" VALUE(I_VBAK) TYPE VBAK
*" VALUE(I_XVBEP) TYPE ZTT_XVBEP OPTIONAL
*" VALUE(I_YVBEP) TYPE ZTT_XVBEP OPTIONAL
*" VALUE(I_XVBLB) TYPE ZTT_XVBLB OPTIONAL
*" VALUE(I_YVBLB) TYPE ZTT_XVBLB OPTIONAL
*" EXCEPTIONS
*" NUM_SCHED_NO_CHANGE
*"----------------------------------------------------------------------
DATA: lv_labnk_old TYPE labnk,
lv_labnk_new TYPE labnk,
lv_ebalora TYPE boolean.
CLEAR: lwa_n_vbak, lwa_o_yvbak, cdtxt, lv_labnk_old, lv_labnk_new.
lv_ebalora = abap_true.
FREE: lt_xvbep[], lt_yvbep[], lt_xvblb[], lt_yvblb[].
lv_objectid = i_vbak-vbeln.
MOVE-CORRESPONDING i_vbak TO lwa_n_vbak.
MOVE-CORRESPONDING i_vbak TO lwa_o_yvbak .
IF sy-calld = 'X' AND sy-binpt = 'X'.
* Sto elaborando l'IDOC
LOOP AT i_xvblb ASSIGNING FIELD-SYMBOL(<x_xvblb>)
WHERE vbeln = i_vbak-vbeln
AND updkz = 'U'.
APPEND <x_xvblb> TO lt_xvblb[].
ENDLOOP.
lt_yvblb[] = i_yvblb[].
LOOP AT i_yvblb ASSIGNING FIELD-SYMBOL(<lfs_vblb>)
WHERE updkz = 'I'.
APPEND <lfs_vblb> TO lt_xvblb[].
ENDLOOP.
READ TABLE i_yvblb ASSIGNING FIELD-SYMBOL(<x_yvblb>) INDEX 1.
IF sy-subrc = 0 AND <x_yvblb> IS ASSIGNED.
lv_labnk_old = <x_yvblb>-labnk.
UNASSIGN <x_xvblb>.
READ TABLE i_xvblb ASSIGNING <x_xvblb>
WITH KEY vbeln = <x_yvblb>-vbeln
posnr = <x_yvblb>-posnr
abrli = <x_yvblb>-abrli
abart = <x_yvblb>-abart.
IF sy-subrc = 0 AND <x_xvblb> IS ASSIGNED.
lv_labnk_new = <x_xvblb>-labnk.
ENDIF.
ENDIF.
IF lv_labnk_new = lv_labnk_old.
lv_ebalora = abap_false.
ENDIF.
ELSE.
* Sto elaborando la transazione
LOOP AT i_yvbep ASSIGNING FIELD-SYMBOL(<y_vbep>) .
READ TABLE i_xvbep ASSIGNING FIELD-SYMBOL(<x_vbep>)
WITH KEY vbeln = <y_vbep>-vbeln
posnr = <y_vbep>-posnr
etenr = <y_vbep>-etenr
ettyp = <y_vbep>-ettyp
lfrel = <y_vbep>-lfrel.
IF sy-subrc = 0 AND <x_vbep> IS ASSIGNED.
APPEND <x_vbep> TO lt_xvbep[].
APPEND <y_vbep> TO lt_yvbep[].
ENDIF.
ENDLOOP.
LOOP AT i_xvbep ASSIGNING FIELD-SYMBOL(<lfs_vbep>)
WHERE updkz = 'I'.
APPEND <lfs_vbep> TO lt_xvbep[].
ENDLOOP.
ENDIF.
IF lv_ebalora = abap_true.
CALL FUNCTION 'VERKBELEG_WRITE_DOCUMENT' IN UPDATE TASK
EXPORTING
objectid = lv_objectid
tcode = i_tcode
utime = sy-uzeit
udate = sy-datum
username = i_uname
object_change_indicator = 'U'
n_vbak = lwa_n_vbak
o_yvbak = lwa_o_yvbak
upd_vbak = 'X'
upd_vbep = 'U'
upd_vblb = 'U'
TABLES
icdtxt_verkbeleg = cdtxt
xvbep = lt_xvbep[]
yvbep = lt_yvbep[]
xvblb = lt_xvblb[]
yvblb = lt_yvblb[].
ENDIF.
ENDFUNCTION.
SE MI CONTATTATE IN PRIVATO, PAGATE LA META' DEL PREZZO DI AMAZON, E POTETE SCEGLIERE IL FORMATO WORD o PDF.
>>> RECENSIONI DEI LIBRI su Amazon Kindle <<<