SAP_ABAP_FI

ST04-Query부분 발췌 본문

SAP_ABAP_Source

ST04-Query부분 발췌

abapjun 2021. 9. 7. 22:47
728x90
반응형

TOP

CONSTANTSgc_cont_name TYPE LENGTH 255 VALUE 'CUSTOM_CONT'.
FIELD-SYMBOLS<fs> TYPE STANDARD TABLE.
DATAgr_container TYPE REF TO cl_gui_custom_container,
      gr_splitter  TYPE REF TO cl_gui_splitter_container,
      gr_top       TYPE REF TO cl_gui_container,
      gr_bot       TYPE REF TO cl_gui_container,
      gr_text      TYPE REF TO cl_gui_textedit,
      gr_grid      TYPE REF TO cl_gui_alv_grid,
      gt_fcat      TYPE lvc_t_fcat.
DATAgv_ok_code TYPE sy-ucomm.

 

SCR

*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
  SET PF-STATUS 'S0100'.
  SET TITLEBAR 'T0100'.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module BUILD_ALV OUTPUT
*&---------------------------------------------------------------------*
MODULE build_alv OUTPUT.
  IF gr_container IS NOT BOUND.
    PERFORM create_object.
  ENDIF.

ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  EXIT  INPUT
*&---------------------------------------------------------------------*
MODULE exit INPUT.
  CASE gv_ok_code.
    WHEN 'BACK' OR 'EXIT' OR 'CANC'.
      LEAVE TO SCREEN 0.
  ENDCASE.
ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
  CASE gv_ok_code.
    WHEN 'EXCU'.
      PERFORM exeute_sql.
    WHEN 'FULL'.
      PERFORM screen_control.
  ENDCASE.

ENDMODULE.

 

F01

*&---------------------------------------------------------------------*
*& Form CALL_SCREEN
*&---------------------------------------------------------------------*
FORM call_screen .
  CALL SCREEN 100.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form CREATE_OBJECT
*&---------------------------------------------------------------------*
FORM create_object .
  CREATE OBJECT gr_container
    EXPORTING
      container_name gc_cont_name.

  CREATE OBJECT gr_splitter
    EXPORTING
      parent  gr_container
      rows    2
      columns 1.

  gr_top gr_splitter->get_containerrow 1
                                       column ).

  gr_bot gr_splitter->get_containerrow 2
                                       column ).

  CREATE OBJECT gr_text
    EXPORTING
      parent                     gr_top
      wordwrap_mode              2
      wordwrap_position          255
      wordwrap_to_linebreak_mode 1.

  gr_text->set_font_fixedEXPORTING
                             mode cl_gui_textedit=>true
                          ).

  gr_text->set_autoindent_modeEXPORTING
                                  auto_indent cl_gui_textedit=>true
                               ).

  CREATE OBJECT gr_grid
    EXPORTING
      i_parent gr_bot.


ENDFORM.
*&---------------------------------------------------------------------*
*& Form EXEUTE_SQL
*&---------------------------------------------------------------------*
FORM exeute_sql .
  DATAlv_sql          TYPE string,
        lr_msg          TYPE REF TO if_reca_message_list,
        lr_sys          TYPE REF TO cl_db6_sys,
        lt_full_command TYPE db6_editor_list.

  lr_msg cf_reca_message_list=>create).

  TRY.
      lr_sys ?= cl_db6_sys=>get_sys_refsystem_id sy-sysid ).
    CATCH cx_db6_sys.
      TRY.
          lr_sys ?= cl_db6_sys=>new_sys_refsystem_id sy-sysid ).
        CATCH cx_db6_sys INTO DATA(lr_root).
      ENDTRY.
  ENDTRY.

  PERFORM get_sql_statement CHANGING lv_sql
                                     lt_full_command.

  PERFORM excute_sql USING lr_sys
                           lv_sql
                           lt_full_command
                  CHANGING lr_msg.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form GET_SQL_STATEMENT
*&---------------------------------------------------------------------*
FORM get_sql_statement  CHANGING pv_sql TYPE string
                                 pt_full_command TYPE db6_editor_list.

  DATAlt_input TYPE db6_editor_list.

  CALL METHOD gr_text->get_text_as_r3table
    IMPORTING
      table lt_input.

  LOOP AT lt_input INTO DATA(ls_input).
    APPEND ls_input TO pt_full_command.
    CONCATENATE pv_sql ls_input INTO pv_sql SEPARATED BY space.
  ENDLOOP.


