Weblog
28. August 2007: RFC-Umwege
Um die Optionen einen RFC-Verbindung auszuwerten gibt es einen schönen Funktionsbaustein namens RFCDES2RFCDISPLAY. Dieser löst den Connect-String aus Tabelle RFCDES auf und bietet einem die Informationen in Struktur RFCDISPLAY zur weiteren Verarbeitung an. Leider musste ich jedoch feststellen, dass sowohl die Load-Balancing Informationen der RFC-Verbindung selbst, als auch die der dazugehörigen A-RFC Einstellungen nicht korrekt übergeben werden.
Da ich weder im SDN noch in den sonstigen weiten des Internets fündig geworden bin, möchte ich auf diese Weise meinen Work-Around mit dem Rest der Welt teilen:
ABAP:
* ----- Get RFC-Details (Options) -------------------------------------*
Form get_rfcoptions using value(dest) type RFCDES-RFCDEST
changing options type RFCDISPLAY.
* Temporary variables
Data: rfcdest like rfcdes,
Begin of it_rfcopt occurs 32,
token like rfcdes-rfcoptions,
End of it_rfcopt.
* Get RFC-Destination
Select single * from RFCDES into rfcdest where RFCDEST = dest.
* Get Details
Call function 'RFCDES2RFCDISPLAY'
exporting import_rfcdes = rfcdest
importing export_rfcdisplay = options.
* Check Load-Balancing (not properly checked in Function-Module)
Split rfcdest-rfcoptions at ',' into table it_rfcopt.
Loop at it_rfcopt where token = 'X=LB=ON'.
options-rfclbflag = true.
EndLoop.
* Check A-RFC Options (not checked in Function-Module)
Select * from RFCCHECK where rfcdest = dest.
If RFCCHECK-ARFCACTIVE = true.
options-rfcarfcopt = true.
EndIf.
EndSelect.
EndForm.
Form get_rfcoptions using value(dest) type RFCDES-RFCDEST
changing options type RFCDISPLAY.
* Temporary variables
Data: rfcdest like rfcdes,
Begin of it_rfcopt occurs 32,
token like rfcdes-rfcoptions,
End of it_rfcopt.
* Get RFC-Destination
Select single * from RFCDES into rfcdest where RFCDEST = dest.
* Get Details
Call function 'RFCDES2RFCDISPLAY'
exporting import_rfcdes = rfcdest
importing export_rfcdisplay = options.
* Check Load-Balancing (not properly checked in Function-Module)
Split rfcdest-rfcoptions at ',' into table it_rfcopt.
Loop at it_rfcopt where token = 'X=LB=ON'.
options-rfclbflag = true.
EndLoop.
* Check A-RFC Options (not checked in Function-Module)
Select * from RFCCHECK where rfcdest = dest.
If RFCCHECK-ARFCACTIVE = true.
options-rfcarfcopt = true.
EndIf.
EndSelect.
EndForm.
