You are on page 1of 26

* Migracion Enterprise

TABLES
intern = excel
EXCEPTIONS
OTHERS = 1.
DATA: linea TYPE i.
CLEAR gt_outtab.
REFRESH gt_outtab.
linea = 1.
LOOP AT excel INTO w_excel.
IF linea NE w_excel-row.
APPEND gt_outtab.
CLEAR gt_outtab.
linea = w_excel-row.
ENDIF.

IF w_excel-col = 1.
WRITE w_excel-value TO gt_outtab-matnr.

CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'


EXPORTING
input = gt_outtab-matnr
IMPORTING
output = gt_outtab-matnr
* EXCEPTIONS
* LENGTH_ERROR = 1
* OTHERS = 2
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

* gt_outtab-matnr = w_excel-value.
ENDIF.
IF w_excel-col = 2.
gt_outtab-labst = w_excel-value.
ENDIF.

ENDLOOP.
APPEND gt_outtab.

* Recorro la tabla para completar la informacin que falta.


LOOP AT gt_outtab.
* Descripcion del material
CLEAR mara.
SELECT SINGLE * FROM mara
WHERE matnr = gt_outtab-matnr.
IF sy-subrc NE 0.
gt_outtab-error = 'X'.
gt_outtab-desc_error = 'MATERIAL INEXISTENTE EN SAP'.

ENDIF.
CLEAR makt.
SELECT SINGLE * FROM makt
WHERE matnr = gt_outtab-matnr
AND spras = sy-langu.
CLEAR marc.
SELECT SINGLE * FROM marc
WHERE matnr = gt_outtab-matnr
AND werks = werks.
CLEAR mard.
SELECT SINGLE * FROM mard
WHERE matnr = gt_outtab-matnr
AND werks = werks
AND lgort = lgort.
gt_outtab-werks = werks.
gt_outtab-lgort = lgort.
gt_outtab-maktx = makt-maktx. "Texto breve material
gt_outtab-labs2 = mard-labst. "Stock Sap
gt_outtab-meins = mara-meins. "Unidad de Medida
gt_outtab-difer = gt_outtab-labs2 - gt_outtab-labst. "Diferencia (Cantidad a
ajustar).
gt_outtab-lvorm = mara-lvorm. "Peticion borrado a nivel mdte
gt_outtab-mstae = mara-mstae. "Status material a nivel mdte
gt_outtab-lvorc = marc-lvorm. "Peticion borrado a nivel centro
gt_outtab-mmsta = marc-mmsta. "Status material a nivel centro
MODIFY gt_outtab.
ENDLOOP.

* Llamo al control para visualizar resultados y continuar con las operaciones.


CALL SCREEN 100.

*---------------------------------------------------------------------*
* CLASS lcl_event_receiver DEFINITION
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
CLASS lcl_event_receiver DEFINITION.

*.............

PUBLIC SECTION.

TYPES: BEGIN OF stock_key.


TYPES: lgort TYPE lgort.
TYPES: matnr TYPE matnr.
TYPES: kunnr TYPE kunnr.
TYPES: END OF stock_key.

TYPES: stock_keys TYPE STANDARD TABLE OF stock_key,


stock_table TYPE STANDARD TABLE OF stock,
sestr_alv TYPE STANDARD TABLE OF estr_alv.

METHODS:
handle_data_changed
FOR EVENT data_changed OF cl_gui_alv_grid
IMPORTING er_data_changed,

handle_double_click
FOR EVENT double_click OF cl_gui_alv_grid
IMPORTING e_row e_column,

handle_user_command
FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING e_ucomm,

handle_user_command_2
FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING e_ucomm,

handle_before_user_command_2
FOR EVENT before_user_command OF cl_gui_alv_grid
IMPORTING e_ucomm,

handle_toolbar
FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING e_object e_interactive,

handle_toolbar_2
FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING e_object e_interactive,

get_inserted_rows
EXPORTING
inserted_rows TYPE stock_keys,

get_modified_rows
EXPORTING
modified_rows TYPE sestr_alv,

get_deleted_rows
EXPORTING
deleted_rows TYPE stock_table,

set_toolbar_active,

set_toolbar_inactive,

cambiar_a_resumen,

cambiar_a_detalle,

refresh_delta_tables,

set_table_is_initial,

set_table_is_not_initial,

table_is_initial
RETURNING value(initial) TYPE char01,

handle_double_click_dbox
FOR EVENT double_click OF cl_gui_alv_grid
IMPORTING e_row e_column,

handle_close
FOR EVENT close OF cl_gui_dialogbox_container
IMPORTING sender.

*..............

PRIVATE SECTION.
* Indicador Salida final activado/desactivado
DATA: sf TYPE c.
DATA: toolbar_status.

* 4.Define internal tables to remember inserted and deleted lines,


* thus the delta between input made after the last saving.

DATA: modified_rows TYPE STANDARD TABLE OF estr_alv.


DATA: inserted_rows TYPE stock_keys,
deleted_rows TYPE STANDARD TABLE OF stock.

DATA: dialogbox_tabla TYPE c.


DATA: dialogbox_status TYPE c.
"'X': does exist, SPACE: does not ex.

* This flag is set if any error occured in one of the


* following methods:
DATA: error_in_data TYPE c.

* This flag signals that no records were read for the flight
* table initially:
DATA: initial_table TYPE c.
** Methods to modularize event handler method HANDLE_DATA_CHANGED:
*

METHODS:
update_delta_tables
IMPORTING
pr_data_changed TYPE REF TO cl_alv_changed_data_protocol.

METHODS:
perform_semantic_checks
IMPORTING
pr_data_changed TYPE REF TO cl_alv_changed_data_protocol.

METHODS:
get_cell_values
IMPORTING
row_id TYPE int4
pr_data_changed TYPE REF TO cl_alv_changed_data_protocol
EXPORTING
key TYPE stock_key.

ENDCLASS. "lcl_event_receiver DEFINITION


**************************************************************

