segunda-feira, 17 de julho de 2017

Classe - 'CL_GUI_FRONTEND_SERVICES'

*--------------------------------------------------------------------*
*  Eae galera, sempre em nossas vidas de ABAP, vamos precisar saber
* fazer download e upload de arquivo, sabemos tambem que estas mesmas funções
* 'GUI_DOWNLOAD' e 'GUI_UPLOAD' estão obsoletas.




*  Conforme o 'F1' da função o mesmo indica você usar a classe
* 'CL_GUI_FRONTEND_SERVICES' que será a classe que vamos estudar hoje.
*  Tentarei mostrar alguns Metodos interessantes dessa classe que trabalham
* com arquivos e pastas.

*  A ideia desse programa será bem simples, ele te possibilita criar uma
* pasta e incluir nela copias dos arquivos de uma outra pasta, e no final
* , como tudo isso é só para teste, existe a possibilidade de deletar todos
* os arquivos copiados juntamente com a pasta caso deseje. Esse programa
* não fara nenhuma alteração de algum arquivo que você já tenha no Desktop,
* irá trabalhar somente com os criados pelo proprio programa.
*  Recomendo criar uma pasta qualquer, incluir um arquivo qualquer também
* e começar a brincadeira.
*  Como sempre faço, existem algums Breaks no código para forçá-los a
* entender o que cada metodo faz. Abaixo a lista dos metodos usados dessa
* Classe.

* cl_gui_frontend_services=>directory_browse
* cl_gui_frontend_services=>directory_create
* cl_gui_frontend_services=>directory_exist
* cl_gui_frontend_services=>directory_delete
* cl_gui_frontend_services=>directory_list_files
* cl_gui_frontend_services=>file_copy
* cl_gui_frontend_services=>file_exist
* cl_gui_frontend_services=>file_get_attributes
* cl_gui_frontend_services=>file_delete

*  Lembando que o código está simples, mais para estudos mesmo, sugestões,
* critina ou qualquer tipo de opnião estamos disponivel no final do post,
* a nomenclatura dos metodos estão bem intuitivas para não precisar comentar
* muito, mas qualquer duvida estamos aí também.
* Bons estudos aeeee.

REPORT z_cl_gui_frontend_services.

TABLES :
  sscrfields.

CLASS
  zcl_main DEFINITION DEFERRED.

DATA :
  o_main TYPE REF TO zcl_main.

DATA :
  subrc         TYPE sy-subrc,
  result        TYPE abap_bool,
  gt_file_table TYPE rstt_t_files.


* T01 - Pastas
* C01 - Processar
* T02 - Arquivos
* T03 - Deletar arquivos e pastas novas após o processo ?

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-t01.
PARAMETERS :
  folder   TYPE string,
  n_folder TYPE string DEFAULT 'teste'.
SELECTION-SCREEN END OF BLOCK   b1.

SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-t02.
PARAMETERS :
  folder2 TYPE string.
SELECTION-SCREEN END OF BLOCK   b2.

SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-t03.
PARAMETERS :
  del_fold AS CHECKBOX DEFAULT abap_true,
  del_file AS CHECKBOX DEFAULT abap_true.
SELECTION-SCREEN END OF BLOCK   b3.


CLASS zcl_main DEFINITION.
  PUBLIC SECTION.
    METHODS:
*--------------------------------------------------------------------*
      directory,
*--------------------------------------------------------------------*
      directory_browse
        IMPORTING
          iv_title  TYPE string
        CHANGING
          cv_folder TYPE string,
*--------------------------------------------------------------------*
      directory_create
        IMPORTING
          iv_directory TYPE string
        CHANGING
          cv_rc        TYPE sy-subrc,
*--------------------------------------------------------------------*
      directory_exist
        IMPORTING
          iv_directory TYPE string
        CHANGING
          cv_result    TYPE abap_bool,
*--------------------------------------------------------------------*
      directory_delete
        IMPORTING
          iv_directory TYPE string
        CHANGING
          cv_rc        TYPE sy-subrc,
*--------------------------------------------------------------------*
      directory_list_files
        IMPORTING
          iv_directory  TYPE string
        EXPORTING
          ev_count      TYPE i
        CHANGING
          ct_file_table TYPE rstt_t_files,
*--------------------------------------------------------------------*
      file
        CHANGING
          ct_file_table TYPE rstt_t_files,
*--------------------------------------------------------------------*
      file_copy
        IMPORTING
          iv_source      TYPE string
          iv_destination TYPE string
          iv_overwrite   TYPE abap_bool OPTIONAL
        EXPORTING
          ev_rc          TYPE sy-subrc,
*--------------------------------------------------------------------*
      file_exist
        IMPORTING
          iv_file   TYPE string
        EXPORTING
          ev_result TYPE abap_bool,
*--------------------------------------------------------------------*
      file_get_attributes
        IMPORTING
          iv_file       TYPE string
        EXPORTING
          ev_attributes TYPE char10,
*--------------------------------------------------------------------*
      popup_to_confirm_files
        CHANGING
          ct_file_table TYPE rstt_t_files,
*--------------------------------------------------------------------*
      popup_to_confirm
        IMPORTING
          iv_title    TYPE string
          iv_question TYPE string
        EXPORTING
          ev_answer   TYPE char1,
*--------------------------------------------------------------------*
      delete_folder,
*--------------------------------------------------------------------*
      delete_file
        CHANGING
          ct_file_table TYPE rstt_t_files,
*--------------------------------------------------------------------*
      file_delete
        IMPORTING
          iv_file TYPE string
        EXPORTING
          ev_rc   TYPE sy-subrc
        .
ENDCLASS.

quinta-feira, 6 de julho de 2017

Alterando Request já liberada - RDDIT076

*  Na marioria das vezes, o transporte de request realizado de forma 
* organizada, padronização de nomenclatura, destino, essas coisas,
*  Mas as vezes fazemos requests fora do padrão, aguardando alguma informação
* que complete essa nomenclatura padrão, o problema é quando liberamos 
* para essa mesma request transporte ( =( ), procurando na internet algo 
* que resolvesse isso encontrei o programa 'RDDIT076', esse mesmo programa 
* Faz a alteração de quase tudo sobre a request ( incluindo Status, caso 
* queira deixar modificavel(D) novamente ). A execução dela é bem simples
* mas como tudo.... MUITO CUIDADO. Para não mexer em algo que não devesse.

* Abaixo uns prints com o processo.

*  Primeiramente Com o numero da request reservada vamos na transação se38,
* colocar 'RDDIT076' e dar 'F8', apos executado informar a request.





*  Irá aparaecer uma tela com dados principais da request e as tasks da mesma,
* clique duas vezes, ou seleciona a request e aperte o botão de detalhamento.