SAP_ABAP_FI

ST04-Query Version2 본문

SAP_ABAP_Source

ST04-Query Version2

abapjun 2021. 9. 27. 21:14
728x90
반응형

기존 화면 동일

-> 쿼리 부분만 상이

  DATAlr_data  TYPE REF TO data,
        lr_str   TYPE REF TO cl_abap_structdescr,
        lr_table TYPE REF TO cl_abap_tabledescr.
  DATAlv_string TYPE string.
  FIELD-SYMBOLS:<fs_tab> TYPE STANDARD TABLE.
  TRY.
      DATA(resultNEW cl_sql_statement)->execute_querypv_sql ).
    CATCH cx_sql_exception INTO DATA(lr_root).
      lv_string lr_root->get_text).
      PERFORM error_msg_disp USING lv_string.
      EXIT.
    CATCH cx_parameter_invalid INTO DATA(lr_param).
      lv_string lr_param->get_text).
      PERFORM error_msg_disp USING lv_string.
      EXIT.
  ENDTRY.
  DATA(lt_metaresult->get_metadata).
  DATA(lr_metaresult->get_struct_refEXPORTING md_tab lt_meta
                                                    p_strict abap_false
                                        ).
  lr_str ?= cl_abap_typedescr=>describe_by_data_reflr_meta ).
  lr_table cl_abap_tabledescr=>create(
                                         p_line_type lr_str
                                         p_table_kind cl_abap_tabledescr=>tablekind_std
                                       ).
  LOOP AT lr_str->components INTO DATA(ls_component).

    APPEND VALUE #(
                    fieldname ls_component-name
                    datatype  ls_component-type_kind
                    inttype   ls_component-type_kind
                    intlen    ls_component-length
                    decimals  ls_component-decimals
                    coltext   ls_component-name
                    col_opt   'A'
                    just      COND #WHEN ls_component-type_kind 'g' THEN 'L'
                                                                    ELSE 'R'
                                       )
                  TO gt_fcat.

  ENDLOOP.
  CREATE DATA lr_data TYPE HANDLE lr_table.

  CHECK lr_data IS BOUND.

  TRY.
      result->set_param_tableEXPORTING itab_ref lr_data ).
    CATCH cx_parameter_invalid INTO lr_param.
  ENDTRY.
  TRY.
*----> DB 데이터 추출
      result->next_package).
    CATCH cx_sql_exception INTO lr_root.
      lv_string lr_root->get_text).
      PERFORM error_msg_disp USING lv_string.
      EXIT.
    CATCH cx_parameter_invalid INTO lr_param.
      lv_string lr_param->get_text).
      PERFORM error_msg_disp USING lv_string.
      EXIT.
  ENDTRY.
  ASSIGN lr_data->TO <fs_tab>.
  result->close).
  CHECK <fs_tab> IS ASSIGNED.
  gr_grid->set_table_for_first_displayCHANGING
                                           it_outtab       <fs_tab>
                                           it_fieldcatalog gt_fcat
                                       ).

  CLEARgt_fcat.

728x90
반응형

'SAP_ABAP_Source' 카테고리의 다른 글

ABAP SelectionScreen/Event/응용  (0) 2021.10.10
abap 문법/sql  (0) 2021.10.09
ABAP_DOMAIN_FIELD값 가져오기  (0) 2021.09.07
ST04-Query부분 발췌  (0) 2021.09.07
동적 InterTable 만들기  (0) 2021.09.07