{"id":1129,"date":"2025-03-24T08:52:44","date_gmt":"2025-03-23T23:52:44","guid":{"rendered":"https:\/\/dexall.co.jp\/articles\/?p=1129"},"modified":"2025-03-24T08:52:44","modified_gmt":"2025-03-23T23:52:44","slug":"abap-insert%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6","status":"publish","type":"post","link":"https:\/\/dexall.co.jp\/articles\/?p=1129","title":{"rendered":"ABAP INSERT\u306b\u3064\u3044\u3066"},"content":{"rendered":"\n<div class=\"toc\"><br \/>\n<b>Warning<\/b>:  Undefined array key \"is_admin\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>116<\/b><br \/>\n<br \/>\n<b>Warning<\/b>:  Undefined array key \"is_category_top\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>121<\/b><br \/>\n<br \/>\n<b>Warning<\/b>:  Undefined array key \"is_top\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>128<\/b><br \/>\n    <div id=\"toc_container\" class=\"sgb-toc--bullets js-smooth-scroll\" data-dialog-title=\"\u76ee\u6b21\">\n      <p class=\"toc_title\">\u76ee\u6b21 <\/p>\n      <ul class=\"toc_list\">  <li class=\"first\">    <a href=\"#i-0\">ABAP\u3067INSERT\u6587\u3092\u4f7f\u7528\u3059\u308b\u57fa\u790e\u77e5\u8b58<\/a>    <ul class=\"menu_level_1\">      <li class=\"first last\">        <a href=\"#i-1\">INSERT\u6587\u306e\u57fa\u672c\u69cb\u6587\u3068\u52d5\u4f5c\u306e\u4ed5\u7d44\u307f<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-3\"><\/a>  <\/li>  <li>    <a href=\"#i-7\">\u30b7\u30f3\u30b0\u30eb\u30ec\u30b3\u30fc\u30c9\u306eINSERT\u51e6\u7406\u5b9f\u88c5\u624b\u9806<\/a>    <ul class=\"menu_level_1\">      <li class=\"first last\">        <a href=\"#i-8\">INSERT INTO\u6587\u306b\u3088\u308b1\u4ef6\u306e\u30ec\u30b3\u30fc\u30c9\u8ffd\u52a0\u65b9\u6cd5<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-14\">\u30de\u30eb\u30c1\u30ec\u30b3\u30fc\u30c9\u306eINSERT\u51e6\u7406\u6700\u9069\u5316\u30c6\u30af\u30cb\u30c3\u30af<\/a>    <ul class=\"menu_level_1\">      <li class=\"first last\">        <a href=\"#i-15\">INSERT\u6587\u306b\u3088\u308b\u8907\u6570\u30ec\u30b3\u30fc\u30c9\u306e\u4e00\u62ec\u767b\u9332\u65b9\u6cd5<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-21\">\u30c7\u30fc\u30bf\u6574\u5408\u6027\u3092\u4fdd\u8a3c\u3059\u308bINSERT\u51e6\u7406\u306e\u5b9f\u88c5<\/a>    <ul class=\"menu_level_1\">      <li class=\"first last\">        <a href=\"#i-22\">\u91cd\u8907\u30c1\u30a7\u30c3\u30af\u30ed\u30b8\u30c3\u30af\u306e\u5b9f\u88c5\u65b9\u6cd5<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-28\">INSERT\u51e6\u7406\u306e\u5b9f\u88c5\u306b\u304a\u3051\u308b\u6ce8\u610f\u70b9\u3068\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-29\">\u3088\u304f\u3042\u308b\u30a8\u30e9\u30fc\u3068\u305d\u306e\u5bfe\u51e6\u65b9\u6cd5<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-32\">\u30c7\u30d0\u30c3\u30b0\u3068\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u30e2\u30cb\u30bf\u30ea\u30f3\u30b0\u306e\u65b9\u6cd5<\/a>      <\/li>    <\/ul>  <\/li>  <li class=\"last\">    <a href=\"#i-36\">\u5b9f\u8df5\u7684\u306a\u30b3\u30fc\u30c9\u4f8b\u3067\u5b66\u3076INSERT\u51e6\u7406\u306e\u5fdc\u7528<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-37\">\u696d\u52d9\u30b7\u30b9\u30c6\u30e0\u3067\u3088\u304f\u4f7f\u7528\u3055\u308c\u308bINSERT\u30d1\u30bf\u30fc\u30f3<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-40\">\u5b9f\u969b\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u4f7f\u3048\u308b\u5b9f\u88c5\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8<\/a>      <\/li>    <\/ul>  <\/li><\/ul>\n      <a href=\"#\" class=\"sgb-toc-button js-toc-button\" rel=\"nofollow\" data-open-dialog=\"true\"><i class=\"fa fa-list\"><\/i><span class=\"sgb-toc-button__text\">\u76ee\u6b21\u3078<\/span><\/a>\n    <\/div><\/div><h2 class=\"wp-block-heading\" id=\"i-0\">ABAP\u3067INSERT\u6587\u3092\u4f7f\u7528\u3059\u308b\u57fa\u790e\u77e5\u8b58<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-1\">INSERT\u6587\u306e\u57fa\u672c\u69cb\u6587\u3068\u52d5\u4f5c\u306e\u4ed5\u7d44\u307f<\/h3>\n\n\n\n<p>ABAP\u306eINSERT\u6587\u306f\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3084\u5185\u90e8\u30c6\u30fc\u30d6\u30eb\u306b\u30ec\u30b3\u30fc\u30c9\u3092\u8ffd\u52a0\u3059\u308b\u305f\u3081\u306e\u57fa\u672c\u7684\u306aSQL\u64cd\u4f5c\u3067\u3059\u3002\u4f7f\u7528\u5bfe\u8c61\uff08\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\uff0f\u5185\u90e8\u30c6\u30fc\u30d6\u30eb\uff09\u3068\u30ec\u30b3\u30fc\u30c9\u6570\uff08\u5358\u4e00\uff0f\u8907\u6570\uff09\u306b\u3088\u3063\u30664\u3064\u306e\u4e3b\u8981\u30d1\u30bf\u30fc\u30f3\u306b\u5206\u985e\u3055\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-2\">1. \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3078\u306e\u5358\u4e00\u30ec\u30b3\u30fc\u30c9\u633f\u5165<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">* \u57fa\u672c\u69cb\u6587\nINSERT INTO DB\u30c6\u30fc\u30d6\u30eb\u540d VALUES \u69cb\u9020\u540d.\n\n* \u5b9f\u88c5\u4f8b\nINSERT INTO zt_employee VALUES @ls_employee.<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-3\"><img loading=\"lazy\" decoding=\"async\" width=\"650\" height=\"140\" class=\"wp-image-1135\" style=\"width: 650px;\" src=\"http:\/\/dexall.co.jp\/articles\/wp-content\/uploads\/2024\/11\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2024-11-22-114938.png\" alt=\"\" srcset=\"https:\/\/dexall.co.jp\/articles\/wp-content\/uploads\/2024\/11\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2024-11-22-114938.png 842w, https:\/\/dexall.co.jp\/articles\/wp-content\/uploads\/2024\/11\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2024-11-22-114938-300x65.png 300w, https:\/\/dexall.co.jp\/articles\/wp-content\/uploads\/2024\/11\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2024-11-22-114938-768x166.png 768w\" sizes=\"auto, (max-width: 650px) 100vw, 650px\"><\/h2>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-4\">2. \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3078\u306e\u8907\u6570\u30ec\u30b3\u30fc\u30c9\u633f\u5165<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">* \u57fa\u672c\u69cb\u6587\nINSERT DB\u30c6\u30fc\u30d6\u30eb\u540d FROM TABLE \u5185\u90e8\u30c6\u30fc\u30d6\u30eb [ACCEPTING DUPLICATE KEYS].\n\n* ACCEPTING DUPLICATE KEYS: \u91cd\u8907\u30ad\u30fc\u306e\u30ec\u30b3\u30fc\u30c9\u304c\u5b58\u5728\u3057\u305f\u5834\u5408\u306e\u52d5\u4f5c\u3092\u6307\u5b9a\n* - \u6307\u5b9a\u306a\u3057\uff1a\u91cd\u8907\u30a8\u30e9\u30fc\u3067\u30b7\u30e7\u30fc\u30c8\u30c0\u30f3\u30d7\n* - \u6307\u5b9a\u3042\u308a\uff1a\u91cd\u8907\u30ad\u30fc\u30a8\u30e9\u30fc\u3092\u8a31\u5bb9\u3057\u3001\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u3066\u3082\u51e6\u7406\u3092\u7d9a\u884c\u3059\u308b\n\n* \u5b9f\u88c5\u4f8b\n* \u91cd\u8907\u30c1\u30a7\u30c3\u30af\u3042\u308a\uff08\u30c7\u30d5\u30a9\u30eb\u30c8\uff09\nINSERT zt_employee FROM TABLE @lt_employees.\n\n* \u91cd\u8907\u30c1\u30a7\u30c3\u30af\u306a\u3057\nINSERT zt_employee FROM TABLE @lt_employees ACCEPTING DUPLICATE KEYS.<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-5\">3. \u5185\u90e8\u30c6\u30fc\u30d6\u30eb\u3078\u306e\u5358\u4e00\u30ec\u30b3\u30fc\u30c9\u633f\u5165<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">* \u57fa\u672c\u69cb\u6587\nINSERT \u69cb\u9020\u4f53 INTO TABLE \u5185\u90e8\u30c6\u30fc\u30d6\u30eb\u540d.\nINSERT \u69cb\u9020\u4f53 INTO \u5185\u90e8\u30c6\u30fc\u30d6\u30eb\u540d [INDEX \u633f\u5165\u4f4d\u7f6e].\n\n* INDEX: \u30ec\u30b3\u30fc\u30c9\u3092\u633f\u5165\u3059\u308b\u4f4d\u7f6e\u3092\u6307\u5b9a\uff08\u6a19\u6e96\u30c6\u30fc\u30d6\u30eb\u306e\u307f\u4f7f\u7528\u53ef\uff09\n* - \u6307\u5b9a\u306a\u3057\uff1a\u30c6\u30fc\u30d6\u30eb\u30bf\u30a4\u30d7\u306b\u5fdc\u3058\u305f\u4f4d\u7f6e\uff08\u6a19\u6e96\u30c6\u30fc\u30d6\u30eb\u306f\u672b\u5c3e\u3001\u30bd\u30fc\u30c8\u30c6\u30fc\u30d6\u30eb\u306f\u30bd\u30fc\u30c8\u9806\uff09\n* - \u6307\u5b9a\u3042\u308a\uff1a\u6307\u5b9a\u3057\u305f\u4f4d\u7f6e\u306b\u633f\u5165\uff08\u65e2\u5b58\u30ec\u30b3\u30fc\u30c9\u306f\u5f8c\u65b9\u30b7\u30d5\u30c8\uff09\n\n* \u5b9f\u88c5\u4f8b\n* \u901a\u5e38\u306e\u633f\u5165\nINSERT ls_employee INTO TABLE lt_employees.\n\n* \u7279\u5b9a\u306e\u4f4d\u7f6e\u306b\u633f\u5165\nINSERT ls_employee INTO lt_employees INDEX lv_index.<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-6\">4. \u5185\u90e8\u30c6\u30fc\u30d6\u30eb\u3078\u306e\u8907\u6570\u30ec\u30b3\u30fc\u30c9\u633f\u5165<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">* \u57fa\u672c\u69cb\u6587\nINSERT LINES OF \u30b3\u30d4\u30fc\u5143\u5185\u90e8\u30c6\u30fc\u30d6\u30eb INTO TABLE \u30b3\u30d4\u30fc\u5148\u5185\u90e8\u30c6\u30fc\u30d6\u30eb.\nINSERT LINES OF \u30b3\u30d4\u30fc\u5143\u5185\u90e8\u30c6\u30fc\u30d6\u30eb FROM \u958b\u59cb\u4f4d\u7f6e TO \u7d42\u4e86\u4f4d\u7f6e INTO TABLE \u30b3\u30d4\u30fc\u5148\u5185\u90e8\u30c6\u30fc\u30d6\u30eb.\n\n* \u5b9f\u88c5\u4f8b\n* \u5168\u30ec\u30b3\u30fc\u30c9\u306e\u633f\u5165\nINSERT LINES OF lt_source INTO TABLE lt_target.\n\n* \u7279\u5b9a\u7bc4\u56f2\u306e\u633f\u5165\nINSERT LINES OF lt_source FROM lv_from TO lv_to INTO TABLE lt_target.<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-7\">\u30b7\u30f3\u30b0\u30eb\u30ec\u30b3\u30fc\u30c9\u306eINSERT\u51e6\u7406\u5b9f\u88c5\u624b\u9806<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-8\">INSERT INTO\u6587\u306b\u3088\u308b1\u4ef6\u306e\u30ec\u30b3\u30fc\u30c9\u8ffd\u52a0\u65b9\u6cd5<\/h3>\n\n\n\n<p>\u30b7\u30f3\u30b0\u30eb\u30ec\u30b3\u30fc\u30c9\u306eINSERT\u51e6\u7406\u306f\u3001ABAP\u3067\u6700\u3082\u57fa\u672c\u7684\u306a\u30c7\u30fc\u30bf\u767b\u9332\u51e6\u7406\u3067\u3059\u3002\u3053\u3053\u3067\u306f\u3001\u52b9\u7387\u7684\u3067\u5b89\u5168\u306a\u5b9f\u88c5\u65b9\u6cd5\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-9\">\u57fa\u672c\u7684\u306a\u5b9f\u88c5\u30d1\u30bf\u30fc\u30f3<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">* 1. \u69cb\u9020\u4f53\u306e\u5ba3\u8a00\u3068\u30c7\u30fc\u30bf\u8a2d\u5b9a\nDATA: ls_employee TYPE zt_employee.\n\n* \u30c7\u30fc\u30bf\u8a2d\u5b9a\nls_employee-id          = '1001'.\nls_employee-name        = 'John Smith'.\nls_employee-department  = 'IT'.\nls_employee-entry_date  = sy-datum.  \"\u30b7\u30b9\u30c6\u30e0\u65e5\u4ed8\nls_employee-status      = 'A'.       \"Active\n\n* 2. INSERT\u5b9f\u884c\u3068\u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\nINSERT INTO zt_employee VALUES @ls_employee.\nIF sy-subrc = 0.\n  COMMIT WORK AND WAIT.  \"\u540c\u671f\u7684\u306a\u30b3\u30df\u30c3\u30c8\n  MESSAGE 'Record inserted successfully.' TYPE 'S'.\nELSE.\n  ROLLBACK WORK.\n  MESSAGE 'Insert failed.' TYPE 'E'.\nENDIF.<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-10\">\u52b9\u7387\u7684\u306a\u5b9f\u88c5\u306e\u305f\u3081\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u4e8b\u524d\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">* \u30c7\u30fc\u30bf\u691c\u8a3c\u7528\u306e\u30e1\u30bd\u30c3\u30c9\u4f8b\nMETHOD validate_employee_data.\n  DATA: lv_error TYPE boolean.\n\n  \" \u5fc5\u9808\u9805\u76ee\u30c1\u30a7\u30c3\u30af\n  IF is_employee-id IS INITIAL OR\n     is_employee-name IS INITIAL.\n    lv_error = abap_true.\n  ENDIF.\n\n  \" ID\u5f62\u5f0f\u30c1\u30a7\u30c3\u30af\uff08\u4f8b\uff1a4\u6841\u306e\u6570\u5b57\uff09\n  IF NOT matches( val = is_employee-id \n                 regex = '^\\d{4}$' ).\n    lv_error = abap_true.\n  ENDIF.\n\n  \" \u30a8\u30e9\u30fc\u304c\u3042\u308b\u5834\u5408\u306f\u4f8b\u5916\u3092\u767a\u751f\n  IF lv_error = abap_true.\n    RAISE EXCEPTION TYPE cx_invalid_data.\n  ENDIF.\nENDMETHOD.<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u5236\u5fa1\u306e\u6700\u9069\u5316<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">* \u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u5236\u5fa1\u3092\u542b\u3080INSERT\u51e6\u7406\u306e\u4f8b\nMETHOD insert_employee.\n  DATA: ls_employee TYPE zt_employee.\n\n  \" \u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u958b\u59cb\n  GET TIME STAMP FIELD DATA(lv_start_time).\n\n  TRY.\n      \" \u30c7\u30fc\u30bf\u691c\u8a3c\n      validate_employee_data( is_employee ).\n\n      \" INSERT\u5b9f\u884c\n      INSERT INTO zt_employee VALUES @is_employee.\n\n      \" \u6b63\u5e38\u7d42\u4e86\u6642\u306e\u30b3\u30df\u30c3\u30c8\n      COMMIT WORK AND WAIT.\n\n      \" \u51e6\u7406\u6642\u9593\u306e\u8a18\u9332\uff08\u30aa\u30d7\u30b7\u30e7\u30f3\uff09\n      GET TIME STAMP FIELD DATA(lv_end_time).\n      log_processing_time( \n        iv_start_time = lv_start_time\n        iv_end_time   = lv_end_time ).\n\n  CATCH cx_invalid_data INTO DATA(lx_error).\n      \" \u30a8\u30e9\u30fc\u51e6\u7406\n      ROLLBACK WORK.\n      log_error( lx_error ).\n  ENDTRY.\nENDMETHOD.<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-11\">\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316\u306e\u30dd\u30a4\u30f3\u30c8<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30d0\u30c3\u30d5\u30a1\u5229\u7528\u306e\u6700\u9069\u5316<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30c6\u30fc\u30d6\u30eb\u30d0\u30c3\u30d5\u30a1\u3092\u52b9\u679c\u7684\u306b\u6d3b\u7528<\/li>\n\n\n\n<li>\u4e0d\u8981\u306a\u30d0\u30c3\u30d5\u30a1\u66f4\u65b0\u3092\u9632\u3050<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30b3\u30df\u30c3\u30c8\u306e\u30bf\u30a4\u30df\u30f3\u30b0<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u9069\u5207\u306a\u30bf\u30a4\u30df\u30f3\u30b0\u3067\u30b3\u30df\u30c3\u30c8<\/li>\n\n\n\n<li>\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u975e\u540c\u671f\u30b3\u30df\u30c3\u30c8\u3092\u4f7f\u7528<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-12\">\u30b3\u30fc\u30c9\u54c1\u8cea\u3092\u9ad8\u3081\u308b\u305f\u3081\u306e\u30c1\u30a7\u30c3\u30af\u30ea\u30b9\u30c8<\/h4>\n\n\n<div id=\"id-3ba822f5-8cc8-42e9-baf5-cc1884d0a107\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u30c1\u30a7\u30c3\u30af\u9805\u76ee<\/th><th>\u8aac\u660e<\/th><th>\u91cd\u8981\u5ea6<\/th><\/tr><\/thead><tbody><tr><td>\u30c7\u30fc\u30bf\u691c\u8a3c<\/td><td>\u5168\u3066\u306e\u5fc5\u9808\u9805\u76ee\u3068\u5f62\u5f0f\u30c1\u30a7\u30c3\u30af<\/td><td>\u9ad8<\/td><\/tr><tr><td>\u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0<\/td><td>\u4f8b\u5916\u51e6\u7406\u306e\u5b9f\u88c5<\/td><td>\u9ad8<\/td><\/tr><tr><td>\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u5236\u5fa1<\/td><td>\u9069\u5207\u306aCOMMIT\/ROLLBACK<\/td><td>\u9ad8<\/td><\/tr><tr><td>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u8003\u616e<\/td><td>\u30d0\u30c3\u30d5\u30a1\u5229\u7528\u306e\u6700\u9069\u5316<\/td><td>\u4e2d<\/td><\/tr><tr><td>\u30ed\u30b0\u8a18\u9332<\/td><td>\u30a8\u30e9\u30fc\u30ed\u30b0\u3068\u51e6\u7406\u6642\u9593\u306e\u8a18\u9332<\/td><td>\u4e2d<\/td><\/tr><tr><td>\u30b3\u30e1\u30f3\u30c8<\/td><td>\u51e6\u7406\u306e\u76ee\u7684\u3068\u4ed5\u69d8\u306e\u8a18\u8f09<\/td><td>\u4e2d<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n<h4 class=\"wp-block-heading\" id=\"i-13\">\u5b9f\u88c5\u6642\u306e\u6ce8\u610f\u70b9<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30c7\u30fc\u30bf\u306e\u6574\u5408\u6027\u78ba\u4fdd<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u4e3b\u30ad\u30fc\u91cd\u8907\u30c1\u30a7\u30c3\u30af<\/li>\n\n\n\n<li>\u5916\u90e8\u30ad\u30fc\u5236\u7d04\u306e\u8003\u616e<\/li>\n\n\n\n<li>\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u306e\u9069\u5207\u306a\u7ba1\u7406<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5177\u4f53\u7684\u306a\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u63d0\u4f9b<\/li>\n\n\n\n<li>\u30ed\u30b0\u8a18\u9332\u306b\u3088\u308b\u8ffd\u8de1\u53ef\u80fd\u6027\u306e\u78ba\u4fdd<\/li>\n\n\n\n<li>\u30ea\u30ab\u30d0\u30ea\u30fc\u51e6\u7406\u306e\u5b9f\u88c5<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u4fdd\u5b88\u6027\u3078\u306e\u914d\u616e<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30b3\u30fc\u30c9\u306e\u69cb\u9020\u5316<\/li>\n\n\n\n<li>\u9069\u5207\u306a\u30b3\u30e1\u30f3\u30c8\u4ed8\u4e0e<\/li>\n\n\n\n<li>\u547d\u540d\u898f\u5247\u306e\u9075\u5b88<\/li>\n<\/ul>\n\n\n\n<p>\u3053\u306e\u3088\u3046\u306b\u3001\u30b7\u30f3\u30b0\u30eb\u30ec\u30b3\u30fc\u30c9\u306eINSERT\u51e6\u7406\u3067\u3082\u3001\u54c1\u8cea\u306e\u9ad8\u3044\u5b9f\u88c5\u306e\u305f\u3081\u306b\u8003\u616e\u3059\u3079\u304d\u70b9\u306f\u591a\u5c90\u306b\u308f\u305f\u308a\u307e\u3059\u3002\u57fa\u672c\u7684\u306a\u5b9f\u88c5\u30d1\u30bf\u30fc\u30f3\u3092\u7406\u89e3\u3057\u305f\u4e0a\u3067\u3001\u3053\u308c\u3089\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3092\u9069\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u3088\u308a\u5805\u7262\u306a\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-14\">\u30de\u30eb\u30c1\u30ec\u30b3\u30fc\u30c9\u306eINSERT\u51e6\u7406\u6700\u9069\u5316\u30c6\u30af\u30cb\u30c3\u30af<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-15\">INSERT\u6587\u306b\u3088\u308b\u8907\u6570\u30ec\u30b3\u30fc\u30c9\u306e\u4e00\u62ec\u767b\u9332\u65b9\u6cd5<\/h3>\n\n\n\n<p>\u5927\u91cf\u30c7\u30fc\u30bf\u3092\u52b9\u7387\u7684\u306b\u51e6\u7406\u3059\u308b\u305f\u3081\u306e\u4e00\u62ecINSERT\u51e6\u7406\u306b\u3064\u3044\u3066\u3001\u6700\u9069\u306a\u5b9f\u88c5\u65b9\u6cd5\u3068\u6ce8\u610f\u70b9\u3092\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-16\">\u57fa\u672c\u7684\u306a\u4e00\u62ecINSERT\u5b9f\u88c5<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">* 1. \u5185\u90e8\u30c6\u30fc\u30d6\u30eb\u306e\u6e96\u5099\nDATA: lt_employees TYPE TABLE OF zt_employee,\n      ls_employee  TYPE zt_employee.\n\n* 2. \u8907\u6570\u30ec\u30b3\u30fc\u30c9\u306e\u4e00\u62ecINSERT\nMETHOD insert_employees_bulk.\n  TRY.\n      INSERT zt_employee FROM TABLE @it_employees\n        ACCEPTING DUPLICATE KEYS.\n\n      IF sy-subrc = 0.\n        COMMIT WORK AND WAIT.\n        rv_success = abap_true.\n      ELSE.\n        ROLLBACK WORK.\n        rv_success = abap_false.\n      ENDIF.\n\n  CATCH cx_root INTO DATA(lx_error).\n      ROLLBACK WORK.\n      log_error( lx_error ).\n      rv_success = abap_false.\n  ENDTRY.\nENDMETHOD.<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-17\">\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316\u30c6\u30af\u30cb\u30c3\u30af<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30d0\u30c3\u30c1\u30b5\u30a4\u30ba\u306e\u6700\u9069\u5316<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">* \u6700\u9069\u306a\u30d0\u30c3\u30c1\u30b5\u30a4\u30ba\u3067\u306e\u5206\u5272\u51e6\u7406\nMETHOD insert_with_optimal_batch.\n  CONSTANTS: lc_batch_size TYPE i VALUE 1000.\n  DATA: lt_batch TYPE TABLE OF zt_employee.\n\n  WHILE lines( it_employees ) &gt; 0.\n    \" \u30d0\u30c3\u30c1\u30b5\u30a4\u30ba\u5206\u306e\u30c7\u30fc\u30bf\u3092\u53d6\u5f97\n    lt_batch = VALUE #( \n      FOR i = 1 WHILE i &lt;= lc_batch_size \n      AND i &lt;= lines( it_employees )\n      ( it_employees[ i ] ) ).\n\n    \" \u30d0\u30c3\u30c1\u51e6\u7406\u5b9f\u884c\n    INSERT zt_employee FROM TABLE @lt_batch.\n\n    \" \u6210\u529f\u3057\u305f\u5834\u5408\u3001\u51e6\u7406\u6e08\u307f\u30c7\u30fc\u30bf\u3092\u524a\u9664\n    IF sy-subrc = 0.\n      DELETE it_employees TO lc_batch_size.\n      COMMIT WORK AND WAIT.\n    ELSE.\n      ROLLBACK WORK.\n      EXIT.  \" \u30a8\u30e9\u30fc\u767a\u751f\u6642\u306f\u51e6\u7406\u4e2d\u65ad\n    ENDIF.\n  ENDWHILE.\nENDMETHOD.<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u30d1\u30e9\u30ec\u30eb\u51e6\u7406\u306e\u6d3b\u7528<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">* \u30d1\u30e9\u30ec\u30eb\u51e6\u7406\u3092\u5229\u7528\u3057\u305f\u9ad8\u901f\u5316\nMETHOD insert_parallel.\n  DATA: lt_packages TYPE TABLE OF rspc_t_func_pool.\n\n  \" \u30c7\u30fc\u30bf\u3092\u8907\u6570\u30d1\u30c3\u30b1\u30fc\u30b8\u306b\u5206\u5272\n  lt_packages = split_data_into_packages( \n    it_data        = it_employees\n    iv_package_size = 1000 ).\n\n  \" \u30d1\u30e9\u30ec\u30eb\u51e6\u7406\u306e\u5b9f\u884c\n  CALL FUNCTION 'ZSPC_PARALLEL_INSERT'\n    STARTING NEW TASK 'PARALLEL_INSERT'\n    DESTINATION IN GROUP 'parallel_generators'\n    PERFORMING handle_package ON END OF TASK\n    TABLES\n      it_packages = lt_packages.\n\n  WAIT UNTIL gv_all_packages_processed = abap_true.\nENDMETHOD.<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-18\">\u51e6\u7406\u52b9\u7387\u3092\u9ad8\u3081\u308b\u305f\u3081\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/h4>\n\n\n<div id=\"id-c44852d6-28f6-41b0-b841-17f9a972ad56\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u30c6\u30af\u30cb\u30c3\u30af<\/th><th>\u52b9\u679c<\/th><th>\u5b9f\u88c5\u306e\u8907\u96d1\u3055<\/th><th>\u63a8\u5968\u30b1\u30fc\u30b9<\/th><\/tr><\/thead><tbody><tr><td>\u30d0\u30c3\u30c1\u51e6\u7406<\/td><td>\u9ad8<\/td><td>\u4f4e<\/td><td>\u5b9a\u671f\u7684\u306a\u5927\u91cf\u30c7\u30fc\u30bf\u767b\u9332<\/td><\/tr><tr><td>\u30d1\u30e9\u30ec\u30eb\u51e6\u7406<\/td><td>\u975e\u5e38\u306b\u9ad8<\/td><td>\u9ad8<\/td><td>\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u6027\u304c\u8981\u6c42\u3055\u308c\u308b\u5834\u5408<\/td><\/tr><tr><td>\u975e\u540c\u671f\u51e6\u7406<\/td><td>\u4e2d<\/td><td>\u4e2d<\/td><td>\u30d0\u30c3\u30af\u30b0\u30e9\u30a6\u30f3\u30c9\u51e6\u7406<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n<h4 class=\"wp-block-heading\" id=\"i-19\">\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u30e2\u30cb\u30bf\u30ea\u30f3\u30b0<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">* \u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u8a08\u6e2c\u7528\u306e\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u30af\u30e9\u30b9\nCLASS lcl_performance_monitor DEFINITION.\n  PUBLIC SECTION.\n    METHODS:\n      start_monitoring,\n      end_monitoring,\n      get_statistics RETURNING VALUE(rs_stats) TYPE ty_stats.\n  PRIVATE SECTION.\n    DATA:\n      mv_start_time TYPE timestamp,\n      mv_end_time   TYPE timestamp,\n      mv_records    TYPE i.\nENDCLASS.<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-20\">\u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\u3068\u56de\u5fa9\u6226\u7565<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30a8\u30e9\u30fc\u691c\u51fa\u3068\u8a18\u9332<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">* \u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\u306e\u5b9f\u88c5\u4f8b\nMETHOD handle_insert_errors.\n  DATA: lt_failed_records TYPE TABLE OF zt_employee.\n\n  \" \u5931\u6557\u3057\u305f\u30ec\u30b3\u30fc\u30c9\u306e\u53ce\u96c6\n  lt_failed_records = VALUE #( FOR rec IN it_employees\n    WHERE ( status = 'ERROR' ) ( rec ) ).\n\n  \" \u30a8\u30e9\u30fc\u30ed\u30b0\u306e\u8a18\u9332\n  log_failed_records( lt_failed_records ).\n\n  \" \u30ea\u30c8\u30e9\u30a4\u30ad\u30e5\u30fc\u3078\u306e\u767b\u9332\n  enqueue_for_retry( lt_failed_records ).\nENDMETHOD.<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u30ea\u30ab\u30d0\u30ea\u30fc\u51e6\u7406<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">* \u30ea\u30ab\u30d0\u30ea\u30fc\u51e6\u7406\u306e\u5b9f\u88c5\nMETHOD recover_failed_inserts.\n  DATA: lt_retry_records TYPE TABLE OF zt_employee.\n\n  \" \u30ea\u30c8\u30e9\u30a4\u30ad\u30e5\u30fc\u304b\u3089\u30c7\u30fc\u30bf\u53d6\u5f97\n  SELECT * FROM zt_retry_queue\n    INTO TABLE @lt_retry_records\n    WHERE status = 'PENDING'\n    ORDER BY priority.\n\n  \" \u30ea\u30c8\u30e9\u30a4\u51e6\u7406\u5b9f\u884c\n  LOOP AT lt_retry_records INTO DATA(ls_retry).\n    TRY.\n        insert_single_record( ls_retry ).\n        update_retry_status( \n          iv_record_id = ls_retry-id\n          iv_status    = 'SUCCESS' ).\n    CATCH cx_root.\n        update_retry_status( \n          iv_record_id = ls_retry-id\n          iv_status    = 'FAILED' ).\n    ENDTRY.\n  ENDLOOP.\nENDMETHOD.<\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u5b9f\u88c5\u65b9\u6cd5\u3092\u9069\u5207\u306b\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001\u5927\u91cf\u30c7\u30fc\u30bf\u306e\u4e00\u62ecINSERT\u51e6\u7406\u3092\u52b9\u7387\u7684\u306b\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3002\u7279\u306b\u3001\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3068\u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\u306e\u30d0\u30e9\u30f3\u30b9\u3092\u8003\u616e\u3057\u305f\u5b9f\u88c5\u304c\u91cd\u8981\u3067\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-21\">\u30c7\u30fc\u30bf\u6574\u5408\u6027\u3092\u4fdd\u8a3c\u3059\u308bINSERT\u51e6\u7406\u306e\u5b9f\u88c5<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-22\">\u91cd\u8907\u30c1\u30a7\u30c3\u30af\u30ed\u30b8\u30c3\u30af\u306e\u5b9f\u88c5\u65b9\u6cd5<\/h3>\n\n\n\n<p>\u30c7\u30fc\u30bf\u6574\u5408\u6027\u3092\u7dad\u6301\u3059\u308b\u305f\u3081\u306e\u91cd\u8907\u30c1\u30a7\u30c3\u30af\u3068\u3001\u305d\u306e\u5b9f\u88c5\u30d1\u30bf\u30fc\u30f3\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-23\">1. \u57fa\u672c\u7684\u306a\u91cd\u8907\u30c1\u30a7\u30c3\u30af\u5b9f\u88c5<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">* \u5358\u4e00\u30ad\u30fc\u3067\u306e\u91cd\u8907\u30c1\u30a7\u30c3\u30af\nMETHOD check_duplicate_employee.\n  DATA: lv_exists TYPE abap_bool.\n\n  SELECT SINGLE @abap_true\n    FROM zt_employee\n    WHERE id = @is_employee-id\n    INTO @lv_exists.\n\n  IF lv_exists = abap_true.\n    RAISE EXCEPTION TYPE zcx_duplicate_entry\n      EXPORTING\n        textid = zcx_duplicate_entry=&gt;employee_id_exists\n        employeeid = is_employee-id.\n  ENDIF.\nENDMETHOD.\n\n* \u8907\u5408\u30ad\u30fc\u3067\u306e\u91cd\u8907\u30c1\u30a7\u30c3\u30af\nMETHOD check_duplicate_contract.\n  SELECT SINGLE @abap_true\n    FROM zt_contracts\n    WHERE employee_id = @is_contract-employee_id\n      AND valid_from = @is_contract-valid_from\n    INTO @DATA(lv_exists).\n\n  IF lv_exists = abap_true.\n    RAISE EXCEPTION TYPE zcx_duplicate_entry.\n  ENDIF.\nENDMETHOD.<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-24\">2. \u9ad8\u5ea6\u306a\u6574\u5408\u6027\u30c1\u30a7\u30c3\u30af\u5b9f\u88c5<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">CLASS lcl_data_integrity_checker DEFINITION.\n  PUBLIC SECTION.\n    METHODS:\n      * \u5305\u62ec\u7684\u306a\u6574\u5408\u6027\u30c1\u30a7\u30c3\u30af\n      check_data_integrity\n        IMPORTING\n          is_data          TYPE any\n          iv_check_type    TYPE char1\n        RETURNING\n          VALUE(rv_valid)  TYPE abap_bool\n        RAISING\n          zcx_data_integrity,\n\n      * \u95a2\u9023\u30c6\u30fc\u30d6\u30eb\u3068\u306e\u6574\u5408\u6027\u30c1\u30a7\u30c3\u30af\n      check_referential_integrity\n        IMPORTING\n          is_data  TYPE any\n        RAISING\n          zcx_referential_integrity.\n\n  PRIVATE SECTION.\n    METHODS:\n      check_mandatory_fields,\n      check_value_ranges,\n      check_business_rules.\nENDCLASS.\n\n* \u5b9f\u88c5\u4f8b\nMETHOD check_data_integrity.\n  \" \u5fc5\u9808\u9805\u76ee\u30c1\u30a7\u30c3\u30af\n  check_mandatory_fields( is_data ).\n\n  \" \u5024\u7bc4\u56f2\u30c1\u30a7\u30c3\u30af\n  check_value_ranges( is_data ).\n\n  \" \u30d3\u30b8\u30cd\u30b9\u30eb\u30fc\u30eb\u30c1\u30a7\u30c3\u30af\n  check_business_rules( is_data ).\n\n  rv_valid = abap_true.\nENDMETHOD.<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-25\">3. \u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u5236\u5fa1\u3092\u542b\u3081\u305f\u5b9f\u88c5<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">* \u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u5236\u5fa1\u3092\u542b\u3080\u767b\u9332\u51e6\u7406\nMETHOD insert_with_integrity_check.\n  \" \u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u958b\u59cb\n  GET TIME STAMP FIELD DATA(lv_start_time).\n\n  TRY.\n      \" \u30ed\u30c3\u30af\u8a2d\u5b9a\n      CALL FUNCTION 'ENQUEUE_EZ_EMPLOYEE'\n        EXPORTING\n          mode_zt_employee = 'E'\n          mandt           = sy-mandt\n          id             = is_employee-id\n        EXCEPTIONS\n          foreign_lock   = 1\n          system_failure = 2\n          OTHERS         = 3.\n\n      IF sy-subrc &lt;&gt; 0.\n        RAISE EXCEPTION TYPE zcx_lock_error.\n      ENDIF.\n\n      \" \u6574\u5408\u6027\u30c1\u30a7\u30c3\u30af\n      mo_integrity_checker-&gt;check_data_integrity(\n        is_data       = is_employee\n        iv_check_type = 'I' ).\n\n      \" \u30c7\u30fc\u30bf\u767b\u9332\n      INSERT zt_employee FROM @is_employee.\n\n      \" \u30b3\u30df\u30c3\u30c8\n      COMMIT WORK AND WAIT.\n\n      \" \u30ed\u30c3\u30af\u89e3\u653e\n      CALL FUNCTION 'DEQUEUE_EZ_EMPLOYEE'\n        EXPORTING\n          mode_zt_employee = 'E'\n          mandt           = sy-mandt\n          id             = is_employee-id.\n\n  CATCH zcx_data_integrity INTO DATA(lx_integrity)\n      OR zcx_lock_error INTO DATA(lx_lock).\n\n    \" \u30ed\u30fc\u30eb\u30d0\u30c3\u30af\u3068\u30ed\u30c3\u30af\u89e3\u653e\n    ROLLBACK WORK.\n    CALL FUNCTION 'DEQUEUE_ALL'.\n\n    \" \u30a8\u30e9\u30fc\u30ed\u30b0\u8a18\u9332\n    log_error( lx_integrity ).\n\n    RAISE EXCEPTION TYPE zcx_insert_failed\n      EXPORTING\n        previous = lx_integrity.\n  ENDTRY.\nENDMETHOD.<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-26\">\u30c7\u30fc\u30bf\u6574\u5408\u6027\u30c1\u30a7\u30c3\u30af\u30ea\u30b9\u30c8<\/h4>\n\n\n<div id=\"id-3da49656-b81d-4a73-8f37-5456cbab73d5\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u30c1\u30a7\u30c3\u30af\u9805\u76ee<\/th><th>\u5b9f\u88c5\u30ec\u30d9\u30eb<\/th><th>\u91cd\u8981\u5ea6<\/th><th>\u8aac\u660e<\/th><\/tr><\/thead><tbody><tr><td>\u4e3b\u30ad\u30fc\u91cd\u8907<\/td><td>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9<\/td><td>\u6700\u9ad8<\/td><td>\u4e00\u610f\u6027\u5236\u7d04\u306b\u3088\u308b\u4fdd\u8a3c<\/td><\/tr><tr><td>\u5916\u90e8\u30ad\u30fc\u53c2\u7167<\/td><td>\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3<\/td><td>\u9ad8<\/td><td>\u95a2\u9023\u30c7\u30fc\u30bf\u306e\u5b58\u5728\u78ba\u8a8d<\/td><\/tr><tr><td>\u5fc5\u9808\u9805\u76ee<\/td><td>\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3<\/td><td>\u9ad8<\/td><td>NOT NULL\u9805\u76ee\u306e\u5165\u529b\u78ba\u8a8d<\/td><\/tr><tr><td>\u5024\u7bc4\u56f2<\/td><td>\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3<\/td><td>\u4e2d<\/td><td>\u8a31\u5bb9\u5024\u306e\u7bc4\u56f2\u30c1\u30a7\u30c3\u30af<\/td><\/tr><tr><td>\u30d3\u30b8\u30cd\u30b9\u30eb\u30fc\u30eb<\/td><td>\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3<\/td><td>\u4e2d<\/td><td>\u696d\u52d9\u30ed\u30b8\u30c3\u30af\u306b\u57fa\u3065\u304f\u6574\u5408\u6027<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n<h4 class=\"wp-block-heading\" id=\"i-27\">\u5b9f\u88c5\u6642\u306e\u6ce8\u610f\u70b9<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3078\u306e\u914d\u616e<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306e\u52b9\u679c\u7684\u306a\u6d3b\u7528<\/li>\n\n\n\n<li>\u5fc5\u8981\u6700\u5c0f\u9650\u306e\u30ed\u30c3\u30af\u7bc4\u56f2<\/li>\n\n\n\n<li>\u9069\u5207\u306a\u30b3\u30df\u30c3\u30c8\u30bf\u30a4\u30df\u30f3\u30b0<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5177\u4f53\u7684\u306a\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8<\/li>\n\n\n\n<li>\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u306e\u9069\u5207\u306a\u5236\u5fa1<\/li>\n\n\n\n<li>\u30ed\u30c3\u30af\u306e\u78ba\u5b9f\u306a\u89e3\u653e<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u4fdd\u5b88\u6027\u3078\u306e\u914d\u616e<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30c1\u30a7\u30c3\u30af\u30ed\u30b8\u30c3\u30af\u306e\u96c6\u7d04<\/li>\n\n\n\n<li>\u518d\u5229\u7528\u53ef\u80fd\u306a\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u5316<\/li>\n\n\n\n<li>\u9069\u5207\u306a\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u5316<\/li>\n<\/ul>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u5b9f\u88c5\u30d1\u30bf\u30fc\u30f3\u3092\u9069\u5207\u306b\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001\u30c7\u30fc\u30bf\u6574\u5408\u6027\u3092\u78ba\u5b9f\u306b\u4fdd\u8a3c\u3059\u308bINSERT\u51e6\u7406\u3092\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-28\">INSERT\u51e6\u7406\u306e\u5b9f\u88c5\u306b\u304a\u3051\u308b\u6ce8\u610f\u70b9\u3068\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-29\">\u3088\u304f\u3042\u308b\u30a8\u30e9\u30fc\u3068\u305d\u306e\u5bfe\u51e6\u65b9\u6cd5<\/h3>\n\n\n\n<p>INSERT\u51e6\u7406\u3067\u767a\u751f\u3059\u308b\u4e00\u822c\u7684\u306a\u30a8\u30e9\u30fc\u3068\u305d\u306e\u89e3\u6c7a\u65b9\u6cd5\u306b\u3064\u3044\u3066\u3001\u5b9f\u8df5\u7684\u306a\u5bfe\u51e6\u65b9\u6cd5\u3092\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-30\">1. \u4e3b\u8981\u306a\u30a8\u30e9\u30fc\u30d1\u30bf\u30fc\u30f3\u3068\u5bfe\u51e6\u6cd5<\/h4>\n\n\n<div id=\"id-ab57ad8b-7798-478d-825f-23c05d647639\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u30a8\u30e9\u30fc\u30b3\u30fc\u30c9<\/th><th>\u30a8\u30e9\u30fc\u5185\u5bb9<\/th><th>\u4e3b\u306a\u539f\u56e0<\/th><th>\u5bfe\u51e6\u65b9\u6cd5<\/th><\/tr><\/thead><tbody><tr><td>DBSQL_DUPLICATE_KEY<\/td><td>\u4e00\u610f\u5236\u7d04\u9055\u53cd<\/td><td>\u4e3b\u30ad\u30fc\u306e\u91cd\u8907<\/td><td>\u65e2\u5b58\u30c7\u30fc\u30bf\u306e\u78ba\u8a8d\u3068\u4e00\u610f\u6027\u306e\u4fdd\u8a3c<\/td><\/tr><tr><td>DBSQL_NOT_NULL<\/td><td>NOT NULL\u5236\u7d04\u9055\u53cd<\/td><td>\u5fc5\u9808\u9805\u76ee\u306e\u672a\u8a2d\u5b9a<\/td><td>\u5fc5\u9808\u9805\u76ee\u306e\u5165\u529b\u30c1\u30a7\u30c3\u30af<\/td><\/tr><tr><td>DBSQL_FOREIGN_KEY<\/td><td>\u5916\u90e8\u30ad\u30fc\u5236\u7d04\u9055\u53cd<\/td><td>\u53c2\u7167\u6574\u5408\u6027\u30a8\u30e9\u30fc<\/td><td>\u95a2\u9023\u30c7\u30fc\u30bf\u306e\u5b58\u5728\u78ba\u8a8d<\/td><\/tr><tr><td>DBSQL_MAX_LENGTH<\/td><td>\u6700\u5927\u9577\u8d85\u904e<\/td><td>\u30d5\u30a3\u30fc\u30eb\u30c9\u9577\u306e\u8d85\u904e<\/td><td>\u30c7\u30fc\u30bf\u9577\u306e\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3<\/td><\/tr><tr><td>DBSQL_CONVERSION_ERROR<\/td><td>\u578b\u5909\u63db\u30a8\u30e9\u30fc<\/td><td>\u30c7\u30fc\u30bf\u578b\u306e\u4e0d\u4e00\u81f4<\/td><td>\u9069\u5207\u306a\u30c7\u30fc\u30bf\u578b\u5909\u63db\u306e\u5b9f\u88c5<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">* \u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\u306e\u5b9f\u88c5\u4f8b\nMETHOD handle_insert_error.\n  CASE cx_root=&gt;get_text( ).\n    WHEN 'DBSQL_DUPLICATE_KEY'.\n      \" \u91cd\u8907\u30ad\u30fc\u30a8\u30e9\u30fc\u306e\u51e6\u7406\n      handle_duplicate_key_error(\n        is_data    = is_record\n        io_error   = io_error ).\n\n    WHEN 'DBSQL_NOT_NULL'.\n      \" NULL\u5024\u30a8\u30e9\u30fc\u306e\u51e6\u7406\n      handle_not_null_error(\n        is_data    = is_record\n        io_error   = io_error ).\n\n    WHEN OTHERS.\n      \" \u305d\u306e\u4ed6\u306e\u30a8\u30e9\u30fc\u51e6\u7406\n      handle_general_error(\n        is_data    = is_record\n        io_error   = io_error ).\n  ENDCASE.\nENDMETHOD.<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-31\">2. \u30a8\u30e9\u30fc\u4e88\u9632\u306e\u305f\u3081\u306e\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u5b9f\u88c5<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">CLASS lcl_data_validator DEFINITION.\n  PUBLIC SECTION.\n    METHODS:\n      validate_before_insert\n        IMPORTING\n          is_data           TYPE any\n        RETURNING\n          VALUE(rt_errors)  TYPE ty_error_tab.\n\n  PRIVATE SECTION.\n    METHODS:\n      check_data_types,\n      check_field_lengths,\n      check_mandatory_fields,\n      check_value_ranges.\nENDCLASS.\n\nMETHOD validate_before_insert.\n  \" \u30c7\u30fc\u30bf\u578b\u30c1\u30a7\u30c3\u30af\n  rt_errors = VALUE #( BASE rt_errors\n    ( LINES OF check_data_types( is_data ) ) ).\n\n  \" \u30d5\u30a3\u30fc\u30eb\u30c9\u9577\u30c1\u30a7\u30c3\u30af\n  rt_errors = VALUE #( BASE rt_errors\n    ( LINES OF check_field_lengths( is_data ) ) ).\n\n  \" \u5fc5\u9808\u9805\u76ee\u30c1\u30a7\u30c3\u30af\n  rt_errors = VALUE #( BASE rt_errors\n    ( LINES OF check_mandatory_fields( is_data ) ) ).\n\n  \" \u5024\u7bc4\u56f2\u30c1\u30a7\u30c3\u30af\n  rt_errors = VALUE #( BASE rt_errors\n    ( LINES OF check_value_ranges( is_data ) ) ).\nENDMETHOD.<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-32\">\u30c7\u30d0\u30c3\u30b0\u3068\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u30e2\u30cb\u30bf\u30ea\u30f3\u30b0\u306e\u65b9\u6cd5<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-33\">1. SQL \u30c8\u30ec\u30fc\u30b9\u6d3b\u7528\u6cd5<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">* SQL\u30c8\u30ec\u30fc\u30b9\u53d6\u5f97\u7528\u306e\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u30af\u30e9\u30b9\nCLASS lcl_sql_trace DEFINITION.\n  PUBLIC SECTION.\n    METHODS:\n      start_trace,\n      stop_trace,\n      analyze_trace\n        RETURNING\n          VALUE(rt_analysis) TYPE ty_trace_analysis.\nENDCLASS.\n\nMETHOD analyze_trace.\n  \" \u30c8\u30ec\u30fc\u30b9\u7d50\u679c\u306e\u89e3\u6790\n  SELECT *\n    FROM d_sql_trace\n    WHERE trace_timestamp BETWEEN @mv_start_time AND @mv_end_time\n    INTO TABLE @DATA(lt_trace).\n\n  \" \u5b9f\u884c\u6642\u9593\u306e\u5206\u6790\n  LOOP AT lt_trace INTO DATA(ls_trace).\n    ANALYZE ls_trace-execution_time.\n  ENDLOOP.\nENDMETHOD.<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-34\">2. \u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u30e2\u30cb\u30bf\u30ea\u30f3\u30b0\u5b9f\u88c5<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">* \u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u30e2\u30cb\u30bf\u30ea\u30f3\u30b0\u306e\u5b9f\u88c5\u4f8b\nMETHOD monitor_insert_performance.\n  DATA: lv_start_time TYPE timestamp,\n        lv_end_time   TYPE timestamp,\n        lv_duration   TYPE decimal.\n\n  GET TIME STAMP FIELD lv_start_time.\n\n  \" INSERT\u51e6\u7406\u306e\u5b9f\u884c\n  TRY.\n      execute_insert( ).\n\n    CATCH cx_root INTO DATA(lx_error).\n      handle_error( lx_error ).\n  ENDTRY.\n\n  GET TIME STAMP FIELD lv_end_time.\n\n  \" \u51e6\u7406\u6642\u9593\u306e\u8a08\u7b97\u3068\u8a18\u9332\n  lv_duration = calculate_duration(\n    iv_start_time = lv_start_time\n    iv_end_time   = lv_end_time ).\n\n  log_performance_data(\n    iv_duration = lv_duration\n    is_metrics  = get_performance_metrics( ) ).\nENDMETHOD.<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-35\">3. \u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u6bb5\u968e\u7684\u306a\u30c7\u30d0\u30c3\u30b0\u30a2\u30d7\u30ed\u30fc\u30c1<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30c7\u30fc\u30bf\u691c\u8a3c<\/li>\n\n\n\n<li>SQL\u5b9f\u884c\u8a08\u753b\u306e\u78ba\u8a8d<\/li>\n\n\n\n<li>\u30ed\u30c3\u30af\u72b6\u6cc1\u306e\u78ba\u8a8d<\/li>\n\n\n\n<li>\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u72b6\u614b\u306e\u78ba\u8a8d<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30ed\u30b0\u8a18\u9332\u306e\u91cd\u8981\u6027<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">* \u5305\u62ec\u7684\u306a\u30ed\u30b0\u8a18\u9332\u306e\u5b9f\u88c5\nMETHOD log_insert_operation.\n  DATA: ls_log TYPE zst_insert_log.\n\n  \" \u30ed\u30b0\u30c7\u30fc\u30bf\u306e\u8a2d\u5b9a\n  ls_log = VALUE #(\n    timestamp     = sy-datum\n    user          = sy-uname\n    operation     = 'INSERT'\n    table_name    = iv_table_name\n    record_count  = iv_record_count\n    duration      = iv_duration\n    status        = iv_status\n    error_message = iv_error_message\n  ).\n\n  \" \u30ed\u30b0\u306e\u4fdd\u5b58\n  INSERT ztt_insert_log FROM @ls_log.\nENDMETHOD.<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6539\u5584\u306e\u30c1\u30a7\u30c3\u30af\u30dd\u30a4\u30f3\u30c8<\/strong><\/li>\n<\/ol>\n\n\n<div id=\"id-1839cb22-92ad-4144-8c86-591a930ddb07\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u78ba\u8a8d\u9805\u76ee<\/th><th>\u30c1\u30a7\u30c3\u30af\u5185\u5bb9<\/th><th>\u6539\u5584\u65b9\u6cd5<\/th><\/tr><\/thead><tbody><tr><td>\u30c6\u30fc\u30d6\u30eb\u30d0\u30c3\u30d5\u30a1<\/td><td>\u30d0\u30c3\u30d5\u30a1\u5229\u7528\u72b6\u6cc1<\/td><td>\u30d0\u30c3\u30d5\u30a1\u8a2d\u5b9a\u306e\u6700\u9069\u5316<\/td><\/tr><tr><td>\u30a4\u30f3\u30c7\u30c3\u30af\u30b9<\/td><td>\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306e\u4f7f\u7528\u72b6\u6cc1<\/td><td>\u9069\u5207\u306a\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u8a2d\u5b9a<\/td><\/tr><tr><td>\u30ed\u30c3\u30af\u5f85\u3061<\/td><td>\u30ed\u30c3\u30af\u7af6\u5408\u306e\u6709\u7121<\/td><td>\u30ed\u30c3\u30af\u6226\u7565\u306e\u898b\u76f4\u3057<\/td><\/tr><tr><td>\u30b3\u30df\u30c3\u30c8\u983b\u5ea6<\/td><td>\u30b3\u30df\u30c3\u30c8\u30bf\u30a4\u30df\u30f3\u30b0<\/td><td>\u9069\u5207\u306a\u30b3\u30df\u30c3\u30c8\u9593\u9694\u8a2d\u5b9a<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n<p>\u3053\u308c\u3089\u306e\u5b9f\u88c5\u3068\u5bfe\u7b56\u3092\u9069\u5207\u306b\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001\u5b89\u5b9a\u3057\u305fINSERT\u51e6\u7406\u306e\u904b\u7528\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-36\">\u5b9f\u8df5\u7684\u306a\u30b3\u30fc\u30c9\u4f8b\u3067\u5b66\u3076INSERT\u51e6\u7406\u306e\u5fdc\u7528<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-37\">\u696d\u52d9\u30b7\u30b9\u30c6\u30e0\u3067\u3088\u304f\u4f7f\u7528\u3055\u308c\u308bINSERT\u30d1\u30bf\u30fc\u30f3<\/h3>\n\n\n\n<p>\u5b9f\u969b\u306e\u696d\u52d9\u30b7\u30b9\u30c6\u30e0\u3067\u983b\u7e41\u306b\u4f7f\u7528\u3055\u308c\u308bINSERT\u51e6\u7406\u306e\u30d1\u30bf\u30fc\u30f3\u3068\u3001\u305d\u306e\u5b9f\u88c5\u4f8b\u3092\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-38\">1. \u30de\u30b9\u30bf\u30c7\u30fc\u30bf\u767b\u9332\u51e6\u7406<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">* \u30de\u30b9\u30bf\u30c7\u30fc\u30bf\u767b\u9332\u30af\u30e9\u30b9\nCLASS zcl_master_data_manager DEFINITION.\n  PUBLIC SECTION.\n    METHODS:\n      * \u30de\u30b9\u30bf\u30c7\u30fc\u30bf\u4e00\u62ec\u767b\u9332\n      import_master_data\n        IMPORTING\n          it_data          TYPE ANY TABLE\n        RETURNING\n          VALUE(rt_result) TYPE ty_import_result\n        RAISING\n          zcx_master_data_error.\n\n  PRIVATE SECTION.\n    METHODS:\n      validate_master_data,\n      handle_duplicates,\n      update_reference_data.\nENDCLASS.\n\n* \u5b9f\u88c5\u4f8b\nMETHOD import_master_data.\n  \" \u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u5236\u5fa1\n  CALL FUNCTION 'ENQUEUE_E_TABLE'\n    EXPORTING\n      tabname = 'ZT_MASTER'.\n\n  TRY.\n      \" \u30c7\u30fc\u30bf\u691c\u8a3c\n      validate_master_data( it_data ).\n\n      \" \u91cd\u8907\u30c1\u30a7\u30c3\u30af\u3068\u51e6\u7406\n      handle_duplicates( it_data ).\n\n      \" \u4e00\u62ec\u767b\u9332\n      INSERT zt_master FROM TABLE @it_data\n        ACCEPTING DUPLICATE KEYS.\n\n      \" \u53c2\u7167\u30c7\u30fc\u30bf\u306e\u66f4\u65b0\n      update_reference_data( it_data ).\n\n      \" \u30b3\u30df\u30c3\u30c8\n      COMMIT WORK AND WAIT.\n\n    CATCH cx_root INTO DATA(lx_error).\n      ROLLBACK WORK.\n\n      rt_result-success = abap_false.\n      rt_result-message = lx_error-&gt;get_text( ).\n  ENDTRY.\n\n  \" \u30ed\u30c3\u30af\u89e3\u653e\n  CALL FUNCTION 'DEQUEUE_E_TABLE'\n    EXPORTING\n      tabname = 'ZT_MASTER'.\nENDMETHOD.<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-39\">2. \u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u30c7\u30fc\u30bf\u306e\u767b\u9332\u51e6\u7406<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">* \u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u30c7\u30fc\u30bf\u767b\u9332\u30af\u30e9\u30b9\nCLASS zcl_transaction_manager DEFINITION.\n  PUBLIC SECTION.\n    METHODS:\n      create_transaction\n        IMPORTING\n          is_header        TYPE zstt_trans_header\n          it_items         TYPE ztt_trans_items\n        RETURNING\n          VALUE(rv_trans_id) TYPE ztrans_id\n        RAISING\n          zcx_transaction_error.\n\n  PRIVATE SECTION.\n    METHODS:\n      generate_transaction_id,\n      validate_transaction,\n      update_stock_quantity,\n      create_audit_log.\nENDCLASS.\n\nMETHOD create_transaction.\n  \" \u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3ID\u751f\u6210\n  rv_trans_id = generate_transaction_id( ).\n\n  TRY.\n      \" \u30d8\u30c3\u30c0\u30c7\u30fc\u30bf\u8a2d\u5b9a\n      DATA(ls_header) = is_header.\n      ls_header-trans_id = rv_trans_id.\n      ls_header-create_date = sy-datum.\n      ls_header-create_time = sy-uzeit.\n      ls_header-create_user = sy-uname.\n\n      \" \u30c7\u30fc\u30bf\u691c\u8a3c\n      validate_transaction(\n        is_header = ls_header\n        it_items  = it_items ).\n\n      \" \u30d8\u30c3\u30c0\u767b\u9332\n      INSERT ztt_trans_header FROM @ls_header.\n\n      \" \u660e\u7d30\u767b\u9332\n      LOOP AT it_items INTO DATA(ls_item).\n        ls_item-trans_id = rv_trans_id.\n        INSERT ztt_trans_items FROM @ls_item.\n\n        \" \u5728\u5eab\u6570\u66f4\u65b0\n        update_stock_quantity(\n          iv_material = ls_item-material\n          iv_quantity = ls_item-quantity ).\n      ENDLOOP.\n\n      \" \u76e3\u67fb\u30ed\u30b0\u4f5c\u6210\n      create_audit_log(\n        iv_trans_id = rv_trans_id\n        is_header   = ls_header\n        it_items    = it_items ).\n\n      COMMIT WORK AND WAIT.\n\n    CATCH cx_root INTO DATA(lx_error).\n      ROLLBACK WORK.\n      RAISE EXCEPTION TYPE zcx_transaction_error\n        EXPORTING\n          previous = lx_error.\n  ENDTRY.\nENDMETHOD.<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-40\">\u5b9f\u969b\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u4f7f\u3048\u308b\u5b9f\u88c5\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-41\">1. \u6c4e\u7528\u30c7\u30fc\u30bf\u767b\u9332\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">* \u6c4e\u7528\u30c7\u30fc\u30bf\u767b\u9332\u30af\u30e9\u30b9\nCLASS zcl_generic_data_manager DEFINITION.\n  PUBLIC SECTION.\n    METHODS:\n      constructor\n        IMPORTING\n          iv_table_name TYPE tabname,\n\n      insert_data\n        IMPORTING\n          it_data          TYPE ANY TABLE\n          iv_commit_count  TYPE i DEFAULT 1000\n        RETURNING\n          VALUE(rt_result) TYPE ty_insert_result.\n\n  PRIVATE SECTION.\n    DATA:\n      mv_table_name    TYPE tabname,\n      mo_validator     TYPE REF TO zcl_data_validator,\n      mo_logger        TYPE REF TO zcl_operation_logger.\n\n    METHODS:\n      process_batch\n        IMPORTING\n          it_batch         TYPE ANY TABLE\n        RETURNING\n          VALUE(rt_result) TYPE ty_batch_result.\nENDCLASS.\n\nMETHOD insert_data.\n  DATA: lt_batch TYPE TABLE OF ty_batch_result.\n\n  \" \u30d0\u30c3\u30c1\u51e6\u7406\n  WHILE lines( it_data ) &gt; 0.\n    DATA(lt_current_batch) = VALUE #(\n      FOR i = 1 UNTIL i &gt; iv_commit_count\n      ( CAST #( VALUE #( it_data[ i ] OPTIONAL ) ) ) ).\n\n    IF lt_current_batch IS NOT INITIAL.\n      \" \u30d0\u30c3\u30c1\u51e6\u7406\u5b9f\u884c\n      APPEND process_batch( lt_current_batch ) TO lt_batch.\n\n      \" \u51e6\u7406\u6e08\u307f\u30c7\u30fc\u30bf\u306e\u524a\u9664\n      DELETE it_data TO iv_commit_count.\n    ENDIF.\n  ENDWHILE.\n\n  \" \u7d50\u679c\u306e\u96c6\u8a08\n  rt_result = summarize_results( lt_batch ).\nENDMETHOD.<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-42\">2. \u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\u4ed8\u304dINSERT\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">* \u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\u4ed8\u304d\u767b\u9332\u51e6\u7406\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\nCLASS zcl_resilient_insert DEFINITION.\n  PUBLIC SECTION.\n    TYPES:\n      BEGIN OF ty_insert_config,\n        max_retries     TYPE i,\n        retry_interval  TYPE i,\n        batch_size     TYPE i,\n      END OF ty_insert_config.\n\n    METHODS:\n      constructor\n        IMPORTING\n          is_config TYPE ty_insert_config,\n\n      insert_with_retry\n        IMPORTING\n          it_data          TYPE ANY TABLE\n        RETURNING\n          VALUE(rt_result) TYPE ty_insert_result.\n\n  PRIVATE SECTION.\n    DATA:\n      ms_config TYPE ty_insert_config.\n\n    METHODS:\n      execute_with_retry\n        IMPORTING\n          it_batch TYPE ANY TABLE\n        RAISING\n          zcx_max_retry_exceeded.\nENDCLASS.\n\nMETHOD insert_with_retry.\n  DATA: lt_failed_records TYPE TABLE OF ty_failed_record.\n\n  \" \u30d0\u30c3\u30c1\u51e6\u7406\n  WHILE lines( it_data ) &gt; 0.\n    TRY.\n        \" \u30ea\u30c8\u30e9\u30a4\u4ed8\u304d\u5b9f\u884c\n        execute_with_retry(\n          it_batch = extract_batch(\n            it_data      = it_data\n            iv_batch_size = ms_config-batch_size ) ).\n\n      CATCH zcx_max_retry_exceeded INTO DATA(lx_retry).\n        \" \u5931\u6557\u3057\u305f\u30ec\u30b3\u30fc\u30c9\u306e\u8a18\u9332\n        APPEND LINES OF get_failed_records( lx_retry )\n          TO lt_failed_records.\n    ENDTRY.\n  ENDWHILE.\n\n  \" \u7d50\u679c\u306e\u8fd4\u5374\n  rt_result = VALUE #(\n    success_count = lines( it_data ) - lines( lt_failed_records )\n    failed_records = lt_failed_records ).\nENDMETHOD.<\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306f\u3001\u5b9f\u969b\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3057\u3066\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\u57fa\u672c\u7684\u306a\u6a5f\u80fd\u3092\u5099\u3048\u306a\u304c\u3089\u3001\u62e1\u5f35\u6027\u3082\u8003\u616e\u3057\u305f\u8a2d\u8a08\u3068\u306a\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Warning: Undefined array key &#8220;is_admin&#8221; in \/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/ &#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-1129","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-uncategorized","7":"nothumb"},"_links":{"self":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/1129","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1129"}],"version-history":[{"count":5,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/1129\/revisions"}],"predecessor-version":[{"id":3488,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/1129\/revisions\/3488"}],"wp:attachment":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1129"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1129"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1129"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}