SAP MM采购信息记录批导功能

一、功能逻辑

二、功能界面

三、功能代码

*&---------------------------------------------------------------------*
*& Report ZRPMM_0005
*&---------------------------------------------------------------------*
*& 程序名:ZRPMM_0005
*& 创建者(公司)/日期:
*& 程序描述:采购信息记录批导
*&---------------------------------------------------------------------*
*& 版本/修改者(公司)/日期/修改描述
*&
*&---------------------------------------------------------------------*
REPORT zrpmm_0005 MESSAGE-ID zmm01.

INCLUDE zrpmm_0005_top.

INCLUDE zrpmm_0005_scr.

INCLUDE zrpmm_0005_f01.

INCLUDE zrpmm_0005_f02.

INCLUDE zrpmm_0005_c01.

INCLUDE zrpmm_0005_s01.

INCLUDE bdcrecxy.

INITIALIZATION.

  PERFORM frm_init_data.

AT SELECTION-SCREEN.

  IF sscrfields-ucomm = 'FC01'.
    PERFORM frm_download_template.
  ENDIF.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.

  PERFORM frm_file_open_dialog CHANGING p_file.

START-OF-SELECTION.

  PERFORM frm_check_authority.

  PERFORM frm_get_data_by_excel.

  PERFORM frm_process_data.

  IF p_rbtn1 EQ abap_true.
    PERFORM frm_show_alv USING gt_alv_01.
  ELSE.
    PERFORM frm_show_alv USING gt_alv_02.
  ENDIF.

*&---------------------------------------------------------------------*
*& 包含               ZRPMM_0005_TOP
*&---------------------------------------------------------------------*
TABLES:sscrfields.

* Switch for list display yes / no
DATA: list_display TYPE sap_bool.
* Reference for container control
DATA: gr_cont TYPE REF TO cl_gui_custom_container.
* Reference for ALV instance
DATA: gr_alv TYPE REF TO cl_salv_table.
* Reference for error situations
DATA: gr_error TYPE REF TO cx_salv_error.

DATA:gt_alv_01 TYPE TABLE OF zsmm_0006, "物料信息记录
     gt_alv_02 TYPE TABLE OF zsmm_0007. "物料组信息记录

DATA:gv_flag(10) TYPE c.

*&---------------------------------------------------------------------*
*& 包含               ZRPMM_0005_SCR
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b01 WITH FRAME TITLE TEXT-001.
  PARAMETERS p_file TYPE rlgrap-filename.
SELECTION-SCREEN END OF BLOCK b01.

SELECTION-SCREEN BEGIN OF BLOCK b02 WITH FRAME TITLE TEXT-002.
  PARAMETERS:p_rbtn1 RADIOBUTTON GROUP g1 USER-COMMAND uc1 MODIF ID mf1,
             p_rbtn2 RADIOBUTTON GROUP g1.
SELECTION-SCREEN END OF BLOCK b02.

SELECTION-SCREEN FUNCTION KEY 1.

*&---------------------------------------------------------------------*
*& 包含               ZRPMM_0005_F01
*&---------------------------------------------------------------------*
DEFINE mac_add_message.
  IF &1 IS INITIAL.
    CONCATENATE &2 &3 INTO &3.
  ENDIF.
END-OF-DEFINITION.
DEFINE mac_set_record.
  IF &1 IS INITIAL.
    &3 = &2.
  ENDIF.
