* Eae Galera, trabalhando com retorno de doc. financeiros, precisei
* tratar as informações de data dentro de um arquivo txt, a unica coisa
* que eu precisava verificar era se a data informada era uma data valida,
* pra não ficar criando logicas loucas para verificar a data, a SAP,
* Muito boazinha, criou essa função que faz todas essas verificações pra
* nós abapers.
* Mais simples que essa não existe, ela nem retorno nada, só o SUBRC,
* mas é o suficiente para tomarmos atitude depois.
REPORT z_date_check_plausibility.
* Declarações
DATA :
vl_message TYPE string.
* Tela de seleção
SELECTION-SCREEN BEGIN OF BLOCK b1.
PARAMETERS :
p_date TYPE sy-datum.
SELECTION-SCREEN END OF BLOCK b1.
START-OF-SELECTION.
CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY'
EXPORTING
date = p_date
EXCEPTIONS
plausibility_check_failed = 1
OTHERS = 2.
* Mensagem de retorno.
IF sy-subrc IS INITIAL.
CONCATENATE 'Data'
p_date
'Ok.'
INTO vl_message
SEPARATED BY space.
MESSAGE vl_message TYPE 'S'.
ENDIF.
CLEAR vl_message.
quinta-feira, 14 de novembro de 2013
segunda-feira, 21 de outubro de 2013
Programas Sem Objetos de textos
* 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.
* 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.
quarta-feira, 14 de agosto de 2013
Assing Component
* Fala aee, olha um post muito interessante pra quem gosta de trabalhar
* de forma dinamica, hoje vamos falar sobre o comando 'Assign Component'
* é uma comando usado pra você se referenciar ao valor do campo e não
* ao campo em sí.
* No exemplo abaixo estou fazendo um programa que mostra somente os
* chaves da tabela informada, onde deverá ser criado as estrutura e
* tabelas tudo de forma dinâmica, reparem quais são os valores de cada
* tabela interna e veja como trabalho com ela no relacionamento de
* alimentação da tabela principal que terá uma estrutura só com os
* campos chaves da tabela da tela de seleção.
* Qualquer dúvida ou complemento fiquem a vontade. Espero ajudar. Tnx.
* de forma dinamica, hoje vamos falar sobre o comando 'Assign Component'
* é uma comando usado pra você se referenciar ao valor do campo e não
* ao campo em sí.
* No exemplo abaixo estou fazendo um programa que mostra somente os
* chaves da tabela informada, onde deverá ser criado as estrutura e
* tabelas tudo de forma dinâmica, reparem quais são os valores de cada
* tabela interna e veja como trabalho com ela no relacionamento de
* alimentação da tabela principal que terá uma estrutura só com os
* campos chaves da tabela da tela de seleção.
* Qualquer dúvida ou complemento fiquem a vontade. Espero ajudar. Tnx.
* Tirem as aspas simples (') da frente dos Fields Symbols.... rs
*&---------------------------------------------------------------------*
REPORT z_assign_component.
TYPE-POOLS :
slis.
DATA :
it_table TYPE REF TO data,
st_line TYPE REF TO data,
it_keys TYPE TABLE OF dfies,
st_keys TYPE dfies,
it_fcat TYPE TABLE OF lvc_s_fcat,
st_fcat TYPE lvc_s_fcat,
dy_table TYPE REF TO data,
dy_line TYPE REF TO data
.
* Field-simbols
FIELD-SYMBOLS :
‘<fs_table> TYPE STANDARD TABLE,
‘<fs_line>,
‘<dyn_table> TYPE STANDARD TABLE,
‘<dyn_line>,
‘<dyn_field>.
START-OF-SELECTION.
* Tela de seleção.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS :
p_table TYPE dd02l-tabname OBLIGATORY, " Nome da tabela
p_rows TYPE i, " Quantidade de linhas à retornar
p_where TYPE char100 " Condições do Select ( sem ponto no final )
.
SELECTION-SCREEN END OF BLOCK b1.
PERFORM : z_select_dynamic,
z_get_keys,
z_create_dynamic_table,
z_feed_dynamic_table,
z_alv
.
REPORT z_assign_component.
TYPE-POOLS :
slis.
DATA :
it_table TYPE REF TO data,
st_line TYPE REF TO data,
it_keys TYPE TABLE OF dfies,
st_keys TYPE dfies,
it_fcat TYPE TABLE OF lvc_s_fcat,
st_fcat TYPE lvc_s_fcat,
dy_table TYPE REF TO data,
dy_line TYPE REF TO data
.
* Field-simbols
FIELD-SYMBOLS :
‘<fs_table> TYPE STANDARD TABLE,
‘<fs_line>,
‘<dyn_table> TYPE STANDARD TABLE,
‘<dyn_line>,
‘<dyn_field>.
START-OF-SELECTION.
* Tela de seleção.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS :
p_table TYPE dd02l-tabname OBLIGATORY, " Nome da tabela
p_rows TYPE i, " Quantidade de linhas à retornar
p_where TYPE char100 " Condições do Select ( sem ponto no final )
.
SELECTION-SCREEN END OF BLOCK b1.
PERFORM : z_select_dynamic,
z_get_keys,
z_create_dynamic_table,
z_feed_dynamic_table,
z_alv
.
quarta-feira, 31 de julho de 2013
Considerações .....
* Opa abapers, hoje vim passar as conquistas e o objetivo do blog,
* primeiro vamos falar da 'Captação de Curriculos', os mais antigos sabem
* que tenho parceiros em RH e SAPHunters como amigos e eu repasso todos
* os curriculos que recebo para eles 1 ou 2 vezes por quinzena, estou
* correndo atrás de novos parceiros para que melhoremos essa distribuição
* de curriculos Abap Junior, e assim o blog possa ajudar mais ainda os
* Abapers que estão começando, se não sabia e quer enviar e só mandar no
* Email de contato do Blog.
* Juntamente com os Curriculos recebo também duvidas pontuais, e tento
* ajudar o máximo possivel, assim criando varios casos e isso também
* me auxilia na criação de mais Posts como transferência de conhecimento
* o famoso KT (Knowledge Transfer), muito Obrigado.
* O terceiro ponto e tão importante quanto as outras é o FeedBack que tenho
* recebido do pessoal por email e Skype (ex-msn), e estou muito feliz de
* saber que ajudo, mas gostaria de ressaltar que esse blog foi feito para
* auxiliar mesmo o pessoal que está querendo entrar ness mundo louco do
* SAP / ABAP e não tem ninguem melhor que vocês pra ditar o rumo do Blog,
* porisso podem usar o email para sugerir ou opnar sobre temas a ser
* abordados no Blog, não sei quase nada de ABAP, mas me esforçarei para
* resolver e dar exemplo de todos os temas enviados. Não estou muito
* acostumado a mexer em redes sociais, mas vou tentar ser um pouco mais
* ativo na Página do ABAPJUNIORES no Facebook também, criando algumas
* enquetes e conto com a colaboração de todos, muito obrigado pessoal
* e vamos em frente porque ainda têm muito assunto em ABAP pra falar.
* Valeoooo.
* primeiro vamos falar da 'Captação de Curriculos', os mais antigos sabem
* que tenho parceiros em RH e SAPHunters como amigos e eu repasso todos
* os curriculos que recebo para eles 1 ou 2 vezes por quinzena, estou
* correndo atrás de novos parceiros para que melhoremos essa distribuição
* de curriculos Abap Junior, e assim o blog possa ajudar mais ainda os
* Abapers que estão começando, se não sabia e quer enviar e só mandar no
* Email de contato do Blog.
* Juntamente com os Curriculos recebo também duvidas pontuais, e tento
* ajudar o máximo possivel, assim criando varios casos e isso também
* me auxilia na criação de mais Posts como transferência de conhecimento
* o famoso KT (Knowledge Transfer), muito Obrigado.
* O terceiro ponto e tão importante quanto as outras é o FeedBack que tenho
* recebido do pessoal por email e Skype (ex-msn), e estou muito feliz de
* saber que ajudo, mas gostaria de ressaltar que esse blog foi feito para
* auxiliar mesmo o pessoal que está querendo entrar ness mundo louco do
* SAP / ABAP e não tem ninguem melhor que vocês pra ditar o rumo do Blog,
* porisso podem usar o email para sugerir ou opnar sobre temas a ser
* abordados no Blog, não sei quase nada de ABAP, mas me esforçarei para
* resolver e dar exemplo de todos os temas enviados. Não estou muito
* acostumado a mexer em redes sociais, mas vou tentar ser um pouco mais
* ativo na Página do ABAPJUNIORES no Facebook também, criando algumas
* enquetes e conto com a colaboração de todos, muito obrigado pessoal
* e vamos em frente porque ainda têm muito assunto em ABAP pra falar.
* Valeoooo.
quarta-feira, 24 de julho de 2013
At Select Screen
* Eae pessoal, hoje vou mostrar um comando que é muito utilizado por
* nós abapers que é o 'AT SELECTION SCREEN' que conforme os Docs do SAP
* falam, esse comando é para criar evento durante o processamento da
* tela de seleção, quando você quer trabalhar as açoes do User como
* clicar em algo ou mudar algo na tela em momento de execução conforme a
* ação do User, segue os 'AT SELECTION SCREEN' mais usados ( pelomenos
* por mim rs ).
* Bons estudos pessoal, e continuem mandando os emails com dúvidas,
* estarei respondendo o mais rápido possível.
* Valeo.
*&---------------------------------------------------------------------*
REPORT z_at_select_screen.
* Tabelas
TABLES:
makt.
* Variáveis
DATA :
vg_maktx TYPE makt-maktx.
* Telas de seleção.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS :
p_matnr TYPE mara-matnr.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME.
SELECT-OPTIONS:
s_outpu FOR makt-matnr MODIF ID gr1 NO INTERVALS.
SELECTION-SCREEN END OF BLOCK b2.
* Comando acionado quando apertado o botão de Match Code do parameter
* informado.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_matnr.
BREAK-POINT.
PERFORM z_select_makt.
* Comando acionado quando apertado o Botão F1 (Ajuda)no Parameters
* Informado
AT SELECTION-SCREEN ON HELP-REQUEST FOR p_matnr.
BREAK-POINT.
PERFORM z_help_matnr.
* Processo acionado ao iniciar o programa.
AT SELECTION-SCREEN OUTPUT.
BREAK-POINT.
PERFORM z_trata_tela.
* Reparem que em nenhum momento o programa foi inicializado, pois o
* comando 'AT SELECTION SCREEN' trabalha antes de qualquer processo.
START-OF-SELECTION.
BREAK-POINT.
* nós abapers que é o 'AT SELECTION SCREEN' que conforme os Docs do SAP
* falam, esse comando é para criar evento durante o processamento da
* tela de seleção, quando você quer trabalhar as açoes do User como
* clicar em algo ou mudar algo na tela em momento de execução conforme a
* ação do User, segue os 'AT SELECTION SCREEN' mais usados ( pelomenos
* por mim rs ).
* Bons estudos pessoal, e continuem mandando os emails com dúvidas,
* estarei respondendo o mais rápido possível.
* Valeo.
*&---------------------------------------------------------------------*
REPORT z_at_select_screen.
* Tabelas
TABLES:
makt.
* Variáveis
DATA :
vg_maktx TYPE makt-maktx.
* Telas de seleção.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS :
p_matnr TYPE mara-matnr.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME.
SELECT-OPTIONS:
s_outpu FOR makt-matnr MODIF ID gr1 NO INTERVALS.
SELECTION-SCREEN END OF BLOCK b2.
* Comando acionado quando apertado o botão de Match Code do parameter
* informado.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_matnr.
BREAK-POINT.
PERFORM z_select_makt.
* Comando acionado quando apertado o Botão F1 (Ajuda)no Parameters
* Informado
AT SELECTION-SCREEN ON HELP-REQUEST FOR p_matnr.
BREAK-POINT.
PERFORM z_help_matnr.
* Processo acionado ao iniciar o programa.
AT SELECTION-SCREEN OUTPUT.
BREAK-POINT.
PERFORM z_trata_tela.
* Reparem que em nenhum momento o programa foi inicializado, pois o
* comando 'AT SELECTION SCREEN' trabalha antes de qualquer processo.
START-OF-SELECTION.
BREAK-POINT.
Assinar:
Postagens (Atom)