*---------------------------------------------------------------------*
* MODULE PBO OUTPUT *
*---------------------------------------------------------------------*
MODULE pbo OUTPUT.
SET PF-STATUS 'MAIN100'.
SET TITLEBAR 'MAIN100'.
IF g_custom_container IS INITIAL.
PERFORM create_and_init_alv CHANGING gt_outtab[]
gt_fieldcat.
ENDIF.
ENDMODULE. "pbo OUTPUT
*---------------------------------------------------------------------*
* MODULE PAI INPUT *
*---------------------------------------------------------------------*
MODULE pai INPUT.
save_ok = ok_code.
CLEAR ok_code.
CASE save_ok.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
WHEN 'EXIT'.
LEAVE TO SCREEN 0.
PERFORM exit_program.
* when 'SWITCH'.
* perform switch_edit_mode.
WHEN OTHERS.
* do nothing
ENDCASE.
ENDMODULE. "pai INPUT
*---------------------------------------------------------------------*
* Form VARIANT_INIT
*---------------------------------------------------------------------*
FORM variant_init.
CLEAR g_variant.
g_variant-report = g_repid.
ENDFORM. "variant_init
*---------------------------------------------------------------------*
* FORM EXIT_PROGRAM *
*---------------------------------------------------------------------*
FORM exit_program.
DATA: t_modified_rows TYPE TABLE OF estr_alv,
lineas TYPE i.
DATA: texto1(70), texto2(70),titulo(70),respuesta(1).

DATA: l_valid TYPE c.


*
CALL METHOD g_grid->check_changed_data
IMPORTING
e_valid = l_valid.

IF l_valid IS INITIAL.
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
titel = text-i06
txt1 = text-i07
txt2 = text-i08
txt3 = text-i09.
ENDIF.

CALL METHOD g_verifier->get_modified_rows


IMPORTING
modified_rows = t_modified_rows.
DESCRIBE TABLE t_modified_rows LINES lineas.
IF lineas > 0.
texto1 = ' Desea Salir ?'.
texto2 = space.
titulo = 'Confirmacin Salida de Pantalla'.
PERFORM pide_confirmac USING 'N' texto1 texto2 titulo
CHANGING respuesta.
IF respuesta = 'J'.
LEAVE TO SCREEN 0.
ENDIF.
ELSE.
LEAVE TO SCREEN 0.
ENDIF.
ENDFORM. "exit_program
*&---------------------------------------------------------------------*
*& Form BUILD_FIELDCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_GT_FIELDCAT text
*----------------------------------------------------------------------*
FORM build_fieldcat CHANGING pt_fieldcat TYPE lvc_t_fcat.

DATA ls_fcat TYPE lvc_s_fcat.

CLEAR pt_fieldcat.
REFRESH pt_fieldcat.

CLEAR ls_fcat.
ls_fcat-fieldname = 'WERKS'.
ls_fcat-col_pos = 1.
ls_fcat-outputlen = 8.
ls_fcat-coltext = 'Centro'.
ls_fcat-scrtext_l = 'Centro'.
ls_fcat-scrtext_m = 'Centro'.
ls_fcat-scrtext_s = 'Centro'.
* ls_fcat-emphasize = 'C200'.
APPEND ls_fcat TO pt_fieldcat.

CLEAR ls_fcat.
ls_fcat-fieldname = 'LGORT'.
ls_fcat-col_pos = 2.
ls_fcat-outputlen = 8.
ls_fcat-coltext = 'Almacen'.
ls_fcat-scrtext_l = 'Almacen'.
ls_fcat-scrtext_m = 'Almacen'.
ls_fcat-scrtext_s = 'Almacen'.
* ls_fcat-emphasize = 'C200'.
APPEND ls_fcat TO pt_fieldcat.

CLEAR ls_fcat.
ls_fcat-fieldname = 'MATNR'.
ls_fcat-col_pos = 3.
ls_fcat-outputlen = 8.
ls_fcat-coltext = 'Material'.
ls_fcat-scrtext_l = 'Material'.
ls_fcat-scrtext_m = 'Material'.
ls_fcat-scrtext_s = 'Material'.
ls_fcat-emphasize = 'C200'.
ls_fcat-no_zero = 'X'.
APPEND ls_fcat TO pt_fieldcat.

CLEAR ls_fcat.
ls_fcat-fieldname = 'MAKTX'.
ls_fcat-col_pos = 4.
ls_fcat-outputlen = 40.
ls_fcat-coltext = 'Descripcion'.
ls_fcat-scrtext_l = 'Descripcion'.
ls_fcat-scrtext_m = 'Descripcion'.
ls_fcat-scrtext_s = 'Descripcion'.
ls_fcat-emphasize = 'C200'.
APPEND ls_fcat TO pt_fieldcat.

CLEAR ls_fcat.
ls_fcat-fieldname = 'LABS2'.
ls_fcat-col_pos = 4.
ls_fcat-outputlen = 15.
ls_fcat-coltext = 'Stock SAP'.
ls_fcat-scrtext_l = 'Stock SAP'.
ls_fcat-scrtext_m = 'Stock SAP'.
ls_fcat-scrtext_s = 'Stock SAP'.
ls_fcat-emphasize = 'C200'.
* ls_fcat-no_zero = 'X'.
APPEND ls_fcat TO pt_fieldcat.

CLEAR ls_fcat.
ls_fcat-fieldname = 'LABST'.
ls_fcat-col_pos = 5.
ls_fcat-outputlen = 15.
ls_fcat-coltext = 'Stock Contado'.
ls_fcat-scrtext_l = 'Stock Contado'.
ls_fcat-scrtext_m = 'Stock Contado'.
ls_fcat-scrtext_s = 'Stock Contado'.
ls_fcat-emphasize = 'C200'.
* ls_fcat-no_zero = 'X'.
APPEND ls_fcat TO pt_fieldcat.

CLEAR ls_fcat.
ls_fcat-fieldname = 'DIFER'.
ls_fcat-col_pos = 6.
ls_fcat-outputlen = 15.
ls_fcat-coltext = 'Difer.Stock'.
ls_fcat-scrtext_l = 'Difer.Stock'.
ls_fcat-scrtext_m = 'Difer.Stock'.
ls_fcat-scrtext_s = 'Difer.Stock'.
ls_fcat-emphasize = 'C200'.
* ls_fcat-no_zero = 'X'.
APPEND ls_fcat TO pt_fieldcat.

CLEAR ls_fcat.
ls_fcat-fieldname = 'ERROR'.
ls_fcat-col_pos = 7.
ls_fcat-outputlen = 6.
ls_fcat-coltext = 'Error'.
ls_fcat-scrtext_l = 'Error'.
ls_fcat-scrtext_m = 'Error'.
ls_fcat-scrtext_s = 'Error'.
ls_fcat-emphasize = 'Error'.
APPEND ls_fcat TO pt_fieldcat.

