W Pub: 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">⚠ &lt;b&gt;<span class="titulo">COMMUNICATION</span>⚠ &lt;/b&gt;</p>

<P align="left" class="gaussr3">⚠ &lt;B&gt;Definicin⚠ &lt;/B&gt;</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">⚠ &lt;B&gt;Sintaxis:⚠ &lt;/B&gt;</P>

<pre class="gaussr3">COMMUNICATION INIT DESTINATION <destino> ID <id>

[ RETURNCODE <rc> ].</pre>

<p class="gaussr3">Inicia la conexin "programa-a-programa". En el campo

  <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 sentencia

  debe 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 la

  comunicacin. 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 se

  encuentran 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>. 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>. 
  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 libera

  todos los recursos utilizados. En el campo <rc> se actualiza con el cdigo 
  de retorno de la sentencia.</p>

<p class="gaussr3">⚠ &lt;b&gt;Ejemplo 1:⚠ &lt;/b&gt;</p>

<pre class="gaussr3">TYPES: CONVERSATION_ID(8) TYPE C,

       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.

⚠ &lt;b&gt;Ejemplo 2:⚠ &lt;/b&gt;</pre>

<pre class="gaussr3">TYPES: CONVERSATION_ID(8) TYPE C,

       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.

⚠ &lt;b&gt;Ejemplo 3:⚠ &lt;/b&gt;</pre>

<pre class="gaussr3">FORM CPIC_EXAMPLE.

  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.

⚠ &lt;b&gt;Ejemplo 4:⚠ &lt;/b&gt;</pre>

<pre class="gaussr3">TYPES: CONVERSATION_ID(8) TYPE C,

       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.

⚠ &lt;b&gt;Ejemplo 5:⚠ &lt;/b&gt;</pre>

<pre class="gaussr3">

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.
  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">⚠ &lt;b&gt;Ejemplo 6:⚠ &lt;/b&gt;</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 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.

COMMUNICATION DEALLOCATE ID CONVID

                         RETURNCODE CPIC_RC.

IF CPIC_RC NE CM_OK.

   WRITE: / 'COMMUNICATION DEALLOCATE, RC = ', CPIC_RC.
   EXIT.

ENDIF.</pre>

<p class="gaussr3">⚠ &lt;b&gt;Ejemplo 7:⚠ &lt;/b&gt;</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 CONVID

                       RETURNCODE 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 CONVID

                         RETURNCODE 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>