Re-Integrate Report

Report ZFI_BILENDO_IMPORT_V2 zur Feldrückschreibung von Bilendo nach SAP.

Übersicht

EigenschaftWert
ReportZFI_BILENDO_IMPORT_V2
SAP-ModulFI-AR
Version2.1
FunktionLiest von Bilendo bereitgestellte CSV-Dateien ein und schreibt Feldwerte (Kreditlimit, Mahnstufe, etc.) in SAP-Stamm- und Bewegungsdaten zurück
IncludesZFI_BILENDO_IMPORT_F01
AbhängigkeitZCL_FI_BILENDO_ASSIST_V2 (→ 03 - Assist-Klasse)
OptionalDieser Report ist nur erforderlich wenn die bidirektionale Integration (Bilendo → SAP) aktiviert werden soll

Bilendo-seitige Dateien

Der Report verarbeitet fünf vordefinierte Dateitypen die von Bilendo auf dem SFTP-Server bereitgestellt werden:

ParameterDefault-DateinameInhaltSAP-Ziel
P_C_INFObilendo_credit_informationsBonitätsbewertungenDBRTG (Rating), Datum
P_C_LIMbilendo_credit_limitsKreditlimitsKLIMK (Limit), CTLPC (Risikoklasse)
P_SECbilendo_securitiesVersicherungsobligoVLIBB (Vers. Limit)
P_CUSTbilendo_customersKundenstammänderungenMAHNS, MANSP, MADAT, VLIBB
P_JOURNbilendo_journal_entriesBelegänderungenMANST, MANSP, MADAT (auf Belegebene)

Selektionsbild

ParameterTypDefaultBeschreibung
P_C_INFOText255bilendo_credit_informationsDateiname Bonitätsinformationen
P_C_LIMText255bilendo_credit_limitsDateiname Kreditlimits
P_SECText255bilendo_securitiesDateiname Versicherungsobligo
P_CUSTText255bilendo_customersDateiname Kundenstammänderungen
P_JOURNText255bilendo_journal_entriesDateiname Belegänderungen
P_DIRText255/usr/sap/<SID>/COMM/Bilendo_IN/Eingangsverzeichnis (automatisch gesetzt)
P_DELETECheckboxVerarbeitete Dateien nach Import löschen

Quellcode

Hauptreport – ZFI_BILENDO_IMPORT_V2

*&---------------------------------------------------------------------*
*& Report ZFI_BILENDO_IMPORT_V2
*&---------------------------------------------------------------------*
*  Owner: Bilendo GmbH
*  Short functional description: Import FI-Belegänderungen und
*  Stammdatenrückschreibung aus Bilendo-Plattform
*----------------------------------------------------------------------*

REPORT zfi_bilendo_import_v2 MESSAGE-ID zfi.

TABLES: bkpf, bseg.

DATA: gt_seltab     TYPE TABLE OF rsparams,
      gt_seltab_255 TYPE TABLE OF rsparamsl_255,
      gf_file       TYPE string,
      gf_file_kna1  TYPE string,
      gf_file_bseg  TYPE string,
      gf_file_bsid  TYPE string,
      gf_file_bsad  TYPE string,
      go_bilendo    TYPE REF TO zcl_fi_bilendo_assist_v2,
      gf_msg        TYPE string,
      gt_t001       TYPE TABLE OF t001,
      gs_t001       TYPE t001,
      gf_cust_info  TYPE text255,
      gf_cust_limit TYPE text255,
      gf_securities TYPE text255,
      gf_customers  TYPE text255,
      gf_journal    TYPE text255.

CONSTANTS: gc_dir_hed TYPE string VALUE '/..../Bilendo_IN/',       " ← DEV anpassen
           gc_dir_heq TYPE string VALUE '/..../COMM/Bilendo_IN/',  " ← QA anpassen
           gc_dir_hep TYPE string VALUE '/..../Bilendo_IN/'.       " ← PRD anpassen

PARAMETERS: p_c_info TYPE text255 DEFAULT 'bilendo_credit_informations',
            p_c_lim  TYPE text255 DEFAULT 'bilendo_credit_limits',
            p_sec    TYPE text255 DEFAULT 'bilendo_securities',
            p_cust   TYPE text255 DEFAULT 'bilendo_customers',
            p_journ  TYPE text255 DEFAULT 'bilendo_journal_entries',
            p_dir    TYPE text255,
            p_delete TYPE xfeld.

INITIALIZATION.
  CONCATENATE '/usr/sap/' sy-sysid '/COMM/Bilendo_IN/' INTO p_dir.

AT SELECTION-SCREEN OUTPUT.

