Verificando erro em ALV

11, agosto 2009 às 10:54 pm | Publicado em ABAP-SAP | 1 Comentário
Tags: , ,

Existe uma sequencia que nos mostra erros em ALV, no começo achei meio estranho mas realmente funciona,

– Clique na tela do seu ALV.

– Segure SHIFT, CONTROL, ALT.

– De 2 clique com o botão direito do mouse em uma parte vazia do seu ALV.

Ira aparecer um popup com o log do seu ALV, muito doido, rs.

Quem me passou essa foi meu amigo Rodolfo Mião.

Abraço  Rodolfo e abraço a todos,

Mauro Cesar Silva Laranjeira

Anúncios

Zeros a esquerda – ABAP

11, agosto 2009 às 10:49 pm | Publicado em ABAP-SAP | 1 Comentário
Tags: ,

Temos 2 funções que nos auxiliam com tratamento de zeros a esquerda, a função

CONVERSION_EXIT_ALPHA_INPUT que insere zeros a esquerda, e a função

CONVERSION_EXIT_ALPHA_OUTPUT que remove zeros a esquerda.

Exemplo:

DATA: v_teste TYPE char10 VALUE ’30’.

CALL FUNCTION ‘CONVERSION_EXIT_ALPHA_INPUT’

EXPORTING

input  = v_teste

IMPORTING

output = v_teste.

WRITE v_teste.

CALL FUNCTION ‘CONVERSION_EXIT_ALPHA_OUTPUT’

EXPORTING

input  = v_teste

IMPORTING

output = v_teste.

WRITE v_teste.

Neste caso iria aparecer na tela:
0000000030
30
DATA: v_teste TYPE char100 VALUE ’30’.
CALL FUNCTION ‘CONVERSION_EXIT_ALPHA_INPUT’
EXPORTING
input  = v_teste
IMPORTING
output = v_teste.
WRITE v_teste.
CALL FUNCTION ‘CONVERSION_EXIT_ALPHA_OUTPUT’
EXPORTING
input  = v_teste
IMPORTING
output = v_teste.
WRITE v_teste.

Inserindo valor em Grid com BOL – CRM 2007

11, agosto 2009 às 10:20 pm | Publicado em ABAP-SAP | Deixe um comentário
Tags: , , , ,
DATA: o_gridaquecedor TYPE REF TO cl_bsp_wd_value_node,
o_gridaquecedor_col TYPE REF TO  cl_crm_bol_bo_col,”if_bol_bo_col.
o_grid TYPE REF TO zisfi_sintese.
CREATE DATA o_grid.
CREATE OBJECT o_gridaquecedor_col.
o_gridaquecedor ?= me->typed_context->gridaquecedor->collection_wrapper->get_current( ).
o_gridaquecedor_col->if_bol_bo_col~add( o_gridaquecedor ).
op_topartidasabertas( o_gridaquecedor_col ).

Neste exemplo iremos criar um método com o nome INSERT_ENTITY_GRID, este método terá a função de atribuir uma work area recebida como parâmetro (wa_grid)  em um grid construído com nó de valor.

Nossa work area e do tipo da estrutura Z, Zestrutura.

O Nome do meu nó de valor com o grid, chama GRID.

Este método pode ser disparado de um método da classe de implementação (class de controle da View, normalmente com o final IMPL), um método que recomendo para fazer esta chamada e o DO_PREPARE_OUTPUT .

Segue o método para alimentar o grid com a work area.

METHOD insert_entity_grid.

DATA: o_new_line TYPE REF TO cl_bsp_wd_value_node,

o_zestrutura TYPE REF TO Zestrutura.

CREATE DATA o_zestrutura.

CREATE OBJECT o_new_line

EXPORTING

iv_data_ref = o_zestrutura.

o_new_line->if_bol_bo_property_access~set_properties( is_attributes = wa_grid ).

me->typed_context->grid->collection_wrapper->if_bol_bo_col~add( iv_entity = o_new_line ).

ENDMETHOD.

É apenas o exemplo de um método, mas caso queira preencher todo o grid com os valores de uma tabela interna também seria possível desta maneira:

loop at t_grid into wa_grid.

me->insert_entity_grid( wa_grid ).

endloop.

Abraço,

Mauro Cesar Silva Laranjeira

Exibindo mensagem no CRM 2007 com BOL

