Ö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...
*&---------------------------------------------------------------------*
*& 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.