END-OF-DEFINITION.
*&---------------------------------------------------------------------*
*& Form frm_check_authority
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_check_authority .

ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_get_data_by_excel
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_get_data_by_excel .
  DATA:lv_begin_row TYPE i, "开始行
       lv_begin_col TYPE i, "开始列
       lv_end_row   TYPE i, "结束行
       lv_end_col   TYPE i. "结束列

  DATA:lv_table(10) TYPE c.

  DATA lv_column TYPE i.

  FIELD-SYMBOLS:<fs_row_values> TYPE any.

  DATA lv_pathname LIKE rlgrap-filename .

  DATA:lt_intern TYPE TABLE OF zalsmex_tabline.

  DATA:lv_sheet_name(50) TYPE c.

  DATA:ls_excel_data_01 TYPE zsmm_0002, "物料信息记录
       lt_excel_data_01 TYPE TABLE OF zsmm_0002.

  DATA:ls_excel_data_02 TYPE zsmm_0004, "物料组信息记录
       lt_excel_data_02 TYPE TABLE OF zsmm_0004.

  CLEAR:ls_excel_data_01,lt_excel_data_01,ls_excel_data_02,lt_excel_data_02.

  IF p_file IS INITIAL.
    MESSAGE '请选择导入的文件' TYPE 'S' DISPLAY LIKE 'E'.
    LEAVE LIST-PROCESSING.
  ENDIF.

  CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
    EXPORTING
      text = '数据导入中...'.

  MOVE p_file TO lv_pathname.

  lv_begin_col = 1.
  lv_begin_row = 4.

  IF p_rbtn1 EQ abap_true.
    lv_end_col = 43.
    lv_sheet_name = '物料信息记录'.
  ELSE.
    lv_sheet_name = '物料组信息记录'.
    lv_end_col = 44.
  ENDIF.

  lv_end_row = 20000.

  CALL FUNCTION 'ZALSM_EXCEL_TO_INTERNAL_TABLE'
    EXPORTING
      filename                = lv_pathname
      i_begin_col             = lv_begin_col
      i_begin_row             = lv_begin_row
      i_end_col               = lv_end_col
      i_end_row               = lv_end_row
      i_sheetname             = lv_sheet_name
    TABLES
      intern                  = lt_intern
    EXCEPTIONS
      inconsistent_parameters = 1
      upload_ole              = 2
      OTHERS                  = 3.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
      WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ELSE.
    IF lt_intern IS INITIAL.
      MESSAGE s000 WITH 'Excel无数据' DISPLAY LIKE 'E'.
      LEAVE LIST-PROCESSING.
    ENDIF.

    LOOP AT lt_intern INTO DATA(ls_intern).
      IF p_rbtn1 EQ abap_true.
        ASSIGN COMPONENT ls_intern-col OF STRUCTURE ls_excel_data_01 TO <fs_row_values>.
      ELSE.
        ASSIGN COMPONENT ls_intern-col OF STRUCTURE ls_excel_data_02 TO <fs_row_values>.
      ENDIF.

      IF  <fs_row_values> IS ASSIGNED.
        <fs_row_values> = ls_intern-value.
        UNASSIGN:<fs_row_values>.
      ENDIF.

      AT END OF row.
        IF p_rbtn1 EQ abap_true.
