ABAP+71
Informações simples para o dia-a-dia
20260306
Ranges - Definição e preenchimento
VIM - Campo novo em interface / Criação automática de VIM
VIM – Campo novo em interfaces
Verificar se existe o nome do campo cadastrado na tabela /OPT/VIM_T109_N.
Se não existir, deve ser "cadastrado" através da transação SM34
Visão: /OPT/VIM_MAPV
Atualizar
1 – Marcar a opção GENERAL
2 – Duplo-clique em Field Mapping
Marca um campo existente (Cabeçalho ou Item)
Informar o nome do novo campo nas colunas:
Nome campo externo
Nome campo do doc.
· Indicar se o campo é de "Cabeçalho" ou "Item"
*** Repetir esses passos para cada campo novo.
SALVAR.
20260104
Categoria de ampliação - Tabelas e Estruturas
Texto breve
Seleção da categoria de ampliação
Definição
As estruturas e tabelas definidas pela SAP no ABAP Dictionary, podem ser ampliadas posteriormente pelos clientes com ajuda de includes de customizing ou estruturas append. As ampliações não se referem apenas às próprias estruturas/tabelas, mas também às estruturas dependentes que transferem a ampliação como include ou estrutura referenciada. As estruturas append que na estrutura de saída têm consequências apenas no final, podem dar origem a alterações nas estruturas dependentes, mesmo dentro destas estruturas.
A seleção de uma categoria de ampliação é necessária, uma vez que em programas sem verificação Unicode ativa, as ampliações de tabelas e de estruturas, principalmente nas verificações de tipo e em conjunto com estruturas profundas, podem originar erros de sintaxe e em tempo de execução.
Nos programas com verificação Unicode ativa, as atribuições, as verificações de operando e os acessos com offset e comprimento são problemáticos se, por exemplo, forem inseridos componentes numéricos ou profundos em uma estrutura meramente em forma de caractere e a estrutura perder, por isso, a sua forma de caractere.
Em função da definição de estrutura, os botões de rádio permitidos da caixa de diálogo estão prontos para entrada. Selecione uma das possíveis categorias de ampliação:
- Não ampliável
- A estrutura não pode ser ampliada.
- Ampliável e em forma de caractere
- Todos os componentes de estrutura e as respectivas ampliações devem ser em forma de caractere (C, N, D ou T). A estrutura de saída e todas as ampliações pelo include de customizing ou pelas estruturas append estão sujeitas a esta restrição.
- Ampliável e em forma de caractere ou numérica
- A estrutura e a respectiva ampliação não pode conter tipos de dados profundos (tabelas, referências, cadeias).
- Ampliável conforme pretendido
- A estrutura e a respectiva ampliação pode conter componentes, cujo tipo de dados é facultativo.
- não classificado
- Esta categoria pode ser selecionada, por exemplo, para um status de transição, mas não ao criar estruturas.
Regras para a determinação da categoria de ampliação que resulta de modo implícito da estrutura e da classificação de tipos utilizados:
- Se o objeto contiver pelo menos um tipo numérico ou uma subestrutura ou componente (o campo tem estrutura/tabela/visão como tipo) que é ampliável de modo numérico, o objeto já não é ampliável em forma de caractere, mas poderá ser ampliável em forma de caractere ou de modo numérico.
- Se o objeto contiver um componente profundo (cadeia, referência ou tipo de tabela) ou uma subestrutura ou componente marcado como ampliável conforme pretendido, o próprio objeto é ampliável conforme pretendido.
- Se o objeto não contiver nenhuma subestrutura ou componente marcada como ampliável, não é possível selecionar não ampliável. Se a estrutura ainda não tiver sido ampliada, a categoria não ampliável pode ser selecionada a qualquer momento .
Se forem criadas de novo tabelas e estruturas no ABAP Dictionary, é proposta a categoria ampliável conforme pretendido como valor padrão para a classificação das opções de ampliação. Se o desenvolvedor selecionar para uma estrutura uma classificação mais restrita como ampliável conforme pretendido, só são permitidos os níveis de classificação que respeitam as regras acima descritas. Não é possível selecionar para uma estrutura uma opção de ampliação que seja inferior (mais restrita) do que a classificação que resulta implicitamente da estrutura e da classificação dos tipos utilizados. Por isso, nas interfaces de atualização somente são propostas para a seleção as categorias permitidas.
Se uma estrutura depender de uma ou várias outras estruturas, será selecionada como classificação implícita a categoria mas pequena (na ordem: não ampliável < ampliável e em forma de caractere < ampliável e em forma de caractere ou numérica < ampliável conforme pretendido), que é superior ou igual às categorias de outras estruturas e também superior ou igual à categoria que resulta da estrutura real da própria estrutura.
Consulte também Categoria de ampliação de estruturas
20250722
ALV Básico (códigos)
* Definições para o ALV
*----------------------------------------------------------------
DATA: gt_fieldcat TYPE lvc_t_fcat,
wa_fieldcat TYPE lvc_s_fcat,
gt_exc_tools TYPE ui_functions.
DATA: wa_variant TYPE disvariant,
wa_layout TYPE lvc_s_layo.
data: gt_selected TYPE lvc_t_row .
data: wa_selected TYPE lvc_s_row .
INCLUDE ZFIR284_C01. "(*** código completo no final ***)
DATA: lcl_alv_grid TYPE REF TO lcl_alv_grid.
PERFORM: z_monta_fieldcat using 'ZTB......', "Estrutura / Tabela
z_monta_layout_tools using '' ''. "Com Layout / Variante
CALL SCREEN 9000.
ENDFORM.
*&---------------------------------------------------------------------*
*& Module STATUS_9000 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_9000 OUTPUT.
SET PF-STATUS '9000_STATUS'.
SET TITLEBAR '9000'.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_9000 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_9000 INPUT.
CASE sy-ucomm.
WHEN 'BACK' OR 'CANC' or 'EXIT'.
LEAVE TO SCREEN 0.
WHEN OTHERS.
ENDCASE.
ENDMODULE.
*& Form Z_MONTA_FIELDCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM Z_MONTA_FIELDCAT USING P_STRU.
DATA: vl_tabix TYPE sy-tabix.
* DATA: lw_alv_fieldcat LIKE LINE OF tg_fieldcat.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = p_stru
i_internal_tabname = 'GT_FINAL'
CHANGING
ct_fieldcat = gt_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF NOT sy-subrc IS INITIAL.
RETURN.
ENDIF.
* Campos 'Chaves' - Colunas Fixas
LOOP AT gt_fieldcat INTO wa_fieldcat
WHERE fieldname EQ 'BUKRS'
OR fieldname EQ 'GSBER'
OR fieldname EQ 'AZDAT'
OR fieldname EQ 'AZIDT'
OR fieldname EQ 'HBKID'
OR fieldname EQ 'KUKEY'
OR fieldname EQ 'KTONR'
OR fieldname EQ 'VALUT'
OR fieldname EQ 'AZNUM'.
wa_fieldcat-KEY = 'X'.
MODIFY gt_fieldcat FROM wa_fieldcat INDEX sy-tabix .
ENDLOOP.
* Edit
* LOOP AT gt_fieldcat INTO wa_fieldcat WHERE fieldname EQ 'ZSTATUS'.
* wa_fieldcat-edit = 'X'.
* MODIFY gt_fieldcat FROM wa_fieldcat INDEX sy-tabix .
* ENDLOOP.
* Hotspot
* LOOP AT gt_fieldcat INTO wa_fieldcat
* WHERE fieldname = 'BELNR'
* OR fieldname = 'PNOTA'
* OR fieldname = 'LIFNR'
* OR fieldname = 'DOCID_VIM'
* OR fieldname = 'BELNRF'
* OR fieldname = 'BELNRC'.
* wa_fieldcat-HOTSPOT = 'X'.
* MODIFY gt_fieldcat FROM wa_fieldcat INDEX sy-tabix .
* ENDLOOP.
* Campos escondidos
* LOOP AT gt_fieldcat INTO wa_fieldcat.
* if wa_fieldcat-fieldname = 'PNOTA_GJA' or
* wa_fieldcat-fieldname = 'UPD'.
* wa_fieldcat-no_out = 'X'.
* else.
* wa_fieldcat-no_out = ' '.
* endif.
* MODIFY gt_fieldcat FROM wa_fieldcat INDEX sy-tabix .
* ENDLOOP.
* Descrição de campos
* LOOP AT gt_fieldcat INTO wa_fieldcat.
* CASE wa_fieldcat-fieldname.
* WHEN 'BELNRF'.
* wa_fieldcat-REPTEXT = 'Nº Docto Fatur.'.
* WHEN 'BELNRC'.
* wa_fieldcat-REPTEXT = 'Nº Doc.Contábil'.
* WHEN 'GJAHRF'.
* wa_fieldcat-REPTEXT = 'Exercício'.
* WHEN 'GJAHRC'.
* wa_fieldcat-REPTEXT = 'Exercício'.
* WHEN 'MOTIVO_OPE'.
* wa_fieldcat-REPTEXT = 'Motivo operação'.
* WHEN 'EMAIL_SOLIC'.
* wa_fieldcat-REPTEXT = 'Endereço de e-mail solicitante'.
* ENDCASE.
* MODIFY gt_fieldcat FROM wa_fieldcat INDEX sy-tabix .
* ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form Z_MONTA_LAYOUT_TOOLS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM Z_MONTA_LAYOUT_TOOLS using p_layout p_varia.
CLEAR: wa_layout, wa_variant.
FREE gt_exc_tools.
APPEND: cl_gui_alv_grid=>mc_fc_loc_delete_row TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_loc_insert_row TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_loc_undo TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_loc_append_row TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_loc_copy TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_loc_copy_row TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_loc_move_row TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_loc_paste TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_loc_paste_new_row TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_loc_cut TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_refresh TO gt_exc_tools.
wa_layout-zebra = 'X'.
wa_layout-no_rowmark = ' '.
wa_layout-sel_mode = 'A'.
wa_layout-cwidth_opt = 'X'.
wa_layout-col_opt = 'X'.
wa_layout-stylefname = 'FIELD_STYLE'.
wa_variant-report = sy-repid.
if p_layout = 'X'.
wa_variant-variant = p_varia.
endif.
ENDFORM.
*& Module MONTA_TELA OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE MONTA_TELA OUTPUT.
IF sy-batch IS INITIAL.
IF NOT go_alv IS INITIAL.
CALL METHOD go_alv->free.
CALL METHOD go_container->free.
ENDIF.
* Cria o Container para a tela do ALV
CREATE OBJECT go_docking
EXPORTING
side = cl_gui_docking_container=>dock_at_top
repid = sy-repid
dynnr = '9000'
extension = 9000
EXCEPTIONS
OTHERS = 6.
* Casting para o tipo genério
go_parent = go_docking.
* Cria o objeto do ALV
CREATE OBJECT go_alv
EXPORTING
i_parent = go_parent.
* Habilita os eventos
CREATE OBJECT lcl_alv_grid.
SET HANDLER lcl_alv_grid->handler_data_changed FOR go_alv.
SET HANDLER lcl_alv_grid->handle_toolbar FOR go_alv.
SET HANDLER lcl_alv_grid->handle_user_command FOR go_alv.
SET HANDLER lcl_alv_grid->handle_hotspot_click FOR go_alv.
CALL METHOD go_alv->set_ready_for_input
EXPORTING
i_ready_for_input = 1.
CALL METHOD go_alv->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_enter.
CALL METHOD go_alv->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_modified.
CALL METHOD go_alv->set_table_for_first_display
EXPORTING
is_variant = wa_variant
i_save = 'A'
is_layout = wa_layout
it_toolbar_excluding = gt_exc_tools[]
CHANGING
it_outtab = gt_saida[]
it_fieldcatalog = gt_fieldcat[].
* Background
ELSE.
CREATE OBJECT go_alv
EXPORTING
i_parent = go_DOCKING. "go_parent.
CALL METHOD go_alv->set_table_for_first_display
EXPORTING
is_variant = wa_variant
i_save = 'A'
is_layout = wa_layout
CHANGING
it_outtab = gt_saida[]
it_fieldcatalog = gt_fieldcat[].
ENDIF.
ENDMODULE.
*& Include ZFIR282_C01
*&---------------------------------------------------------------------*
*----------------------------------------------------------------------*
* Objetos & Containers *
*----------------------------------------------------------------------*
DATA: gv_repid TYPE syst-repid,
go_container TYPE REF TO cl_gui_custom_container,
go_docking TYPE REF TO cl_gui_docking_container,
go_parent TYPE REF TO cl_gui_container,
go_splitter TYPE REF TO cl_gui_splitter_container,
go_alv TYPE REF TO cl_gui_alv_grid.
*----------------------------------------------------------------------*
* Classes Locais *
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* CLASS lcl_alv_grid DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_alv_grid DEFINITION.
PUBLIC SECTION.
METHODS:
handler_data_changed FOR EVENT data_changed OF cl_gui_alv_grid
IMPORTING er_data_changed,
handle_toolbar FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING e_object,
handle_user_command FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING e_ucomm,
handle_hotspot_click FOR EVENT hotspot_click OF cl_gui_alv_grid
IMPORTING e_row_id e_column_id es_row_no.
ENDCLASS. "lcl_alv_grid DEFINITION
*----------------------------------------------------------------------*
* CLASS lcl_alv_grid IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_alv_grid IMPLEMENTATION.
METHOD handler_data_changed.
PERFORM z_data_changed CHANGING er_data_changed.
ENDMETHOD. "handler_data_changed
METHOD handle_toolbar.
PERFORM z_toolbar CHANGING e_object.
ENDMETHOD. "handle_toolbar
METHOD handle_user_command.
PERFORM z_user_command USING e_ucomm.
ENDMETHOD. "handle_user_command
METHOD handle_hotspot_click.
PERFORM z_hotspot_click USING es_row_no-row_id
e_column_id-fieldname.
ENDMETHOD. "HANDLE_HOTSPOT_CLICK
ENDCLASS. "lcl_alv_grid IMPLEMENTATION
*&---------------------------------------------------------------------*
*& Form Z_DATA_CHANGED
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM z_data_changed CHANGING p_data_changed TYPE REF TO cl_alv_changed_data_protocol.
DATA: vl_erro TYPE c.
DATA: w_saida TYPE ty_saida,
vl_tabix TYPE sy-tabix,
vl_status type c LENGTH 128.
DATA: tl_modi TYPE TABLE OF lvc_s_modi,
sl_modi TYPE lvc_s_modi.
free: tl_modi.
tl_modi[] = p_data_changed->mt_good_cells[].
LOOP AT tl_modi INTO sl_modi.
vl_tabix = sy-tabix.
CASE sl_modi-fieldname.
* WHEN 'ZSTATUS'.
* vl_status = sl_modi-value.
*
* READ TABLE gt_saida INTO wa_saida INDEX sl_modi-row_id.
* IF sy-subrc IS INITIAL.
* wa_saida-zstatus = sl_modi-value.
* wa_saida-upd = 'X'.
* modify gt_saida from wa_saida index sl_modi-row_id.
* ENDIF.
ENDCASE.
ENDLOOP.
ENDFORM. " Z_DATA_CHANGED
*&---------------------------------------------------------------------*
*& Form Z_TOOLBAR
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM z_toolbar CHANGING p_object TYPE REF TO cl_alv_event_toolbar_set.
DATA: sl_toolbar TYPE stb_button.
* CLEAR: sl_toolbar.
* MOVE 3 TO sl_toolbar-butn_type.
* APPEND sl_toolbar TO p_object->mt_toolbar.
*
* CLEAR sl_toolbar.
** sl_toolbar-icon = ICON_SAVE_AS_TEMPLATE . "icon_set_state.
* sl_toolbar-icon = ICON_DOCUMENT_MODEL_SPACE . "icon_set_state.
* sl_toolbar-function = 'LIBERAR'.
* sl_toolbar-text = text-t05.
* sl_toolbar-quickinfo = text-t06.
* sl_toolbar-disabled = space.
* APPEND sl_toolbar TO p_object->mt_toolbar.
*
* CLEAR: sl_toolbar.
* MOVE 3 TO sl_toolbar-butn_type.
* APPEND sl_toolbar TO p_object->mt_toolbar.
ENDFORM. " Z_TOOLBAR
*&---------------------------------------------------------------------*
*& Form Z_USER_COMMAND
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM z_user_command USING p_ucomm TYPE sy-ucomm.
* CASE p_ucomm.
** WHEN 'GRAVAR'.
** PERFORM: z_grava_dados.
*
* WHEN 'LIBERAR'.
* PERFORM: f_liberar using p_ucomm.
*
* WHEN ''.
*
* ENDCASE.
** IF p_ucomm NE 'APLICAR'.
** PERFORM:
** f_inicialization,
** f_seleciona_dados,
** f_monta_saida.
** ENDIF.
CALL METHOD go_alv->refresh_table_display.
ENDFORM. " Z_USER_COMMAND
*&---------------------------------------------------------------------*
*& Form Z_HOTSPOT_CLICK
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_ES_ROW_NO_ROW_ID text
* -->P_E_COLUMN_ID_FIELDNAME text
*----------------------------------------------------------------------*
FORM Z_HOTSPOT_CLICK USING P_INDEX
P_FIELD.
READ TABLE gt_saida INTO wa_saida INDEX p_index.
IF NOT sy-subrc IS INITIAL.
RETURN.
ENDIF.
CASE p_field.
WHEN 'BELNR' .
* IF wa_saida-belnr IS INITIAL.
* RETURN.
* ENDIF.
* SET PARAMETER ID 'BLN' FIELD wa_saida-belnr.
* SET PARAMETER ID 'BUK' FIELD wa_saida-bukrs.
* SET PARAMETER ID 'GJR' FIELD wa_saida-gjahr.
* CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
WHEN 'BELNRC'.
* IF wa_saida-belnrc IS INITIAL.
* RETURN.
* ENDIF.
* SET PARAMETER ID 'BLN' FIELD wa_saida-belnrc.
* SET PARAMETER ID 'BUK' FIELD wa_saida-bukrs.
* SET PARAMETER ID 'GJR' FIELD wa_saida-gjahrc.
* CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
WHEN 'BELNRF'.
* IF swa_saida-belnrf IS INITIAL.
* RETURN.
* ENDIF.
* SET PARAMETER ID 'RBN' FIELD wa_saida-belnrf.
* SET PARAMETER ID 'GJR' FIELD wa_saida-gjahrf.
* CALL TRANSACTION 'MIR4' AND SKIP FIRST SCREEN.
WHEN 'PNOTA'.
* IF wa_saida-pnota IS INITIAL.
* RETURN.
* ENDIF.
* SET PARAMETER ID 'BLN' FIELD wa_saida-pnota.
* SET PARAMETER ID 'BUK' FIELD wa_saida-bukrs.
* SET PARAMETER ID 'GJR' FIELD wa_saida-gjahr.
* CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
WHEN 'DOCID_VIM'.
* IF wa_saida-docid_vim IS INITIAL.
* RETURN.
* ENDIF.
* CALL FUNCTION '/OPT/VIM_DISPLAY_DOCUMENT'
* EXPORTING
* docid = w_saida-docid_vim
* EXCEPTIONS
* invalid_document = 1
* OTHERS = 2.
*
* WHEN 'LIFNR'.
* IF wa_saida-lifnr IS INITIAL.
* RETURN.
* ENDIF.
* SET PARAMETER ID 'LIF' FIELD wa_saida-lifnr.
* SET PARAMETER ID 'BUK' FIELD wa_saida-bukrs.
* CALL TRANSACTION 'XK03' AND SKIP FIRST SCREEN.
ENDCASE.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form Z_GRAVA_DADOS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM Z_GRAVA_DADOS .
* FREE: t_selected.
*
* CALL METHOD cl_alv_grid->get_selected_rows
* IMPORTING
* et_index_rows = t_selected.
*
* IF t_selected[] IS INITIAL.
** MESSAGE s022(zfi001) DISPLAY LIKE c_e.
** LEAVE LIST-PROCESSING.
* ENDIF.
data: l_cont type i.
LOOP AT gt_saida INTO wa_saida. " where upd = 'X'.
add 1 to l_cont.
exit.
ENDLOOP.
if l_cont is initial.
message s398(00) with 'Não há dados para atualização' '' '' ''.
else.
* LOOP AT gt_saida into wa_saida where upd = 'X'.
*
* clear w_ztb.......
* w_ztb......-BUKRS = wa_saida-BUKRS .
* w_ztb......-GSBER = wa_saida-GSBER .
* w_ztb......-AZDAT = wa_saida-AZDAT .
* w_ztb......-HBKID = wa_saida-HBKID .
* w_ztb......-AZNUM = wa_saida-AZNUM .
* w_ztb......-AZIDT = wa_saida-AZIDT .
* w_ztb......-KTONR = wa_saida-KTONR .
* w_ztb......-PNOTA = wa_saida-PNOTA .
* w_ztb......-ZSTATUS = wa_saida-ZSTATUS.
* w_ztb......-USUARIO = sy-uname.
* w_ztb......-DATA = sy-datum .
* w_ztb......-HORA = sy-uzeit .
* modify ztb------ from w_ztb------ .
*
* ENDLOOP.
endif.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form Z_MONTA_FIELDCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM Z_MONTA_FIELDCAT USING P_STRU.
DATA: vl_tabix TYPE sy-tabix.
* DATA: lw_alv_fieldcat LIKE LINE OF tg_fieldcat.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = p_stru
i_internal_tabname = 'GT_FINAL'
CHANGING
ct_fieldcat = gt_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF NOT sy-subrc IS INITIAL.
RETURN.
ENDIF.
* Campos 'Chaves' - Colunas Fixas
LOOP AT gt_fieldcat INTO wa_fieldcat
WHERE fieldname EQ 'BUKRS'
OR fieldname EQ 'GSBER'
OR fieldname EQ 'AZDAT'
OR fieldname EQ 'AZIDT'
OR fieldname EQ 'HBKID'
OR fieldname EQ 'KUKEY'
OR fieldname EQ 'KTONR'
OR fieldname EQ 'VALUT'
OR fieldname EQ 'AZNUM'.
wa_fieldcat-KEY = 'X'.
MODIFY gt_fieldcat FROM wa_fieldcat INDEX sy-tabix .
ENDLOOP.
* Edit
* LOOP AT gt_fieldcat INTO wa_fieldcat WHERE fieldname EQ 'ZSTATUS'.
* wa_fieldcat-edit = 'X'.
* MODIFY gt_fieldcat FROM wa_fieldcat INDEX sy-tabix .
* ENDLOOP.
* Hotspot
* LOOP AT gt_fieldcat INTO wa_fieldcat
* WHERE fieldname = 'BELNR'
* OR fieldname = 'PNOTA'
* OR fieldname = 'LIFNR'
* OR fieldname = 'DOCID_VIM'
* OR fieldname = 'BELNRF'
* OR fieldname = 'BELNRC'.
* wa_fieldcat-HOTSPOT = 'X'.
* MODIFY gt_fieldcat FROM wa_fieldcat INDEX sy-tabix .
* ENDLOOP.
* Campos escondidos
* LOOP AT gt_fieldcat INTO wa_fieldcat.
* if wa_fieldcat-fieldname = 'PNOTA_GJA' or
* wa_fieldcat-fieldname = 'UPD'.
* wa_fieldcat-no_out = 'X'.
* else.
* wa_fieldcat-no_out = ' '.
* endif.
* MODIFY gt_fieldcat FROM wa_fieldcat INDEX sy-tabix .
* ENDLOOP.
* Descrição de campos
* LOOP AT gt_fieldcat INTO wa_fieldcat.
* CASE wa_fieldcat-fieldname.
* WHEN 'BELNRF'.
* wa_fieldcat-REPTEXT = 'Nº Docto Fatur.'.
* WHEN 'BELNRC'.
* wa_fieldcat-REPTEXT = 'Nº Doc.Contábil'.
* WHEN 'GJAHRF'.
* wa_fieldcat-REPTEXT = 'Exercício'.
* WHEN 'GJAHRC'.
* wa_fieldcat-REPTEXT = 'Exercício'.
* WHEN 'MOTIVO_OPE'.
* wa_fieldcat-REPTEXT = 'Motivo operação'.
* WHEN 'EMAIL_SOLIC'.
* wa_fieldcat-REPTEXT = 'Endereço de e-mail solicitante'.
* ENDCASE.
* MODIFY gt_fieldcat FROM wa_fieldcat INDEX sy-tabix .
* ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form Z_MONTA_LAYOUT_TOOLS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM Z_MONTA_LAYOUT_TOOLS using p_layout p_varia.
CLEAR: wa_layout, wa_variant.
FREE gt_exc_tools.
APPEND: cl_gui_alv_grid=>mc_fc_loc_delete_row TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_loc_insert_row TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_loc_undo TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_loc_append_row TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_loc_copy TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_loc_copy_row TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_loc_move_row TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_loc_paste TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_loc_paste_new_row TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_loc_cut TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_refresh TO gt_exc_tools.
wa_layout-zebra = 'X'.
wa_layout-no_rowmark = ' '.
wa_layout-sel_mode = 'A'.
wa_layout-cwidth_opt = 'X'.
wa_layout-col_opt = 'X'.
wa_layout-stylefname = 'FIELD_STYLE'.
wa_variant-report = sy-repid.
if p_layout = 'X'.
wa_variant-variant = p_varia.
endif.
ENDFORM.