Overblog
Edit post Folge diesem Blog Administration + Create my blog
SAPManDoo - SAP Resource

Der vorliegende Blog enthält von mir im Laufe meiner beruflichen Tätigkeit als SAP-Berater zusammengetragene Informationen / Beispiel-Codings zum Themenkreis SAP, speziell FI/CO.

Replikation von bereits gebuchten Belegen per ALE

Veröffentlicht am 28. Januar 2021 von sapmandoo 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...

*&---------------------------------------------------------------------*
*& Report Y_MIGRATE_OPS
*&---------------------------------------------------------------------*
*& REPLICATE FI DOCUMENTS VIA ALE DISTRIBUTION - SAMPLE PROGRAM
*&---------------------------------------------------------------------*
REPORT y_replicate_fidocs.
DATAlt_bkpf TYPE TABLE OF bkpf,
      lt_bseg TYPE TABLE OF bseg,
      lt_bset TYPE TABLE OF bset.
DATAlt_bkpf_sel TYPE TABLE OF bkpf.
DATAlv_ownsys LIKE tbdls-logsys.
DATAlv_buk_global TYPE t001-bukrs_glob.
DATAls_bkpf TYPE bkpf.
DATAlv_prot_title TYPE lvc_title.
SELECT-OPTIONSso_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.
    CLEARlt_bkpf[].
    APPEND ls_bkpf TO lt_bkpf.

    CLEARlt_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.

Kommentiere diesen Post