SAP資格過去問ならSAPnavi

NoteやStripe決済で安全にSAP過去問を購入することができます。
領収書発行可能 / 即時入手可能

SAP過去問 (SAP Exam)

Repeated Read-and-Confirm Cycles

使用する

LDQ APIを使用した繰り返しの読み取りと確認のサイクル(「読み取り」)

同じセッションで、複数の読み取り-読み取り-…-読み取り-確認-コミットのサイクルが発生する可能性があります。これは、前の例で説明した単一サイクルの簡略図です。

シーケンス図:

次の概要は、サイクルのn_cyclesの繰り返しを示しており、n_unitsユニットのn_times読み取りが一度に行われ、各サイクルの終わりに明示的にコミットされます。

入力パラメータ

      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_units           TYPE i DEFAULT 10,      n_times           TYPE i DEFAULT 3.      n_cycles          TYPE i DEFAULT 4.            

宣言

DATA: l_ldq_reader      TYPE REF TO if_ldq_reader,      l_ldq_unit_reader TYPE REF TO if_ldq_unit_reader.DATA: l_queue_name_tab  TYPE ldq_queue_name_tab,      l_queue_name      TYPE ldq_queue_name.DATA: l_xdata           TYPE xstring,      l_cdata           TYPE string.DATA: l_size            TYPE i.DATA: l_content_tab     TYPE ldq_unit_content_reader_tab.DATA: l_state_tab       TYPE ldq_unit_state_reader_tab.DATA: l_del             TYPE i.DATA: l_seq_nr          TYPE ldq_unit_id.DATA: l_queue_nr(4)     TYPE n.DATA: l_lines           TYPE i.DATA: l_last_lines      TYPE i.DATA: l_unit            TYPE i.DATA: l_state_wa        TYPE REF TO if_ldq_unit_state_reader,      l_content_wa      TYPE REF TO if_ldq_unit_content_reader.DATA: l_format          TYPE ldq_data_format.DATA: l_next_state_nr   TYPE i.DATA: l_number          TYPE i.TYPES: BEGIN OF lt_my_unit_reader,         unit_reader TYPE REF TO if_ldq_unit_reader,         queue_name    TYPE ldq_queue_name,      END OF lt_my_unit_reader.DATA: l_my_unit_reader_tab TYPE TABLE OF lt_my_unit_reader.DATA: l_my_unit_reader TYPE lt_my_unit_reader.FIELD-SYMBOLS: <l_content_wa> TYPE REF TO if_ldq_unit_content_reader.FIELD-SYMBOLS: <l_state_wa>   TYPE REF TO if_ldq_unit_state_reader.            

キュー名の作成

CLEAR: l_queue_name_tab[], l_content_tab[].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.ENDDO.LOOP AT l_queue_name_tab INTO l_queue_name.            

LDQアプリケーションオブジェクトの作成

  l_ldq_reader       = cl_ldq_application=>get_reader( ap_name ).            

キュー名ごとのLDQキューオブジェクトの作成

*  l_my_unit_reader-unit_reader = l_ldq_reader->set_queue_name( l_queue_name ).  l_my_unit_reader-queue_name  = l_queue_name.  APPEND l_my_unit_reader TO l_my_unit_reader_tab.ENDLOOP.            

いくつかの読み取り-読み取り-…-読み取り-確認サイクル

*DO n_cycles TIMES.*            

すべてのキューのブロックユニットをn_times読み取ります

*DO n_times TIMES.  LOOP AT l_my_unit_reader_tab INTO l_my_unit_reader.            

1つのブロックでn_unitsを取得します

    l_content_tab = l_my_unit_reader-unit_reader->get_next_contents( n_units ).    l_unit = LINES( l_content_tab ).            

コンテンツオブジェクトから含まれる情報を取得する

    CLEAR l_number.    WRITE: / l_unit, 'Qname:', l_my_unit_reader-queue_name.    LOOP AT l_content_tab  ASSIGNING <l_content_wa>.      l_format = <l_content_wa>->get_format( ).      IF cl_ldq_unit_writer=>co_character_data_type = l_format.        l_cdata = <l_content_wa>->get_cdata( ).      ELSE.        l_xdata = <l_content_wa>->get_xdata( ).      ENDIF.      l_seq_nr  = <l_content_wa>->get_sequence_number( ).      l_size = <l_content_wa>->get_size( ).      l_number = l_number + 1.      WRITE: /10 'number:', l_number, 'sequence number =', l_seq_nr, 'size in kb:', l_size.    ENDLOOP.            

データベース内の読み取りユニットを確認する

*    l_my_unit_reader-unit_reader->confirm( ).            

LDQデータの読み取りステータスをデータベースに永続化する

    COMMIT WORK.  ENDLOOP.      next read-read-…-read-confirm cycle  ENDLOOP.      next queue            

タイトルとURLをコピーしました