CLEAR ls_fcat.
ls_fcat-fieldname = 'DESC_ERROR'.
ls_fcat-col_pos = 8.
ls_fcat-outputlen = 40.
ls_fcat-coltext = 'Error'.
ls_fcat-scrtext_l = 'Error'.
ls_fcat-scrtext_m = 'Error'.
ls_fcat-scrtext_s = 'Error'.
ls_fcat-emphasize = 'Error'.
APPEND ls_fcat TO pt_fieldcat.

CLEAR ls_fcat.
ls_fcat-fieldname = 'LVORM'.
ls_fcat-col_pos = 10.
ls_fcat-outputlen = 3.
ls_fcat-coltext = 'PB'.
ls_fcat-scrtext_l = 'PB'.
ls_fcat-scrtext_m = 'PB'.
ls_fcat-scrtext_s = 'PB'.
ls_fcat-emphasize = 'C200'.
APPEND ls_fcat TO pt_fieldcat.

CLEAR ls_fcat.
ls_fcat-fieldname = 'MSTAE'.
ls_fcat-col_pos = 11.
ls_fcat-outputlen = 3.
ls_fcat-coltext = 'ST'.
ls_fcat-scrtext_l = 'ST'.
ls_fcat-scrtext_m = 'ST'.
ls_fcat-scrtext_s = 'ST'.
ls_fcat-emphasize = 'C200'.
APPEND ls_fcat TO pt_fieldcat.

CLEAR ls_fcat.
ls_fcat-fieldname = 'LVORC'.
ls_fcat-col_pos = 12.
ls_fcat-outputlen = 4.
ls_fcat-coltext = 'PBC'.
ls_fcat-scrtext_l = 'PBC'.
ls_fcat-scrtext_m = 'PBC'.
ls_fcat-scrtext_s = 'PBC'.
ls_fcat-emphasize = 'C200'.
APPEND ls_fcat TO pt_fieldcat.

CLEAR ls_fcat.
ls_fcat-fieldname = 'MMSTA'.
ls_fcat-col_pos = 13.
ls_fcat-outputlen = 4.
ls_fcat-coltext = 'STC'.
ls_fcat-scrtext_l = 'STC'.
ls_fcat-scrtext_m = 'STC'.
ls_fcat-scrtext_s = 'STC'.
ls_fcat-emphasize = 'C200'.
APPEND ls_fcat TO pt_fieldcat.

ENDFORM. "build_fieldcat
*&---------------------------------------------------------------------*
*& Form CREATE_AND_INIT_ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_GT_OUTTAB text
* <--P_GT_FIELDCAT text
* <--P_GS_LAYOUT text
*----------------------------------------------------------------------*
FORM create_and_init_alv CHANGING pt_outtab LIKE gt_outtab[]
pt_fieldcat TYPE lvc_t_fcat.
DATA: ll TYPE lvc_s_row,
cc TYPE lvc_s_col.

DATA: lt_exclude TYPE ui_functions.

CREATE OBJECT g_custom_container


EXPORTING
container_name = g_container.
CREATE OBJECT g_grid
EXPORTING
i_parent = g_custom_container.

* Create Objekt to verify input values.


* (This object is already needed in form SELECT_DATA).
CREATE OBJECT g_verifier.
SET HANDLER g_verifier->handle_user_command FOR g_grid.
SET HANDLER g_verifier->handle_data_changed FOR g_grid.
SET HANDLER g_verifier->handle_double_click FOR g_grid.
SET HANDLER g_verifier->handle_toolbar FOR g_grid.

PERFORM select_data CHANGING pt_outtab[].

* Build fieldcat and set columns PLANETYPE and SEATSOCC


* edit enabled.
PERFORM build_fieldcat CHANGING pt_fieldcat.
PERFORM exclude_tb_functions CHANGING lt_exclude.

gs_layout-stylefname = 'CELLTAB'.
* gs_layout-grid_title =
* 'Traslado de Reservas Restauracin (Gestin)'.
gs_layout-ctab_fname = 'COLOR'.

gx_variant-variant = p_vari.
CALL METHOD g_grid->set_table_for_first_display
EXPORTING
it_toolbar_excluding = lt_exclude
is_layout = gs_layout
is_variant = gx_variant
i_save = x_save
CHANGING
it_fieldcatalog = pt_fieldcat
it_outtab = pt_outtab[].

* Set editable cells to ready for input initially


* RE
CALL METHOD g_grid->set_ready_for_input
EXPORTING
i_ready_for_input = 1.
* RE
** Refresh Tootbar
* CALL METHOD g_grid->set_toolbar_interactive.
CALL METHOD cl_gui_control=>set_focus
EXPORTING
control = g_grid.

ENDFORM. "CREATE_AND_INIT_ALV
*&---------------------------------------------------------------------*
*& Form select_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_GT_OUTTAB text
*----------------------------------------------------------------------*
FORM select_data CHANGING pt_outtab LIKE gt_outtab[].
DATA: lt_stock TYPE TABLE OF stock,
ls_stock TYPE stock,
ls_outtab LIKE LINE OF gt_outtab,
l_index TYPE i,
lt_celltab TYPE lvc_t_styl,
lt_color TYPE lvc_s_scol,
num_lin TYPE i,
almacen LIKE mard-werks.
DATA: stock LIKE mard-labst.

DESCRIBE TABLE pt_outtab LINES num_lin.


IF num_lin = 0.
* Tell Verify-Objekt that the table was initial
CALL METHOD g_verifier->set_table_is_initial.
ELSE.
CALL METHOD g_verifier->set_table_is_not_initial.
* move corresponding fields from lt_reserva to gt_outtab
* LOOP AT lt_stock INTO ls_stock.
* MOVE-CORRESPONDING ls_stock TO ls_outtab.
* APPEND ls_outtab TO pt_outtab.
* ENDLOOP.

* 3.Set all cells of the table non-editable by using the style table.

LOOP AT pt_outtab INTO ls_outtab.


