<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Arquivos abap - Adeilson :)</title>
	<atom:link href="https://adeilson.com.br/tag/abap/feed/" rel="self" type="application/rss+xml" />
	<link>https://adeilson.com.br/tag/abap/</link>
	<description>Anotações ao alcance de todos ! ! !</description>
	<lastBuildDate>Tue, 30 Aug 2016 13:53:11 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
		<item>
		<title>ALV Editável</title>
		<link>https://adeilson.com.br/2016/08/30/alv-editavel/</link>
					<comments>https://adeilson.com.br/2016/08/30/alv-editavel/#comments</comments>
		
		<dc:creator><![CDATA[Adeilson]]></dc:creator>
		<pubDate>Tue, 30 Aug 2016 13:53:11 +0000</pubDate>
				<category><![CDATA[ABAP]]></category>
		<category><![CDATA[abap]]></category>
		<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[sap]]></category>
		<guid isPermaLink="false">http://adeilson.com.br/?p=480</guid>

					<description><![CDATA[*&#38;---------------------------------------------------------------------* *&#38; Report ZADE7 *&#38; *&#38;---------------------------------------------------------------------* *&#38; *&#38; *&#38;---------------------------------------------------------------------* REPORT zade7. *&#38;---------------------------------------------------------------------* *&#38; TOP *&#38;---------------------------------------------------------------------* TABLES: zade. TYPE-POOLS slis. "ALV * Estrutura de campos do relatório TYPES: BEGIN OF ty_ade. INCLUDE STRUCTURE zade. "Tab resultado RFC TYPES: handle_style TYPE lvc_t_styl, &#8230; <a href="https://adeilson.com.br/2016/08/30/alv-editavel/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<pre class="lang:abap decode:true  ">*&amp;---------------------------------------------------------------------*
*&amp; Report  ZADE7
*&amp;
*&amp;---------------------------------------------------------------------*
*&amp;
*&amp;
*&amp;---------------------------------------------------------------------*

REPORT  zade7.

*&amp;---------------------------------------------------------------------*
*&amp;  TOP
*&amp;---------------------------------------------------------------------*

TABLES: zade.

TYPE-POOLS slis. "ALV

* Estrutura de campos do relatório
TYPES: BEGIN OF ty_ade.
        INCLUDE STRUCTURE zade.         "Tab resultado RFC
TYPES: handle_style TYPE lvc_t_styl,    "Estilo edição
       novo         TYPE c,             "Tipo proc =&gt; Novo
       delete       TYPE c.             "Tipo proc =&gt; Eliminar
TYPES: END OF ty_ade.

DATA: t_ade_ori TYPE TABLE OF      zade,        "Tabela interna original.
      t_ade     TYPE TABLE OF      ty_ade,      "Tabela interna com os campos para CRUD.
      t_fieldcat     TYPE          lvc_t_fcat,  "Fieldcat alv
      w_fieldcat     TYPE          lvc_s_fcat,
      t_sort         TYPE          lvc_t_sort,  "Ordenação
      w_sort         TYPE          lvc_s_sort,
      w_layout       TYPE          lvc_s_layo,  "Layout alv
      t_new          TYPE          lvc_t_styl,  "Registros novos
      w_new          TYPE          lvc_s_styl,
      t_edit         TYPE          lvc_t_styl,  "Registros editar
      w_edit         TYPE          lvc_s_styl,
      t_show         TYPE          lvc_t_styl,  "Registros exibir
      w_show         TYPE          lvc_s_styl,
      w_ade          TYPE          ty_ade,
      w_ade_ori      TYPE          zade,
      v_modific(1)   TYPE          c,           "Modif ou Visual
      v_elimino(1)   TYPE          c,           "Eliminou registro
      v_alterou(1)   TYPE          c,           "Alterou registro
      v_inseriu(1)   TYPE          c,           "Criou regitro
      t_ade_new      TYPE TABLE OF ty_ade,      "Registros novos
      w_ade_new      TYPE          ty_ade,
      t_ade_del      TYPE TABLE OF ty_ade,      "Registros eliminar
      w_ade_del      TYPE          ty_ade,
      t_ade_de2      TYPE TABLE OF zade,        "Registros eliminar
      w_ade_de2      TYPE          zade,
      t_ade_upd      TYPE TABLE OF ty_ade,      "Registros editar
      w_ade_upd      TYPE          ty_ade,
      t_ade_up2      TYPE TABLE OF zade,        "Registros editar
      w_ade_up2      TYPE          zade,
      v_log_handle   TYPE          balloghndl,  "handle da mensagem
      v_msg          TYPE          abap_bool.

*&amp;---------------------------------------------------------------------*
*&amp;  SCREEN
*&amp;---------------------------------------------------------------------*

SELECTION-SCREEN BEGIN OF BLOCK a WITH FRAME TITLE text-003.
SELECT-OPTIONS: s_matnr  FOR  zade-matnr, " Centro
                s_descri FOR zade-descri NO INTERVALS NO-EXTENSION. " Data Documento
SELECTION-SCREEN END OF BLOCK a.

START-OF-SELECTION.
* Limpar conteúdo dos objetos
  PERFORM zf_clear.

* Selecionar registros
  PERFORM zf_selecionar_dados.

* Estrutura de campos e layout do ALV
  PERFORM zf_alv_fieldcat.

* Estrutura de campos ordenados no ALV
  PERFORM zf_alv_sort.

* Mapeamento para registros novos
  PERFORM zf_new_fields.

* Mapeamento para registros alterados
  PERFORM zf_edit_fields.

* Mapeamento para visualizar registros
  PERFORM zf_show_fields.

* Loop para montar tabela com campos editaveis ou não
  PERFORM zf_make_fields.

* Exibir relatório ALV
  PERFORM zf_show_alv.

END-OF-SELECTION.


*&amp;---------------------------------------------------------------------*
*&amp;  FORMS
*&amp;---------------------------------------------------------------------*

*&amp;---------------------------------------------------------------------*
*&amp;      Form  ZF_SELECIONAR_DADOS
*&amp;---------------------------------------------------------------------*
FORM zf_selecionar_dados .
  SELECT *
    INTO TABLE t_ade_ori
    FROM zade
   WHERE matnr  IN s_matnr
     AND descri IN s_descri.
  IF sy-subrc IS INITIAL.
    SORT t_ade_ori BY matnr.
  ELSE.
    MESSAGE 'Dados não encontrado!' TYPE 'I' DISPLAY LIKE 'W'.
    LEAVE LIST-PROCESSING.
  ENDIF.

ENDFORM.                    " ZF_SELECIONAR_DADOS

*&amp;---------------------------------------------------------------------*
*&amp;      Form  ZF_CLEAR
*&amp;---------------------------------------------------------------------*
FORM zf_clear .
  CLEAR:
      v_modific,
      v_elimino,
      v_alterou,
      v_inseriu,
      t_fieldcat[],
      w_fieldcat,
      w_layout,
      w_new,
      t_new[],
      w_edit,
      t_edit[],
      w_show,
      t_show[],
      w_ade,
      t_ade[],
      t_ade_new[],
      w_ade_new,
      t_ade_del[],
      w_ade_del,
      t_ade_de2[],
      w_ade_de2,
      t_ade_upd[],
      w_ade_upd,
      t_ade_up2[],
      w_ade_up2,
      t_ade_ori[].

  FREE:
      t_fieldcat[],
      t_new[],
      t_edit[],
      t_show[],
      t_ade[],
      t_ade_new[],
      t_ade_del[],
      t_ade_de2[],
      t_ade_upd[],
      t_ade_up2[],
      t_ade_ori[].
ENDFORM.                    " ZF_CLEAR

*&amp;---------------------------------------------------------------------*
*&amp;      Form  ZF_ALV_FIELDCAT
*&amp; Estrutura de campos e layout do ALV
*&amp;---------------------------------------------------------------------*
FORM zf_alv_fieldcat .
  CLEAR t_fieldcat[].

* Campos do relatório
  w_fieldcat-tabname        = 'T_ADE'.
  w_fieldcat-fieldname      = 'MATNR'.
  w_fieldcat-edit           = abap_false.
  w_fieldcat-ref_table      = 'ZADE'.
  w_fieldcat-ref_field      = 'MATNR'.
*  w_fieldcat-scrtext_l      = 'CNPJ'.
*  w_fieldcat-scrtext_m      = 'CNPJ'.
*  w_fieldcat-scrtext_s      = 'CNPJ'.
  w_fieldcat-outputlen      = 18.
  w_fieldcat-emphasize      = abap_true.
  APPEND w_fieldcat TO t_fieldcat.
  CLEAR w_fieldcat.

  w_fieldcat-tabname        = 'T_ADE'.
  w_fieldcat-fieldname      = 'DESCRI'.
  w_fieldcat-edit           = abap_true.
  w_fieldcat-ref_table      = 'ZADE'.
  w_fieldcat-ref_field      = 'DESCRI'.
  w_fieldcat-outputlen      = 30.
  APPEND w_fieldcat TO t_fieldcat.
  CLEAR w_fieldcat.

* Layout do relatório
  w_layout-zebra            = abap_true.
  w_layout-stylefname       = 'HANDLE_STYLE'.
ENDFORM.                    " ZF_ALV_FIELDCAT

*&amp;---------------------------------------------------------------------*
*&amp;      Form  ZF_NEW_FIELDS
*&amp; Mapeamento para registros novos
*&amp;---------------------------------------------------------------------*
FORM zf_new_fields .
  CLEAR t_new[].

  w_new-fieldname = 'MATNR'.
  w_new-style     = cl_gui_alv_grid=&gt;mc_style_enabled.
  w_new-style2    = abap_false.
  w_new-style3    = abap_false.
  w_new-style4    = abap_false.
  INSERT w_new INTO TABLE t_new.
  CLEAR w_new.

  w_new-fieldname = 'DESCRI'.
  w_new-style     = cl_gui_alv_grid=&gt;mc_style_enabled.
  w_new-style2    = abap_false.
  w_new-style3    = abap_false.
  w_new-style4    = abap_false.
  INSERT w_new INTO TABLE t_new.
  CLEAR w_new.
ENDFORM.                    " ZF_NEW_FIELDS

*&amp;---------------------------------------------------------------------*
*&amp;      Form  ZF_EDIT_FIELDS
*&amp; Mapeamento para registros a serem alterados
*&amp;---------------------------------------------------------------------*
FORM zf_edit_fields .
  CLEAR t_edit[].

  w_edit-fieldname = 'MATNR'.
  w_edit-style     = cl_gui_alv_grid=&gt;mc_style_disabled.
  w_edit-style2    = abap_false.
  w_edit-style3    = abap_false.
  w_edit-style4    = abap_false.
  INSERT w_edit INTO TABLE t_edit.
  CLEAR w_edit.

  w_edit-fieldname = 'DESCRI'.
  w_edit-style     = cl_gui_alv_grid=&gt;mc_style_enabled.
  w_edit-style2    = abap_false.
  w_edit-style3    = abap_false.
  w_edit-style4    = abap_false.
  INSERT w_edit INTO TABLE t_edit.
  CLEAR w_edit.
ENDFORM.                    " ZF_EDIT_FIELDS

*&amp;---------------------------------------------------------------------*
*&amp;      Form  ZF_SHOW_FIELDS
*&amp; Mapeamento para visualizar registros
*&amp;---------------------------------------------------------------------*
FORM zf_show_fields .
  CLEAR t_show[].

  w_show-fieldname = 'MATNR'.
  w_show-style     = cl_gui_alv_grid=&gt;mc_style_disabled.
  w_show-style2    = abap_false.
  w_show-style3    = abap_false.
  w_show-style4    = abap_false.
  INSERT w_show INTO TABLE t_show.
  CLEAR w_show.

  w_show-fieldname = 'DESCRI'.
  w_show-style     = cl_gui_alv_grid=&gt;mc_style_disabled.
  w_show-style2    = abap_false.
  w_show-style3    = abap_false.
  w_show-style4    = abap_false.
  INSERT w_show INTO TABLE t_show.
  CLEAR w_show.
ENDFORM.                    " ZF_SHOW_FIELDS

*&amp;---------------------------------------------------------------------*
*&amp;      Form  ZF_SHOW_ALV
*&amp; Exibir relatório ALV
*&amp;---------------------------------------------------------------------*
FORM zf_show_alv .
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    EXPORTING
      i_callback_program       = sy-repid
      is_layout_lvc            = w_layout
      it_fieldcat_lvc          = t_fieldcat
      i_callback_user_command  = 'ZF_COMMANDS'
      i_callback_pf_status_set = 'ZF_STATUS'
      it_sort_lvc              = t_sort
    TABLES
      t_outtab                 = t_ade[]
    EXCEPTIONS
      program_error            = 1
      OTHERS                   = 2.
  IF sy-subrc IS NOT INITIAL.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
ENDFORM.                    " ZF_SHOW_ALV

*&amp;---------------------------------------------------------------------*
*&amp;      Form  ZF_STATUS
*&amp; Botões do ALV
*&amp;---------------------------------------------------------------------*
FORM zf_status USING ct_extab TYPE slis_t_extab.
*  DATA l_extab LIKE LINE OF ct_extab.
  CLEAR ct_extab.

*  AUTHORITY-CHECK OBJECT 'ZOAXXXX'
*    ID 'MATNR' FIELD p_matnr "Material
*    ID 'ACTVT' FIELD '01'.   "Criar
*  IF NOT sy-subrc IS INITIAL.
*    MOVE '&amp;NOVO' TO l_extab.
*    APPEND l_extab TO ct_extab.
*  ENDIF.
*
*  AUTHORITY-CHECK OBJECT 'ZOAXXXX'
*    ID 'MATNR' FIELD p_emp  "Material
*    ID 'ACTVT' FIELD '06'.  "Excluir
*  IF NOT sy-subrc IS INITIAL.
*    MOVE '&amp;DELE' TO l_extab.
*    APPEND l_extab TO ct_extab.
*  ENDIF.
*
*  AUTHORITY-CHECK OBJECT 'ZOAXXXX'
*    ID 'MATNR' FIELD p_emp  "Material
*    ID 'ACTVT' FIELD '02'.  "Altera
*  IF NOT sy-subrc IS INITIAL.
*    MOVE '&amp;MODF' TO l_extab.
*    APPEND l_extab TO ct_extab.
*  ENDIF.

  SET PF-STATUS 'ZPFADE7' EXCLUDING ct_extab.
ENDFORM.                    "ZF_STATUS

*&amp;---------------------------------------------------------------------*
*&amp;      Form  ZF_MAKE_FIELDS
*&amp; Manutenção dos dados quando alterados
*&amp;---------------------------------------------------------------------*
FORM zf_make_fields .
  LOOP AT t_ade_ori INTO w_ade_ori.
    MOVE-CORRESPONDING w_ade_ori TO w_ade.
*    w_ade-novo = abap_true.
    APPEND LINES OF t_show TO w_ade-handle_style.
    APPEND w_ade TO t_ade.
    CLEAR w_ade-handle_style[].
  ENDLOOP.
ENDFORM.                    " ZF_MAKE_FIELDS

*&amp;---------------------------------------------------------------------*
*&amp;      Form  ZF_COMMANDS
*&amp; Ação dos botões do ALV
*&amp;---------------------------------------------------------------------*
FORM zf_commands USING ucomm    TYPE sy-ucomm
                       selfield TYPE slis_selfield.
  DATA:
    lv_tabix      TYPE        sy-tabix,
    lv_duplic(1)  TYPE        c,
    ref_grid      TYPE REF TO cl_gui_alv_grid,
    lt_index_rows TYPE        lvc_t_row,
    lt_row_no     TYPE        lvc_t_roid,
    lw_row_no     TYPE        lvc_s_roid.

* Busca valores do ALV ------------------------------------------------*
  IF ref_grid IS INITIAL.
    CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
      IMPORTING
        e_grid = ref_grid.
  ENDIF.

  IF NOT ref_grid IS INITIAL.
    CALL METHOD ref_grid-&gt;check_changed_data.
  ENDIF.


* Refresh -------------------------------------------------------------*
  CASE ucomm.
    WHEN '&amp;REFR'.
* Atualizar alv
      PERFORM zf_refresh.

    WHEN '&amp;MODF'.
* Ver/Modificar registro ----------------------------------------------*
      IF v_modific IS INITIAL.
        LOOP AT t_ade INTO w_ade.
          lv_tabix = sy-tabix.
          CLEAR w_ade-handle_style[].
          IF w_ade-matnr IS INITIAL.
            APPEND LINES OF t_new TO w_ade-handle_style.
          ELSE.
            APPEND LINES OF t_edit TO w_ade-handle_style.
          ENDIF.
          MODIFY t_ade FROM w_ade INDEX lv_tabix.
        ENDLOOP.
        v_modific = abap_true.
      ELSE.
        LOOP AT t_ade INTO w_ade WHERE matnr IS NOT INITIAL.
          lv_tabix = sy-tabix.
          CLEAR w_ade-handle_style[].
          APPEND LINES OF t_show TO w_ade-handle_style.
          MODIFY t_ade FROM w_ade INDEX lv_tabix.
        ENDLOOP.
        v_modific = abap_false.
      ENDIF.

* Novo registro -------------------------------------------------------*
    WHEN '&amp;NOVO'.
      CLEAR w_ade.
      w_ade-mandt = sy-mandt.
      APPEND LINES OF t_new TO w_ade-handle_style.
      w_ade-novo = abap_true.
      APPEND w_ade TO t_ade.
      CLEAR w_ade-handle_style[].

* Eliminar registro ---------------------------------------------------*
    WHEN '&amp;DELE'.
      CALL METHOD ref_grid-&gt;get_selected_rows
        IMPORTING
          et_index_rows = lt_index_rows
          et_row_no     = lt_row_no.

      LOOP AT lt_row_no INTO lw_row_no.
        READ TABLE t_ade
              INTO w_ade
             INDEX lw_row_no-row_id.
        IF sy-subrc IS INITIAL.
          lv_tabix = sy-tabix.
          w_ade-delete = abap_true.
          MODIFY t_ade FROM w_ade INDEX lv_tabix.
          MOVE-CORRESPONDING w_ade TO w_ade_del.
          APPEND w_ade_del TO t_ade_del.
          CLEAR w_ade_del.
        ENDIF.
      ENDLOOP.
      DELETE t_ade WHERE delete = abap_true.

* Gravar atualizações -------------------------------------------------*
    WHEN '&amp;SAVE'.
      v_msg = abap_false.
      PERFORM log_create.

* Valida registros novos
      t_ade_new[] = t_ade[].

      DELETE t_ade_new WHERE novo IS INITIAL.
      DELETE t_ade     WHERE novo IS NOT INITIAL.

      LOOP AT t_ade_new INTO w_ade_new.
* Atualiza tabela de visualização do ALV
        READ TABLE t_ade
              INTO w_ade
          WITH KEY matnr        = w_ade_new-matnr.
        IF sy-subrc IS INITIAL.
          lv_duplic = abap_true.
        ELSE.
          w_ade-matnr        = w_ade_new-matnr.
          w_ade-descri       = w_ade_new-descri.
          w_ade-novo         = abap_false.

          CLEAR w_ade-handle_style[].
          APPEND LINES OF t_show TO w_ade-handle_style.
          APPEND w_ade TO t_ade.
        ENDIF.

      ENDLOOP.

* Insere registros na tabela original
      IF t_ade[] IS NOT INITIAL.
* Atualizar registros
        LOOP AT t_ade INTO w_ade.
          lv_tabix = sy-tabix.

* Adicionar/modificar registros
          IF w_ade-matnr IS INITIAL.
            PERFORM log_add USING 'Material deve ser preenchido!'
                                  'E'.
            CONTINUE.
          ENDIF.
          w_ade_upd-matnr        = w_ade-matnr.
          w_ade_upd-descri       = w_ade-descri.

          READ TABLE t_ade_ori
                INTO w_ade_ori
            WITH KEY matnr     = w_ade_upd-matnr.
          IF sy-subrc IS INITIAL.
            IF w_ade_ori-descri = w_ade_upd-descri.
              CONTINUE.
            ELSE.
              v_alterou = abap_true.
            ENDIF.
          ELSE.
            v_inseriu = abap_true.
          ENDIF.
          APPEND w_ade_upd TO t_ade_upd.
        ENDLOOP.

* Alterar tabela de fornecedores
        CLEAR t_ade_up2[].
        LOOP AT t_ade_upd INTO w_ade_upd.
          MOVE-CORRESPONDING w_ade_upd TO w_ade_up2.
          APPEND w_ade_up2 TO t_ade_up2.
        ENDLOOP.
        IF NOT t_ade_up2[] IS INITIAL.
          MODIFY zade FROM TABLE t_ade_up2.
        ENDIF.
        CLEAR t_ade_upd[].
      ENDIF.

* Elimina registros
      CLEAR t_ade_de2[].
      LOOP AT t_ade_del INTO w_ade_del.
        MOVE-CORRESPONDING w_ade_del TO w_ade_de2.
        APPEND w_ade_de2 TO t_ade_de2.
      ENDLOOP.
      IF t_ade_de2[] IS NOT INITIAL.
        DELETE zade FROM TABLE t_ade_de2.
        v_elimino = abap_true.
      ENDIF.

* Mensagens
      IF v_inseriu IS NOT INITIAL.
        PERFORM log_add USING 'Registro(s) inseridos(s) com sucesso!'
                              'S'.
      ENDIF.

      IF v_alterou IS NOT INITIAL.
        PERFORM log_add USING 'Registro(s) modificado(s) com sucesso!'
                              'S'.
      ENDIF.

      IF v_elimino IS NOT INITIAL.
        PERFORM log_add USING 'Registro(s) eliminado(s) com sucesso!'
                              'S'.
      ENDIF.

      IF lv_duplic IS NOT INITIAL.
        PERFORM log_add USING 'Um ou mais registros duplicados foram removidos!'
                              'S'.
      ENDIF.

      PERFORM log_show.

* Atualizar alv
      PERFORM zf_refresh.
  ENDCASE.

*  SORT t_ade BY matnr.

* Atualiza os dados no ALV
  selfield-refresh = abap_true.
ENDFORM.                    "ZF_COMMANDS

*&amp;---------------------------------------------------------------------*
*&amp;      Form  ZF_REFRESH
*&amp; Atualizar alv
*&amp;---------------------------------------------------------------------*
FORM zf_refresh .
* Limpar conteúdo dos objetos
  PERFORM zf_clear.

* Selecionar registros
  PERFORM zf_selecionar_dados.

* Estrutura de campos e layout do ALV
  PERFORM zf_alv_fieldcat.

* Estrutura de campos ordenados no ALV
  PERFORM zf_alv_sort.

* Mapeamento para registros novos
  PERFORM zf_new_fields.

* Mapeamento para registros a serem alterados
  PERFORM zf_edit_fields.

* Mapeamento para visualizar registros
  PERFORM zf_show_fields.

* Loop para montar tabela com campos editaveis ou não
  PERFORM zf_make_fields.
ENDFORM.                    " ZF_REFRESH

*&amp;---------------------------------------------------------------------*
*&amp;      Form  ZF_ALV_SORT
*&amp;---------------------------------------------------------------------*
FORM zf_alv_sort.
  CLEAR w_sort.
  w_sort-fieldname = 'MATNR'.
  w_sort-spos = '1'.
  w_sort-up = 'X'.
  APPEND w_sort TO t_sort.
ENDFORM.                    " ZF_ALV_SORT

*&amp;---------------------------------------------------------------------*
*&amp;      Form  log_create
*&amp; Cria o handle do LOG
*&amp;---------------------------------------------------------------------*
FORM log_create.
  DATA l_s_log TYPE bal_s_log.

  IF v_log_handle IS INITIAL.
* create an initial log file
    l_s_log-extnumber  = 'ZADE7'(001).
    CALL FUNCTION 'BAL_LOG_CREATE'
      EXPORTING
        i_s_log      = l_s_log
      IMPORTING
        e_log_handle = v_log_handle
      EXCEPTIONS
        OTHERS       = 1.
    IF sy-subrc &lt;&gt; 0.
      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
               WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.
  ENDIF.

* Limpar as mensagens anteriores
  CALL FUNCTION 'BAL_LOG_MSG_DELETE_ALL'
    EXPORTING
      i_log_handle  = v_log_handle
    EXCEPTIONS
      log_not_found = 1
      OTHERS        = 2.
  IF sy-subrc &lt;&gt; 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
             WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

ENDFORM.                    "log_create

*&amp;---------------------------------------------------------------------*
*&amp;      Form  LOG_ADD
*&amp; Adiciona mensagem para exibir
*&amp;---------------------------------------------------------------------*
FORM log_add USING p_msg       TYPE bal_s_msg-msgv1
                   p_msgty     TYPE bal_s_msg-msgty. "E / W / S
*                   p_probclass TYPE bal_s_msg-probclass. "1 / 2 / 3
  DATA l_s_msg TYPE bal_s_msg.

  v_msg = abap_true.

  l_s_msg-msgid     = '88'.
  l_s_msg-msgno     = 0.
  l_s_msg-msgty     = p_msgty.
*  l_s_msg-probclass = p_probclass.
  l_s_msg-msgv1     = p_msg.

*   add message to log file
*   (we explicitly specify I_LOG_HANLDE since we want to add this
*    message to the new opened log. The default log might be different
*    from this!).
  CALL FUNCTION 'BAL_LOG_MSG_ADD'
    EXPORTING
      i_log_handle = v_log_handle
      i_s_msg      = l_s_msg
    EXCEPTIONS
      OTHERS       = 1.
  IF sy-subrc &lt;&gt; 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
             WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
ENDFORM.                    "LOG_ADD

*&amp;---------------------------------------------------------------------*
*&amp;      Form  LOG_SHOW
*&amp; Exibi a mensagem
*&amp;---------------------------------------------------------------------*
FORM log_show.
  DATA:
    l_s_display_profile TYPE bal_s_prof.

  IF v_msg EQ abap_true.
* get a prepared profile
    CALL FUNCTION 'BAL_DSP_PROFILE_POPUP_GET'
      IMPORTING
        e_s_display_profile = l_s_display_profile
      EXCEPTIONS
        OTHERS              = 1.
    IF sy-subrc &lt;&gt; 0.
      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
               WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.

* set report to allow saving of variants
    l_s_display_profile-disvariant-report = sy-repid.

* when you use also other ALV lists in your report,
* please specify a handle to distinguish between the display
* variants of these different lists, e.g:
    l_s_display_profile-disvariant-handle = 'LOG'.

* call display function module
* We do not specify any filter (like I_S_LOG_FILTER, ...,
* I_T_MSG_HANDLE) since we want to display all logs available
    CALL FUNCTION 'BAL_DSP_LOG_DISPLAY'
      EXPORTING
        i_s_display_profile = l_s_display_profile
      EXCEPTIONS
        OTHERS              = 1.
    IF sy-subrc &lt;&gt; 0.
      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
               WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.
  ENDIF.
ENDFORM.                    "LOG_SHOW</pre>
<p><span id="more-480"></span></p>
<p>Arquivos auxiliares</p>
<p><a href="https://adeilson.com.br/wp-content/uploads/2016/08/Image-20160830_1042.jpg"><img fetchpriority="high" decoding="async" class="alignnone size-full wp-image-481" src="https://adeilson.com.br/wp-content/uploads/2016/08/Image-20160830_1042.jpg" alt="Image 20160830_1042" width="1531" height="1584" srcset="https://adeilson.com.br/wp-content/uploads/2016/08/Image-20160830_1042.jpg 1531w, https://adeilson.com.br/wp-content/uploads/2016/08/Image-20160830_1042-290x300.jpg 290w, https://adeilson.com.br/wp-content/uploads/2016/08/Image-20160830_1042-768x795.jpg 768w, https://adeilson.com.br/wp-content/uploads/2016/08/Image-20160830_1042-990x1024.jpg 990w" sizes="(max-width: 1531px) 100vw, 1531px" /></a> <a href="https://adeilson.com.br/wp-content/uploads/2016/08/Image-20160830_104400.jpg"><img decoding="async" class="alignnone size-full wp-image-482" src="https://adeilson.com.br/wp-content/uploads/2016/08/Image-20160830_104400.jpg" alt="Image 20160830_104400" width="1538" height="892" srcset="https://adeilson.com.br/wp-content/uploads/2016/08/Image-20160830_104400.jpg 1538w, https://adeilson.com.br/wp-content/uploads/2016/08/Image-20160830_104400-300x174.jpg 300w, https://adeilson.com.br/wp-content/uploads/2016/08/Image-20160830_104400-768x445.jpg 768w, https://adeilson.com.br/wp-content/uploads/2016/08/Image-20160830_104400-1024x594.jpg 1024w" sizes="(max-width: 1538px) 100vw, 1538px" /></a> <a href="https://adeilson.com.br/wp-content/uploads/2016/08/PF-status.txt">PF-status</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://adeilson.com.br/2016/08/30/alv-editavel/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Função para calcular data</title>
		<link>https://adeilson.com.br/2016/08/23/funcao-para-calcular-data/</link>
					<comments>https://adeilson.com.br/2016/08/23/funcao-para-calcular-data/#respond</comments>
		
		<dc:creator><![CDATA[Adeilson]]></dc:creator>
		<pubDate>Tue, 23 Aug 2016 11:23:17 +0000</pubDate>
				<category><![CDATA[ABAP]]></category>
		<category><![CDATA[abap]]></category>
		<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[sap]]></category>
		<guid isPermaLink="false">http://adeilson.com.br/?p=477</guid>

					<description><![CDATA[DATA l_date TYPE sy-datum. CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL' EXPORTING date = sy-datum days = 0 months = 30 signum = '-' years = 0 IMPORTING calc_date = l_date EXCEPTIONS OTHERS = 1. &#160;]]></description>
										<content:encoded><![CDATA[<pre class="lang:abap decode:true  ">  DATA l_date TYPE sy-datum.
  CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL'
    EXPORTING
      date      = sy-datum
      days      = 0
      months    = 30
      signum    = '-'
      years     = 0
    IMPORTING
      calc_date = l_date
    EXCEPTIONS
      OTHERS    = 1.</pre>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://adeilson.com.br/2016/08/23/funcao-para-calcular-data/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Criar evento em tabela para SM30</title>
		<link>https://adeilson.com.br/2016/03/24/criar-evento-em-tabela-para-sm30/</link>
					<comments>https://adeilson.com.br/2016/03/24/criar-evento-em-tabela-para-sm30/#respond</comments>
		
		<dc:creator><![CDATA[Adeilson]]></dc:creator>
		<pubDate>Thu, 24 Mar 2016 12:35:05 +0000</pubDate>
				<category><![CDATA[ABAP]]></category>
		<category><![CDATA[abap]]></category>
		<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[sap]]></category>
		<guid isPermaLink="false">http://adeilson.com.br/?p=463</guid>

					<description><![CDATA[&#160; *----------------------------------------------------------------------* ***INCLUDE LZFGADEF01 . *----------------------------------------------------------------------* *&#38;---------------------------------------------------------------------* *&#38; Form z01 *&#38;---------------------------------------------------------------------* FORM z01. DATA lwa_row TYPE zade. BREAK-POINT. LOOP AT total. CLEAR lwa_row. IF &#60;vim_total_struc&#62; IS ASSIGNED. MOVE-CORRESPONDING &#60;vim_total_struc&#62; TO lwa_row. ENDIF. IF NOT &#60;action&#62; IS INITIAL AND &#60;action&#62; NE &#8230; <a href="https://adeilson.com.br/2016/03/24/criar-evento-em-tabela-para-sm30/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p><a href="https://adeilson.com.br/wp-content/uploads/2016/03/Image-20160323_145933.jpg" rel="attachment wp-att-467"><img decoding="async" class="alignnone size-full wp-image-467" src="https://adeilson.com.br/wp-content/uploads/2016/03/Image-20160323_145933.jpg" alt="Image 20160323_145933" width="713" height="408" srcset="https://adeilson.com.br/wp-content/uploads/2016/03/Image-20160323_145933.jpg 713w, https://adeilson.com.br/wp-content/uploads/2016/03/Image-20160323_145933-300x172.jpg 300w" sizes="(max-width: 713px) 100vw, 713px" /></a></p>
<p><span id="more-463"></span></p>
<p><a href="https://adeilson.com.br/wp-content/uploads/2016/03/Image-20160323_150017.jpg" rel="attachment wp-att-466"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-466" src="https://adeilson.com.br/wp-content/uploads/2016/03/Image-20160323_150017.jpg" alt="Image 20160323_150017" width="658" height="606" srcset="https://adeilson.com.br/wp-content/uploads/2016/03/Image-20160323_150017.jpg 658w, https://adeilson.com.br/wp-content/uploads/2016/03/Image-20160323_150017-300x276.jpg 300w" sizes="auto, (max-width: 658px) 100vw, 658px" /></a></p>
<p><a href="https://adeilson.com.br/wp-content/uploads/2016/03/Image-20160323_150222.jpg" rel="attachment wp-att-465"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-465" src="https://adeilson.com.br/wp-content/uploads/2016/03/Image-20160323_150222.jpg" alt="Image 20160323_150222" width="451" height="377" srcset="https://adeilson.com.br/wp-content/uploads/2016/03/Image-20160323_150222.jpg 451w, https://adeilson.com.br/wp-content/uploads/2016/03/Image-20160323_150222-300x251.jpg 300w" sizes="auto, (max-width: 451px) 100vw, 451px" /></a></p>
<p><a href="https://adeilson.com.br/wp-content/uploads/2016/03/Image-20160324_091105.jpg" rel="attachment wp-att-464"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-464" src="https://adeilson.com.br/wp-content/uploads/2016/03/Image-20160324_091105.jpg" alt="Image 20160324_091105" width="717" height="765" srcset="https://adeilson.com.br/wp-content/uploads/2016/03/Image-20160324_091105.jpg 717w, https://adeilson.com.br/wp-content/uploads/2016/03/Image-20160324_091105-281x300.jpg 281w" sizes="auto, (max-width: 717px) 100vw, 717px" /></a></p>
<p>&nbsp;</p>
<pre class="lang:abap decode:true ">*----------------------------------------------------------------------*
***INCLUDE LZFGADEF01 .
*----------------------------------------------------------------------*

*&amp;---------------------------------------------------------------------*
*&amp;      Form  z01
*&amp;---------------------------------------------------------------------*
FORM z01.
  DATA lwa_row TYPE zade.
  BREAK-POINT.
  LOOP AT total.
    CLEAR lwa_row.
    IF &lt;vim_total_struc&gt; IS ASSIGNED.
      MOVE-CORRESPONDING &lt;vim_total_struc&gt; TO lwa_row.
    ENDIF.

    IF NOT &lt;action&gt; IS INITIAL AND &lt;action&gt; NE 'D' AND &lt;action&gt; NE 'X'.
      IF lwa_row-descri IS INITIAL.
        MESSAGE 'Campo descrição obrigatório!' TYPE 'S' DISPLAY LIKE 'E'.
        vim_abort_saving = 'X'.
        EXIT.
      ENDIF.
    ENDIF.
  ENDLOOP.

  IF vim_abort_saving IS INITIAL.
    LOOP AT extract.
      CLEAR lwa_row.
      IF &lt;vim_extract_struc&gt; IS ASSIGNED.
        MOVE-CORRESPONDING &lt;vim_extract_struc&gt; TO lwa_row.
      ENDIF.

      IF NOT &lt;action&gt; IS INITIAL AND &lt;action&gt; NE 'D' AND &lt;action&gt; NE 'X'.
        IF lwa_row-descri IS INITIAL.
          MESSAGE 'Campo descrição obrigatório!' TYPE 'S' DISPLAY LIKE 'E'.
          vim_abort_saving = 'X'.
          EXIT.
        ENDIF.
      ENDIF.
    ENDLOOP.
  ENDIF.
ENDFORM.                    "z01

*&amp;---------------------------------------------------------------------*
*&amp;      Form  z05
*&amp;---------------------------------------------------------------------*
FORM z05.
  PERFORM z01.
ENDFORM.                    "z05


*&amp;---------------------------------------------------------------------*
*&amp;      Form  z08
*&amp;---------------------------------------------------------------------*
FORM z08.
  PERFORM z01.
ENDFORM.                    "z08</pre>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://adeilson.com.br/2016/03/24/criar-evento-em-tabela-para-sm30/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Enviar e-mail com HTML</title>
		<link>https://adeilson.com.br/2016/03/23/enviar-e-mail-com-html/</link>
					<comments>https://adeilson.com.br/2016/03/23/enviar-e-mail-com-html/#respond</comments>
		
		<dc:creator><![CDATA[Adeilson]]></dc:creator>
		<pubDate>Wed, 23 Mar 2016 17:49:51 +0000</pubDate>
				<category><![CDATA[ABAP]]></category>
		<category><![CDATA[abap]]></category>
		<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[sap]]></category>
		<guid isPermaLink="false">http://adeilson.com.br/?p=460</guid>

					<description><![CDATA[REPORT zemail. DATA: send_request TYPE REF TO cl_bcs, text TYPE bcsy_text, document TYPE REF TO cl_document_bcs, sender TYPE REF TO cl_cam_address_bcs, recipient TYPE REF TO cl_cam_address_bcs, bcs_exception TYPE REF TO cx_bcs, sent_to_all TYPE os_boolean. BREAK-POINT. TRY. send_request = cl_bcs=&#62;create_persistent( ). &#8230; <a href="https://adeilson.com.br/2016/03/23/enviar-e-mail-com-html/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<pre class="lang:abap decode:true  ">REPORT  zemail.

DATA: send_request  TYPE REF TO cl_bcs,
      text          TYPE bcsy_text,
      document      TYPE REF TO cl_document_bcs,
      sender        TYPE REF TO cl_cam_address_bcs,
      recipient     TYPE REF TO cl_cam_address_bcs,
      bcs_exception TYPE REF TO cx_bcs,
      sent_to_all   TYPE os_boolean.


BREAK-POINT.

TRY.
    send_request = cl_bcs=&gt;create_persistent( ).

    APPEND '&lt;!doctype html public "-//w3c//dtd html 3.2 final//en"&gt;' TO text.
    APPEND '&lt;html&gt;' TO text.
    APPEND '   &lt;head&gt;' TO text.
    APPEND '      &lt;title&gt;T&amp;iacute;tulo&lt;/title&gt;' TO text.
    APPEND '   &lt;/head&gt;' TO text.
    APPEND '   &lt;body&gt;' TO text.
    APPEND '      &lt;p align="center"&gt;' TO text.
    APPEND '         Corpo do e-mail' TO text.
    APPEND '      &lt;/p&gt;' TO text.
    APPEND '      &lt;br /&gt;' TO text.
    APPEND '      Em HTML' TO text.
    APPEND '   &lt;/body&gt;' TO text.
    APPEND '&lt;/html&gt;' TO text.

    document = cl_document_bcs=&gt;create_document(
                                          i_type    = 'HTM'
                                          i_text    = text
                                          i_subject = 'Assunto E-MAIL' ).
    send_request-&gt;set_document( document ).
    sender    = cl_cam_address_bcs=&gt;create_internet_address(
                                      'email@de.com.br' ).
    recipient = cl_cam_address_bcs=&gt;create_internet_address(
                                      'email@para.com.br' ).
    send_request-&gt;set_sender( sender ).
    send_request-&gt;add_recipient(
                       EXPORTING
                          i_recipient = recipient
                          i_express   = 'X' ).
    send_request-&gt;send(
                    EXPORTING
                       i_with_error_screen = 'X'
                    RECEIVING
                       result              = sent_to_all ).
    IF sent_to_all = 'X'.
      MESSAGE 'E-mail enviado com sucesso' TYPE 'I'.
    ENDIF.
    COMMIT WORK.
  CATCH cx_bcs INTO bcs_exception.
    MESSAGE bcs_exception-&gt;error_type TYPE 'E'.
ENDTRY.</pre>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://adeilson.com.br/2016/03/23/enviar-e-mail-com-html/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Formatar data</title>
		<link>https://adeilson.com.br/2016/03/09/formatar-data/</link>
					<comments>https://adeilson.com.br/2016/03/09/formatar-data/#respond</comments>
		
		<dc:creator><![CDATA[Adeilson]]></dc:creator>
		<pubDate>Wed, 09 Mar 2016 11:11:36 +0000</pubDate>
				<category><![CDATA[ABAP]]></category>
		<category><![CDATA[abap]]></category>
		<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[developer]]></category>
		<guid isPermaLink="false">http://adeilson.com.br/?p=457</guid>

					<description><![CDATA[DATA v_bldat TYPE c LENGTH 10. WRITE bsad-bldat TO v_bldat DD/MM/YYYY. REPLACE ALL OCCURRENCES OF '.' IN v_bldat WITH '/'. &#160;]]></description>
										<content:encoded><![CDATA[<pre class="lang:abap decode:true ">DATA v_bldat    TYPE c LENGTH 10.

WRITE bsad-bldat TO v_bldat DD/MM/YYYY.
REPLACE ALL OCCURRENCES OF '.' IN v_bldat WITH '/'.</pre>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://adeilson.com.br/2016/03/09/formatar-data/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Função para validar e-mail</title>
		<link>https://adeilson.com.br/2016/03/09/funcao-para-validar-e-mail/</link>
					<comments>https://adeilson.com.br/2016/03/09/funcao-para-validar-e-mail/#respond</comments>
		
		<dc:creator><![CDATA[Adeilson]]></dc:creator>
		<pubDate>Wed, 09 Mar 2016 11:09:28 +0000</pubDate>
				<category><![CDATA[ABAP]]></category>
		<category><![CDATA[abap]]></category>
		<category><![CDATA[desenvolvimento]]></category>
		<guid isPermaLink="false">http://adeilson.com.br/?p=455</guid>

					<description><![CDATA[SX_INTERNET_ADDRESS_TO_NORMAL]]></description>
										<content:encoded><![CDATA[<p><!--StartFragment -->SX_INTERNET_ADDRESS_TO_NORMAL</p>
]]></content:encoded>
					
					<wfw:commentRss>https://adeilson.com.br/2016/03/09/funcao-para-validar-e-mail/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Alterar denominação de campos standard</title>
		<link>https://adeilson.com.br/2016/01/11/alterar-denominacao-de-campos-standard/</link>
					<comments>https://adeilson.com.br/2016/01/11/alterar-denominacao-de-campos-standard/#respond</comments>
		
		<dc:creator><![CDATA[Adeilson]]></dc:creator>
		<pubDate>Mon, 11 Jan 2016 10:15:53 +0000</pubDate>
				<category><![CDATA[ABAP]]></category>
		<category><![CDATA[abap]]></category>
		<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[sap]]></category>
		<guid isPermaLink="false">http://adeilson.com.br/?p=440</guid>

					<description><![CDATA[Passo 1: Passo 2: Passo 3:]]></description>
										<content:encoded><![CDATA[<p>Passo 1:<a href="https://adeilson.com.br/wp-content/uploads/2016/01/Imagem_20160111_080656.jpg" rel="attachment wp-att-441"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-441" src="https://adeilson.com.br/wp-content/uploads/2016/01/Imagem_20160111_080656.jpg" alt="Imagem_20160111_080656" width="767" height="446" srcset="https://adeilson.com.br/wp-content/uploads/2016/01/Imagem_20160111_080656.jpg 767w, https://adeilson.com.br/wp-content/uploads/2016/01/Imagem_20160111_080656-300x174.jpg 300w" sizes="auto, (max-width: 767px) 100vw, 767px" /></a></p>
<p><span id="more-440"></span>Passo 2:<a href="https://adeilson.com.br/wp-content/uploads/2016/01/Imagem_20160111_080719.jpg" rel="attachment wp-att-443"><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-443" src="https://adeilson.com.br/wp-content/uploads/2016/01/Imagem_20160111_080719.jpg" alt="Imagem_20160111_080719" width="356" height="171" srcset="https://adeilson.com.br/wp-content/uploads/2016/01/Imagem_20160111_080719.jpg 356w, https://adeilson.com.br/wp-content/uploads/2016/01/Imagem_20160111_080719-300x144.jpg 300w" sizes="auto, (max-width: 356px) 100vw, 356px" /></a></p>
<p><span style="color: #000000;">Passo 3:</span><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-442" src="https://adeilson.com.br/wp-content/uploads/2016/01/Imagem_20160111_080725.jpg" alt="Imagem_20160111_080725" width="618" height="425" srcset="https://adeilson.com.br/wp-content/uploads/2016/01/Imagem_20160111_080725.jpg 618w, https://adeilson.com.br/wp-content/uploads/2016/01/Imagem_20160111_080725-300x206.jpg 300w" sizes="auto, (max-width: 618px) 100vw, 618px" /></p>
]]></content:encoded>
					
					<wfw:commentRss>https://adeilson.com.br/2016/01/11/alterar-denominacao-de-campos-standard/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Debug de uma janela popup</title>
		<link>https://adeilson.com.br/2015/10/30/debug-de-uma-janela-popup/</link>
					<comments>https://adeilson.com.br/2015/10/30/debug-de-uma-janela-popup/#respond</comments>
		
		<dc:creator><![CDATA[Adeilson]]></dc:creator>
		<pubDate>Fri, 30 Oct 2015 11:16:40 +0000</pubDate>
				<category><![CDATA[ABAP]]></category>
		<category><![CDATA[abap]]></category>
		<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[programação]]></category>
		<category><![CDATA[sap]]></category>
		<guid isPermaLink="false">http://adeilson.com.br/?p=424</guid>

					<description><![CDATA[Crie um arquivo TXT com o seguinte conteúdo: [FUNCTION] Command=/H Title=Debugger Type=SystemCommand Após isso, sobre uma janela popup, arraste esse arquivo (drag and drop).]]></description>
										<content:encoded><![CDATA[<p>Crie um arquivo TXT com o seguinte conteúdo:</p>
<p>[FUNCTION]<br />
Command=/H<br />
Title=Debugger<br />
Type=SystemCommand</p>
<p>Após isso, sobre uma janela popup, arraste esse arquivo (drag and drop).</p>
]]></content:encoded>
					
					<wfw:commentRss>https://adeilson.com.br/2015/10/30/debug-de-uma-janela-popup/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Matchcode com tabela interna</title>
		<link>https://adeilson.com.br/2015/10/23/matchcode-com-tabela-interna/</link>
					<comments>https://adeilson.com.br/2015/10/23/matchcode-com-tabela-interna/#respond</comments>
		
		<dc:creator><![CDATA[Adeilson]]></dc:creator>
		<pubDate>Fri, 23 Oct 2015 17:34:41 +0000</pubDate>
				<category><![CDATA[ABAP]]></category>
		<category><![CDATA[abap]]></category>
		<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[programação]]></category>
		<category><![CDATA[sap]]></category>
		<guid isPermaLink="false">http://adeilson.com.br/?p=417</guid>

					<description><![CDATA[REPORT zmatch. TYPES: BEGIN OF ty_t001w, werks TYPE t001w-werks, sep TYPE c LENGTH 3, name1 TYPE t001w-name1, END OF ty_t001w. DATA: t_t001w TYPE TABLE OF ty_t001w, "#EC NEEDED w_t001w TYPE ty_t001w, l_index TYPE sy-tabix. "#EC NEEDED SELECTION-SCREEN BEGIN OF BLOCK &#8230; <a href="https://adeilson.com.br/2015/10/23/matchcode-com-tabela-interna/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<pre class="lang:abap decode:true  " title="Matchcode com tabela interna">REPORT  zmatch.

TYPES: BEGIN OF ty_t001w,
    werks TYPE t001w-werks,
    sep   TYPE c LENGTH 3,
    name1 TYPE t001w-name1,
  END OF ty_t001w.

DATA: t_t001w TYPE TABLE OF ty_t001w,                       "#EC NEEDED
      w_t001w TYPE ty_t001w,
      l_index TYPE sy-tabix.                                "#EC NEEDED

SELECTION-SCREEN BEGIN OF BLOCK b1.
PARAMETERS: p1 TYPE c LENGTH 4.
SELECT-OPTIONS: p2 FOR w_t001w-werks NO INTERVALS NO-EXTENSION.
SELECTION-SCREEN END OF BLOCK b1.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p1.
  SELECT werks name1
    INTO CORRESPONDING FIELDS OF TABLE t_t001w
    FROM t001w
   WHERE vtweg = '10'.

  w_t001w-sep = ' - '.
  MODIFY t_t001w FROM w_t001w TRANSPORTING sep WHERE sep IS INITIAL.

  CALL FUNCTION 'POPUP_WITH_TABLE_DISPLAY'
    EXPORTING
      endpos_col   = 70
      endpos_row   = 20
      startpos_col = 43
      startpos_row = 1
      titletext    = 'SELECIONAR O CENTRO'
    IMPORTING
      choise       = l_index
    TABLES
      valuetab     = t_t001w
    EXCEPTIONS
      break_off    = 1
      OTHERS       = 2.

  IF sy-subrc IS NOT INITIAL.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

  IF l_index IS NOT INITIAL.
    READ TABLE t_t001w INTO w_t001w INDEX l_index.
*    MESSAGE w_t001w-name1 TYPE 'I'.
    p1 = w_t001w-werks.
  ENDIF.

START-OF-SELECTION.
*  CLEAR: t_t001w, t_t001w[], w_t001w.
*  SELECT werks name1
*  INTO CORRESPONDING FIELDS OF TABLE t_t001w
*  FROM t001w
* WHERE werks = p1.
*  READ TABLE t_t001w INTO w_t001w INDEX 1.
  WRITE: / w_t001w-name1.

END-OF-SELECTION.</pre>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://adeilson.com.br/2015/10/23/matchcode-com-tabela-interna/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Criar uma view de manutenção com tela de seleção</title>
		<link>https://adeilson.com.br/2015/09/15/criar-uma-view-de-manutencao-com-tela-de-selecao/</link>
					<comments>https://adeilson.com.br/2015/09/15/criar-uma-view-de-manutencao-com-tela-de-selecao/#respond</comments>
		
		<dc:creator><![CDATA[Adeilson]]></dc:creator>
		<pubDate>Tue, 15 Sep 2015 19:09:32 +0000</pubDate>
				<category><![CDATA[ABAP]]></category>
		<category><![CDATA[abap]]></category>
		<category><![CDATA[desenvolvimento]]></category>
		<guid isPermaLink="false">http://adeilson.com.br/?p=405</guid>

					<description><![CDATA[*&#38;---------------------------------------------------------------------* *&#38; Report ZREPORT *&#38; *&#38;---------------------------------------------------------------------* *&#38; *&#38; *&#38;---------------------------------------------------------------------* REPORT ZREPORT. TABLES: ztabela. CONSTANTS: c_view TYPE char30 VALUE 'ZTABELA', c_u TYPE char1 VALUE 'U', c_and TYPE char3 VALUE 'AND'. DATA: gt_seltab TYPE STANDARD TABLE OF vimsellist. DATA: g_fieldname TYPE vimsellist-viewfield. &#8230; <a href="https://adeilson.com.br/2015/09/15/criar-uma-view-de-manutencao-com-tela-de-selecao/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<pre class="lang:abap decode:true  ">*&amp;---------------------------------------------------------------------*
*&amp; Report  ZREPORT
*&amp;
*&amp;---------------------------------------------------------------------*
*&amp;
*&amp;
*&amp;---------------------------------------------------------------------*

REPORT  ZREPORT.

TABLES: ztabela.
CONSTANTS: c_view  TYPE   char30  VALUE 'ZTABELA',
           c_u     TYPE   char1   VALUE 'U',
           c_and   TYPE   char3   VALUE 'AND'.
DATA: gt_seltab    TYPE STANDARD TABLE OF vimsellist.
DATA: g_fieldname  TYPE vimsellist-viewfield.
DATA: gt_exclude   TYPE TABLE OF vimexclfun,
      gwa_exclude  TYPE vimexclfun.

SELECT-OPTIONS: s_campo    FOR ztabela-campo.

*Add ID column to selection criteria of Table maintenanace view
g_fieldname = 'CAMPO'.

CALL FUNCTION 'VIEW_RANGETAB_TO_SELLIST'
  EXPORTING
    fieldname          = g_fieldname
    append_conjunction = c_and
  TABLES
    sellist            = gt_seltab
    rangetab           = s_campo.
*
**Add Name column to selection criteria of Table maintenanace view
*g_fieldname = 'NAME'.
*
*CALL FUNCTION 'VIEW_RANGETAB_TO_SELLIST'
*  EXPORTING
*    fieldname          = g_fieldname
*    append_conjunction = c_and
*  TABLES
*    sellist            = gt_seltab
*    rangetab           = s_name.
*
**Add Place column to selection criteria of Table maintenanace view
*g_fieldname = 'PLACE'.
*
*CALL FUNCTION 'VIEW_RANGETAB_TO_SELLIST'
*  EXPORTING
*    fieldname          = g_fieldname
*    append_conjunction = c_and
*  TABLES
*    sellist            = gt_seltab
*    rangetab           = s_place.

*Deactivate New Entries
gwa_exclude-function = 'NEWL'.  " Function Code for New Entries
APPEND gwa_exclude TO gt_exclude.

*Deactivate Copy
gwa_exclude-function = 'KOPE'.  " Function Code for Copy
APPEND gwa_exclude TO gt_exclude.

*Deactivate Delete
gwa_exclude-function = 'DELE'.  " Function Code for Delete
APPEND gwa_exclude TO gt_exclude.

* Call to the 'VIEW_MAINTENANCE_CALL' function module
CALL FUNCTION 'VIEW_MAINTENANCE_CALL'
  EXPORTING
    action         = c_u
    view_name      = c_view
  TABLES
    dba_sellist    = gt_seltab
    excl_cua_funct = gt_exclude.</pre>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://adeilson.com.br/2015/09/15/criar-uma-view-de-manutencao-com-tela-de-selecao/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