*          ls_excel_data_01-matnr = |{ ls_excel_data_01-matnr ALPHA = IN }|.

          CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
            EXPORTING
              input        = ls_excel_data_01-matnr
            IMPORTING
              output       = ls_excel_data_01-matnr
            EXCEPTIONS
              length_error = 1
              OTHERS       = 2.

          CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
            EXPORTING
              input          = ls_excel_data_01-meins
              language       = sy-langu
            IMPORTING
              output         = ls_excel_data_01-meins
            EXCEPTIONS
              unit_not_found = 1
              OTHERS         = 2.

          IF ls_excel_data_01-kpein IS INITIAL.
            ls_excel_data_01-kpein = 1.
          ENDIF.

          ls_excel_data_01-lifnr = |{ ls_excel_data_01-lifnr ALPHA = IN }|.
          APPEND ls_excel_data_01 TO lt_excel_data_01.
        ELSE.
          CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
            EXPORTING
              input          = ls_excel_data_02-meins
              language       = sy-langu
            IMPORTING
              output         = ls_excel_data_02-meins
            EXCEPTIONS
              unit_not_found = 1
              OTHERS         = 2.

          IF ls_excel_data_02-kpein IS INITIAL.
            ls_excel_data_02-kpein = 1.
          ENDIF.

          ls_excel_data_02-lifnr = |{ ls_excel_data_02-lifnr ALPHA = IN }|.
          APPEND ls_excel_data_02 TO lt_excel_data_02.
        ENDIF.

        CLEAR:ls_excel_data_01,ls_excel_data_02.
      ENDAT.

      CLEAR:ls_intern.
    ENDLOOP.

    IF p_rbtn1 EQ abap_true.
      MOVE-CORRESPONDING lt_excel_data_01 TO gt_alv_01.
    ELSE.
      MOVE-CORRESPONDING lt_excel_data_02 TO gt_alv_02.
    ENDIF.
  ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_process_data
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_process_data .
  DATA:lv_message TYPE string.

  IF p_rbtn1 EQ abap_true.
    LOOP AT gt_alv_01 ASSIGNING FIELD-SYMBOL(<fs_alv_01>).
      CLEAR:lv_message.

      mac_add_message:<fs_alv_01>-lifnr '供应商必输'                   lv_message.
      mac_add_message:<fs_alv_01>-matnr '物料编码必输'                 lv_message.
      mac_add_message:<fs_alv_01>-ekorg '采购组织必输'                 lv_message.
      mac_add_message:<fs_alv_01>-esokz '采购信息记录分类必输'         lv_message.
      mac_add_message:<fs_alv_01>-aplfz '计划交货时间必输'             lv_message.
      mac_add_message:<fs_alv_01>-ekgrp '采购组必输'                   lv_message.
      mac_add_message:<fs_alv_01>-webre '基于收货的发票验证必输'       lv_message.
      mac_add_message:<fs_alv_01>-mwskz '税码必输'                     lv_message.
      mac_add_message:<fs_alv_01>-kbetr '净价必输'                     lv_message.
      mac_add_message:<fs_alv_01>-datab '价格有效开始日期必输'         lv_message.
      mac_add_message:<fs_alv_01>-datbi '价格有效截止日期必输'         lv_message.

      IF lv_message IS NOT INITIAL.
        <fs_alv_01>-message = lv_message.
        <fs_alv_01>-icon = icon_red_light.
      ENDIF.
    ENDLOOP.
  ELSE.
    LOOP AT gt_alv_02 ASSIGNING FIELD-SYMBOL(<fs_alv_02>).
      CLEAR:lv_message.

      mac_add_message:<fs_alv_02>-lifnr '供应商必输'                                 lv_message.
      mac_add_message:<fs_alv_02>-ekorg '采购组织必输'                               lv_message.
      mac_add_message:<fs_alv_02>-esokz '采购信息记录分类必输'                       lv_message.
      mac_add_message:<fs_alv_02>-txz01 '采购信息记录的短文本必输'                   lv_message.
      mac_add_message:<fs_alv_02>-matkl '物料组必输'                                 lv_message.
      mac_add_message:<fs_alv_02>-meins '采购单位必输'                               lv_message.
      mac_add_message:<fs_alv_02>-sortl '排序字符必输'                               lv_message.
      mac_add_message:<fs_alv_02>-aplfz '计划交货时间必输'                           lv_message.
      mac_add_message:<fs_alv_02>-ekgrp '采购组必输'                                 lv_message.
      mac_add_message:<fs_alv_02>-webre '基于收货的发票验证必输'                     lv_message.
      mac_add_message:<fs_alv_02>-mwskz '税码必输'                                   lv_message.
      mac_add_message:<fs_alv_02>-kbetr '净价必输'                                   lv_message.
      mac_add_message:<fs_alv_02>-datab '价格有效开始日期必输'                       lv_message.
      mac_add_message:<fs_alv_02>-datbi '价格有效截止日期必输'                       lv_message.

      IF lv_message IS NOT INITIAL.
        <fs_alv_02>-message = lv_message.
        <fs_alv_02>-icon = icon_red_light.
      ENDIF.
    ENDLOOP.
  ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_init_data
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_init_data .
  DATA:ls_functxt TYPE smp_dyntxt.
  ls_functxt-icon_id   = icon_export.
  ls_functxt-quickinfo = '采购信息记录导入模板'.
  ls_functxt-icon_text = '采购信息记录导入模板'.
  sscrfields-functxt_01 = ls_functxt.
  sscrfields-ucomm = 'FC01'.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_get_path
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_get_path .

ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_file_open_dialog
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_file_open_dialog CHANGING cv_name TYPE rlgrap-filename.
  DATA:lt_filetable TYPE filetable,
       ls_filetable TYPE file_table,
       lv_rc        TYPE i.

  CALL METHOD cl_gui_frontend_services=>file_open_dialog