l_index = sy-tabix.
IF ls_outtab-error = 'X'.
lt_color-fname = 'MATNR'.
lt_color-nokeycol = 'X'.
lt_color-color-col = 6.
INSERT lt_color INTO TABLE ls_outtab-color.
lt_color-fname = 'MAKTX'.
lt_color-nokeycol = 'X'.
lt_color-color-col = 6.
INSERT lt_color INTO TABLE ls_outtab-color.
lt_color-fname = 'ERROR'.
lt_color-nokeycol = 'X'.
lt_color-color-col = 6.
INSERT lt_color INTO TABLE ls_outtab-color.
lt_color-fname = 'DESC_ERROR'.
lt_color-nokeycol = 'X'.
lt_color-color-col = 6.
INSERT lt_color INTO TABLE ls_outtab-color.
ELSE.
REFRESH ls_outtab-color.
ENDIF.
* Copy your celltab to the celltab of the current row of gt_outtab.
INSERT LINES OF lt_celltab INTO TABLE ls_outtab-celltab.
MODIFY pt_outtab FROM ls_outtab INDEX l_index.
ENDLOOP.
MESSAGE s008(zsistemas) WITH 'Total registros'
'Seleccionados:' num_lin.
ENDIF.
ENDFORM. " select_data
*---------------------------------------------
FORM exclude_tb_functions CHANGING pt_exclude TYPE ui_functions.
*
DATA ls_exclude TYPE ui_func.

ls_exclude = cl_gui_alv_grid=>mc_fc_loc_insert_row.
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_cut.
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_undo.
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy_row.
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_paste_new_row.
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_insert_row.
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_delete_row.
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_append_row.
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_graph.
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_help.
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_info.
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_refresh.
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy.
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_paste.
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_filter.
APPEND ls_exclude TO pt_exclude.

ENDFORM. " EXCLUDE_TB_FUNCTIONS


*&---------------------------------------------------------------------*
*& Form switch_edit_mode
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
*FORM switch_edit_mode .
* IF g_grid->is_ready_for_input( ) eq 0.
** set edit enabled cells ready for input
* CALL METHOD g_grid->set_ready_for_input
* EXPORTING i_ready_for_input = 1.
*
* ELSE.
** lock edit enabled cells against input
* CALL METHOD g_grid->set_ready_for_input
* EXPORTING i_ready_for_input = 0.
* ENDIF.
*
*ENDFORM. " switch_edit_mode
*&---------------------------------------------------------------------*
*& Form f4_for_variant
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f4_for_variant .
*
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
is_variant = g_variant
i_save = g_save
* it_default_fieldcat =
IMPORTING
e_exit = g_exit
es_variant = gx_variant
EXCEPTIONS
not_found = 2.
IF sy-subrc = 2.
MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
IF g_exit = space.
p_vari = gx_variant-variant.
ENDIF.
ENDIF.

ENDFORM. " f4_for_variant

*&---------------------------------------------------------------------*
*& Form PIDE_CONFIRMAC
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_1131 text
* -->P_TEXTO1 text
* -->P_TEXTO2 text
* -->P_TITULO text
* <--P_RESPUESTA text
*----------------------------------------------------------------------*
* Funcion para pedir un mensaje de confirmacion (popup).
FORM pide_confirmac USING p_defecto "Opcin por defecto
p_texto1 "Texto1 dentro de la ventana
p_texto2 "Texto2 dentro de la ventana
p_titulo "Titulo de la ventana
CHANGING p_respuesta.
CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
EXPORTING
defaultoption = p_defecto
textline1 = p_texto1
textline2 = p_texto2
titel = p_titulo
IMPORTING
answer = p_respuesta
EXCEPTIONS
OTHERS = 1.

ENDFORM. " PIDE_CONFIRMAC

**---------------------------------------------------------
CLASS lcl_event_receiver IMPLEMENTATION.
METHOD handle_data_changed.
*
DATA: ls_good TYPE lvc_s_modi,
ls_new TYPE lvc_s_moce.

error_in_data = space.

* remember modified lines for saving


CALL METHOD update_delta_tables( er_data_changed ).

* check mt_good_cells semantically


CALL METHOD perform_semantic_checks( er_data_changed ).

IF error_in_data = 'X'.
CALL METHOD er_data_changed->display_protocol.
ENDIF.

ENDMETHOD. "handle_data_changed

**---------------------------------------------------------
METHOD handle_double_click.
*
DATA: ls_stock LIKE LINE OF gt_outtab.

DATA: garg TYPE eqegraarg, contador TYPE i.

DATA: enq TYPE STANDARD TABLE OF seqg3.

* 4.The event DOUBLE_CLICK provides parameters for row and column


* of the click. Use row parameter to select a line of the
* corresponding internal table.

* read selected row from internal table gt_sflight


READ TABLE gt_outtab INDEX e_row-index INTO ls_stock.

ENDMETHOD. "handle_double_click

*-----------------------------------------------------------------------
METHOD handle_toolbar.
* 2.In event handler method for event TOOLBAR: Append own functions
* by using event parameter E_OBJECT.
DATA: ls_toolbar TYPE stb_button.
*....................................................................
* E_OBJECT of event TOOLBAR is of type REF TO CL_ALV_EVENT_TOOLBAR_SET.
* This class has got one attribute, namly MT_TOOLBAR, which
* is a table of type TTB_BUTTON. One line of this table is
* defined by the Structure STB_BUTTON (see data deklaration above).
*

* A remark to the flag E_INTERACTIVE:


* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* 'e_interactive' is set, if this event is raised due to
* the call of 'set_toolbar_interactive' by the user.
* You can distinguish this way if the event was raised
* by yourself or by ALV
* (e.g. in method 'refresh_table_display').
* An application of this feature is still unknown... :-)

* append a separator to normal toolbar


CLEAR ls_toolbar.
MOVE 3 TO ls_toolbar-butn_type.
APPEND ls_toolbar TO e_object->mt_toolbar.
* append an icon to put all to nothing

* append a separator to normal toolbar


CLEAR ls_toolbar.
MOVE 3 TO ls_toolbar-butn_type.
APPEND ls_toolbar TO e_object->mt_toolbar.
* append an icon to make doc. material
CLEAR ls_toolbar.
MOVE 'TRASPASO' TO ls_toolbar-function.
MOVE '@K5@' TO ls_toolbar-icon.
MOVE 'Generar Ajuste Inventario'(111) TO ls_toolbar-quickinfo.
MOVE 'Inventario'(112) TO ls_toolbar-text.
MOVE toolbar_status TO ls_toolbar-disabled.
APPEND ls_toolbar TO e_object->mt_toolbar.

