SAP将数据插入SQL SEVER中

FORM frm_update_sql .
  DATA lv_dbname TYPE dbcon_name VALUE 'KPI'.
  DATA exc_ref TYPE REF TO cx_sy_native_sql_error.
  DATA error_text TYPE string.

  TRY.
*---连接到SQL
      EXEC SQL.
        CONNECT TO :LV_DBNAME
      ENDEXEC.

      IF sy-subrc <> 0.
        RAISE EXCEPTION TYPE cx_sy_native_sql_error.
      ELSE.
        MESSAGE '连接成功' TYPE 'S'.
      ENDIF.

      EXEC SQL.
        SET CONNECTION :LV_DBNAME
      ENDEXEC.

      IF <dyn_table1> IS NOT INITIAL.
        LOOP AT <dyn_table1> INTO <dyn_wa>.

          ASSIGN COMPONENT 'ZFXN' OF STRUCTURE <dyn_wa> TO <dyn_field>.
          gt_bi-zfxn = <dyn_field>.

          ASSIGN COMPONENT 'ZFXY' OF STRUCTURE <dyn_wa> TO <dyn_field>.
          gt_bi-zfxy = <dyn_field>.

          ASSIGN COMPONENT 'PERNR' OF STRUCTURE <dyn_wa> TO <dyn_field>.
          gt_bi-pernr = <dyn_field>.

          ASSIGN COMPONENT 'ZZ_ZJ' OF STRUCTURE <dyn_wa> TO <dyn_field>.
          gt_bi-zz_zj = <dyn_field>.

          ASSIGN COMPONENT 'ZJITUAN' OF STRUCTURE <dyn_wa> TO <dyn_field>.
          gt_bi-zjituan = <dyn_field>.

          ASSIGN COMPONENT 'ZZ_YJBM' OF STRUCTURE <dyn_wa> TO <dyn_field>.
          gt_bi-zz_yjbm = <dyn_field>.

          ASSIGN COMPONENT 'ZZ_EJBM' OF STRUCTURE <dyn_wa> TO <dyn_field>.
          gt_bi-zz_ejbm = <dyn_field>.

          ASSIGN COMPONENT 'ZZ_SJBM' OF STRUCTURE <dyn_wa> TO <dyn_field>.
          gt_bi-zz_sjbm = <dyn_field>.

          ASSIGN COMPONENT 'ZZ_SJBM4' OF STRUCTURE <dyn_wa> TO <dyn_field>.
          gt_bi-zz_sjbm4 = <dyn_field>.

          ASSIGN COMPONENT 'EENUM' OF STRUCTURE <dyn_wa> TO <dyn_field>.
          gt_bi-eenum = <dyn_field>.

          ASSIGN COMPONENT '900000' OF STRUCTURE <dyn_wa> TO <dyn_field>.
          gt_bi-z9000 = <dyn_field>.

          ASSIGN COMPONENT '900010' OF STRUCTURE <dyn_wa> TO <dyn_field>.
          gt_bi-z9001 = <dyn_field>.

          ASSIGN COMPONENT '900020' OF STRUCTURE <dyn_wa> TO <dyn_field>.
          gt_bi-z9002 = <dyn_field>.

          ASSIGN COMPONENT '900030' OF STRUCTURE <dyn_wa> TO <dyn_field>.
          gt_bi-z9003 = <dyn_field>.

          ASSIGN COMPONENT '900040' OF STRUCTURE <dyn_wa> TO <dyn_field>.
          gt_bi-z9004 = <dyn_field>.

          ASSIGN COMPONENT '900050' OF STRUCTURE <dyn_wa> TO <dyn_field>.
          gt_bi-z9005 = <dyn_field>.

          ASSIGN COMPONENT '900060' OF STRUCTURE <dyn_wa> TO <dyn_field>.
          gt_bi-z9006 = <dyn_field>.

          ASSIGN COMPONENT '900070' OF STRUCTURE <dyn_wa> TO <dyn_field>.
          gt_bi-z9007 = <dyn_field>.

          ASSIGN COMPONENT '900080' OF STRUCTURE <dyn_wa> TO <dyn_field>.
          gt_bi-z9008 = <dyn_field>.

          ASSIGN COMPONENT '900090' OF STRUCTURE <dyn_wa> TO <dyn_field>.
          gt_bi-z9009 = <dyn_field>.

          ASSIGN COMPONENT '900100' OF STRUCTURE <dyn_wa> TO <dyn_field>.
          gt_bi-z9010 = <dyn_field>.

          ASSIGN COMPONENT '900110' OF STRUCTURE <dyn_wa> TO <dyn_field>.
          gt_bi-z9011 = <dyn_field>.

          ASSIGN COMPONENT '900120' OF STRUCTURE <dyn_wa> TO <dyn_field>.
          gt_bi-z9012 = <dyn_field>.

          ASSIGN COMPONENT '900130' OF STRUCTURE <dyn_wa> TO <dyn_field>.
          gt_bi-z9013 = <dyn_field>.

          ASSIGN COMPONENT '900140' OF STRUCTURE <dyn_wa> TO <dyn_field>.
          gt_bi-z9014 = <dyn_field>.

          APPEND gt_bi.
          CLEAR gt_bi.

        ENDLOOP.
      ENDIF.

      LOOP AT gt_bi.
        TRY .
            EXEC SQL.
              INSERT INTO zhr_bi_010(zfxn,
                                     zfxy,
                                     zjituan,
                                     zz_yjbm,
                                     zz_ejbm,
                                     zz_sjbm,
                                     zz_sjbm4,
                                     ZZ_ZJ,
                                     EENUM,
                                     z9000,
                                     z9001,
                                     z9002,
                                     z9003,
                                     z9004,
                                     z9005,
                                     z9006,
                                     z9007,
                                     z9008,
                                     z9009,
                                     z9010,
                                     z9011,
                                     z9012,
                                     z9013,
                                     z9014)
                         VALUES ( :gt_bi-zfxn,
                                  :gt_bi-zfxy,
                                  :gt_bi-zjituan,
                                  :gt_bi-zz_yjbm,
                                  :gt_bi-zz_ejbm,
                                  :gt_bi-zz_sjbm,
                                  :gt_bi-zz_sjbm4,
                                  :gt_bi-ZZ_ZJ,
                                  :gt_bi-EENUM,
                                  :gt_bi-Z9000,
                                  :gt_bi-Z9001,
                                  :gt_bi-Z9002,
                                  :gt_bi-Z9003,
                                  :gt_bi-Z9004,
                                  :gt_bi-Z9005,
                                  :gt_bi-Z9006,
                                  :gt_bi-Z9007,
                                  :gt_bi-Z9008,
                                  :gt_bi-Z9009,
                                  :gt_bi-Z9010,
                                  :gt_bi-Z9011,
                                  :gt_bi-Z9012,
                                  :gt_bi-Z9013,
                                  :gt_bi-Z9014)

            ENDEXEC.
          CATCH cx_sy_native_sql_error INTO exc_ref.
            error_text = exc_ref->get_text( ).
            MESSAGE error_text TYPE 'I'.

        ENDTRY.
      ENDLOOP.

      IF error_text IS INITIAL.
        COMMIT WORK AND WAIT.
      ELSE.
        ROLLBACK WORK.
      ENDIF.

*---关闭连接
      EXEC SQL.
        DISCONNECT :lv_dbname
      ENDEXEC.
    CATCH cx_sy_native_sql_error.
      MESSAGE 'Error in Native SQL.' TYPE 'E'.
  ENDTRY.
ENDFORM.
 
posted @ 2021-01-11 09:33  Fantasy范特西  阅读(368)  评论(2编辑  收藏  举报