Ansicht
Dokumentation

CL_RSDRV_REMOTE_IPROV_SRV - Service Klasse für remote infoprovider

CL_RSDRV_REMOTE_IPROV_SRV - Service Klasse für remote infoprovider

CL_GUI_FRONTEND_SERVICES - Frontend Services   BAL_S_LOG - Application Log: Log header data  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

Funktionalität

Diese Klasse hilft bei der Implementierung eines remote Infoproviders (BAPI-Schnittstelle), der auf einer beliebigen Datenbanktabelle oder View basiert. Dabei müssen nicht alle in der Datenbanktabelle enthaltenen Felder auch Infoobjekte zugeordnet werden, es müssen auch nicht alle Infoobjekte des Providers eine Entsprechung in der Tabelle enthalten.

Verwendung:

Im Konstruktor wird eine Abbildung der Merkmale und Kennzahlen des Providers zu den Feldnamen der Datenbanktabelle sowie der Name der Tabelle mitgegeben. Nur die in der Mapping-Tabelle enthaltenen Infoobjekte werden auch beim Bau des SQL-Statements berücksichtigt.

Wenn das SQL-Statement nicht mehr selbst modifiziert werden muß, kann die Methode open_cursor verwendet werden, die das SQL Statement aufbaut.

Danach können die Daten mit der Methode fetch_pack_data gelesen und im RFC-Rückgabeformat verpackt werden. Alternativ kann dies auch einzeln geschehen, dann werden mit der Methode fetch_data die Daten abgeholt. Die Daten werden dabei in eine Tabelle mit dem Zeilentyp der Datenbank-tabelle/View des Providers gefüllt. Die Methode pack_dataverpackt die Daten dann im RFC-Format.

Alternativ dazu können die Bausteine des SQL-Statements über die Methoden build_select_list und build_where_conditions zusammengebaut werden. Diese Bausteine können dann noch verändert werden, um etwa zusätzliche Bedingungen einzufügen, die nicht von der Schnittstelle stammen.

In diesem Fall muß das Lesen der Daten mittels Open-SQL selbst implementiert werden, die Implementierung der Methoden open_cursor und fetch_data kann dann als Vorbild dienen.

In jedem Fall können die Daten vor der Rückgabe natürlich noch beliebig modifiziert werden, falls die Implementierung des Infoproviders dies erfordert.

Beziehungen

Die Klasse CL_RSDRV_EXTERNAL_IPROV_SRV enthält Services für lokale remote infoprovider ohne SID-Unterstützung.

Beispiel

FUNCTION ZRSDRV_RC1.
*"----------------------------------------------------------------------*"
*"Lokale Schnittstelle:
*"  IMPORTING
*"     VALUE(INFOCUBE) TYPE  BAPI6200-INFOCUBE
*"     VALUE(KEYDATE) TYPE  BAPI6200-KEYDATE OPTIONAL
*"  EXPORTING
*"     VALUE(RETURN) TYPE  BAPIRET2
*"  TABLES
*"      SELECTION STRUCTURE  BAPI6200SL
*"      CHARACTERISTICS STRUCTURE  BAPI6200FD
*"      KEYFIGURES STRUCTURE  BAPI6200FD
*"      DATA STRUCTURE  BAPI6100DA
*"  EXCEPTIONS
*"      COMMUNICATION_FAILURE
*"      SYSTEM_FAILURE
*"----------------------------------------------------------------------

  DATA:
    l_r_srv              TYPE ref to CL_RSDRV_REMOTE_IPROV_SRV,
    l_th_mapping         TYPE CL_RSDRV_REMOTE_IPROV_SRV=>TN_TH_IOBJ_FLD_MAPPING.

  break-point ID ZRSDRV_RC1.

  perform build_mapping_table
    changing l_th_mapping.

  create object l_r_srv
    exporting
      i_tablnm              = 'ZRSDRVRC1'
      i_th_iobj_fld_mapping = l_th_mapping.

  l_r_srv->open_cursor(
    i_t_characteristics = characteristics[]
    i_t_keyfigures      = keyfigures[]
    i_t_selection       = selection[] ).

  l_r_srv->fetch_pack_data(
    importing
      e_t_data = data[] ).

  return-type = 'S'.

ENDFUNCTION.

*&--------------------------------------------------------------------* <
*&      Form  build_mapping_table
*&--------------------------------------------------------------------* <
Form build_mapping_table
  changing
    c_th_mapping TYPE CL_RSDRV_EXTERNAL_IPROV_SRV=>TN_TH_IOBJ_FLD_MAPPING.

  DATA:
    l_s_map TYPE CL_RSDRV_EXTERNAL_IPROV_SRV=>TN_S_IOBJ_FLD_MAPPING.

  l_s_map-iobjnm = '0CALDAY'.
  l_s_map-fldnm  = 'CALDAY'.
  insert l_s_map into table c_th_mapping.

* ...do the same with other infoobjects

endform.                    "build_mapping_table

Hinweise

Im aufgeführten Beispiel sind 2 Dinge zu sehen:

Die Typen in den Bausteinen build_select_list und build_where_conditions entsprechen exakt den Datentypen des RFC-Bausteines, die als TABLES-Parameter übergeben wurden: characteristics, keyfigures und selections.

Auf Public - Typen einer Klasse kann von außerhalb der Klasse über Klassenname=>Typname zugegriffen werden.

Weiterführende Informationen






ROGBILLS - Synchronize billing plans   BAL_S_LOG - Application Log: Log header data  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 6915 Date: 20240426 Time: 235508     sap01-206 ( 77 ms )