Overblog Alle Blogs
Edit post Folge diesem Blog Administration + Create my blog
MENU
Werbung
SAPManDoo - SAP Resource

Replikation von bereits gebuchten Belegen per ALE

28. Januar 2021 , Geschrieben von sapmandoo Veröffentlicht in #Basis-Entwicklung allg., #FI, #ALE

Öfter habe ich in letzter Zeit in einschlägigen Foren Anfragen bezüglich einer Möglichkeit gelesen, bereits gebuchte Belege per ALE in ein anderes System zu replizieren. Ohne weiteres ist dies ja nur für neu gebuchte Belege nach der Einrichtung des entsprechenden ALE-Verteilungsszenarios möglich. SAP ruft hierzu im Standard-Ablauf den Funktionsbaustein FI_IDOC_CREATE_FIDCC2 auf. 

Mithilfe eines kundeneigenen Programms kann dieser bei Bedarf auch verwendet werden, um Belege, die vor Einrichtung des ALE-Szenarios gebucht wurden, in das Ziel-System zu replizieren.

Tatsächlich ist eine 1:1-Verteilung vergleichsweise einfach zu programmieren, siehe nachfolgendes Coding-Beispiel...

Werbung

*&---------------------------------------------------------------------*
*& Report Y_MIGRATE_OPS
*&---------------------------------------------------------------------*
*& REPLICATE FI DOCUMENTS VIA ALE DISTRIBUTION - SAMPLE PROGRAM
*&---------------------------------------------------------------------*
REPORT y_replicate_fidocs.
DATA: lt_bkpf TYPE TABLE OF bkpf,
      lt_bseg TYPE TABLE OF bseg,
      lt_bset TYPE TABLE OF bset.
DATA: lt_bkpf_sel TYPE TABLE OF bkpf.
DATA: lv_ownsys LIKE tbdls-logsys.
DATA: lv_buk_global TYPE t001-bukrs_glob.
DATA: ls_bkpf TYPE bkpf.
DATA: lv_prot_title TYPE lvc_title.
SELECT-OPTIONS: so_bukrs FOR ls_bkpf-bukrs,
                so_belnr FOR ls_bkpf-belnr,
                so_gjahr FOR ls_bkpf-gjahr.
PARAMETERS:     pa_logsy LIKE tbd03-rcvsystem OBLIGATORY.
PARAMETERS:     pa_xtest AS CHECKBOX DEFAULT 'X'.

START-OF-SELECTION.
  CALL FUNCTION 'OWN_LOGICAL_SYSTEM_GET'
    IMPORTING
      own_logical_system = lv_ownsys.

 

  SELECT * FROM bkpf INTO TABLE lt_bkpf_sel
      WHERE bukrs IN so_bukrs
        AND belnr IN so_belnr
        AND gjahr IN so_gjahr.

  LOOP AT lt_bkpf_sel INTO ls_bkpf.
    CLEAR: lt_bkpf[].
    APPEND ls_bkpf TO lt_bkpf.

    CLEAR: lt_bseg[], lt_bset[].
    SELECT * FROM bseg INTO TABLE lt_bseg
        WHERE belnr = ls_bkpf-belnr
          AND bukrs = ls_bkpf-bukrs
          AND gjahr = ls_bkpf-gjahr.
    SELECT * FROM bset INTO TABLE lt_bset
        WHERE belnr = ls_bkpf-belnr
          AND bukrs = ls_bkpf-bukrs
          AND gjahr = ls_bkpf-gjahr.

    SELECT SINGLE bukrs_glob FROM t001 INTO lv_buk_global
        WHERE bukrs = ls_bkpf-bukrs.

    IF pa_xtest IS INITIAL.

      SET UPDATE TASK LOCAL.
      CALL FUNCTION 'FI_IDOC_CREATE_FIDCC2'
        EXPORTING
          i_sendsys    = lv_ownsys
          i_recsys     = pa_logsy
          i_bukrs_glob = lv_buk_global
        TABLES
          t_bkpf       = lt_bkpf
          t_bseg       = lt_bseg
          t_bset       = lt_bset
        EXCEPTIONS
          error        = 1
          OTHERS       = 2.

      COMMIT WORK AND WAIT.

    ENDIF.

  ENDLOOP.

  IF pa_xtest = abap_true.
    lv_prot_title = 'TEST RUN - List of documents to be replicated - NO IDOCS GENERATED!!!'.
  ELSE.
    lv_prot_title = 'PROD RUN - List of replicated documents - IDOCS WERE GENERATED!!!'.
  ENDIF.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_structure_name = 'BKPF'
      i_grid_title     = lv_prot_title
    TABLES
      t_outtab         = lt_bkpf_sel.

Sofern Mappings / Veränderungen einzelner Datenfelder erforderlich sind, müssten diese natürlich noch in das o.g. Coding integriert werden.

Diesen Post teilen
Repost0
Um über die neuesten Artikel informiert zu werden, abonnieren:
Kommentiere diesen Post