Last active
September 27, 2023 11:26
-
-
Save fanian/5e6ebd0762cb76cdbaeda71065af3391 to your computer and use it in GitHub Desktop.
ABAP MVC
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
*&---------------------------------------------------------------------* | |
*& Report YGDF_REPORT_MVC | |
*& | |
*&---------------------------------------------------------------------* | |
*& | |
*& | |
*&---------------------------------------------------------------------* | |
REPORT YGDF_REPORT_MVC. | |
INCLUDE: ygdf_report_mvc_scr, | |
ygdf_report_mvc_model, | |
ygdf_report_mvc_view, | |
ygdf_report_mvc_controller | |
. | |
DATA: gc_controller TYPE REF TO report_controller. | |
INITIALIZATION. | |
CREATE OBJECT gc_controller. | |
gc_controller->initialization( ). | |
AT SELECTION-SCREEN OUTPUT. | |
gc_controller->selection_screen_o( ). | |
AT SELECTION-SCREEN. | |
gc_controller->selection_screen( ). | |
START-OF-SELECTION. | |
gc_controller->start_of_selection( ). | |
END-OF-SELECTION. | |
gc_controller->end_of_selection( ). | |
TABLES: ytsd_cab_pedido. | |
SELECTION-SCREEN BEGIN OF SCREEN 110 AS SUBSCREEN. " Filtros | |
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001. | |
SELECT-OPTIONS: fil_num FOR ytsd_cab_pedido-numero_pedido, | |
fil_data FOR ytsd_cab_pedido-data_pedido. | |
SELECTION-SCREEN END OF BLOCK b1. | |
SELECTION-SCREEN END OF SCREEN 110. | |
SELECTION-SCREEN BEGIN OF SCREEN 120 AS SUBSCREEN. " Modificação | |
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-001. | |
PARAMETERS: mod_num TYPE ytsd_cab_pedido-numero_pedido, | |
mod_data TYPE ytsd_cab_pedido-data_pedido, | |
mod_canc AS CHECKBOX DEFAULT ''. | |
SELECTION-SCREEN END OF BLOCK b2. | |
SELECTION-SCREEN PUSHBUTTON 1(15) mod_btn USER-COMMAND modif_reg. | |
SELECTION-SCREEN END OF SCREEN 120. | |
SELECTION-SCREEN BEGIN OF TABBED BLOCK tab_screen FOR 8 lines. | |
SELECTION-SCREEN TAB (20) filt USER-COMMAND filter_evt DEFAULT SCREEN 110. | |
SELECTION-SCREEN TAB (20) modi USER-COMMAND modify_evt DEFAULT SCREEN 120. | |
SELECTION-SCREEN END OF BLOCK tab_screen. | |
CLASS report_controller DEFINITION. | |
PUBLIC SECTION. | |
DATA: view TYPE REF TO report_view, | |
model TYPE REF TO report_model. | |
METHODS: constructor, | |
initialization, | |
selection_screen_o, | |
selection_screen, | |
start_of_selection, | |
end_of_selection. | |
ENDCLASS. | |
CLASS report_controller IMPLEMENTATION. | |
METHOD constructor. | |
CREATE OBJECT view. | |
CREATE OBJECT model. | |
ENDMETHOD. | |
METHOD initialization. | |
me->view->initialization( ). | |
ENDMETHOD. | |
METHOD selection_screen_o. | |
me->view->selection_screen_o( ). | |
ENDMETHOD. | |
METHOD selection_screen. | |
me->view->selection_screen( model ). | |
ENDMETHOD. | |
METHOD start_of_selection. | |
me->model->start_of_selection( ). | |
ENDMETHOD. | |
METHOD end_of_selection. | |
me->view->end_of_selection( me->model ). | |
ENDMETHOD. | |
ENDCLASS. | |
CLASS report_model DEFINITION. | |
PUBLIC SECTION. | |
DATA: t_cab_pedido TYPE TABLE OF ytsd_cab_pedido, | |
s_cab_pedido TYPE ytsd_cab_pedido. | |
METHODS: start_of_selection, | |
get_cab_pedido, | |
init_modify_ped, | |
validate_screen_modify, | |
modify_reg. | |
ENDCLASS. | |
CLASS report_model IMPLEMENTATION. | |
METHOD start_of_selection. | |
me->get_cab_pedido( ). | |
ENDMETHOD. | |
METHOD get_cab_pedido. | |
* DO 5 TIMES. | |
* s_cab_pedido-numero_pedido = sy-index. | |
* s_cab_pedido-data_pedido = sy-datum. | |
* s_cab_pedido-cancelado = 'X'. | |
* MODIFY ytsd_cab_pedido FROM s_cab_pedido. | |
* ENDDO. | |
SELECT * | |
FROM ytsd_cab_pedido | |
INTO TABLE t_cab_pedido | |
WHERE numero_pedido IN fil_num | |
AND data_pedido IN fil_data. | |
ENDMETHOD. | |
METHOD init_modify_ped. | |
me->validate_screen_modify( ). | |
me->modify_reg( ). | |
ENDMETHOD. | |
METHOD validate_screen_modify. | |
IF mod_num IS INITIAL. | |
MESSAGE 'Numero Pedido obrigatório' TYPE 'E'. | |
ENDIF. | |
IF mod_data IS INITIAL. | |
MESSAGE 'Data Pedido obrigatória' TYPE 'E'. | |
ENDIF. | |
ENDMETHOD. | |
METHOD modify_reg. | |
DATA: pedido_cab TYPE ytsd_cab_pedido, | |
msg TYPE string. | |
pedido_cab-numero_pedido = mod_num. | |
pedido_cab-data_pedido = mod_data. | |
pedido_cab-cancelado = mod_canc. | |
MODIFY ytsd_cab_pedido FROM pedido_cab. | |
msg = mod_num. | |
CONCATENATE 'Pedido' msg 'salvo com sucesso' INTO msg SEPARATED BY space. | |
MESSAGE msg TYPE 'S'. | |
ENDMETHOD. | |
ENDCLASS. | |
CLASS report_view DEFINITION. | |
PUBLIC SECTION. | |
DATA: salv_alv TYPE REF TO cl_salv_table. | |
METHODS: initialization, | |
selection_screen_o, | |
selection_screen IMPORTING model TYPE REF TO report_model, | |
end_of_selection IMPORTING model TYPE REF TO report_model, | |
display_alv IMPORTING model TYPE REF TO report_model, | |
set_toolbar, | |
set_fieldcat, | |
set_text IMPORTING | |
name TYPE lvc_fname | |
short TYPE scrtext_s | |
long TYPE scrtext_l | |
columns TYPE REF TO cl_salv_columns_table | |
. | |
ENDCLASS. | |
CLASS report_view IMPLEMENTATION. | |
METHOD initialization. | |
filt = '@4G@ Filtros'. | |
modi = '@17@ Criação/Modificação'. | |
mod_btn = '@2L@ Salvar'. | |
ENDMETHOD. | |
METHOD selection_screen_o. | |
ENDMETHOD. | |
METHOD selection_screen. | |
CASE sy-ucomm. | |
WHEN 'MODIF_REG'. | |
model->init_modify_ped( ). | |
WHEN OTHERS. | |
ENDCASE. | |
ENDMETHOD. | |
METHOD end_of_selection. | |
me->display_alv( model ). | |
ENDMETHOD. | |
METHOD display_alv. | |
cl_salv_table=>factory( | |
IMPORTING r_salv_table = salv_alv | |
CHANGING t_table = model->t_cab_pedido | |
). | |
me->set_toolbar( ). | |
me->set_fieldcat( ). | |
salv_alv->display( ). | |
ENDMETHOD. | |
METHOD set_toolbar. | |
DATA: functions TYPE REF TO cl_salv_functions_list. | |
functions = salv_alv->get_functions( ). | |
functions->set_all( ). | |
ENDMETHOD. | |
METHOD set_fieldcat. | |
DATA: columns TYPE REF TO cl_salv_columns_table, | |
column TYPE REF TO cl_salv_column. | |
columns = salv_alv->get_columns( ). | |
* columns->set_optimize( abap_true ). | |
column = columns->get_column( 'MANDT' ). | |
column->set_visible( abap_false ). | |
me->set_text( EXPORTING name = 'NUMERO_PEDIDO' short = 'N Pedido' long = 'Número Pedido' columns = columns ). | |
me->set_text( EXPORTING name = 'DATA_PEDIDO' short = 'D Pedido' long = 'Data Pedido' columns = columns ). | |
ENDMETHOD. | |
METHOD set_text. | |
DATA: column TYPE REF TO cl_salv_column. | |
column = columns->get_column( name ). | |
column->set_short_text( short ). | |
column->set_long_text( long ). | |
ENDMETHOD. | |
ENDCLASS. | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment