sexta-feira, 28 de fevereiro de 2014

Número de linhas de tabela Interna - alternativo

Geralmente quando temos uma tabela interna e queremos saber quantas linhas tenho em uma tabela, vc utiliza a função  DESCRIBE TABLE <inttab> LINES <var>. Procurando no google achei uma forma alternativa.
Parece a mesma coisa só que tem um detalhe..

Exemplo: gostaria de fazer uma rotina apenas se tiver mais de 1 linha na tabela interna.

Forma normal.

DATA t_teste TYPE TABLE OF tp_teste WITH HEADER LINE.
DATAl_lines.

DESCRIBE TABLE t_teste LINES l_lines.
IF l_lines > 1.
ENDIF.


Forma alternativa.

DATA t_teste TYPE TABLE OF tp_teste WITH HEADER LINE.

IF LINESt_teste 1.
ENDIF.
 



Conversor de mensagens de retorno de Batch input( bdcmsgcoll) para estrutura retorno de BAPI (bapiret2)

  Este conversor é interessante, já que atualmente utilizamos mais BAPI do que batch input, com esse conversor vc acaba padronizando a saída das mensagens de erro.

      CALL FUNCTION 'CONVERT_BDCMSGCOLL_TO_BAPIRET2'
        TABLES
          imt_bdcmsgcoll gt_messtab
          ext_return     gw_log-rettab.


 Depois da conversão vc pode utilizar uma dessas funções q já mostra uma tela de mensagens utilizando a tabela BAPIRET2. Em exemplo uma que usei.

    CALL FUNCTION 'RSCRMBW_DISPLAY_BAPIRET2'
      TABLES
        it_return gw_log-rettab.