ENDMETHOD. "handle_toolbar

*-----------------------------------------------------------------------
METHOD handle_toolbar_2.
DATA: ls_toolbar TYPE stb_button.

* append a separator to normal toolbar


CLEAR ls_toolbar.
MOVE 3 TO ls_toolbar-butn_type.
APPEND ls_toolbar TO e_object->mt_toolbar.
* append an icon to put all to nothing

CLEAR ls_toolbar.
MOVE 'RESUM' TO ls_toolbar-function.
MOVE '@5A@' TO ls_toolbar-icon.
MOVE 'Resumen de Resultados'(111) TO ls_toolbar-quickinfo.
MOVE 'Resumen'(112) TO ls_toolbar-text.
MOVE ' ' TO ls_toolbar-disabled.
APPEND ls_toolbar TO e_object->mt_toolbar.

CLEAR ls_toolbar.
MOVE 'DETAL' TO ls_toolbar-function.
MOVE '@59@' TO ls_toolbar-icon.
MOVE 'Detalle de Resultados'(111) TO ls_toolbar-quickinfo.
MOVE 'Detalle'(112) TO ls_toolbar-text.
MOVE ' ' TO ls_toolbar-disabled.
APPEND ls_toolbar TO e_object->mt_toolbar.

* append a separator to normal toolbar


CLEAR ls_toolbar.
MOVE 3 TO ls_toolbar-butn_type.
APPEND ls_toolbar TO e_object->mt_toolbar.
*
CLEAR ls_toolbar.
MOVE 'EXIT' TO ls_toolbar-function.
MOVE '@3X@' TO ls_toolbar-icon.
MOVE 'Salir de los Resultados'(111) TO ls_toolbar-quickinfo.
MOVE 'Salir'(112) TO ls_toolbar-text.
MOVE ' ' TO ls_toolbar-disabled.
APPEND ls_toolbar TO e_object->mt_toolbar.
ENDMETHOD. "handle_toolbar_2

*-------------------------------------------------------------------
METHOD handle_user_command.
DATA: ll TYPE lvc_s_row,
cc TYPE lvc_s_col,
ss TYPE lvc_s_stbl.
* 3.In event handler method for event USER_COMMAND: Query your
* function codes defined in step 2 and react accordingly.

DATA: lt_rows TYPE lvc_t_row.

CASE e_ucomm.
WHEN 'TRASPASO'.
* CALL METHOD g_grid->get_selected_rows
* IMPORTING
* et_index_rows = lt_rows.
* CALL METHOD cl_gui_cfw=>flush.
* IF sy-subrc NE 0.
** add your handling, for example
* CALL FUNCTION 'POPUP_TO_INFORM'
* EXPORTING
* titel = g_repid
* txt2 = sy-subrc
* txt1 = 'Error in Flush'(500).
* ELSE.
* Set editable cells to ready for input initially
CALL METHOD g_grid->set_ready_for_input
EXPORTING
i_ready_for_input = 0.
CALL METHOD g_verifier->set_toolbar_inactive.
PERFORM generar_traspasos.
IF gt_proc_log IS NOT INITIAL.
IF dialogbox_status IS INITIAL.
dialogbox_status = 'X'.
PERFORM create_detail_list.
ELSE.
CALL METHOD dialogbox_container->set_visible
EXPORTING
visible = 'X'.
CALL METHOD grid2->refresh_table_display.
ENDIF.
ELSE.
CALL METHOD g_grid->set_ready_for_input
EXPORTING
i_ready_for_input = 1.
CALL METHOD g_verifier->set_toolbar_active.
MESSAGE s008(zsistemas) WITH 'No hay nada que traspasar'.
ENDIF.
** Ok code here
* ENDIF.
ENDCASE.
ss-row = 'X'.
ss-col = 'X'.
CALL METHOD g_grid->refresh_table_display
EXPORTING
is_stable = ss.
* ll-index = 1.
* cc-fieldname = 'ERFMG'.
* CALL METHOD g_grid->set_current_cell_via_id
* EXPORTING
* is_row_id = ll
* is_column_id = cc.
ENDMETHOD. "handle_user_command

*-------------------------------------------------------------------
METHOD handle_user_command_2.
DATA: lt_rows TYPE lvc_t_row.

CASE e_ucomm.
WHEN 'RESUM'.
CALL METHOD g_verifier->cambiar_a_resumen.
WHEN 'DETAL'.
CALL METHOD g_verifier->cambiar_a_detalle.
WHEN 'EXIT'.
CALL METHOD g_verifier->handle_close
EXPORTING
sender = dialogbox_container.
ENDCASE.
ENDMETHOD. "handle_user_command_2

*-----------------------------------------------------------------------
METHOD handle_before_user_command_2.
* CASE e_ucomm.
* WHEN '&PRINT'.
* CALL METHOD g_grid->set_user_command
* EXPORTING
* i_ucomm = space.
* ENDCASE.
ENDMETHOD. "handle_before_user_command_2

*-----------------------------------------------------------------------
METHOD handle_close.
DATA: texto1(70), texto2(70),titulo(70),respuesta(1).

* 6.Handle the CLOSE-button of the dialogbox

* set dialogbox invisible


* (the dialogbox is destroyed outomatically when the user
* switches to another dynpro).
texto1 = ' Salir de la aplicacin ?'.
texto2 = space.
titulo = 'Confirmacin Salida de Pantalla'.
PERFORM pide_confirmac USING 'N' texto1 texto2 titulo
CHANGING respuesta.
IF respuesta = 'J'.
CALL METHOD sender->set_visible
EXPORTING
visible = space.

LEAVE TO SCREEN 0.
ENDIF.
* In this example closing the dialogbox leads
* to make it invisible. It is also conceivable to destroy it
* and recreate it if the user doubleclicks a line again.
* Displaying a great amount of data has a greater impact on performance.
ENDMETHOD. "handle_close
*-----------------------------------------------------------------------
METHOD handle_double_click_dbox.
*
DATA: ls_log LIKE LINE OF gt_proc_log.
DATA: ls_res LIKE LINE OF gt_proc_res.

* 4.The event DOUBLE_CLICK provides parameters for row and column


* of the click. Use row parameter to select a line of the
* corresponding internal table.

