PDA

Ver la Versión Completa : Select con variables de DB externa


gatex
03/09/10, 16:54:24
Necesito ayuda, pues necesito desarrollar un programa que lea las variables de una Base de datos externa al sap, y con esto realizar un select a las tablas BSEG y BKPF o un join de los dos, la tabla esta formada por 4 columnas: TABLA, CAMPO, INDICADOR, CONDICION. Por ejemplo existe una fila con los siguientes campos: BSEG, BELNR, SUM(DMBTR), GJAHR = '2009'. y finalmente con estos datos realizar un insert a una tabla. (select BELNR SUM(DMBTR) FROM BSEG into IT_ROWS where GJAHR = '2009')

gatex
05/11/10, 20:22:58
DATA: dbs TYPE dbcon-con_name.
DATA: con(20) TYPE c.
CON = 'OWBSAP'. "DB Connection in DBCO above
DATA: BEGIN OF wa OCCURS 15,
P_TAB like dd02l-tabname,
P_CAMP(100) type c,
END OF wa.
DATA: BEGIN OF itbl OCCURS 15,
TABNAME like dd02l-tabname,
CAMP(100) type c,
COUNT_ROWS TYPE I,
END OF itbl.


EXEC SQL.
connect to :con
ENDEXEC.
EXEC SQL.
set connection :con
ENDEXEC.

EXEC SQL.
OPEN C FOR
SELECT tabla_fuente, campo from sap_registros where procesar = 'SI'

ENDEXEC.

DO.
EXEC SQL.
FETCH NEXT C INTO :wa
ENDEXEC.
IF sy-subrc NE 0.
EXIT.
ENDIF.
APPEND wa TO itbl.
ENDDO.
EXEC SQL.
CLOSE C
ENDEXEC.
EXEC SQL.
DISCONNECT :CON
ENDEXEC.

LOOP AT itbl.
SELECT SINGLE tabname INTO itbl-TABNAME
FROM dd02l
WHERE tabname EQ itbl-TABNAME.

IF sy-subrc <> 0.
itbl-COUNT_ROWS = '0'.
ELSE.
SELECT (itbl-campo) COUNT( * ) INTO itbl-COUNT_ROWS FROM (itbl-TABNAME) .
ENDIF.
EXEC SQL.
connect to :con
ENDEXEC.
EXEC SQL.
set connection :con
ENDEXEC.
EXEC SQL.
update sap_registros
set NRO_REGISTROS_SAP = :itbl-COUNT_ROWS, PROCESAR = 'NO'
WHERE TABLA_FUENTE = :itbl-TABNAME
ENDEXEC.
ENDLOOP.

No funciona.