|
Código fuente -
Utilidades varias
|
|
Sábado, 05 de Junio de 2004 02:08 |
Ejecutar juego datos BI en modo Call Transaction
REPORT z_call_bi.
PARAMETERS: queue_id LIKE apqd-qid.
PARAMETERS: e_group(12) DEFAULT 'MMWM-OUT'.
DATA: l_mstring(480).
DATA: l_subrc LIKE SY-SUBRC.
DATA: messtab LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.
DATA: tabla LIKE bdcdata OCCURS 0 WITH HEADER LINE.
DATA: e_group_opened.
DATA: fnam(20).
TABLES: t100, apqi, tstc.
START-OF-SELECTION.
SELECT SINGLE * FROM apqi WHERE qid = queue_id.
IF SY-SUBRC NE 0.
EXIT.
ENDIF.
DO apqi-puttrans TIMES.
CALL FUNCTION 'BDC_OBJECT_READ'
EXPORTING
queue_id = queue_id
* DATATYPE = '%BDC'
trans = sy-index
TABLES
dynprotab = tabla
.
IF SY-SUBRC <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
REFRESH messtab.
LOOP AT tabla WHERE dynbegin = 'T'.
fnam = tabla-fnam.
DELETE tabla.
ENDLOOP.
SELECT SINGLE * FROM tstc WHERE tcode = fnam.
IF SY-SUBRC = 0. " This transaction has been executed with rc ne 0.
CALL TRANSACTION fnam USING tabla
MODE 'E'
UPDATE 'S'
MESSAGES INTO messtab.
l_subrc = SY-SUBRC.
WRITE: / 'CALL_TRANSACTION',
'returncode:'(i05),
l_subrc,
'RECORD:',
sy-index.
LOOP AT messtab.
SELECT SINGLE * FROM t100 WHERE sprsl = messtab-msgspra
AND arbgb = messtab-msgid
AND msgnr = messtab-msgnr.
IF SY-SUBRC = 0.
l_mstring = t100-text.
IF l_mstring CS '&1'.
REPLACE '&1' WITH messtab-msgv1 INTO l_mstring.
REPLACE '&2' WITH messtab-msgv2 INTO l_mstring.
REPLACE '&3' WITH messtab-msgv3 INTO l_mstring.
REPLACE '&4' WITH messtab-msgv4 INTO l_mstring.
ELSE.
REPLACE '&' WITH messtab-msgv1 INTO l_mstring.
REPLACE '&' WITH messtab-msgv2 INTO l_mstring.
REPLACE '&' WITH messtab-msgv3 INTO l_mstring.
REPLACE '&' WITH messtab-msgv4 INTO l_mstring.
ENDIF.
CONDENSE l_mstring.
WRITE: / messtab-msgtyp, l_mstring(250).
ELSE.
WRITE: / messtab.
ENDIF.
ENDLOOP.
SKIP.
IF l_subrc <> 0 AND e_group <> space.
IF e_group_opened = ' '.
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
client = sy-mandt
GROUP = e_group
user = 'DI013'
keep = 'X'.
e_group_opened = 'X'.
ENDIF.
CALL FUNCTION 'BDC_INSERT'
EXPORTING
tcode = fnam
TABLES
dynprotab = tabla.
ENDIF.
ENDIF.
REFRESH tabla.
ENDDO.
CALL FUNCTION 'BDC_CLOSE_GROUP'.
|