IF dialogbox_tabla EQ 'D'.
READ TABLE gt_proc_log INDEX e_row-index INTO ls_log.

CALL FUNCTION 'MIGO_DIALOG'


EXPORTING
i_action = 'A04'
i_mblnr = ls_log-doc-mat_doc
i_mjahr = ls_log-doc-doc_year
EXCEPTIONS
illegal_combination = 1
OTHERS = 2.
* IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
* ENDIF.
ELSE.
READ TABLE gt_proc_res INDEX e_row-index INTO ls_res.

CALL FUNCTION 'MIGO_DIALOG'


EXPORTING
i_action = 'A04'
i_mblnr = ls_res-doc-mat_doc
i_mjahr = ls_res-doc-doc_year
EXCEPTIONS
illegal_combination = 1
OTHERS = 2.
ENDIF.
ENDMETHOD. "handle_double_click_dbox
*-----------------------------------------------------------------------
*-------------------------------------------------------
METHOD update_delta_tables.
DATA: l_ins_row TYPE lvc_s_moce,
l_mod_row TYPE stock,
l_del_row TYPE lvc_s_moce,
ls_key TYPE stock_key,
ls_stock TYPE stock,
ls_outtab LIKE LINE OF gt_outtab.

FIELD-SYMBOLS: <fs> TYPE ANY.

ASSIGN pr_data_changed->mp_mod_rows->* TO <fs>.


modified_rows = <fs>.
ENDMETHOD. "update_delta_tables
*---------------------------------------------------------
METHOD get_cell_values.
* get values of key cells of row ROW_ID
TYPES: kunnr TYPE kunnr.
* RSNUM
CALL METHOD pr_data_changed->get_cell_value
EXPORTING
i_row_id = row_id
i_fieldname = 'LGORT'
IMPORTING
e_value = key-lgort.

IF sy-subrc NE 0.
MESSAGE i000(0k) WITH text-e02. "Fehler beim Einfgen
ENDIF.
* RSPOS
CALL METHOD pr_data_changed->get_cell_value
EXPORTING
i_row_id = row_id
i_fieldname = 'MATNR'
IMPORTING
e_value = key-matnr.

IF sy-subrc NE 0.
MESSAGE i000(0k) WITH text-e02. "Fehler beim Einfgen
ENDIF.

ENDMETHOD. "get_cell_values

*---------------------------------------------------------
METHOD perform_semantic_checks.
DATA: ls_outtab LIKE LINE OF gt_outtab.
DATA: ls_good TYPE lvc_s_modi,
l_bdmng TYPE bdmng.
ENDMETHOD. "perform_semantic_checks

*------------------------------------------------------

METHOD get_inserted_rows.
inserted_rows = me->inserted_rows.
ENDMETHOD. "get_inserted_rows
*------------------------------------------------------

METHOD get_deleted_rows.
deleted_rows = me->deleted_rows.
ENDMETHOD. "get_deleted_rows
*------------------------------------------------------

METHOD get_modified_rows.
modified_rows = me->modified_rows.
ENDMETHOD. "get_modified_rows
*------------------------------------------------------
METHOD refresh_delta_tables.
CLEAR me->inserted_rows[].
CLEAR me->modified_rows[].
CLEAR me->deleted_rows[].
ENDMETHOD. "refresh_delta_tables
*------------------------------------------------------
METHOD set_toolbar_active.
CLEAR toolbar_status.
CALL METHOD g_grid->set_toolbar_interactive.
ENDMETHOD. "set_table_is_initial
*------------------------------------------------------
METHOD set_toolbar_inactive.
toolbar_status = 'X'.
CALL METHOD g_grid->set_toolbar_interactive.
ENDMETHOD. "set_table_is_not_initial
*------------------------------------------------------
METHOD set_table_is_initial.
initial_table = 'X'.
ENDMETHOD. "set_table_is_initial
*------------------------------------------------------
METHOD set_table_is_not_initial.
initial_table = space.
ENDMETHOD. "set_table_is_not_initial
*------------------------------------------------------
METHOD table_is_initial.
IF initial_table = 'X'.
initial = 'X'.
ELSE.
initial = space.
ENDIF.
ENDMETHOD. "table_is_initial

*&---------------------------------------------------------------------*
METHOD cambiar_a_resumen.
dialogbox_tabla = 'R'.
CALL METHOD grid2->set_table_for_first_display
* exporting i_structure_name = 'PROC_LOG'
* is_layout = gs_layout
CHANGING
it_fieldcatalog = res_fieldcat
it_outtab = gt_proc_res[].
ENDMETHOD. " cambiar_a_resumen

*&---------------------------------------------------------------------*
METHOD cambiar_a_detalle.
dialogbox_tabla = 'D'.
CALL METHOD grid2->set_table_for_first_display
* exporting i_structure_name = 'PROC_LOG'
* is_layout = gs_layout
CHANGING
it_fieldcatalog = log_fieldcat
it_outtab = gt_proc_log[].
ENDMETHOD. " cambiar_a_detalle

ENDCLASS. "lcl_event_receiver IMPLEMENTATION


*&---------------------------------------------------------------------*
*& Form generar_traspasos
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM generar_traspasos .
DATA: header LIKE bapi2017_gm_head_01.
DATA: code LIKE bapi2017_gm_code.
DATA: item LIKE TABLE OF bapi2017_gm_item_create.
DATA: litem LIKE LINE OF item.
DATA: docs LIKE bapi2017_gm_head_ret.
DATA: return LIKE TABLE OF bapiret2.
DATA: lreturn LIKE LINE OF return.
DATA: ls_outtab LIKE LINE OF gt_outtab.
DATA: numl TYPE i.
DATA: x VALUE 'X'.
DATA: nerr TYPE i.
DATA: contador TYPE i.
DATA: move_type TYPE bwart,
spec_stock TYPE sobkz.

* Determino el tipo de movimientos a realizar


