W Pub: ABAPBROWSERDOWN

  1.  
  2. REPORT ZXX_PRG_BROWSER.
  3.  
  4. INCLUDE ZXX_I_BROWSER_TOP.
  5. INCLUDE ZXX_I_BROWSER_SEL.
  6. INCLUDE ZXX_I_BROWSER_EVE.
  7. INCLUDE ZXX_I_BROWSER_FRM.
  8.  
  1.  
  2. *--[ INCLUDE ZXX_I_BROWSER_TOP.
  3. TABLES: t001.
  4.  
  5. FIELD-SYMBOLS  : <gfs_t_pay_data>   TYPE ANY TABLE.
  6. DATA: go_pay_data   TYPE REF TO data,
  7.       gt_fcat       TYPE lvc_t_fcat,
  8.       gt_table      TYPE REF TO data,
  9.       gv_pedidor    TYPE boolean,
  10.  
  11.       g_error       TYPE sy-subrc,
  12.  
  13.       g_okcode      TYPE sy-ucomm,
  14.       g_titulo(255).
  15.  
  16. DATA: t_fcode TYPE TABLE OF sy-ucomm.
  17.  
  18. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  19. *--[ Definiciones ALV
  20. types: begin of ty_alv.
  21.     include STRUCTURE EPS2FILI.
  22. types:
  23.     Fecha type DatUM,
  24.     hora type uzeit,
  25.     end of ty_alv.
  26.  
  27. DATA: cc_01      TYPE REF TO cl_gui_custom_container,
  28.       cc_02      TYPE REF TO cl_gui_custom_container,
  29.  
  30.       cm_01      TYPE scrfname VALUE 'CC_ALV_01',
  31.       cm_02      TYPE scrfname VALUE 'CC_ALV_02',
  32.  
  33.       gs_layout  TYPE lvc_s_layo,
  34.       gs_variant TYPE disvariant,
  35.  
  36.       grid_01    TYPE REF TO cl_gui_alv_grid,
  37.       grid_02    TYPE REF TO cl_gui_alv_grid,
  38.  
  39.       t_tab_01   TYPE STANDARD TABLE OF ty_alv, "EPS2FILI,
  40.       l_tab_01   LIKE LINE OF t_tab_01,
  41.  
  42.       t_tab_02   TYPE STANDARD TABLE OF ty_alv, EPS2FILI,
  43.       l_tab_02   LIKE LINE OF t_tab_02,
  44.  
  45.       t_fcat_01  TYPE lvc_t_fcat,
  46.       t_fcat_02  TYPE lvc_t_fcat,
  47.  
  48.       gt_toolbar TYPE  ui_functions.
  49.  
  50. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  51. *--[ Datos ALV
  52. DATA lo_alv               TYPE REF TO cl_salv_table.
  53. DATA lex_message          TYPE REF TO cx_salv_msg.
  54. DATA lo_layout_settings   TYPE REF TO cl_salv_layout.
  55. DATA lo_layout_key        TYPE        salv_s_layout_key.
  56. DATA lo_columns           TYPE REF TO cl_salv_columns_table.
  57. DATA lo_column            TYPE REF TO cl_salv_column.
  58. DATA lex_not_found        TYPE REF TO cx_salv_not_found.
  59. DATA lo_functions         TYPE REF TO cl_salv_functions_list.
  60. DATA lo_display_settings  TYPE REF TO cl_salv_display_settings.
  61. DATA: "t_alv  TYPE STANDARD TABLE OF zavl_aa_st_infcontaarea51,
  62.       "l_alv  TYPE zavl_aa_st_infcontaarea51,
  63.       t_data TYPE /ieci/t4_t_ppresu_alv.
  64.  
  65.   DATA: l_opt  TYPE ctu_params,
  66.         t_bi   TYPE TABLE OF bdcdata,
  67.         t_mess TYPE TABLE OF bdcmsgcoll.
  1.  
  2. *--[ INCLUDE ZXX_I_BROWSER_SEL.
  3.  
  4. SELECTION-SCREEN BEGIN OF BLOCK b01 WITH FRAME.
  5.   PARAMETERS: p_dir TYPE text255 OBLIGATORY.
  6.  
  7. SELECTION-SCREEN END OF BLOCK b01.
  8.  
  9. module pbo_0100 output.
  10.  perform pbo_0100.
  11.  
  12. ENDMODULE.
  13.  
  14. module pai_0100 input.
  15.   perform pai_0100.
  16.  
  17. ENDMODULE.
  1.  
  2. *--[ INCLUDE ZXX_I_BROWSER_EVE.
  3. at SELECTION-SCREEN OUTPUT.
  4.   perform eve_start_of_selection_o.
  5.  
  6. INITIALIZATION.
  7.   perform eve_initialization.
  8.  
  9. START-OF-SELECTION.
  10.   PERFORM data_load.
  11.  
  12. end-of-SELECTION.
  13.   PERFORM data_list.
  1.  
  2. *--[ INCLUDE ZXX_I_BROWSER_FRM.
  3. FORM data_list.
  4.   CALL SCREEN '0100'.
  5. ENDFORM.
  6.  
  7. FORM eve_start_of_selection_o..
  8.   LOOP AT SCREEN.
  9.     IF sy-tcode CP '*NASA*'.
  10.       IF screen-name CP '*P_DIR*'.
  11.         screen-input = 0.
  12.         MODIFY SCREEN.
  13.       ENDIF.
  14.     ENDIF.
  15.   ENDLOOP.
  16. ENDFORM.
  17.  
  18. FORM eve_initialization.
  19. ENDFORM.
  20.  
  21. form f4_dir CHANGING p_dir.
  22. endform.
  23.  
  24. FORM data_load.
  25.   DATA: l_name TYPE eps2filnam,
  26.         t_tab  TYPE STANDARD TABLE OF eps2fili.
  27. *"     VALUE(FROMLINE) TYPE  I DEFAULT 0
  28. *"     VALUE(NRLINES) TYPE  I DEFAULT 1000
  29. *"  TABLES
  30. *"      FILE_TBL STRUCTURE  SALFLDIR
  31.   l_name = p_dir.
  32.  
  33.  
  34.  
  35. *  CALL FUNCTION 'RZL_READ_DIR_LOCAL'
  36. *    EXPORTING
  37. *      name               = l_name
  38. **     FROMLINE           = 0
  39. **     NRLINES            = 1000
  40. *    TABLES
  41. *      file_tbl           = t_tab_01[]
  42. *    EXCEPTIONS
  43. *      argument_error     = 1
  44. *      not_found          = 2
  45. *      no_admin_authority = 3
  46. *      OTHERS             = 4.
  47.   CALL FUNCTION 'EPS2_GET_DIRECTORY_LISTING'
  48.     EXPORTING
  49.       iv_dir_name            = l_name
  50.       file_mask              = '*.*'
  51. * IMPORTING
  52. *     DIR_NAME               =
  53. *     FILE_COUNTER           =
  54. *     ERROR_COUNTER          =
  55.     TABLES
  56.       dir_list               = t_tab_01
  57.     EXCEPTIONS
  58.       invalid_eps_subdir     = 1
  59.       sapgparam_failed       = 2
  60.       build_directory_failed = 3
  61.       no_authorization       = 4
  62.       read_directory_failed  = 5
  63.       too_many_read_errors   = 6
  64.       empty_directory_list   = 7
  65.       OTHERS                 = 8.
  66.  
  67.   IF sy-subrc <> 0.
  68. * Implement suitable error handling here
  69.   ENDIF.
  70.  
  71.   DELETE t_tab_01 WHERE name = '.' OR name = '..'.
  72.   LOOP AT t_tab_01 ASSIGNING FIELD-SYMBOL(<f>).
  73.     CLEAR sy-subrc.
  74. *20.01.2023 11:12:32
  75. *012345678901234567890
  76.     <f>-fecha = <f>-mtim+6(4) && <f>-mtim+3(2) && <f>-mtim+0(2).
  77.     <f>-hora  = <f>-mtim+11(2) && <f>-mtim+14(2) && <f>-mtim+17(2).
  78.   ENDLOOP.
  79.   SORT t_tab_01.
  80.   PERFORM autoriazacion_nasa.
  81. ENDFORM.
  82.  
  83. FORM autoriazacion_nasa.
  84. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  85. *--[ ESTO ES SOLO PARA NASA
  86.  
  87.   CHECK sy-tcode = 'ZGVA_XX_TR_NASAFILES'.
  88.  
  89.   DATA: l_au TYPE xfeld.
  90.   CLEAR l_au.
  91. *--[ Verificamos autorizacoines.
  92.   LOOP AT t_tab_01 INTO DATA(l_01).
  93.  
  94.     DATA(l_tabix) = sy-tabix.
  95.  
  96.  
  97.     SELECT SINGLE * FROM zgva_eb_infnasa INTO @DATA(li)
  98.       WHERE nombre_fichero = @l_01-name.
  99.     IF sy-subrc NE 0. DELETE t_tab_01 INDEX l_tabix. CONTINUE. ENDIF.
  100.  
  101.     AUTHORITY-CHECK OBJECT 'ZEB_VERSI'
  102.      ID 'ZEB_VER' FIELD li-version.
  103.     IF sy-subrc <> 0.
  104.       l_au = abap_true.
  105.       DELETE t_tab_01 INDEX l_tabix. CONTINUE.
  106.     ENDIF.
  107.     AUTHORITY-CHECK OBJECT 'ZEB_ORGAN'
  108.      ID 'ZEB_ORGANI' FIELD li-fcsub1.
  109.     IF sy-subrc <> 0.
  110.       l_au = abap_true.
  111.       DELETE t_tab_01 INDEX l_tabix.
  112.       CONTINUE.
  113.     ENDIF.
  114.  
  115.   ENDLOOP.
  116.   IF l_au = abap_true AND sy-batch IS INITIAL.
  117.     MESSAGE i398(00) WITH TEXT-i01.
  118.   ENDIF.
  119. ENDFORM.
  120.  
  121. FORM pbo_0100.
  122.   IF sy-tcode = 'SE38'.
  123.     REFRESH t_fcode.
  124.   ELSE.
  125.     APPEND 'UPLO' TO t_fcode.
  126.     append 'DELE' to t_fcode.
  127.   ENDIF.
  128.   SET PF-STATUS 'MAIN0100' EXCLUDING t_fcode.
  129.   SET TITLEBAR 'TIT01' WITH p_dir.
  130.  
  131.   IF cc_01 IS INITIAL.
  132.  
  133. *    gs_layout-cwidth_opt = 'X'.
  134.     gs_layout-sel_mode = 'A'.
  135.     gs_variant-report = sy-repid.
  136.  
  137.     CREATE OBJECT cc_01
  138.       EXPORTING
  139.         container_name              = cm_01
  140.       EXCEPTIONS
  141.         cntl_error                  = 1
  142.         cntl_system_error           = 2
  143.         create_error                = 3
  144.         lifetime_error              = 4
  145.         lifetime_dynpro_dynpro_link = 5.
  146.  
  147.     CREATE OBJECT grid_01 EXPORTING i_parent = cc_01.
  148.  
  149.     CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
  150.       EXPORTING
  151.         i_structure_name       = 'EPS2FILI'
  152.         i_buffer_active        = abap_false
  153. *"     VALUE(I_STRUCTURE_NAME) LIKE  DD02L-TABNAME OPTIONAL
  154.         i_client_never_display = abap_true
  155.         i_bypassing_buffer     = abap_true
  156. *       I_INTERNAL_TABNAME     = 'T_TAB_01'
  157.       CHANGING
  158.         ct_fieldcat            = t_fcat_01[]
  159.       EXCEPTIONS
  160.         inconsistent_interface = 1
  161.         program_error          = 2
  162.         OTHERS                 = 3.
  163.     DATA: ls_fcat LIKE LINE OF t_fcat_01.
  164.  
  165.     CLEAR ls_fcat.
  166.     ls_fcat-fieldname = 'FECHA'.
  167. *  ls_fcat-ref_table = 'SCARR'.
  168. *  ls_fcat-type = 'DAT'.
  169.     ls_fcat-col_pos = lines( t_fcat_01 ) + 1.
  170. * insert new line before CARRID (do not forget MANDT!).
  171. *  insert ls_fcat into p_fieldcat index 1.
  172.     APPEND ls_fcat TO t_fcat_01.
  173.  
  174.     CLEAR ls_fcat.
  175.     ls_fcat-fieldname = 'HORA'.
  176. *  ls_fcat-ref_table = 'SCARR'.
  177. *  ls_fcat-type = 'DAT'.
  178.     ls_fcat-col_pos = lines( t_fcat_01 ) + 1.
  179. * insert new line before CARRID (do not forget MANDT!).
  180. *  insert ls_fcat into p_fieldcat index 1.
  181.     APPEND ls_fcat TO t_fcat_01.
  182.  
  183.     LOOP AT t_fcat_01 ASSIGNING FIELD-SYMBOL(<f>).
  184.       CASE <f>-fieldname.
  185.         WHEN 'NAME'.
  186.           <f>-scrtext_s =
  187.           <f>-scrtext_m =
  188.           <f>-coltext   = <f>-seltext =
  189.           <f>-scrtext_l = TEXT-c01.
  190.           <f>-outputlen = 100.
  191.         WHEN 'SIZE'.
  192.           <f>-scrtext_s =
  193.           <f>-scrtext_m =
  194.           <f>-coltext   = <f>-seltext =
  195.           <f>-scrtext_l = TEXT-c02.
  196.           <f>-outputlen = 20.
  197.         WHEN 'MTIM'.
  198.           <f>-scrtext_s =
  199.           <f>-scrtext_m =
  200.           <f>-coltext   = <f>-seltext =
  201.           <f>-scrtext_l = TEXT-c03.
  202.           <f>-no_out = abap_true.
  203.         WHEN 'FECHA'.
  204.           <f>-scrtext_s =
  205.           <f>-scrtext_m =
  206.           <f>-coltext   = <f>-seltext =
  207.           <f>-scrtext_l = 'Fecha'.
  208.                     <f>-outputlen = 10.
  209. *          <f>-no_out = abap_true.
  210.         WHEN 'HORA'.
  211.                     <f>-outputlen = 10.
  212.           <f>-scrtext_s =
  213.           <f>-scrtext_m =
  214.           <f>-coltext   =
  215.           <f>-seltext =
  216.           <f>-scrtext_l = 'Hora'.
  217. *          <f>-no_out = abap_true.
  218.         WHEN OTHERS.
  219.           <f>-no_out = abap_true.
  220. *
  221.       ENDCASE.
  222. *
  223. *      MODIFY t_fcat_01 INDEX sy-tabix FROM lfc.
  224.     ENDLOOP.
  225.  
  226. *    t_fcat_01[]. "<-- Mismo catálogo
  227.  
  228.     PERFORM alv_remove_buttons.
  229.     CALL METHOD grid_01->set_table_for_first_display
  230.       EXPORTING
  231. *       i_structure_name     = 'ZAVL_CP_ALV_ALV_ADMIN'
  232. *       i_SAVE               = 'A'
  233.         is_variant           = gs_variant
  234.         is_layout            = gs_layout
  235.         it_toolbar_excluding = gt_toolbar
  236.       CHANGING
  237.         it_fieldcatalog      = t_fcat_01 "gt_field
  238.         it_outtab            = t_tab_01.
  239.  
  240.   ENDIF.
  241. ENDFORM.
  242.  
  243. FORM alv_remove_buttons.
  244.   CLEAR gt_toolbar.
  245.   APPEND cl_gui_alv_grid=>mc_fg_edit TO gt_toolbar.
  246. *  append CL_GUI_ALV_GRID=>MC_FG_SORT to gt_toolbar.
  247. *  append CL_GUI_ALV_GRID=>MC_MB_SUBTOT to gt_toolbar.
  248. *  append CL_GUI_ALV_GRID=>MC_MB_SUM    to gt_toolbar.
  249. *  append CL_GUI_ALV_GRID=>MC_MB_VARIANT to gt_toolbar.
  250.   APPEND cl_gui_alv_grid=>mc_fc_detail TO gt_toolbar.
  251. ENDFORM.
  252.  
  253. FORM pai_0100.
  254.   DATA(l_okcode) = g_okcode.
  255.   CLEAR g_okcode.
  256.   CASE l_okcode.
  257.     WHEN 'DOWN'.      PERFORM boton_download.
  258.     WHEN 'UPLO'.      PERFORM boton_upload.
  259.     WHEN 'DELE'.      PERFORM boton_delete.
  260.     WHEN 'BYEBYE'  .  PERFORM boton_byebye.
  261.     WHEN 'BACK'.      PERFORM boton_exit_program.
  262. *    WHEN 'SAVE'.    PERFORM DaTA_save.
  263.   ENDCASE.
  264. ENDFORM.
  265.  
  266. FORM add_bi_d USING p_fnam p_fval.
  267.   t_bi = VALUE #( BASE t_bi ( fnam = p_fnam fval = p_fval ) ).
  268. ENDFORM.
  269.  
  270. FORM add_bi_p USING p_program p_dyn.
  271.   t_bi = VALUE #( BASE t_bi ( program = p_program
  272.                               dynpro  = p_dyn
  273.                               dynbegin = 'X' ) ).
  274. ENDFORM.
  275.  
  276. FORM boton_exit_program.
  277. *--[ Destruir controladores y ALVs
  278. *  data:l_resp(1). perform confirmar_salida using l_resp. check l_resp eq abap_true.
  279.   cc_01->free( ).
  280.  
  281.   FREE: cc_01.
  282.   CLEAR: cc_01, grid_01.
  283.   LEAVE TO SCREEN 0.
  284. ENDFORM.
  285.  
  286. FORM boton_byebye.
  287.   cc_02->free( ).
  288.   FREE cc_02.
  289.   CLEAR grid_02.
  290.   LEAVE TO SCREEN 0.
  291. ENDFORM.
  292.  
  293.  
  294. FORM boton_upload.
  295.   DATA: t_files TYPE filetable,
  296.         l_name  TYPE string,
  297.         l_len   TYPE i,
  298.         l_r     TYPE xfeld,
  299.         t_tab   TYPE STANDARD TABLE OF ssfbin,
  300.         e_rc    TYPE sysubrc.
  301.   CALL METHOD cl_gui_frontend_services=>file_open_dialog
  302.     EXPORTING
  303.       window_title            = 'Subir ficheros'
  304.       multiselection          = abap_true
  305.     CHANGING
  306.       file_table              = t_files
  307.       rc                      = e_rc
  308. *     user_action             =
  309. *     file_encoding           =
  310.     EXCEPTIONS
  311.       file_open_dialog_failed = 1
  312.       cntl_error              = 2
  313.       error_no_gui            = 3
  314.       not_supported_by_gui    = 4
  315.       OTHERS                  = 5.
  316.  
  317.   LOOP AT t_files INTO DATA(l_files).
  318.     l_name = l_files-filename.
  319.     CALL METHOD cl_gui_frontend_services=>gui_upload
  320.       EXPORTING
  321.         filename                = l_name
  322.         filetype                = 'BIN'
  323.       IMPORTING
  324.         filelength              = l_len
  325. *       header                  =
  326.       CHANGING
  327.         data_tab                = t_tab
  328. *       isscanperformed         = SPACE
  329.       EXCEPTIONS
  330.         file_open_error         = 1
  331.         file_read_error         = 2
  332.         no_batch                = 3
  333.         gui_refuse_filetransfer = 4
  334.         invalid_type            = 5
  335.         no_authority            = 6
  336.         unknown_error           = 7
  337.         bad_data_format         = 8
  338.         header_not_allowed      = 9
  339.         separator_not_allowed   = 10
  340.         header_too_long         = 11
  341.         unknown_dp_error        = 12
  342.         access_denied           = 13
  343.         dp_out_of_memory        = 14
  344.         disk_full               = 15
  345.         dp_timeout              = 16
  346.         not_supported_by_gui    = 17
  347.         error_no_gui            = 18
  348.         OTHERS                  = 19.
  349.     .
  350.     IF sy-subrc EQ 0.
  351.       DATA: x_s TYPE xstring.
  352.       CLEAR x_s.
  353.       CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'
  354.         EXPORTING
  355.           input_length = l_len
  356. *         FIRST_LINE   = 0
  357. *         LAST_LINE    = 0
  358.         IMPORTING
  359.           buffer       = x_s
  360.         TABLES
  361.           binary_tab   = t_tab
  362.         EXCEPTIONS
  363.           failed       = 1
  364.           OTHERS       = 2.
  365.       IF sy-subrc EQ 0.
  366.         DATA: l_fname TYPE string, l_path TYPE string.
  367.         CLEAR: l_fname, l_path.
  368.         CALL FUNCTION 'SO_SPLIT_FILE_AND_PATH'
  369.           EXPORTING
  370.             full_name     = l_name
  371.           IMPORTING
  372.             stripped_name = l_fname
  373.             file_path     = l_path
  374.           EXCEPTIONS
  375.             x_error       = 1
  376.             OTHERS        = 2.
  377.  
  378.         IF sy-subrc EQ 0.
  379.           CONCATENATE p_dir '/' l_fname INTO l_name.
  380.           REPLACE ALL OCCURRENCES OF '//' IN l_name WITH '/' .
  381.           OPEN DATASET l_name FOR OUTPUT IN BINARY MODE.
  382.           IF sy-subrc EQ 0.
  383.             TRANSFER x_s TO l_name.
  384.             l_r = abap_true.
  385.           ENDIF.
  386.           CLOSE DATASET l_name.
  387.         ENDIF.
  388.  
  389.  
  390.       ENDIF.
  391.  
  392.  
  393.  
  394.     ENDIF.
  395.  
  396.     AT LAST.
  397.       IF l_r = abap_true.
  398.         PERFORM data_load.
  399.         grid_01->refresh_table_display( ).
  400.       ENDIF.
  401.     ENDAT.
  402.   ENDLOOP.
  403.  
  404. ENDFORM.
  405.  
  406.  
  407. FORM boton_delete.
  408.   DATA: index_rows TYPE lvc_t_row,
  409.         l_1s       TYPE xfeld,
  410.         l_ans(1).
  411.   DATA: l_name TYPE string.
  412.  
  413.   CLEAR l_1s.
  414.  
  415.   CALL METHOD grid_01->get_selected_rows
  416.     IMPORTING
  417.       et_index_rows = index_rows.
  418.   IF lines( index_rows ) >= 1.
  419.     SORT index_rows BY index DESCENDING.
  420.     l_name = lines( index_rows ).
  421.     concatenate '&#191;Está seguro de querer borrar' l_name ' fichero(s)?'
  422.     into l_name SEPARATED BY ' '.
  423.     CALL FUNCTION 'POPUP_TO_CONFIRM'
  424.       EXPORTING
  425.        TITLEBAR                    = 'Confirmación'
  426. *       DIAGNOSE_OBJECT             = ' '
  427.         text_question               = l_name
  428.        TEXT_BUTTON_1               = 'Sí'
  429. *       ICON_BUTTON_1               = ' '
  430.        TEXT_BUTTON_2               = 'No'
  431. *       ICON_BUTTON_2               = ' '
  432. *       DEFAULT_BUTTON              = '1'
  433. *       DISPLAY_CANCEL_BUTTON       = 'X'
  434. *       USERDEFINED_F1_HELP         = ' '
  435. *       START_COLUMN                = 25
  436. *       START_ROW                   = 6
  437. *       POPUP_TYPE                  =
  438. *       IV_QUICKINFO_BUTTON_1       = ' '
  439. *       IV_QUICKINFO_BUTTON_2       = ' '
  440.      IMPORTING
  441.        ANSWER                      = l_ans
  442. *     TABLES
  443. *       PARAMETER                   =
  444.      EXCEPTIONS
  445.        TEXT_NOT_FOUND              = 1
  446.        OTHERS                      = 2.
  447.     check sy-subrc eq 0 and l_ans = '1'.
  448.               .
  449.     IF sy-subrc <> 0.
  450. * Implement suitable error handling here
  451.     ENDIF.
  452.  
  453.     LOOP AT index_rows INTO DATA(l_i).
  454.       READ TABLE t_tab_01 INTO l_tab_01 INDEX l_i-index.
  455.       CHECK sy-subrc EQ 0.
  456.       DATA(l_tabix) = sy-tabix.
  457.       l_name = l_tab_01-name.
  458.       CONCATENATE p_dir '/' l_name INTO l_name.
  459.       REPLACE ALL OCCURRENCES OF '//' IN l_name WITH '/' .
  460.       OPEN DATASET l_name FOR INPUT IN BINARY MODE.
  461.       IF sy-subrc EQ 0.
  462.         CLOSE DATASET l_name.
  463.         DELETE DATASET l_name.
  464.         DELETE t_tab_01 INDEX l_tabix.
  465.         l_1s = abap_true.
  466.       ENDIF.
  467.     ENDLOOP.
  468.     IF l_1s = abap_true.
  469.       grid_01->refresh_table_display( ).
  470.     ENDIF.
  471.   ENDIF.
  472. ENDFORM.
  473.  
  474. FORM boton_download.
  475.   DATA: index_rows TYPE lvc_t_row,
  476.         l_1s       TYPE xfeld.
  477.   CLEAR l_1s.
  478.  
  479.   CALL METHOD grid_01->get_selected_rows
  480.     IMPORTING
  481.       et_index_rows = index_rows.
  482.   IF lines( index_rows ) >= 1.
  483.     LOOP AT index_rows INTO DATA(l_i).
  484.       READ TABLE t_tab_01 INTO l_tab_01 INDEX l_i-index.
  485.       DATA: l_name TYPE string,
  486.             l_01   TYPE string,
  487.             l_02   TYPE string,
  488.             l_03   TYPE string.
  489.  
  490.       l_name = l_tab_01-name.
  491.       IF l_1s = abap_true.
  492.         l_03 = l_02 && l_name.
  493.       ELSE.
  494.         CLEAR: l_01, l_02, l_03.
  495.         CALL METHOD cl_gui_frontend_services=>file_save_dialog
  496.           EXPORTING
  497.             window_title              = 'Descargar'
  498. *           default_extension         =
  499.             default_file_name         = l_name
  500. *           with_encoding             =
  501. *           file_filter               =
  502. *           initial_directory         =
  503.             prompt_on_overwrite       = 'X'
  504.           CHANGING
  505.             filename                  = l_01
  506.             path                      = l_02
  507.             fullpath                  = l_03
  508. *           user_action               =
  509. *           file_encoding             =
  510.           EXCEPTIONS
  511.             cntl_error                = 1
  512.             error_no_gui              = 2
  513.             not_supported_by_gui      = 3
  514.             invalid_default_file_name = 4
  515.             OTHERS                    = 5.
  516.       ENDIF.
  517.       IF NOT l_03 IS INITIAL AND sy-subrc EQ 0.
  518.  
  519.         CONCATENATE p_dir '/' l_name INTO l_name.
  520. *        REFRESH: t_bi, t_mess.
  521. *        l_opt-dismode = 'E'.
  522. *        PERFORM add_bi_p USING 'SAPLC13Z' '1010'.
  523. *        PERFORM add_bi_d USING 'BDC_OKCODE' '=EEXO'.
  524. *        PERFORM add_bi_d USING 'RCGFILETR-FTAPPL' l_name.
  525. *        PERFORM add_bi_d USING 'RCGFILETR-FTFRONT' l_03.
  526. *        PERFORM add_bi_d USING 'RCGFILETR-IEFOW' 'X'.
  527. *        PERFORM add_bi_d USING 'RCGFILETR-FTFTYPE' 'BIN'.
  528. *
  529. *        PERFORM add_bi_p USING 'SAPLC13Z' '1010'.
  530. *        PERFORM add_bi_d USING 'BDC_OKCODE' '/EECAN'.
  531. *
  532. *        CALL TRANSACTION 'CG3Y' USING t_bi OPTIONS FROM l_opt MESSAGES INTO t_mess.
  533. *        IF sy-subrc EQ 0.
  534. *          MESSAGE s398(00) WITH TEXT-s01 l_03.
  535. *        ENDIF.
  536. *
  537.  
  538.  
  539.         DATA lt_buffer TYPE TABLE OF string.
  540.         DATA lv_buffer TYPE string.
  541.  
  542.  
  543.         CLEAR lt_buffer.
  544.  
  545. * Opening the File
  546.         OPEN DATASET l_name FOR INPUT IN TEXT MODE
  547.           ENCODING DEFAULT WITH SMART LINEFEED IGNORING CONVERSION ERRORS.
  548.  
  549.         IF sy-subrc <> 0.
  550.           MESSAGE i398(00) WITH TEXT-s02 l_03.
  551.           CONTINUE.
  552.         ENDIF.
  553.  
  554.         DO.
  555.           READ DATASET l_name INTO lv_buffer.
  556.  
  557.           IF sy-subrc <> 0.
  558.             EXIT.
  559.           ENDIF.
  560.  
  561.           APPEND lv_buffer TO lt_buffer.
  562.  
  563.         ENDDO.
  564.  
  565.       ENDIF.
  566.  
  567.       CLOSE DATASET l_name.
  568.  
  569.       CALL METHOD cl_gui_frontend_services=>gui_download
  570.         EXPORTING
  571.           filename                = l_03
  572.         CHANGING
  573.           data_tab                = lt_buffer
  574.         EXCEPTIONS
  575.           file_write_error        = 1
  576.           no_batch                = 2
  577.           gui_refuse_filetransfer = 3
  578.           invalid_type            = 4
  579.           no_authority            = 5
  580.           unknown_error           = 6
  581.           header_not_allowed      = 7
  582.           separator_not_allowed   = 8
  583.           filesize_not_allowed    = 9
  584.           header_too_long         = 10
  585.           dp_error_create         = 11
  586.           dp_error_send           = 12
  587.           dp_error_write          = 13
  588.           unknown_dp_error        = 14
  589.           access_denied           = 15
  590.           dp_out_of_memory        = 16
  591.           disk_full               = 17
  592.           dp_timeout              = 18
  593.           file_not_found          = 19
  594.           dataprovider_exception  = 20
  595.           control_flush_error     = 21
  596.           not_supported_by_gui    = 22
  597.           error_no_gui            = 23
  598.           OTHERS                  = 24.
  599.       IF sy-subrc <> 0.
  600.         MESSAGE i398(00) WITH TEXT-s02 l_03.
  601.         CONTINUE.
  602.       ELSE.
  603.         MESSAGE s398(00) WITH 'Descargado:'(001) l_03.
  604.       ENDIF.
  605.       l_1s = abap_true.
  606.  
  607.  
  608.     ENDLOOP.
  609.   ELSE.
  610.     MESSAGE s398(00) WITH TEXT-e01 DISPLAY LIKE 'E'.
  611.   ENDIF.
  612.  
  613. ENDFORM.