START-OF-SELECTION.

  gf_cust_info  = p_c_info.
  gf_cust_limit = p_c_lim.
  gf_securities = p_sec.
  gf_customers  = p_cust.
  gf_journal    = p_journ.

  CALL FUNCTION 'RS_REFRESH_FROM_SELECTOPTIONS'
    EXPORTING
      curr_report         = sy-repid
    TABLES
      selection_table     = gt_seltab
      selection_table_255 = gt_seltab_255.

  CREATE OBJECT go_bilendo
    EXPORTING
      it_seltab = gt_seltab_255.

  " 1. Dateien im Verzeichnis suchen
  CALL METHOD go_bilendo->get_files.

  " 2. CSV-Dateien einlesen und parsen
  CALL METHOD go_bilendo->read_csv( ).

  " 3. Kreditlimit und Risikokategorie ändern
  DATA: ls_credit_info  TYPE go_bilendo->ty_s_credit_info,
        ls_credit_limit TYPE go_bilendo->ty_s_credit_limit,
        ls_customer     TYPE go_bilendo->ty_s_customer,
        ls_securities   TYPE go_bilendo->ty_s_securities,
        ls_journal      TYPE go_bilendo->ty_s_journal.

  CALL METHOD go_bilendo->credit_limit_change
    EXPORTING
      is_credit_info  = ls_credit_info
      is_credit_limit = ls_credit_limit.

  " 4. Kundenstammänderungen durchführen
  CALL METHOD go_bilendo->customer_change.

  " 5. Belegänderungen durchführen
  CALL METHOD go_bilendo->doc_change
    EXPORTING
      is_journal = ls_journal.

  " 6. Optional: Verarbeitete Dateien löschen
  IF p_delete = 'X'.
    go_bilendo->delete_files( ).
  ENDIF.

  INCLUDE zfi_bilendo_import_f01.

Include F01 – Dateinamen-Zusammenbau

*----------------------------------------------------------------------*
*  Include ZFI_BILENDO_IMPORT_F01
*----------------------------------------------------------------------*
*  Baut den vollständigen Pfad für die Eingangsdateien zusammen,
*  basierend auf System-ID (sy-sysid).
*----------------------------------------------------------------------*
FORM get_filenames
                CHANGING pf_file TYPE text255.

  CONDENSE pf_file.
  CASE sy-sysid.
    WHEN 'HED'.
      CONCATENATE gc_dir_hed pf_file INTO pf_file.
    WHEN 'HEQ'.
      CONCATENATE gc_dir_heq pf_file INTO pf_file.
    WHEN 'HEP'.
      CONCATENATE gc_dir_hep pf_file INTO pf_file.
    WHEN OTHERS.
  ENDCASE.

ENDFORM.

Verarbeitungsablauf

flowchart TD
    START[Report Start] --> FILES[get_files\nDateien im Verzeichnis suchen]
    FILES --> CSV[read_csv\nCSV-Dateien einlesen und parsen]
    CSV --> CREDIT[credit_limit_change\nKreditlimit + Risikokategorie]
    CREDIT --> CUST[customer_change\nMahnstufe, Mahnsperre, Vers. Obligo]
    CUST --> DOC[doc_change\nMahnstufe/-datum auf Belegebene]
    DOC --> DEL{P_DELETE = X?}
    DEL -->|Ja| DELETE[delete_files\nDateien bereinigen]
    DEL -->|Nein| DONE[Ende]
    DELETE --> DONE

Anpassungshinweise

Verzeichnispfade

Die Pfade müssen an die Systemlandschaft angepasst werden:

" Im Report:
INITIALIZATION.
  CONCATENATE '/usr/sap/' sy-sysid '/COMM/Bilendo_IN/' INTO p_dir.

" Im F01-Include:
CONSTANTS: gc_dir_hed TYPE string VALUE '/usr/sap/DEV/Bilendo_IN/',   " ← anpassen
           gc_dir_heq TYPE string VALUE '/usr/sap/QA/COMM/Bilendo_IN/', " ← anpassen
           gc_dir_hep TYPE string VALUE '/usr/sap/PRD/Bilendo_IN/'.   " ← anpassen

System-IDs

Die WHEN-Zweige in F01 verwenden die System-IDs HED/HEQ/HEP. Diese müssen an die tatsächlichen System-IDs angepasst werden.

Berechtigungen für Rückschreibung

Die Methoden credit_limit_change, customer_change und doc_change verwenden BAPIs bzw. direkte Tabellenänderungen. Der ausführende Benutzer (SM36-Jobbenutzer) benötigt:

BerechtigungsobjektBeschreibung
F_KNA1_BEDDebitorenstamm ändern
F_KNB1_BEDDebitorenstamm (BuKrs) ändern
F_BKPF_BUKBuchungskreis-Zugriff FI
S_DATASETDateizugriff Applikationsserver

Fehlerbehandlung

Die Assist-Klasse enthält eine send_email-Methode die bei Fehlern während der Rückschreibung eine Benachrichtigung versendet. Dies geschieht automatisch bei:

Die E-Mail-Konfiguration erfolgt innerhalb der Klasse (→ 03 - Assist-Klasse, Methode send_email).