" Sabe quando vc quer uma parte da String até certo ponto do texto,
" isso pode ser resolvido facilmente usando um commando chamado
" 'SPLIT' que faz nada mais nada menos que quebrar o texto até o
" delimitador informado deletando o delimitador, usado bastante pra
" Batch Input e outras tratativas de string, olhem aaee.
REPORT z_split.
DATA : it_texto TYPE TABLE OF string.
DATA :
v_texto TYPE string,
v_t1 TYPE string,
v_t2 TYPE string.
*&------Texto Inicial sem alteração------------------------------------*
v_texto = 'Texto test2 pra ver s3 funciona'.
WRITE : 'Texto no começo :' , v_texto, / .
*&---------------------------------------------------------------------*
*&-----Texto sendo quebrado para duas variáveis------------------------*
SPLIT v_texto AT space INTO v_t1
v_t2.
WRITE : / 'Texto enviado para duas variáveis : ',/
'Variável 1: ', v_t1,/,
'Variavel 2: ', v_t2,/.
*&---------------------------------------------------------------------*
*&-----Texto sendo quebrado para uma tabela de string------------------*
SPLIT v_texto AT space INTO TABLE it_texto.
LOOP AT it_texto INTO v_texto.
IF sy-tabix = 1.
WRITE : / 'Texto enviando para uma tabela :' , v_texto, /.
else.
WRITE : v_texto, / .
ENDIF.
ENDLOOP.
BREAK-POINT.
*&---------------------------------------------------------------------*
quarta-feira, 28 de março de 2012
segunda-feira, 26 de março de 2012
ALV - OO ( Orientado a Objeto )
*&---------------------------------------------------------------------*
" Eae Abapers, estarei mostrando como fazer uma ALV orientado a objeto
" da forma mais fácil e rápida, estarei atribuindo o ALV para um Custom
" control criado na tela 9001.
" Não lembra como criar uma tela, veja um dos passos do link abaixo.
" http://abapjuniores.blogspot.com.br/2011/04/module-pool-basico.html
" Me perguntaram isso no email e não respondi por falta de tempo, como
" meio de desculpa eu estou postando a resposta agora, espero que ajude,
REPORT z_alv_oo.
* Tabelas Transparentes
TABLES:
mara.
* Tabela Interna
DATA :
it_mara TYPE TABLE OF mara,
st_layout TYPE lvc_s_layo.
* Objetos
DATA:
* Referenciando o obejto 'O_ALV' com a classe de ALV.
o_alv TYPE REF TO cl_gui_alv_grid,
* Referenciando o objeto 'O_CONTAINER' com a classe de Container customizado.
o_container TYPE REF TO cl_gui_custom_container.
* tela de seleção
SELECTION-SCREEN BEGIN OF BLOCK b1.
SELECT-OPTIONS :
* Código do material
s_matnr FOR mara-matnr.
SELECTION-SCREEN END OF BLOCK b1.
* Inicio do processo
START-OF-SELECTION.
* Tela do ALV.
CALL SCREEN 9001.
* Fim do processo
END-OF-SELECTION.
" Eae Abapers, estarei mostrando como fazer uma ALV orientado a objeto
" da forma mais fácil e rápida, estarei atribuindo o ALV para um Custom
" control criado na tela 9001.
" Não lembra como criar uma tela, veja um dos passos do link abaixo.
" http://abapjuniores.blogspot.com.br/2011/04/module-pool-basico.html
" Me perguntaram isso no email e não respondi por falta de tempo, como
" meio de desculpa eu estou postando a resposta agora, espero que ajude,
REPORT z_alv_oo.
* Tabelas Transparentes
TABLES:
mara.
* Tabela Interna
DATA :
it_mara TYPE TABLE OF mara,
st_layout TYPE lvc_s_layo.
* Objetos
DATA:
* Referenciando o obejto 'O_ALV' com a classe de ALV.
o_alv TYPE REF TO cl_gui_alv_grid,
* Referenciando o objeto 'O_CONTAINER' com a classe de Container customizado.
o_container TYPE REF TO cl_gui_custom_container.
* tela de seleção
SELECTION-SCREEN BEGIN OF BLOCK b1.
SELECT-OPTIONS :
* Código do material
s_matnr FOR mara-matnr.
SELECTION-SCREEN END OF BLOCK b1.
* Inicio do processo
START-OF-SELECTION.
* Tela do ALV.
CALL SCREEN 9001.
* Fim do processo
END-OF-SELECTION.
sexta-feira, 23 de março de 2012
Função - DAY_ATTRIBUTES_GET
* Irei mostrar hoje a função 'DAY_ATTRIBUTES_GET' que retorna uma tabela
* muito interessante que mostra todos os atributos diários em um certo
* intervalo de tempo, dá pra faze muita coisa com estes dados de retorno
* dá pra faze calendário, rotina de apontamento, agenda, um monte de
* coisa só depende de quanto você gosta de brincar com ABAP
REPORT z_day_attributes_get.
* Declaração
DATA :
vg_newdate TYPE sy-datum,
it_day_atr TYPE TABLE OF casdayattr,
st_day_atr TYPE casdayattr.
* Tela de seleção
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
SELECT-OPTIONS:
so_peri FOR sy-datum.
PARAMETERS:
p_langu TYPE scal-fcalid DEFAULT 'BR'.
SELECTION-SCREEN END OF BLOCK b1.
START-OF-SELECTION.
PERFORM : f_day_attributes,
f_show.
* muito interessante que mostra todos os atributos diários em um certo
* intervalo de tempo, dá pra faze muita coisa com estes dados de retorno
* dá pra faze calendário, rotina de apontamento, agenda, um monte de
* coisa só depende de quanto você gosta de brincar com ABAP
REPORT z_day_attributes_get.
* Declaração
DATA :
vg_newdate TYPE sy-datum,
it_day_atr TYPE TABLE OF casdayattr,
st_day_atr TYPE casdayattr.
* Tela de seleção
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
SELECT-OPTIONS:
so_peri FOR sy-datum.
PARAMETERS:
p_langu TYPE scal-fcalid DEFAULT 'BR'.
SELECTION-SCREEN END OF BLOCK b1.
START-OF-SELECTION.
PERFORM : f_day_attributes,
f_show.
quarta-feira, 21 de março de 2012
UNPACK, PACK e CONDENSE
* Fala galera vou postar hoje um negocio que ajuda muito na hora de
* trabalhar com alimentação de variáveis, paramentros de funções e na
* hora de mostra os dados fica um pouco mais bonito também, são os
* famosos 'UNPACK', 'PACK' e 'CONDENSE', está tudo comentado no código.
REPORT z_unpack_pack_condense.
* Declarações
DATA :
texto10(10),
texto5(5).
BREAK-POINT.
texto10 = '1234'.
texto5 = '1234'.
* Adiciona 0's a esquerda até completa o variavel por inteiro.
UNPACK texto10 TO texto10.
UNPACK texto5 TO texto5.
write : / 'UNPACK ', TEXTO10,/
'UNPACK ', TEXTO5,/.
BREAK-POINT.
* Tira os 0's a esquerda mas mantêm os dados orientados a direita.
PACK texto10 TO texto10.
PACK texto5 TO texto5.
write : / 'PACK ', TEXTO10,/
'PACK ', TEXTO5,/.
BREAK-POINT.
* Tira os espaços vazios da variável.
CONDENSE texto10.
CONDENSE texto5.
write : / 'CONDENSE ', TEXTO10,/
'CONDENSE ', TEXTO5,/.
BREAK-POINT.
* trabalhar com alimentação de variáveis, paramentros de funções e na
* hora de mostra os dados fica um pouco mais bonito também, são os
* famosos 'UNPACK', 'PACK' e 'CONDENSE', está tudo comentado no código.
REPORT z_unpack_pack_condense.
* Declarações
DATA :
texto10(10),
texto5(5).
BREAK-POINT.
texto10 = '1234'.
texto5 = '1234'.
* Adiciona 0's a esquerda até completa o variavel por inteiro.
UNPACK texto10 TO texto10.
UNPACK texto5 TO texto5.
write : / 'UNPACK ', TEXTO10,/
'UNPACK ', TEXTO5,/.
BREAK-POINT.
* Tira os 0's a esquerda mas mantêm os dados orientados a direita.
PACK texto10 TO texto10.
PACK texto5 TO texto5.
write : / 'PACK ', TEXTO10,/
'PACK ', TEXTO5,/.
BREAK-POINT.
* Tira os espaços vazios da variável.
CONDENSE texto10.
CONDENSE texto5.
write : / 'CONDENSE ', TEXTO10,/
'CONDENSE ', TEXTO5,/.
BREAK-POINT.
terça-feira, 20 de março de 2012
Função - CCM_GO_BACK_MONTHS
* Pra prova que o ABAP tem função pra tudo, hoje vou mostrar uma função
* que retorna o mês conforme a quantidade de meses que quiser voltar a partir
* data informada.
REPORT z_ccm_go_back_months.
* Declaração
DATA :
vg_newdate TYPE sy-datum.
* Executa função
CALL FUNCTION 'CCM_GO_BACK_MONTHS'
EXPORTING
currdate = sy-datum "Data Atual do Sistema
backmonths = '010' "Qtde de meses pra voltar
IMPORTING
newdate = vg_newdate. "Data de retorno
IF sy-subrc <> 0.
EXIT.
ENDIF.
BREAK-POINT.
* que retorna o mês conforme a quantidade de meses que quiser voltar a partir
* data informada.
REPORT z_ccm_go_back_months.
* Declaração
DATA :
vg_newdate TYPE sy-datum.
* Executa função
CALL FUNCTION 'CCM_GO_BACK_MONTHS'
EXPORTING
currdate = sy-datum "Data Atual do Sistema
backmonths = '010' "Qtde de meses pra voltar
IMPORTING
newdate = vg_newdate. "Data de retorno
IF sy-subrc <> 0.
EXIT.
ENDIF.
BREAK-POINT.
domingo, 18 de março de 2012
Chamando Perform de outro Programa
* Opa pessoal, vou mostrar hoje uma técnica usado bastante em programas
* standards que é usar performs de outros programas como se fosse uma
* função, eu vou usar um simples pra vocês pegarem o conceito depois é
* só ir pro abraço, assim vc não vai precisar fazer a mesma rotina pra
* varios programas, a idéia é fazer em um programa e depois utilizar o
* mesmo perform pros outros programas.
*&---------------------------------------------------------------------*
*& Programa 1
*&---------------------------------------------------------------------*
REPORT zprogram_001.
DATA :
v_value(6) TYPE c.
v_value = '000123'.
BREAK-POINT.
PERFORM f_trata_numero CHANGING v_value.
*&---------------------------------------------------------------------*
*& Form f_trata_numero
*&---------------------------------------------------------------------*
FORM f_trata_numero CHANGING valor.
* Tratativa do valor.
PACK valor TO valor.
condense valor.
break-point.
ENDFORM. " f_trata_numero
* standards que é usar performs de outros programas como se fosse uma
* função, eu vou usar um simples pra vocês pegarem o conceito depois é
* só ir pro abraço, assim vc não vai precisar fazer a mesma rotina pra
* varios programas, a idéia é fazer em um programa e depois utilizar o
* mesmo perform pros outros programas.
*&---------------------------------------------------------------------*
*& Programa 1
*&---------------------------------------------------------------------*
REPORT zprogram_001.
DATA :
v_value(6) TYPE c.
v_value = '000123'.
BREAK-POINT.
PERFORM f_trata_numero CHANGING v_value.
*&---------------------------------------------------------------------*
*& Form f_trata_numero
*&---------------------------------------------------------------------*
FORM f_trata_numero CHANGING valor.
* Tratativa do valor.
PACK valor TO valor.
condense valor.
break-point.
ENDFORM. " f_trata_numero
quinta-feira, 15 de março de 2012
Volta das Férias
Fala rapaziada esperta, voltei de ferias semana passada e ainda to meio no clima, pra vocês verem estou postando soh hoje, rsrsr, e pra explicar um bucado dos emails que recebi perguntando se eu tinha abandonado os ABAP' s Jr huahuahua, to de volta 100% descansado e pronto pra mais posts, tenho bastante material pronto e começarei a postar a partir de amanhã, estou muito feliz com a quantidade de curriculos que recebi e já repassei todos...... Estarei respondendo mais rápido possível sobre as dúvidas enviadas ( se ainda tiverem ) e vamo que vamo.. t+
Assinar:
Postagens (Atom)