ENDFORM.
*&---------------------------------------------------------------------*
*& Form EXCUTE_SQL
*&---------------------------------------------------------------------*
FORM excute_sql  USING    pr_sys TYPE REF TO cl_db6_sys
                          pv_sql TYPE string
                          pt_full_command TYPE db6_editor_list
                 CHANGING pr_msg TYPE REF TO if_reca_message_list.

  DATAlt_exec_protocol TYPE db6_editor_list,
        lr_root          TYPE REF TO cx_root,
        lr_db6_script    TYPE REF TO cx_db6_script.

  DATAlr_data       TYPE REF TO data,
        lr_str        TYPE REF TO cl_abap_structdescr,
        lr_script_ref TYPE REF TO cl_db6_script.

  DATA(lr_navcl_db6_tree_navigator=>createsystem_id pr_sys->sys_data-sysid ).
  DATA(ls_ctrllr_nav->get_system_data).
  lr_nav->free).FREE lr_nav.
  TRY.
      lr_script_ref cl_db6_script=>new_script_refsys_ref pr_sys ).
    CATCH cx_db6_script INTO lr_root.
  ENDTRY.

  DATA(lr_sql_executorcl_dba_sql_executor=>get_instancepr_sys ).

  lr_script_ref->set_clp_commandspt_full_command ).

*  TRY.
*      lt_exec_protocol = lr_script_ref->execute( partition        = ls_ctrl-partitn
*                                                 stop_after_error = abap_true
*                                                 hide_terminate   = abap_true
*                                                 return_runtime   = abap_false
*                                               ).
*    CATCH cx_db6_script INTO lr_db6_script.
*      PERFORM error_msg_disp USING lr_db6_script->script_protocol.
*  ENDTRY.

  TRY .
      lr_sql_executor->exec_query_dynEXPORTING
                                        im_statement pv_sql
                                        im_system    pr_sys
                                        im_check     abap_true
                                       IMPORTING
                                         ex_structdescr lr_str
                                         ex_result_ref  lr_data
                                     ).
    CATCH cx_dba_root INTO DATA(lr_cxroot).
*      cx_dba_root=>handle_exception_class( lr_cxroot ).
      DATA(lv_msglr_cxroot->previous->get_text).
      PERFORM error_msg_disp USING lv_msg.
*      pr_msg->add( id_msgty = 'E'
*                   id_msgid = '00'
*                   id_msgno = '000'
*                   id_msgv1  = lv_msg
*                   id_msgv2  = '2'
*                   id_msgv3  = '3'
*                   id_msgv4  = '4'
*
*                 ).


  ENDTRY.

  IF pr_msg->count0.
    CALL FUNCTION 'RECA_GUI_MSGLIST_POPUP'
      EXPORTING
        id_title             'TITLE'
        io_msglist           pr_msg
        if_new_external_mode 'X'.

  ELSE.
    CHECK lr_data IS  BOUND.

    UNASSIGN<fs>.
    CLEARgt_fcat.
    ASSIGN lr_data->TO <fs>.

    LOOP AT lr_str->components INTO DATA(ls_str).

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


    ENDLOOP.

    gr_grid->set_table_for_first_displayCHANGING
                                             it_outtab       <fs>
                                             it_fieldcatalog gt_fcat
                                         ).

  ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form ERROR_MSG_DISP
*&---------------------------------------------------------------------*
FORM error_msg_disp  USING    pv_msg TYPE string.
  DATAlr_container TYPE REF TO cl_gui_dialogbox_container,
        lr_textedit  TYPE REF TO cl_gui_textedit,
        lr_event     TYPE REF TO cl_dialogbox_container_handler,
        lt_string    TYPE TABLE OF string.

  CREATE OBJECT lr_container
    EXPORTING
      top      20
      left     250
      lifetime cl_gui_control=>lifetime_imode
      caption  'Error Msg'
      width    500
      height   250.

  CREATE OBJECT lr_textedit
    EXPORTING
      parent                     lr_container
      wordwrap_mode              cl_gui_textedit=>wordwrap_at_fixed_position
      wordwrap_position          255
      wordwrap_to_linebreak_mode cl_gui_textedit=>true.


  lr_textedit->set_readonly_modecl_gui_textedit=>true ).
  lr_textedit->set_font_fixedcl_gui_textedit=>true ).
  lr_textedit->set_focuslr_textedit ).


*  APPEND pt_script_protocol TO lt_string.

  lr_textedit->set_textstreampv_msg ).

  CREATE OBJECT lr_event.
  SET HANDLER lr_event->on_close FOR lr_container.


ENDFORM.
*&---------------------------------------------------------------------*
*& Form SCREEN_CONTROL
*&---------------------------------------------------------------------*
FORM screen_control .
ENDFORM.

 

실행화면

728x90
반응형

'SAP_ABAP_Source' 카테고리의 다른 글

ST04-Query Version2  (0) 2021.09.27
ABAP_DOMAIN_FIELD값 가져오기  (0) 2021.09.07
동적 InterTable 만들기  (0) 2021.09.07
Table _INFO 가져오기  (0) 2021.09.07
SAP/TABLE Dynamic Where / File Download  (0) 2021.01.03