Show TOC Anfang des Inhaltsbereichs

Diese Grafik wird im zugehörigen Text erklärt LDQ API "Write"  Dokument im Navigationsbaum lokalisieren

 

Erstellen von Einheiten mit dem LDQ API ("Write")

Um eine bestimmte Tabelle mit Queues zu schreiben, müssen ein Writer Object und ein Unit Writer erstellt werden. Die Einheiten werden in Blocks zu n geschrieben. Statusinformationen und Payload warden jeder Einheit zugewiesen. Dann wird der Block der Einheiten in die Datenbank geschrieben.

 

Ablaufdiagramm:

Diese Grafik wird im zugehörigen Text erklärt

 

 

Entwurf:

 

a) Input Parameters:

 

ap_name  TYPE ldq_application_name DEFAULT 'Perf_TEST',

qp_name  TYPE ldq_queue_name DEFAULT 'LDQ_TEST_',

n_queues TYPE i DEFAULT 5,

n_unit   TYPE i DEFAULT 100,

u_size   TYPE i DEFAULT 2,

b_data   AS CHECKBOX.

 

 

 

b) Variable Declarations:

 

DATA: l_ldq_write        TYPE REF TO if_ldq_writer,

      l_ldq_unit_writer  TYPE REF TO if_ldq_unit_writer,

      l_ldq_unit_content_writer TYPE REF TO if_ldq_unit_content_writer.

 

DATA: l_queue_name_tab   TYPE ldq_queue_name_tab,

      l_queue_name       TYPE ldq_queue_name.

DATA: l_cdata            TYPE string.

DATA: l_cdata2           TYPE string.

 

DATA: l_seq_nr          TYPE ldq_unit_id.

DATA: l_queue_nr(4)  TYPE n.

DATA: l_size         TYPE i.

DATA: l_xdata          TYPE xstring.

DATA: l_times        TYPE i.

 

DATA: l_rt_ubegin    TYPE i,

      l_rt_uend      TYPE i,

      l_rt_qbegin    TYPE i,

      l_rt_qend      TYPE i.

 

 

c) Creation of queue names:

 

DO n_queues TIMES.

  l_queue_nr = sy-index.

  CONCATENATE qp_name l_queue_nr INTO l_queue_name.

  CONDENSE l_queue_name NO-GAPS.

  APPEND l_queue_name TO l_queue_name_tab.

  WRITE: / 'Qname: ', l_queue_name.

ENDDO.

ULINE.

 

d) Creation of binary payload:

 

IF b_data IS NOT INITIAL.

  l_cdata2 = '01234'.

  DO 100 TIMES.

    CONCATENATE l_cdata2 l_cdata INTO l_cdata.

  ENDDO.

  l_xdata = l_cdata.

  l_size = XSTRLEN( l_xdata ).

  l_times = u_size * 1000 / l_size.

  CLEAR l_cdata2.

  DO l_times TIMES.

    CONCATENATE l_cdata2 l_cdata INTO l_cdata2.

  ENDDO.

  l_xdata = l_cdata2.

  l_size = XSTRLEN( l_xdata ).

ELSE.

  IF cl_abap_char_utilities=>charsize = 1.

    l_cdata2 = '0123456789'.

  ELSE.

    l_cdata2 = '01234'.

  ENDIF.

  DO 100 TIMES.

    CONCATENATE l_cdata2 l_cdata INTO l_cdata.

  ENDDO.

  l_size = u_size - 1.

  DO l_size TIMES.

    CONCATENATE l_cdata l_cdata INTO l_cdata.

  ENDDO.

ENDIF.

e) Creation of LDQ application object:

 

l_ldq_write       = cl_ldq_application=>get_writer( ap_name ).

 

 

f) Initialisation of the target queues for the units in this application:

 

l_ldq_unit_writer = l_ldq_write->set_queue_names( l_queue_name_tab ).

 

GET RUN TIME FIELD l_rt_ubegin. "aktuelle Zeit holen

 

DO n_unit TIMES.

 

 

g) Request a unit content, i. e. status and payload of a unit, for inserting into specified queues:

 

  l_ldq_unit_content_writer = l_ldq_unit_writer->get_next_content( ).

 

 

h) Ask for sequence number of this content:

 

  l_seq_nr  = l_ldq_unit_content_writer->get_sequence_number( ).

 

 

i) Insert the relevant data into the content:

 

  IF b_data IS INITIAL.

* character payload

    l_ldq_unit_content_writer->set_cdata( l_cdata ).

  ELSE.

* binary payload

    l_ldq_unit_content_writer->set_xdata( l_xdata ).

  ENDIF.

ENDDO.

 

 

j) Persist unit contents into database:

 

COMMIT WORK.

Ende des Inhaltsbereichs