*  EXPORTING
*    window_title            =
*    default_extension       =
*    default_filename        =
*    file_filter             =
*    with_encoding           =
*    initial_directory       =
*    multiselection          =
    CHANGING
      file_table              = lt_filetable
      rc                      = lv_rc
*     user_action             =
*     file_encoding           =
    EXCEPTIONS
      file_open_dialog_failed = 1
      cntl_error              = 2
      error_no_gui            = 3
      not_supported_by_gui    = 4
      OTHERS                  = 5.
  IF sy-subrc <> 0.
*   Implement suitable error handling here
  ENDIF.

  IF lv_rc = 1.
    READ TABLE lt_filetable INTO ls_filetable INDEX 1.
    cv_name = ls_filetable-filename.
  ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_download_template
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_download_template .
  DATA:lv_fullpath    TYPE string,
       ls_key         TYPE wwwdatatab,
       lv_des         TYPE rlgrap-filename,
       lv_filename    TYPE string,
       lv_path        TYPE string,
       lv_user_action TYPE i.

  CALL METHOD cl_gui_frontend_services=>file_save_dialog
    EXPORTING
*     window_title              =
      default_extension         = 'xls'
      default_file_name         = '信息记录批导模板'
*     with_encoding             =
*     file_filter               =
*     initial_directory         =
*     prompt_on_overwrite       = 'X'
    CHANGING
      filename                  = lv_filename
      path                      = lv_path
      fullpath                  = lv_fullpath
      user_action               = lv_user_action
*     file_encoding             =
    EXCEPTIONS
      cntl_error                = 1
      error_no_gui              = 2
      not_supported_by_gui      = 3
      invalid_default_file_name = 4
      OTHERS                    = 5.
  IF sy-subrc <> 0.

  ENDIF.

  CHECK lv_user_action = cl_gui_frontend_services=>action_ok.

  CHECK lv_fullpath IS NOT INITIAL.

  lv_des = lv_fullpath.

  ls_key-relid = 'MI'.
  ls_key-objid = 'ZRPMM_0005'.

  CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
    EXPORTING
      key         = ls_key
      destination = lv_des
*   IMPORTING
*     RC          =
*   CHANGING
*     TEMP        =
    .
ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_excel_to_abap
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_excel_to_abap .

ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_record_by_materials
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_record_by_materials .
  DATA:lv_datab(15) TYPE c,
       lv_datbi(15) TYPE c.

  DATA:lt_messtab TYPE TABLE OF bdcmsgcoll,
       ls_msg     TYPE bdcmsgcoll.

  DATA:lv_tcode TYPE sy-tcode.

  DATA:lt_old TYPE TABLE OF zsmm_0006,
       ls_old TYPE zsmm_0006.

  DATA:ls_data_me12 TYPE zsmm_0006.

  DEFINE mac_set_konm.
    ls_konm-kstbm = &1.
    ls_konm-kbetr = &2.
    APPEND ls_konm TO lt_konm.
    CLEAR:ls_konm.
  END-OF-DEFINITION.

  IF gt_alv_01 IS NOT INITIAL.
    CLEAR:lt_old.

    SELECT * INTO CORRESPONDING FIELDS OF TABLE lt_old FROM eine
      INNER JOIN eina ON eina~infnr = eine~infnr
      FOR ALL ENTRIES IN gt_alv_01
      WHERE matnr EQ gt_alv_01-matnr
        AND lifnr EQ gt_alv_01-lifnr
        AND ekorg EQ gt_alv_01-ekorg.
  ENDIF.

  LOOP AT gt_alv_01 ASSIGNING FIELD-SYMBOL(<fs_data>).