* LO VOY A DETERMINAR A NIVEL DE CADA POSICION
* IF werks <> werkd. "Si centros son distintos es un 301.
* move_type = '301'.
* ELSE. "SI centros son iguales es un 311.
* move_type = '311'.
* ENDIF.
* IF libre = 'X'.
* CLEAR spec_stock.
* ELSE.
* spec_stock = 'W'.
* ENDIF.
SET PARAMETER ID 'NDR' FIELD x.
contador = 1.
LOOP AT gt_outtab INTO ls_outtab.
IF contador = 1.
CLEAR header.
CLEAR code.
CLEAR item.
REFRESH item.
CLEAR return.
REFRESH return.
* Fecha de Doc. y Contab. del traspaso
header-pstng_date = p_fecha.
header-doc_date = p_fecha.
header-header_txt = p_texto.
* 04 = Traspaso
code-gm_code = '06'. "otros mov '03'.
ENDIF.
*
IF ls_outtab-error IS INITIAL AND ls_outtab-difer <> 0.
"No hay ningun error en la linea y la diferencia es distinta de 0.
IF ls_outtab-difer > 0.
move_type = '551'.
ELSEIF ls_outtab-difer < 0.
move_type = '552'.
ELSE.
CONTINUE.
ENDIF.
ELSE.
CONTINUE.
ENDIF.

CLEAR litem.
litem-material = ls_outtab-matnr.
litem-ITEM_TEXT = ls_outtab-maktx.
litem-plant = ls_outtab-werks.
litem-stge_loc = ls_outtab-lgort.
litem-move_type = move_type.
litem-spec_stock = spec_stock.
litem-entry_qnt = ABS( ls_outtab-difer ).
litem-entry_uom = ls_outtab-meins.
litem-costcenter = kostl.
* litem-move_plant = ls_outtab-werkd.
* litem-move_stloc = ls_outtab-lgord.
* IF spec_stock = 'W'.
* litem-customer = ls_outtab-kunnr.
* CLEAR: litem-stge_loc, litem-move_stloc.
* ENDIF.

APPEND litem TO item.


*
contador = contador + 1.
IF contador = 300.
DESCRIBE TABLE item LINES numl.
CHECK numl GT 0.
CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
EXPORTING
goodsmvt_header = header
goodsmvt_code = code
* TESTRUN = ' '
IMPORTING
goodsmvt_headret = docs
* MATERIALDOCUMENT =
* MATDOCUMENTYEAR =
TABLES
goodsmvt_item = item
* GOODSMVT_SERIALNUMBER =
return = return.
LOOP AT item INTO litem.
CLEAR gt_proc_log.
gt_proc_log-matnr = litem-material.
gt_proc_log-maktx = litem-ITEM_TEXT.
gt_proc_log-erfmg = litem-entry_qnt.
gt_proc_log-doc = docs.
IF return IS INITIAL.
gt_proc_log-icon = '@5B@'.
ELSE.
READ TABLE return WITH KEY row = sy-tabix INTO lreturn.
IF sy-subrc EQ 0.
gt_proc_log-return = lreturn.
gt_proc_log-icon = '@5C@'.
ELSE.
gt_proc_log-icon = '@5D@'.
ENDIF.
ENDIF.
APPEND gt_proc_log.
CLEAR gt_proc_res.
gt_proc_res-matnr = litem-material.
gt_proc_res-doc = docs.
DESCRIBE TABLE return LINES gt_proc_res-error.
APPEND gt_proc_res.
ENDLOOP.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
contador = 1.
ENDIF.
ENDLOOP.

* Ejecuto el ultimo lote de materiales al salir.


IF contador <> 1.
DESCRIBE TABLE item LINES numl.
CHECK numl GT 0.
CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
EXPORTING
goodsmvt_header = header
goodsmvt_code = code
* TESTRUN = ' '
IMPORTING
goodsmvt_headret = docs
* MATERIALDOCUMENT =
* MATDOCUMENTYEAR =
TABLES
goodsmvt_item = item
* GOODSMVT_SERIALNUMBER =
return = return.
LOOP AT item INTO litem.
CLEAR gt_proc_log.
gt_proc_log-matnr = litem-material.
gt_proc_log-maktx = litem-ITEM_TEXT.
gt_proc_log-erfmg = litem-entry_qnt.
gt_proc_log-doc = docs.
IF return IS INITIAL.
gt_proc_log-icon = '@5B@'.
ELSE.
READ TABLE return WITH KEY row = sy-tabix INTO lreturn.
IF sy-subrc EQ 0.
gt_proc_log-return = lreturn.
gt_proc_log-icon = '@5C@'.
ELSE.
gt_proc_log-icon = '@5D@'.
ENDIF.
ENDIF.
APPEND gt_proc_log.
CLEAR gt_proc_res.
gt_proc_res-matnr = litem-material.
gt_proc_res-doc = docs.
DESCRIBE TABLE return LINES gt_proc_res-error.
APPEND gt_proc_res.
ENDLOOP.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.

ENDIF.
* CLEAR gt_proc_log.
* LOOP AT gt_proc_log.
* READ TABLE gt_outtab WITH KEY rsnum = gt_proc_log-rsnum
* rspos = gt_proc_log-rspos
* INTO ls_outtab.
* IF sy-subrc EQ 0.
* gt_proc_log-matnr = ls_outtab-matnr.
* gt_proc_log-maktx = ls_outtab-maktx.
* gt_proc_log-erfmg = ls_outtab-erfmg.
* MODIFY gt_proc_log.
* ENDIF.
* ENDLOOP.
ENDFORM. " generar_traspasos

*&---------------------------------------------------------------------*
*& Form BUILD_LOG_FIELDCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_GT_FIELDCAT text
*----------------------------------------------------------------------*
FORM build_log_fieldcat CHANGING e01_lt_fieldcat TYPE lvc_t_fcat.
DATA ls_fieldcat TYPE lvc_s_fcat.

CLEAR e01_lt_fieldcat.
REFRESH e01_lt_fieldcat.

CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'ICON'.
ls_fieldcat-key = 'X'.
ls_fieldcat-icon = 'X'.
ls_fieldcat-outputlen = 2.
APPEND ls_fieldcat TO e01_lt_fieldcat.

CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'MATNR'.
ls_fieldcat-coltext = 'Material'.
ls_fieldcat-scrtext_l = 'Material'.
ls_fieldcat-scrtext_m = 'Material'.
ls_fieldcat-scrtext_s = 'Material'.
ls_fieldcat-outputlen = 8.
ls_fieldcat-no_zero = 'X'.
ls_fieldcat-emphasize = 'C200'.
APPEND ls_fieldcat TO e01_lt_fieldcat.

CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'MAKTX'.
ls_fieldcat-coltext = 'Descripcin'.
ls_fieldcat-scrtext_l = 'Descripcin'.
ls_fieldcat-scrtext_m = 'Descripcin'.
ls_fieldcat-scrtext_s = 'Descripcin'.
ls_fieldcat-outputlen = 15.
ls_fieldcat-emphasize = 'C200'.
APPEND ls_fieldcat TO e01_lt_fieldcat.

CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'ERFMG'.
ls_fieldcat-coltext = 'Cantidad'.
ls_fieldcat-scrtext_l = 'cantidad'.
ls_fieldcat-scrtext_m = 'Cantidad'.
ls_fieldcat-scrtext_s = 'Cantidad'.
ls_fieldcat-decimals = 3.
ls_fieldcat-emphasize = 'C200'.
APPEND ls_fieldcat TO e01_lt_fieldcat.

CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'DOC-MAT_DOC'.
ls_fieldcat-coltext = 'Doc.Material'.
ls_fieldcat-scrtext_l = 'Doc.Material'.
ls_fieldcat-scrtext_m = 'Doc.Material'.
ls_fieldcat-scrtext_s = 'Doc.Material'.
ls_fieldcat-outputlen = 10.
ls_fieldcat-emphasize = 'C200'.
APPEND ls_fieldcat TO e01_lt_fieldcat.

CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'DOC-DOC_YEAR'.
ls_fieldcat-coltext = 'Ejer.'.
ls_fieldcat-scrtext_l = 'Ejer.'.
ls_fieldcat-scrtext_m = 'Ejer.'.
ls_fieldcat-scrtext_s = 'Ejer.'.
ls_fieldcat-outputlen = 5.
ls_fieldcat-emphasize = 'C200'.
APPEND ls_fieldcat TO e01_lt_fieldcat.

CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'RETURN-MESSAGE'.
ls_fieldcat-coltext = 'Mensaje'.
ls_fieldcat-scrtext_l = 'Mensaje'.
ls_fieldcat-scrtext_m = 'Mensaje'.
ls_fieldcat-scrtext_s = 'Mensaje'.
ls_fieldcat-outputlen = 30.
ls_fieldcat-emphasize = 'C200'.
APPEND ls_fieldcat TO e01_lt_fieldcat.
ENDFORM. "build_log_fieldcat

*&---------------------------------------------------------------------*
*& Form BUILD_RES_FIELDCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_GT_FIELDCAT text
*----------------------------------------------------------------------*
FORM build_res_fieldcat CHANGING e01_lt_fieldcat TYPE lvc_t_fcat.
DATA ls_fieldcat TYPE lvc_s_fcat.

CLEAR e01_lt_fieldcat.
REFRESH e01_lt_fieldcat.

CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'MATNR'.
ls_fieldcat-key = 'X'.
ls_fieldcat-coltext = 'Material'.
ls_fieldcat-scrtext_l = 'Material'.
ls_fieldcat-scrtext_m = 'Material'.
ls_fieldcat-scrtext_s = 'Material'.
ls_fieldcat-outputlen = 8.
ls_fieldcat-no_zero = 'X'.
ls_fieldcat-emphasize = 'C200'.
APPEND ls_fieldcat TO e01_lt_fieldcat.

CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'DOC-MAT_DOC'.
ls_fieldcat-coltext = 'Doc.Material'.
ls_fieldcat-scrtext_l = 'Doc.Material'.
ls_fieldcat-scrtext_m = 'Doc.Material'.
ls_fieldcat-scrtext_s = 'Doc.Material'.
ls_fieldcat-outputlen = 10.
ls_fieldcat-emphasize = 'C200'.
APPEND ls_fieldcat TO e01_lt_fieldcat.

CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'DOC-DOC_YEAR'.
ls_fieldcat-coltext = 'Ejer.'.
ls_fieldcat-scrtext_l = 'Ejer.'.
ls_fieldcat-scrtext_m = 'Ejer.'.
ls_fieldcat-scrtext_s = 'Ejer.'.
ls_fieldcat-outputlen = 5.
ls_fieldcat-emphasize = 'C200'.
APPEND ls_fieldcat TO e01_lt_fieldcat.

CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'ERROR'.
ls_fieldcat-coltext = 'Error'.
ls_fieldcat-scrtext_l = 'Error'.
ls_fieldcat-scrtext_m = 'Error'.
ls_fieldcat-scrtext_s = 'Error'.
ls_fieldcat-outputlen = 5.
ls_fieldcat-emphasize = 'C200'.
APPEND ls_fieldcat TO e01_lt_fieldcat.

ENDFORM. "build_fieldcat

*&---------------------------------------------------------------------*
*& Form create_detail_list
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM create_detail_list.
* create dialogbox container as dynpro-instance
* When the user switches to another screen, it is
* destroyed by lifetime mangagement of CFW
CREATE OBJECT dialogbox_container
EXPORTING
top = 150
left = 150
lifetime = cntl_lifetime_dynpro
caption = 'Resultados'(200)
width = 800
height = 200.
CREATE OBJECT grid2
EXPORTING
i_parent = dialogbox_container.
SET HANDLER g_verifier->handle_toolbar_2 FOR grid2.
SET HANDLER g_verifier->handle_user_command_2 FOR grid2.
SET HANDLER g_verifier->handle_before_user_command_2 FOR grid2.
* controlamos el dbl-click en el Dialog-Box de los resultados.
SET HANDLER g_verifier->handle_double_click_dbox FOR grid2.
* Register ABAP OO event 'CLOSE'. It is not necessary to register this
* event at the frontend (this is done during creation).
SET HANDLER g_verifier->handle_close FOR dialogbox_container.
* display data
gs_layout-grid_title = space.
PERFORM build_log_fieldcat CHANGING log_fieldcat.
PERFORM build_res_fieldcat CHANGING res_fieldcat.
CALL METHOD g_verifier->cambiar_a_detalle.
* CALL METHOD grid2->set_table_for_first_display
** exporting i_structure_name = 'PROC_LOG'
** is_layout = gs_layout
* CHANGING
* it_fieldcatalog = log_fieldcat
* it_outtab = gt_proc_log[].
*
** Refresh Tootbar
* CALL METHOD grid2->set_toolbar_interactive.
CALL METHOD cl_gui_control=>set_focus
EXPORTING
control = grid2.
ENDFORM. " create_detail_list

You might also like