11, agosto 2009 às 9:48 pm | Publicado em ABAP-SAP | Deixe um comentário
Tags: , ,
DATA:
lr_msgsrv  TYPE REF TO cl_bsp_wd_message_service.
lr_msgsrv = cl_bsp_wd_message_service=>get_instance( ).
lr_msgsrv->add_message( iv_msg_type       =  ‘E
iv_msg_id         =  ‘ZISCRINFORMACOES’
iv_msg_number     =  ‘003’
iv_msg_v1         =  ‘Teste classe de mensagens’.

DATA:  o_msgsrv  TYPE REF TO cl_bsp_wd_message_service.

o_msgsrv = cl_bsp_wd_message_service=>get_instance( ).

o_msgsrv->add_message( iv_msg_type       =  ‘E’ “tipo da mensagem W/E/S

iv_msg_id         =  ‘ZCLAS’ “Class de mensagem’

iv_msg_number     =  ‘001’ “Número da mensagem

iv_msg_v1         =  ‘Texto da mensagem’.

Abraço,

Mauro Cesar Silva Laranjeira

Estudando BOL agora…

19, agosto 2008 às 10:34 pm | Publicado em ABAP-SAP | Deixe um comentário
Tags: , , ,

E ai pessoal, certinho????

Estou loko para voltar a postar aqui no blog, mas estou em uma correria, como tenho mencionado, trabalho com ABAP no SAP/R3, estou em um projeto de CRM usando BOL, estou tendo que estudar muito, rs, ainda falta informação na internet sobre BOL.

Para quem quiser conhecer segue o link de um slide que achei show de bola

http://www.slideshare.net/srinatha/crm2007-unit7-ui-development-305045

Mas qualquer coisa enviem e-mail para maurocesarsl@uol.com.br

Fikem c Deus… t+++

Insert de tabela interna em tabela SAP

29, fevereiro 2008 às 3:11 pm | Publicado em ABAP-SAP | 1 Comentário
Tags: , , , , , ,

Para dar um insert de uma tabela interna em uma tabela no SAP não podemos usar apenas o comando insert como em outras linguagens, temos que usar também um comando chamado COMMIT WORK.

Veja um exemplo usando a tabela lfza:

REPORT  zinsert_lfza.
********************
*  type
**********************
types: begin of ty_lfza,
      lifnr type lfza-lifnr,
      bukrs type lfza-bukrs,
      empfk type lfza-empfk,
      end of ty_lfza.

***********************
*  Start-of_selection
***********************

START-OF-SELECTION.

insert lfza from TABLE it_lfza.

*Apos o comando insert da it_lfza os dados ainda não foram para o banco, ficaram salvos em um espaço na memória
*Verificamos se a variável de sistema SY-SUBRC e INITIAL ou igual a 0
*Se o valor dela for 0 quer dizer q o comando insert obteve sucesso
IF SY-SUBRC IS INITIAL.

*com o comando COMMIT WORK os registros que estão na memória são salvos na tabela lfza do banco
  COMMIT WORK.
ELSE.

*com o comando ROLLBACK WORK os registro na memória serão excluídos.
  ROLLBACK WORK.

*fecha if do SY-SUBRC
ENDIF.

Espero ter ajudado, qualquer coisa maurocesarsl@uol.com.br

Upload de Arquivo em ABAP

18, fevereiro 2008 às 4:20 pm | Publicado em ABAP-SAP | Deixe um comentário
Tags: , , , ,

Para fazer um Upload de arquivo no SAP e necessario usar duas funções a WS_FILENAME_GET e a GUI_UPLOAD, a WS_FILENAME_GET e usada para pegar o nome do arquivo, no exemplo abaixo o arquivo e um txt no formato da tabela LFZA com os campos separados por TAB.

A função GUI_UPLOAD e responsavel por subir o arquivo e jogar no dados do arquivo txt dentro de uma tabela interna.

Segue o código:
REPORT  z_upload.
**********************
*  type
**********************
types: begin of ty_lfza,
      lifnr type lfza-lifnr,
      bukrs type lfza-bukrs,
      empfk type lfza-empfk,
      end of ty_lfza.

*****************
*  Tabela interna
*****************
DATA: BEGIN OF it_lfza OCCURS 0,
      mandta type sy-mandt,
      lifnr type lfza-lifnr,
      bukrs type lfza-bukrs,
      empfk type lfza-empfk,
      END OF it_lfza.

*****************
*  Variavel local
*****************
data: vl_nomefile type string.

*****************
*  Work area
*****************
DATA: wa_lfza TYPE ty_lfza.
*****************
*  Initialization
*****************

INITIALIZATION.

  PARAMETERS: p_file  LIKE rlgrap-filename.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
  CALL FUNCTION ‘WS_FILENAME_GET’
    EXPORTING
      def_filename     = p_file
      mask             = ‘,*.txt.’
      mode             = ‘O’
      title            = ‘Upload File’
    IMPORTING
      filename         = p_file
    EXCEPTIONS
      inv_winsys       = 1
      no_batch         = 2
      selection_cancel = 3
      selection_error  = 4
      OTHERS           = 5.
*********************
*  Start-of_selection
*********************

START-OF-SELECTION.

*A função GUI_UPLOAD necessita q o nome do arquivo esteja em uma variavel do tipo string.*
vl_nomefile = p_file.

CALL FUNCTION ‘GUI_UPLOAD’
  EXPORTING
    filename                      = vl_nomefile
   FILETYPE                      = ‘ASC’

* O atributo HAS_FIELD_SEPARATOR indica que os dados do arquivo estão separados por TAB
   HAS_FIELD_SEPARATOR           = ‘X’

  tables
    data_tab                      = it_lfza
          .
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
Após a execução do programa a tabela interna it_lfza estará preenchida com os valores do arquivo TXT.

Espero ter ajudado.
T++

Exibindo dados em Grid ou List

13, fevereiro 2008 às 7:17 pm | Publicado em ABAP-SAP | Deixe um comentário
Tags: , , , ,

Exemplo mostrando dados da tabela marc em um Grid ou List, usando as funções REUSE_ALV_LIST_DISPLAY para mostrar em List e REUSE_ALV_GRID_DISPLAY para mostrar em Grid.

Segue o Código:

 REPORT  yteste_mauro.
TYPE-POOLS: slis.

*Criando tabela interma t_marc com header line
DATA: t_marc TYPE table of marc with header line.

*criando a tabela interna de fieldcat, usada para as configuraçõe de saida
DATA: t_fcat TYPE slis_t_fieldcat_alv WITH HEADER LINE.

*Criação do filtro na tela
INITIALIZATION.
  SELECTION-SCREEN BEGIN OF BLOCK 001
                      WITH FRAME TITLE text-001.
  PARAMETERS: p_matnr TYPE marc-matnr OBLIGATORY,
              p_werks TYPE marc-werks.
  SELECTION-SCREEN END OF BLOCK 001.

*criação da opção de saida, o usuário escolhe LIST ou Grid
SELECTION-SCREEN BEGIN OF BLOCK 002
                      WITH frame title text-002.
 parameters: r_list type c radiobutton group 123,
             r_grid type c radiobutton group 123.
selection-screen end of block 002.
START-OF-SELECTION.

*Faz o select no banco, usei a condição OR apenas para trazer + resultados, exemplo nada usual, rssrssr
  SELECT *
  INTO TABLE t_marc
  FROM marc
  WHERE matnr EQ p_matnr OR werks EQ p_werks.

* se o select obteve sucesso o sy-subrc será igual a 0, então executa o resto do programa
  IF sy-subrc = 0.

*criando a tabela de fieldcast, e a tabela de configuração de saida
  t_fcat-fieldname     = ‘MATNR’.
  T_FCAT-REF_FIELDNAME = ‘MATNR’.
  T_FCAT-REF_TABNAME   = ‘marc’.
  APPEND t_fcat.
  CLEAR t_fcat.

  t_fcat-fieldname     = ‘WERKS’.
  T_FCAT-REF_FIELDNAME = ‘WERKS’.
  T_FCAT-REF_TABNAME   = ‘marc’.
  APPEND t_fcat.
  CLEAR t_fcat.

    t_fcat-fieldname     = ‘MMSTD’.
  T_FCAT-REF_FIELDNAME = ‘MMSTD’.
  T_FCAT-REF_TABNAME   = ‘marc’.
  APPEND t_fcat.
  CLEAR t_fcat.
* verifica se o usuario pediu LIST ou Grid

     if r_list eq ‘X’.

* executa a função para saida do LIST
    CALL FUNCTION ‘REUSE_ALV_LIST_DISPLAY’
 EXPORTING
   i_callback_program             = sy-cprog
     it_fieldcat                    = t_fcat[]
   TABLES
        t_outtab                       = t_marc[].
    IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.

    else.

* executa a função para saida do GRID
    CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
 EXPORTING
   i_callback_program             = sy-cprog
     it_fieldcat                    = t_fcat[]
   TABLES
        t_outtab                       = t_marc[].
    IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.

* fecha o IF da escolha do LIST ou GRID
  ENDIF.

* Fecha o IF do sy-subrc
 ENDIF.
Qualquel duvida maurocesarsl@uol.com.br

Crie um website ou blog gratuito no WordPress.com.
Entries e comentários feeds.