* Date Format
    CLEAR:lv_datab,lv_datbi,lv_tcode,ls_old,gv_flag.

    WRITE <fs_data>-datab TO lv_datab.
    WRITE <fs_data>-datbi TO lv_datbi.

    IF <fs_data>-werks IS INITIAL.
      READ TABLE lt_old INTO ls_old
        WITH KEY lifnr = <fs_data>-lifnr matnr = <fs_data>-matnr ekorg = <fs_data>-ekorg.
      IF sy-subrc EQ 0.
        READ TABLE lt_old INTO ls_old
          WITH KEY lifnr = <fs_data>-lifnr matnr = <fs_data>-matnr ekorg = <fs_data>-ekorg esokz = <fs_data>-esokz.
        IF sy-subrc EQ 0.
          lv_tcode = 'ME12'.
        ELSE.
          lv_tcode = 'ME11'.
          gv_flag = abap_true."已有基础视图,无采购视图
        ENDIF.
      ELSE.
        lv_tcode = 'ME11'.
      ENDIF.
    ELSE.
      READ TABLE lt_old INTO ls_old
        WITH KEY lifnr = <fs_data>-lifnr matnr = <fs_data>-matnr ekorg = <fs_data>-ekorg werks = <fs_data>-werks.
      IF sy-subrc EQ 0.
        lv_tcode = 'ME12'.
      ELSE.
        lv_tcode = 'ME11'.
      ENDIF.
    ENDIF.

    CLEAR:lt_messtab,ls_msg.

    IF lv_tcode EQ 'ME11'.
      PERFORM frm_call_me11 TABLES lt_messtab USING lv_datab lv_datbi <fs_data>.

      READ TABLE lt_messtab INTO ls_msg WITH KEY msgid = '06' msgtyp = 'S' msgnr = '331'.
    ELSE.
      CLEAR:ls_data_me12.

      MOVE-CORRESPONDING <fs_data> TO ls_data_me12.

      mac_set_record:<fs_data>-lifnr ls_old-lifnr ls_data_me12-lifnr.
      mac_set_record:<fs_data>-matnr ls_old-matnr ls_data_me12-matnr.
      mac_set_record:<fs_data>-ekorg ls_old-ekorg ls_data_me12-ekorg.
      mac_set_record:<fs_data>-werks ls_old-werks ls_data_me12-werks.
      mac_set_record:<fs_data>-esokz ls_old-esokz ls_data_me12-esokz.
      mac_set_record:<fs_data>-idnlf ls_old-idnlf ls_data_me12-idnlf.
      mac_set_record:<fs_data>-ltsnr ls_old-ltsnr ls_data_me12-ltsnr.
      mac_set_record:<fs_data>-verkf ls_old-verkf ls_data_me12-verkf.
      mac_set_record:<fs_data>-telf1 ls_old-telf1 ls_data_me12-telf1.
      mac_set_record:<fs_data>-meins ls_old-meins ls_data_me12-meins.
      mac_set_record:<fs_data>-aplfz ls_old-aplfz ls_data_me12-aplfz.
      mac_set_record:<fs_data>-ekgrp ls_old-ekgrp ls_data_me12-ekgrp.
      mac_set_record:<fs_data>-minbm ls_old-minbm ls_data_me12-minbm.
