ABAP Cursosentenciacommunication
<HTML>
<HEAD> <META http-equiv="Content-Type" content="text/html; charset=windows-1252"> <META name="GENERATOR" content="Microsoft FrontPage 4.0"> <META name="ProgId" content="FrontPage.Editor.Document"> <TITLE>COMMUNICATION</TITLE> <link rel="stylesheet" href="../../gaussr3.css" tppabs="http://www.gaussr3.com/gaussr3.css" type="text/css"> </HEAD> <BODY><p align="left">⚠ <b><span class="titulo">COMMUNICATION</span>⚠ </b></p>
⚠ <B>Definicin⚠ </B></P>
<P align="left" class="gaussr3">Permite realizar comunicacin directa "programa-a-programa"
(CPI-C) definida por IBM en el contexto de los estndares SAA.</P>
<P align="left" class="gaussr3">⚠ <B>Sintaxis:⚠ </B></P>
<rc> se actualiza con el cdigo de retorno de la sentencia.</p>
<pre class="gaussr3">COMMUNICATION ALLOCATE ID <id>
[ RETURNCODE <rc> ].</pre> <p class="gaussr3">Establece la conexin con el otro programa. Esta sentenciadebe estar a continuacin de la variante anterior. En el campos <rc> se actualiza con el cdigo de retorno de la sentencia.</p>
<pre class="gaussr3">COMMUNICATION ACCEPT ID <id>
[ RETURNCODE <rc> ].</pre> <p class="gaussr3">Acepta la conexin requerida por el programa que controla lacomunicacin. En el campo <rc> se actualiza con el cdigo de retorno de la sentencia.</p>
<pre class="gaussr3">COMMUNICATION SEND ID <id> BUFFER <f>
[ RETURNCODE <rc> ] [ LENGTH <longitud> ].</pre> <p class="gaussr3">Envo de datos al programa principal. Los datos enviados seencuentran en el campo <f>. En el campo <rc> se actualiza con el cdigo de retorno de la sentencia. La clusula LENGTH se utiliza para especificar la longitud del campo <f>.</p>
<pre class="gaussr3">COMMUNICATION RECEIVE ID <id> BUFFER <f> DATAINFO <d> STATUSINFO <s>
[ RETURNCODE <rc> ] [ LENGTH <longitud> ] [ RECEIVED <m> ] [ HOLD ].</pre> <p class="gaussr3">Recibe datos de otro programa sobre el campo <f>. Enel campo <rc> se actualiza con el cdigo de retorno de la sentencia. La clusula LENGTH se utiliza para especificar la longitud del campo <f>. Despus de la llamada el campo <m> contiene el nmero de bytes recibidos. Con la clusula HOLD el proceso espera la recepcin completa de los datos.</p>
<pre class="gaussr3">COMMUNICATION DEALLOCATE ID <id>
[ RETURNCODE <rc> ].</pre> <p class="gaussr3">Cierra la conexin "programa-a-programa" y liberatodos los recursos utilizados. En el campo <rc> se actualiza con el cdigo de retorno de la sentencia.</p>
<p class="gaussr3">⚠ <b>Ejemplo 1:⚠ </b></p>
DESTINATION(8) TYPE C,
RETURN_CODE LIKE SY-SUBRC.
DATA: CONVID TYPE CONVERSATION_ID,
DEST TYPE DESTINATION VALUE 'C00',
CPIC_RC TYPE RETURN_CODE.
INCLUDE RSCPICDF.
COMMUNICATION INIT DESTINATION DEST
ID CONVID
RETURNCODE CPIC_RC.
IF CPIC_RC NE CM_OK.
WRITE: /'COMMUNICATION INIT, RC = ', CPIC_RC. EXIT.
ENDIF.
⚠ <b>Ejemplo 2:⚠ </b></pre>
DESTINATION(8) TYPE C,
RETURN_CODE LIKE SY-SUBRC.
DATA: CONVID TYPE CONVERSATION_ID,
DEST TYPE DESTINATION VALUE 'C00',
CPIC_RC TYPE RETURN_CODE.
INCLUDE RSCPICDF.
COMMUNICATION INIT DESTINATION DEST
ID CONVID
RETURNCODE CPIC_RC.
IF CPIC_RC NE CM_OK.
WRITE: /'COMMUNICATION INIT, RC = ', CPIC_RC. EXIT.
ENDIF.
COMMUNICATION ALLOCATE ID CONVID RETURNCODE CPIC_RC. IF CPIC_RC NE CM_OK.WRITE: /'COMMUNICATION ALLOCATE, RC = ', CPIC_RC. EXIT.
ENDIF.
⚠ <b>Ejemplo 3:⚠ </b></pre>
TYPES: CONVERSATION_ID(8) TYPE C,
RETURN_CODE LIKE SY-SUBRC.
DATA: CONVID TYPE CONVERSATION_ID,
CPIC_RC TYPE RETURN_CODE.
INCLUDE RSCPICDF.
COMMUNICATION ACCEPT ID CONVID
RETURNCODE CPIC_RC.
IF CPIC_RC NE CM_OK.
EXIT.
ENDIF.
ENDFORM.
⚠ <b>Ejemplo 4:⚠ </b></pre>
DESTINATION(8) TYPE C,
RETURN_CODE LIKE SY-SUBRC.
DATA: CONVID TYPE CONVERSATION_ID,
DEST TYPE DESTINATION VALUE 'C00',
CPIC_RC TYPE RETURN_CODE.
INCLUDE RSCPICDF.
COMMUNICATION INIT DESTINATION DEST
ID CONVID
RETURNCODE CPIC_RC.
IF CPIC_RC NE CM_OK.
WRITE: /'COMMUNICATION INIT, RC = ', CPIC_RC. EXIT.
ENDIF.
COMMUNICATION ALLOCATE ID CONVID RETURNCODE CPIC_RC. IF CPIC_RC NE CM_OK.WRITE: /'COMMUNICATION ALLOCATE, RC = ', CPIC_RC. EXIT.
ENDIF.
RECORD = 'Prueba de mensaje'. COMMUNICATION SEND ID CONVID BUFFER RECORD
LENGTH LENG
RETURNCODE CPIC_RC.
IF CPIC_RC NE CM_OK.
WRITE: / 'COMMUNICATION SEND, RC = ', CPIC_RC. EXIT.
ENDIF.
⚠ <b>Ejemplo 5:⚠ </b></pre>
TYPES: CONVERSATION_ID(8) TYPE C,
RETURN_CODE LIKE SY-SUBRC,
C_INFO(4) TYPE X.
DATA: CONVID TYPE CONVERSATION_ID,
CPIC_RC TYPE RETURN_CODE,
RECORD(80) TYPE C,
DINFO TYPE C_INFO,
SINFO TYPE C_INFO.
INCLUDE RSCPICDF.</pre>
<pre class="gaussr3"> COMMUNICATION ACCEPT ID CONVID
RETURNCODE CPIC_RC.
IF CPIC_RC NE CM_OK.
EXIT.
ENDIF.</pre>
<pre class="gaussr3"> COMMUNICATION RECEIVE ID CONVID
BUFFER RECORD
STATUSINFO SINFO
DATAINFO DINFO
RETURNCODE CPIC_RC.
IF CPIC_RC NE CM_OK.
EXIT.
ENDIF.
ENDFORM.
</pre> <p class="gaussr3">⚠ <b>Ejemplo 6:⚠ </b></p>
<pre class="gaussr3">TYPES: CONVERSATION_ID(8) TYPE C,
DESTINATION(8) TYPE C,
RETURN_CODE LIKE SY-SUBRC,
C_INFO(4) TYPE X.
DATA: CONVID TYPE CONVERSATION_ID,
CPIC_RC TYPE RETURN_CODE,
DEST TYPE DESTINATION VALUE 'C00'.</pre>
<pre class="gaussr3">DATA: RECORD(80) TYPE C,
LENG TYPE I VALUE 20.</pre>
<pre class="gaussr3">INCLUDE RSCPICDF.</pre>
<pre class="gaussr3">COMMUNICATION INIT DESTINATION DEST ID CONVID
RETURNCODE CPIC_RC.
IF CPIC_RC NE CM_OK.
WRITE: / 'COMMUNICATION INIT, RC = ', CPIC_RC. EXIT.
ENDIF.
COMMUNICATION ALLOCATE ID CONVIDRETURNCODE CPIC_RC.
IF CPIC_RC NE CM_OK.
WRITE: / 'COMMUNICATION ALLOCATE, RC = ', CPIC_RC. EXIT.
ENDIF.
RECORD = 'Prueba de mensaje'. COMMUNICATION SEND ID CONVID BUFFER RECORD
LENGTH LENG
RETURNCODE CPIC_RC.
IF CPIC_RC NE CM_OK.
WRITE: / 'COMMUNICATION SEND, RC = ', CPIC_RC. EXIT.
ENDIF.
COMMUNICATION DEALLOCATE ID CONVIDRETURNCODE CPIC_RC.
IF CPIC_RC NE CM_OK.
WRITE: / 'COMMUNICATION DEALLOCATE, RC = ', CPIC_RC. EXIT.
ENDIF.</pre>
<p class="gaussr3">⚠ <b>Ejemplo 7:⚠ </b></p>
<pre class="gaussr3">PROGRAM ZCPICTST.
TYPES: CONVERSATION_ID(8) TYPE C,
DESTINATION(8) TYPE C,
RETURN_CODE LIKE SY-SUBRC,
C_INFO(4) TYPE X.</pre>
<pre class="gaussr3">DATA: BEGIN OF CONNECT_STRING,
REQID(4) VALUE 'CONN',
TYPE(4) VALUE 'CPIC',
MODE(4) VALUE '1 ',
MANDT(3) VALUE '000',
NAME(12) VALUE 'CPICUSER',
PASSW(8) VALUE 'CPIC',
LANGU(1) VALUE 'D',
KORRV(1),
REPORT(8) VALUE 'ZCPICTST',
FORM(30) VALUE 'CPIC_EXAMPLE',
END OF CONNECT_STRING.</pre>
<pre class="gaussr3">DATA: CONVID TYPE CONVERSATION_ID,
DEST TYPE DESTINATION VALUE 'R2-SYST',
CPIC_RC TYPE RETURN_CODE,
DINFO TYPE C_INFO,
SINFO TYPE C_INFO.</pre>
<pre class="gaussr3">DATA: RECORD(80) TYPE C,
LENG TYPE I VALUE 20.
INCLUDE RSCPICDF.</pre>
<pre class="gaussr3">COMMUNICATION INIT DESTINATION DEST ID CONVID
RETURNCODE CPIC_RC.
IF CPIC_RC NE CM_OK.
WRITE: / 'COMMUNICATION INIT, RC = ', CPIC_RC. EXIT.
ENDIF.
COMMUNICATION ALLOCATE ID CONVIDRETURNCODE CPIC_RC.
IF CPIC_RC NE CM_OK.
WRITE: / 'COMMUNICATION ALLOCATE, RC = ', CPIC_RC. EXIT.
ENDIF.</pre>
<pre class="gaussr3">* Convert logon data to EBCDIC TRANSLATE CONNECT_STRING TO CODE PAGE '0100'. COMMUNICATION SEND ID CONVID BUFFER CONNECT_STRING. IF CPIC_RC NE CM_OK.WRITE: / 'COMMUNICATION ALLOCATE, RC = ', CPIC_RC. EXIT.
ENDIF.
- Receive acknowledgement of logon
COMMUNICATION RECEIVE ID CONVID
BUFFER RECORD
DATAINFO DINFO
STATUSINFO SINFO
RETURNCODE CPIC_RC.
IF CPIC_RC NE CM_OK.
WRITE: / 'COMMUNICATION RECEIVE, RC = ', CPIC_RC. EXIT.
ENDIF.
- Convert acknowledgement to ASCII
TRANSLATE RECORD FROM CODE PAGE '0100'.</pre>
<pre class="gaussr3">* Now begin user-specific data exchange RECORD = 'The quick brown fox jumps over the lazy dog'.</pre> <pre class="gaussr3">* Depending on the partner system, convert to another- character set
TRANSLATE RECORD TO CODE PAGE '0100'.</pre>
<pre class="gaussr3">COMMUNICATION SEND ID CONVID BUFFER RECORD
LENGTH LENG
RETURNCODE CPIC_RC.
IF CPIC_RC NE CM_OK.
WRITE: / 'COMMUNICATION SEND, RC = ', CPIC_RC. EXIT.
ENDIF.
COMMUNICATION DEALLOCATE ID CONVIDRETURNCODE CPIC_RC.
IF CPIC_RC NE CM_OK.
WRITE: / 'COMMUNICATION DEALLOCATE, RC = ', CPIC_RC. EXIT.
ENDIF.</pre>
<pre class="gaussr3">PROGRAM ZCPICTST. INCLUDE RSCPICDF.- The receiving procedure in the relevant partner program follows
FORM CPIC_EXAMPLE.
TYPES: CONVERSATION_ID(8) TYPE C,
RETURN_CODE LIKE SY-SUBRC,
C_INFO(4) TYPE X.
DATA: CONVID TYPE CONVERSATION_ID,
CPIC_RC TYPE RETURN_CODE,
RECORD(80) TYPE C,
DINFO TYPE C_INFO,
SINFO TYPE C_INFO.</pre>
<pre class="gaussr3"> COMMUNICATION ACCEPT ID CONVID
RETURNCODE CPIC_RC.
IF CPIC_RC NE CM_OK.
EXIT.
ENDIF.
COMMUNICATION RECEIVE ID CONVID
BUFFER RECORD
STATUSINFO SINFO
DATAINFO DINFO
RETURNCODE CPIC_RC.
IF CPIC_RC NE CM_OK AND CPIC_RC NE CM_DEALLOCATED_NORMAL.
EXIT.
ENDIF.
ENDFORM.</pre>
</BODY>
</HTML>