terça-feira, 8 de novembro de 2011

SAP – Configurar DBLink x DBCON

Primeiro deve ser configurado no TNS do servidor do SAP a conexão com o oracle.
Apos feito esse procedimento é só adicionar esse nome ao SAP na DBCON.
Abaixo estou enviando as formas utilizando o exec sql.
Existe uma outra forma de efetuar a execução do exec sql que é utilizando classes, essa já e um pouco mais complicada mas é mais interessante pra fazer algo dinamico.
Segue o exemplo que é utiliado na minha empresa.

CON NAME: ORACLE                    
DBMS                          ORA                       
USER NAME                sapdes                    
PASSWORD                V01/0014ZctvSB67Wv3u6Yybiy
CON ENV                    DESENV-RAC                
DB RECO                                      
MAX CONNECTIONS    0                         
OPT CONNECTIONS    0

Abaixo segue alguns comandos do exec sql

Variáveis:
DATA: dbtype     TYPE dbcon_dbms,
      dbcur      TYPE cursor,
      exc_ref    TYPE REF TO cx_sy_native_sql_error,
      error_text TYPE string,
 
      dbs        TYPE dbcon-con_name VALUE 'ORACLE'. 


Efetuando a conexão com o banco

  " Procurar uma conexão oracle.
  SELECT SINGLE dbms
    FROM dbcon
    INTO dbtype
    WHERE con_name = dbs.

  " Se for uma conexão oracle para DBLINK.
  IF dbtype = 'ORA'.
    TRY.
        " Executar a chamada no dblink "DBGERAL"
        EXEC SQL.
          CONNECT TO :dbs
        ENDEXEC.
      CATCH cx_sy_native_sql_error INTO exc_ref.
        error_text = exc_ref->get_text( ).
        MESSAGE error_text TYPE 'E'.
    ENDTRY.
  ELSE.
    MESSAGE 'Não foi encontrado uma conexão oracle'  TYPE 'E'.
  ENDIF.
 


Exemplo de Select

  CLEAR:  wa_fat_status.
  REFRESH it_fat_status.

  TRY.
      " Verificar termino do faturamento
      EXEC SQL.
        OPEN dbcur FOR
          SELECT setor_atividade,
                 tp_nota,
                 to_char(dt_faturamento, 'yyyymmdd'),
                 to_char(dt_boleto, 'yyyymmdd'),
                 status,
                 to_char(dt_inclusao, 'yyyymmdd')
            FROM ZSAP_FAT_STATUS
      ENDEXEC.

      " Comandos para gravar todos os dados em uma internal table
      DO.
        CLEAR: wa_dados.
        EXEC SQL.
          FETCH NEXT dbcur
          INTO :wa_fat_status-setor_atividade,
               :wa_fat_status-tp_nota,
               :wa_fat_status-dt_faturamento,
               :wa_fat_status-dt_boleto,
               :wa_fat_status-status,
               :wa_fat_status-dt_inclusao
        ENDEXEC.
        IF sy-subrc <> 0.
          EXIT.
        ELSE.
          APPEND wa_fat_status TO it_fat_status.
        ENDIF.
      ENDDO.

      " Encerra o cursor
      EXEC SQL.
        CLOSE dbcur
      ENDEXEC.

    CATCH cx_sy_native_sql_error INTO exc_ref.
      error_text = exc_ref->get_text( ).
      MESSAGE error_text TYPE 'S'.

      PERFORM gravarErro USING error_text.
  ENDTRY.
 

Exemplo de um update

  TRY.
      IF wa_dados-dt_processamento IS INITIAL.
        EXEC SQL.
          UPDATE ZSAP_FATURAMENTO
            SET DT_PROCESSAMENTO = sysdate,
                USR_PROCESSAMENTO = :sy-uname,
                STATUS = 'P'
            WHERE cd_zsap = :wa_dados-cd_zsap
        ENDEXEC.
        IF sy-subrc IS INITIAL.
          EXEC SQL.
            COMMIT
          ENDEXEC.
        ELSE.
          MESSAGE 'Erro na atualização das datas' TYPE 'E'.
        ENDIF.
      ELSE.
        EXEC SQL.
          UPDATE ZSAP_FATURAMENTO
            SET DT_REPROCESSO = sysdate,
                USR_REPROCESSO = :sy-uname,
                STATUS = 'P'
            WHERE cd_zsap = :wa_dados-cd_zsap
        ENDEXEC.
        IF sy-subrc IS INITIAL.
          EXEC SQL.
            COMMIT
          ENDEXEC.
        ELSE.
          MESSAGE 'Erro na atualização das datas' TYPE 'E'.
        ENDIF.
      ENDIF.

    CATCH cx_sy_native_sql_error INTO exc_ref.
      error_text = exc_ref->get_text( ).
      MESSAGE error_text TYPE 'E'.
  ENDTRY.
 

Fonte: http://www.grupos.com.br/group/abap4/Messages.html?action=message&id=126814010656086&year=10&month=3&prev=1

Nenhum comentário :

Postar um comentário

Related Posts Plugin for WordPress, Blogger...