使用する
LDQ APIを使用したユニットの作成(「書き込み」)
キューの特定のテーブルを書き込むために、ライターオブジェクトとユニットライターオブジェクトが作成されます。単位はnのブロックで書き込まれます。ステータス情報とペイロードは、各ユニットに割り当てられます。次に、ユニットのブロックがデータベースに書き込まれます。
シーケンス図:
下書き:
a)入力パラメータ:
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_dataASチェックボックス。
b)変数宣言:
データ: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 REFTOif_ldq_unit_content_writer。
データ:l_queue_name_tab TYPE ldq_queue_name_tab、
l_queue_nameTYPEldq_queue_name。
データ:l_cdataTYPE文字列。
データ:l_cdata2TYPE文字列。
データ:l_seq_nrタイプldq_unit_id。
データ:l_queue_nr(4)タイプn。
データ:l_sizeTYPEi。
データ:l_xdataTYPExstring。
データ:l_timesTYPEi。
データ:l_rt_ubegin TYPE i、
l_rt_uend TYPE i、
l_rt_qbegin TYPE i、
l_rt_qendTYPEi。
c)キュー名の作成:
n_queuesTIMESを実行します。
l_queue_nr=sy-index。
qp_name l_queue_nrINTOl_queue_nameを連結します。
CONDENSEl_queue_nameNO-GAPS。
l_queue_nameをl_queue_name_tabに追加します。
書き込み:/’Qname:’、l_queue_name。
ENDDO。
ULINE。
d)バイナリペイロードの作成:
b_dataが初期ではない場合。
l_cdata2=’01234’。
100回行います。
l_cdata2l_cdataをl_cdataに連結します。
ENDDO。
l_xdata=l_cdata。
l_size = XSTRLEN(l_xdata)。
l_times = u_size * 1000/l_size。
クリアl_cdata2。
l_timesTIMESを実行します。
l_cdata2l_cdataをl_cdata2に連結します。
ENDDO。
l_xdata=l_cdata2。
l_size = XSTRLEN(l_xdata)。
そうしないと。
if cl_abap_char_utilities => charsize=1。
l_cdata2=’0123456789’。
そうしないと。
l_cdata2=’01234’。
ENDIF。
100回行います。
l_cdata2l_cdataをl_cdataに連結します。
ENDDO。
l_size=u_size-1。
l_sizeTIMESを実行します。
l_cdatal_cdataをl_cdataに連結します。
ENDDO。
ENDIF。
e)LDQアプリケーションオブジェクトの作成:
l_ldq_write = cl_ldq_application => get_writer(ap_name)。
f)このアプリケーションのユニットのターゲットキューの初期化:
l_ldq_unit_writer = l_ldq_write-> set_queue_names(l_queue_name_tab)。
実行時間フィールドl_rt_ubeginを取得します。「aktuelleZeitholen
n_unitTIMESを実行します。
g)指定されたキューに挿入するために、ユニットのコンテンツ、つまりユニットのステータスとペイロードを要求します。
l_ldq_unit_content_writer = l_ldq_unit_writer-> get_next_content()。
h)このコンテンツのシーケンス番号を尋ねます。
l_seq_nr = l_ldq_unit_content_writer-> get_sequence_number()。
i)関連データをコンテンツに挿入します。
b_dataが初期の場合。
*文字ペイロード
l_ldq_unit_content_writer-> set_cdata(l_cdata)。
そうしないと。
*バイナリペイロード
l_ldq_unit_content_writer-> set_xdata(l_xdata)。
ENDIF。
ENDDO。
j)ユニットの内容をデータベースに永続化する:
仕事をコミットします。