SAP_ABAP_FI
ST04-Query부분 발췌 본문
TOP
CONSTANTS: gc_cont_name TYPE c LENGTH 255 VALUE 'CUSTOM_CONT'.
FIELD-SYMBOLS: <fs> TYPE STANDARD TABLE.
DATA: gr_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.
DATA: gv_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_container( row = 1
column = 1 ).
gr_bot = gr_splitter->get_container( row = 2
column = 1 ).
CREATE OBJECT gr_text
EXPORTING
parent = gr_top
wordwrap_mode = 2
wordwrap_position = 255
wordwrap_to_linebreak_mode = 1.
gr_text->set_font_fixed( EXPORTING
mode = cl_gui_textedit=>true
).
gr_text->set_autoindent_mode( EXPORTING
auto_indent = cl_gui_textedit=>true
).
CREATE OBJECT gr_grid
EXPORTING
i_parent = gr_bot.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form EXEUTE_SQL
*&---------------------------------------------------------------------*
FORM exeute_sql .
DATA: lv_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_ref( system_id = sy-sysid ).
CATCH cx_db6_sys.
TRY.
lr_sys ?= cl_db6_sys=>new_sys_ref( system_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.
DATA: lt_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.
DATA: lt_exec_protocol TYPE db6_editor_list,
lr_root TYPE REF TO cx_root,
lr_db6_script TYPE REF TO cx_db6_script.
DATA: lr_data TYPE REF TO data,
lr_str TYPE REF TO cl_abap_structdescr,
lr_script_ref TYPE REF TO cl_db6_script.
DATA(lr_nav) = cl_db6_tree_navigator=>create( system_id = pr_sys->sys_data-sysid ).
DATA(ls_ctrl) = lr_nav->get_system_data( ).
lr_nav->free( ).FREE lr_nav.
TRY.
lr_script_ref = cl_db6_script=>new_script_ref( sys_ref = pr_sys ).
CATCH cx_db6_script INTO lr_root.
ENDTRY.
DATA(lr_sql_executor) = cl_dba_sql_executor=>get_instance( pr_sys ).
lr_script_ref->set_clp_commands( pt_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_dyn( EXPORTING
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_msg) = lr_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->count( ) > 0.
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>.
CLEAR: gt_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_display( CHANGING
it_outtab = <fs>
it_fieldcatalog = gt_fcat
).
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form ERROR_MSG_DISP
*&---------------------------------------------------------------------*
FORM error_msg_disp USING pv_msg TYPE string.
DATA: lr_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_mode( cl_gui_textedit=>true ).
lr_textedit->set_font_fixed( cl_gui_textedit=>true ).
lr_textedit->set_focus( lr_textedit ).
* APPEND pt_script_protocol TO lt_string.
lr_textedit->set_textstream( pv_msg ).
CREATE OBJECT lr_event.
SET HANDLER lr_event->on_close FOR lr_container.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form SCREEN_CONTROL
*&---------------------------------------------------------------------*
FORM screen_control .
ENDFORM.
실행화면
'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 |