get_product_attr

in src/zretail_demo/zretail_demo_frontend/src/zcl_product_search_qic.clas.abap [0:0]


  METHOD get_product_attr.

    DATA: ls_input_bq TYPE /goog/cl_bigquery_v2=>ty_103.

    TRY.
        ls_input_bq-query  = |SELECT * from `{ io_client->gv_project_id }.epm_shop.product_info_sap`|.
        IF iv_product_ids IS NOT INITIAL.
          ls_input_bq-query = ls_input_bq-query && | WHERE PRODUCT_ID IN ( { iv_product_ids } )|.
        ENDIF.

        CALL METHOD io_client->query_jobs
          EXPORTING
            iv_p_projects_id = CONV #( io_client->gv_project_id )
            is_input         = ls_input_bq
          IMPORTING
            es_output        = DATA(ls_output).

        LOOP AT ls_output-rows REFERENCE INTO DATA(ls_rows).
          DATA(ls_product_attr) = VALUE t_product_attr( ).
          LOOP AT ls_rows->f ASSIGNING FIELD-SYMBOL(<ls_field>).
            DATA(lv_tabix_field) = sy-tabix.
            ASSIGN COMPONENT lv_tabix_field OF STRUCTURE ls_product_attr
            TO FIELD-SYMBOL(<ls_target_field>).

            IF <ls_field>-v IS BOUND AND
               <ls_target_field> IS ASSIGNED.
              <ls_target_field> = <ls_field>-v->*.
            ENDIF.

          ENDLOOP.

          INSERT ls_product_attr INTO TABLE rt_attr.
        ENDLOOP.


      CATCH /goog/cx_sdk.
    ENDTRY.