Sample Program for R/3 

PROGRAM RSQAPI10.
*-------------------------------------------------------------*
* This queue test program writes data into a queue. *
*-------------------------------------------------------------*
INCLUDE RSEBCASC. " ASCII/EBCDIC conversion table
INCLUDE RSQAPIDF. " QAPI Defines

PARAMETERS:
QUEUE LIKE APQI-QID DEFAULT 'Q123',
TYPE LIKE APQI-QATTRIB DEFAULT Q_APPENDABLE,
DESTSYS LIKE APQI-DESTSYS DEFAULT ' ',
DATATYPE LIKE APQI-DATATYP DEFAULT ' ',
CLIENT LIKE APQI-MANDANT DEFAULT ' ',
PROGRAM LIKE APQI-PROGID DEFAULT ' ',
FORM LIKE APQI-FORMID DEFAULT ' ',
DRIVER LIKE APQI-STARTPGID DEFAULT 'RSQAPI20',
START LIKE APQI-STARTMODE DEFAULT Q_USERSTART,
DATE LIKE APQI-STARTDATE DEFAULT ' ',
TIME LIKE APQI-STARTTIME DEFAULT ' ',
ASCTOEBC DEFAULT 'X',
TESTLOOP TYPE I DEFAULT '5'.

DATA:
COUNTER TYPE I,

BUFFER LIKE APQD-VARDATA,
LENGTH TYPE I,
UNIT TYPE I,
POS TYPE I,
STATE,
USERID LIKE APQI-USERID VALUE 'CPIC2',
PASSWD LIKE APQI-PASSWD VALUE 'TEST'.

*BREAK-POINT.
*-------------------------------------------------------------*
* Open a Queue *
*-------------------------------------------------------------*

CALL FUNCTION 'QUEUE_OPEN'
EXPORTING NAME = QUEUE " Queue ID
TYPE = TYPE " Appendable/Unique
OPENMODE = Q_WRITE " Write Mode
* needed if CPI-C transfer is used
DESTINATION = DESTSYS " TXCOM entries are needed
* if partner is an ABAP program
DATATYPE = DATATYPE
CLIENT = CLIENT
USERID = USERID
PASSWORD = PASSWD
PROGRAM = PROGRAM
FORM = FORM

TXCOM entry
* fields are needed if partner is a ABAP/4 program
DATATYPE = DATATYPE
CLIENT = CLIENT
USERID = USERID
PASSWORD = PASSWD
PROGRAM = PROGRAM
FORM = FORM
* queue processing options
DRIVER = DRIVER
START = START
DATE = DATE
TIME = TIME
* import automatic generated name, if input was space
IMPORTING NAME = QUEUE.
*-------------------------------------------------------------*
* Put Data into Queue *
*-------------------------------------------------------------*
DO TESTLOOP TIMES.

* first msg of unit
STATE = Q_FIRST.
BUFFER = 'QTEST00020LINE 1 of Queue Test'.
LENGTH = STRLEN( BUFFER).
PERFORM QUEUE_PUT USING QUEUE STATE LENGTH BUFFER.

* middle msg of unit
STATE = Q_MIDDLE.
BUFFER = 'QTEST00020LINE 2 of Queue Test'.
LENGTH = STRLEN( BUFFER).
PERFORM QUEUE_PUT USING QUEUE STATE LENGTH BUFFER.

* last msg of unit
STATE = Q_LAST.
BUFFER = 'QTEST00020LINE 3 of Queue Test'.
LENGTH = STRLEN( BUFFER).
PERFORM QUEUE_PUT USING QUEUE STATE LENGTH BUFFER.

ENDDO.

*-------------------------------------------------------------*
* Close Queue *
*-------------------------------------------------------------*
CALL FUNCTION 'QUEUE_CLOSE'
EXPORTING NAME = QUEUE
OPENMODE = Q_WRITE.
COMMIT WORK.

*-------------------------------------------------------------*
* FORM: QPUT *
* ----------- *
* Put a message into specified queue *
*-------------------------------------------------------------*
FORM QUEUE_PUT USING QUEUE STATE LENGTH BUFFER.

WRITE: /(72) BUFFER.

IF ASCTOEBC = 'X'.
TRANSLATE BUFFER TO CODE PAGE '0100'. "alternatively
ENDIF.

CALL FUNCTION 'QUEUE_PUT'
EXPORTING NAME = QUEUE
STATE = STATE
LENGTH = LENGTH
BUFFER = BUFFER.

IF ( STATE = Q_LAST OR STATE = Q_SINGLE).
COMMIT WORK.
ENDIF.
ENDFORM.