ABAP Firebase REST API Helper Library
Install abapGit, then clone the repository in a package (e.g. $ABAPFIRE).
Install Root CA from Google Internet Authority G2 using transaction STRUST in SSL identity ANONYMOUS.
Program ZABAPFIRE_DEMO provides usage examples.
To initialize the library, just pass to it your firebase configuration:
DATA:
firebase TYPE REF TO zabapfire_cl_firebase,
ls_config TYPE zabapfire_cl_firebase=>ty_firebase_config.
ls_config-apikey = '[your apikey]'.
ls_config-authdomain = '[your authdomain]'.
ls_config-databaseurl = '[your databaseurl]'.
ls_config-messagingsenderid = '[your messagingsenderid]'.
ls_config-projectid = '[your projectid]'.
ls_config-storagebucket = '[your storagebucket]'.
firebase = zabapfire_cl_firebase=>initialize_app( ls_config ).
The library support only email and password authentication:
TRY.
firebase->auth->authenticate_with_email(
EXPORTING
email = p_email
password = p_pass ).
CATCH zcx_abapfire_firebase INTO lcx_firebase.
WRITE lcx_firebase->get_text( ).
ENDTRY.
TRY.
ls_parameters-order_by = 'carrid'.
ls_parameters-equal_to = 'AC'.
firebase->db->get(
EXPORTING
path = p_path
parameters = ls_parameters
IMPORTING
child = lt_abap ).
CATCH zcx_abapfire_firebase INTO lcx_firebase.
MESSAGE i000(zabapfire_msg) WITH lcx_firebase->get_text( )
DISPLAY LIKE 'E'.
EXIT.
ENDTRY.
If your target ABAP structure contains a column with name $KEY, firebase generated unique keys are saved in this column:
TYPES:
BEGIN OF ty_abap,
$key TYPE string.
INCLUDE STRUCTURE sflight.
TYPES:
END OF ty_abap
For data retrieving, following query parameters are supported:
Refer to official firebase documentation for more info.
Writes data to firebase Database location. This will overwrite any data at this location and all child locations.
SELECT * FROM sflight
INTO CORRESPONDING FIELDS OF TABLE lt_abap.
TRY.
firebase->db->set(
EXPORTING
path = p_path
child = lt_abap ).
CATCH zcx_abapfire_firebase INTO lcx_firebase.
MESSAGE i000(zabapfire_msg) WITH lcx_firebase->get_text( )
DISPLAY LIKE 'E'.
EXIT.
ENDTRY.
As opposed to the set( ) method, update( ) can be use to selectively update only the referenced properties at the current location (instead of replacing all the child properties at the current location).
TRY.
firebase->db->update(
EXPORTING
path = p_path
child = lt_abap ).
CATCH zcx_abapfire_firebase INTO lcx_firebase.
MESSAGE i000(zabapfire_msg) WITH lcx_firebase->get_text( )
DISPLAY LIKE 'E'.
EXIT.
ENDTRY.
Generates a new child location using a unique key and return the generated unique key.
TRY.
LOOP AT lt_abap ASSIGNING <ls_abap>.
<ls_abap>-$key = firebase->db->push(
EXPORTING
path = p_path
child = <ls_abap> ).
ENDLOOP.
CATCH zcx_abapfire_firebase INTO lcx_firebase.
MESSAGE i000(zabapfire_msg) WITH lcx_firebase->get_text( )
DISPLAY LIKE 'E'.
EXIT.
ENDTRY.
Removes the data at this firebase Database location.
TRY.
firebase->db->remove(
EXPORTING
path = p_path ).
CATCH zcx_abapfire_firebase INTO lcx_firebase.
MESSAGE i000(zabapfire_msg) WITH lcx_firebase->get_text( )
DISPLAY LIKE 'E'.
EXIT.
ENDTRY.