Ansicht
Dokumentation
CL_RSDRV_REMOTE_IPROV_SRV - Service Klasse für remote infoprovider
CL_GUI_FRONTEND_SERVICES - Frontend Services BAL_S_LOG - Application Log: Log header dataDiese Dokumentation steht unter dem Copyright der SAP AG.
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 )