*      mac_set_record:<fs_data>-evers ls_old-evers ls_data_me12-evers.

      mac_set_record:<fs_data>-zshbx ls_old-zshbx ls_data_me12-zshbx.
      mac_set_record:<fs_data>-rdprf ls_old-rdprf ls_data_me12-rdprf.

      mac_set_record:<fs_data>-webre ls_old-webre ls_data_me12-webre.
      mac_set_record:<fs_data>-mwskz ls_old-mwskz ls_data_me12-mwskz.
      mac_set_record:<fs_data>-bstae ls_old-bstae ls_data_me12-bstae.
      mac_set_record:<fs_data>-kbetr ls_old-kbetr ls_data_me12-kbetr.
      mac_set_record:<fs_data>-kpein ls_old-kpein ls_data_me12-kpein.
      mac_set_record:<fs_data>-waers ls_old-waers ls_data_me12-waers.
      mac_set_record:<fs_data>-datab ls_old-datab ls_data_me12-datab.
      mac_set_record:<fs_data>-datbi ls_old-datbi ls_data_me12-datbi.
      mac_set_record:<fs_data>-text  ls_old-text  ls_data_me12-text.

      PERFORM frm_call_me12 TABLES lt_messtab USING lv_datab lv_datbi ls_data_me12.

      READ TABLE lt_messtab INTO ls_msg WITH KEY msgid = '06' msgtyp = 'S' msgnr = '335'.
    ENDIF.

    IF sy-subrc EQ 0.
      <fs_data>-infnr = ls_msg-msgv1.
      <fs_data>-icon = icon_green_light.
      MESSAGE ID ls_msg-msgid TYPE ls_msg-msgtyp NUMBER ls_msg-msgnr
        WITH ls_msg-msgv1 ls_msg-msgv2 ls_msg-msgv3 ls_msg-msgv4 INTO <fs_data>-message.
    ELSE.
      <fs_data>-icon = icon_red_light.
      LOOP AT lt_messtab INTO ls_msg WHERE msgtyp NE 'W'.
        MESSAGE ID ls_msg-msgid TYPE ls_msg-msgtyp NUMBER ls_msg-msgnr
          WITH ls_msg-msgv1 ls_msg-msgv2 ls_msg-msgv3 ls_msg-msgv4 INTO DATA(lv_msgtxt).
        <fs_data>-message = <fs_data>-message && lv_msgtxt.
        CLEAR:ls_msg.
      ENDLOOP.
    ENDIF.

    CONDENSE <fs_data>-message NO-GAPS.
  ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_record_by_matkl
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_record_by_matkl .
  DATA:lt_messtab TYPE TABLE OF bdcmsgcoll,
       ls_msg     TYPE bdcmsgcoll.

  DATA:lv_datab(15) TYPE c,
       lv_datbi(15) TYPE c.

  DATA:lt_old TYPE TABLE OF zsmm_0007,
       ls_old TYPE zsmm_0007.

  DATA:ls_data_me12 TYPE zsmm_0007.

  DEFINE mac_set_konm.
    ls_konm-kstbm = &1.
    ls_konm-kbetr = &2.
    APPEND ls_konm TO lt_konm.
    CLEAR:ls_konm.
  END-OF-DEFINITION.

  IF gt_alv_02 IS NOT INITIAL.
    CLEAR:lt_old.

    SELECT * INTO CORRESPONDING FIELDS OF TABLE lt_old FROM eine
      INNER JOIN eina ON eina~infnr = eine~infnr
      FOR ALL ENTRIES IN gt_alv_02
      WHERE eine~infnr = gt_alv_02-infnr.
  ENDIF.

  LOOP AT gt_alv_02 ASSIGNING FIELD-SYMBOL(<fs_alv_02>).
* Date Format
    CLEAR:lv_datab,lv_datbi.

    WRITE <fs_alv_02>-datab TO lv_datab.
    WRITE <fs_alv_02>-datbi TO lv_datbi.

    CLEAR:ls_msg,lt_messtab.

    IF <fs_alv_02>-infnr IS INITIAL.
&nb

内容概要:本研究聚焦于“绿电直连型电氢氨园区”的优化运行,提出一种直接利用绿色电力驱动制氢与合成氨的综合能源系统架构。通过构建包含风/光发电、电解水制氢、氢气储存、合成氨反应及电能直供等关键环节的系统模型,研究旨在实现能源的高效转化与梯级利用,降低对外部电网依赖,提升园区能源自洽率与经济性。研究综合运用Matlab与Python工具进行建模与仿真,结合实际气象与负荷数据,对系统在不同工况下的运行策略、能量流动、设备容量配置及经济技术指标进行深入分析与优化,并形成完整的Word论文文档,为新型零碳产业园区的规划与建设提供了理论依据和技术支撑。; 适合人群:具备新能源、电力系统、化工或综合能源系统背景的科研人员,以及从事园区规划、能源管理、低碳技术开发的工程技术人员。; 使用场景及目标:①研究绿电如何高效耦合至化工生产流程,实现“电-氢-氨”多能互补;②掌握综合能源系统(IES)的建模、仿真与优化方法,特别是多时间尺度下的运行调度策略;③为撰写高水平学术论文或完成相关课题研究积累数据、代码与写作模板。; 阅读建议:此资源包含代码、数据和完整论文,建议使用者先通读Word论文以理解整体框架与理论基础,再结合Matlab/Python代码进行复现与调试,最后可基于提供的数据和模型进行二次开发,以深化对绿电综合利用技术的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值