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 1/3 DEL PREZZO DI AMAZON, E POTETE SCEGLIERE IL FORMATO WORD o PDF. 
>>> RECENSIONI DEI LIBRI su Amazon Kindle <<<