* Na maioria das vezes que vamos trabalhar com os textos entramos no
* tradicional menu conforme imagem abaixo.
* tradicional menu conforme imagem abaixo.
* Mas como somos pessoas ousadas, queremos incluir esses textos na raça,
* sem precisar criar qualquer tipo de objeto de texto, hoje esse post vou
* mostrar como fazer isso, não sei te explicar qual momento poderiamos
* usar isso, mas o mais importante é saber que é possível e que não é
* dificil o quanto parece. Como sempre, o segredo é estar familiarizado com
* com a cara de Debugger, vamos começar
*&---------------------------------------------------------------------*
REPORT z_text_in_selection_screen.
TYPES :
BEGIN OF ty_name,
name TYPE screen-name,
text(30) TYPE c,
END OF ty_name
.
DATA :
st_name TYPE ty_name,
it_name TYPE TABLE OF ty_name
.
* Declaração pra criar o Select-option.
DATA :
vso_default TYPE c.
FIELD-SYMBOLS :
<name> TYPE ANY.
* Tela de seleção
SELECTION-SCREEN BEGIN OF BLOCK b1.
PARAMETERS :
p_field1(3) TYPE c,
p_field2(5) TYPE c,
p_field3 TYPE p,
p_field4 TYPE i
.
SELECT-OPTIONS :
s_field5 FOR vso_default.
.
SELECTION-SCREEN END OF BLOCK b1.
* Processo inicial ( PBO )
AT SELECTION-SCREEN OUTPUT.
* Percebam as informações da imagem abaixo.
LOOP AT SCREEN.
* Existem algumas regras pra encontrar os textos o mais importante
* é que o campo grupo 3 estará alimentado com 'TXT' e a outra regra que
* uso é que o nome do campo referente àquele texto fica na posição+2(8).
IF screen-group3 = 'TXT'.
MOVE screen-name TO st_name-name.
BREAK-POINT.
CASE st_name-name+2(8).
WHEN 'P_FIELD1'.
st_name-text = 'Material'.
WHEN 'P_FIELD2'.
st_name-text = 'Descrição'.
WHEN 'P_FIELD3'.
st_name-text = 'Campo 3'.
WHEN 'P_FIELD4'.
st_name-text = 'Campo 4'.
WHEN 'S_FIELD5'.
st_name-text = 'Campo 5'.
WHEN OTHERS.
ENDCASE.
APPEND st_name TO it_name.
CLEAR st_name.
ENDIF.
ENDLOOP.
* Atualiza o campo conforme os textos colocados na tabela de campos/texts
LOOP AT SCREEN.
READ TABLE it_name INTO st_name
with key name = screen-name.
* Feed Dinamico.
IF sy-subrc is INITIAL.
BREAK-POINT.
ASSIGN (st_name-name) to <name>.
<name> = st_name-text.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
START-OF-SELECTION.
* sem precisar criar qualquer tipo de objeto de texto, hoje esse post vou
* mostrar como fazer isso, não sei te explicar qual momento poderiamos
* usar isso, mas o mais importante é saber que é possível e que não é
* dificil o quanto parece. Como sempre, o segredo é estar familiarizado com
* com a cara de Debugger, vamos começar
*&---------------------------------------------------------------------*
REPORT z_text_in_selection_screen.
TYPES :
BEGIN OF ty_name,
name TYPE screen-name,
text(30) TYPE c,
END OF ty_name
.
DATA :
st_name TYPE ty_name,
it_name TYPE TABLE OF ty_name
.
* Declaração pra criar o Select-option.
DATA :
vso_default TYPE c.
FIELD-SYMBOLS :
<name> TYPE ANY.
* Tela de seleção
SELECTION-SCREEN BEGIN OF BLOCK b1.
PARAMETERS :
p_field1(3) TYPE c,
p_field2(5) TYPE c,
p_field3 TYPE p,
p_field4 TYPE i
.
SELECT-OPTIONS :
s_field5 FOR vso_default.
.
SELECTION-SCREEN END OF BLOCK b1.
* Processo inicial ( PBO )
AT SELECTION-SCREEN OUTPUT.
* Percebam as informações da imagem abaixo.
LOOP AT SCREEN.
* Existem algumas regras pra encontrar os textos o mais importante
* é que o campo grupo 3 estará alimentado com 'TXT' e a outra regra que
* uso é que o nome do campo referente àquele texto fica na posição+2(8).
IF screen-group3 = 'TXT'.
MOVE screen-name TO st_name-name.
BREAK-POINT.
CASE st_name-name+2(8).
WHEN 'P_FIELD1'.
st_name-text = 'Material'.
WHEN 'P_FIELD2'.
st_name-text = 'Descrição'.
WHEN 'P_FIELD3'.
st_name-text = 'Campo 3'.
WHEN 'P_FIELD4'.
st_name-text = 'Campo 4'.
WHEN 'S_FIELD5'.
st_name-text = 'Campo 5'.
WHEN OTHERS.
ENDCASE.
APPEND st_name TO it_name.
CLEAR st_name.
ENDIF.
ENDLOOP.
* Atualiza o campo conforme os textos colocados na tabela de campos/texts
LOOP AT SCREEN.
READ TABLE it_name INTO st_name
with key name = screen-name.
* Feed Dinamico.
IF sy-subrc is INITIAL.
BREAK-POINT.
ASSIGN (st_name-name) to <name>.
<name> = st_name-text.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
START-OF-SELECTION.