Final ABAP code for the ALV Tree PBO(..O01) and FORM(..F01) includes

本文详细介绍了在 ABAP 中如何使用 ALV Tree 控件,包括创建控件容器、在容器中插入 ALV Tree 对象、构建报告标题、创建空的 ALV Tree 控制、构建 ALV Tree 层次结构等关键步骤。通过具体示例,展示了如何添加 EKKO 和 EKPO 节点,以及如何更新和显示树结构。
*--------------------------------------------------------------*
***INCLUDE ZDEMO_ALVTREEO01 .
*--------------------------------------------------------------*
*&-------------------------------------------------------------*
*&      Module  STATUS_0100  OUTPUT
*&-------------------------------------------------------------*
*       text
*--------------------------------------------------------------*
MODULE status_0100 OUTPUT.
  SET PF-STATUS 'STATUS1'.
*  SET TITLEBAR 'xxx'.

* If ALVtree already exists then it  mush not be re-created as this
* will cause a runtime error.
  IF gd_tree IS INITIAL.

* Create ALVtree (must be performed within screen PBO module)
    PERFORM create_alvtree_container.
    PERFORM create_object_in_container.
    PERFORM create_empty_alvtree_control.
    PERFORM create_alvtree_hierarchy.
  ENDIF.
  CALL METHOD cl_gui_cfw=>flush.

ENDMODULE.                 " STATUS_0100  OUTPUT


 


*--------------------------------------------------------------*
*   INCLUDE ZDEMO_ALVTREEF01                                   *
*--------------------------------------------------------------*

*&-------------------------------------------------------------*
*&      Form  CREATE_ALVTREE_CONTAINER
*&-------------------------------------------------------------*
*       Create container for ALVtree report
*--------------------------------------------------------------*


form create_alvtree_container.
* Create container for alv-tree
  gd_tree_container_name = 'SCREEN_CONTAINER'.

  create object gd_custom_container
      exporting
            container_name = gd_tree_container_name
      exceptions
            cntl_error                  = 1
            cntl_system_error           = 2
            create_error                = 3
            lifetime_error              = 4
            lifetime_dynpro_dynpro_link = 5.
  if sy-subrc <> 0.
    message x208(00) with 'ERROR'.
  endif.
endform.                    " CREATE_ALVTREE_CONTAINER


*&---------------------------------------------------------------------*
*&      Form  CREATE_OBJECT_IN_CONTAINER
*&---------------------------------------------------------------------*
*       Create ALVtree object in container
*----------------------------------------------------------------------*
form create_object_in_container.

* Create tree control
  create object gd_tree
    exporting
        parent              = gd_custom_container
        node_selection_mode = cl_gui_column_tree=>node_sel_mode_single
        item_selection      = 'X'
        no_html_header      = ''
        no_toolbar          = ''
    exceptions
        cntl_error                   = 1
        cntl_system_error            = 2
        create_error                 = 3
        lifetime_error               = 4
        illegal_node_selection_mode  = 5
        failed                       = 6
        illegal_column_name          = 7.
  if sy-subrc <> 0.
    message x208(00) with 'ERROR'.
  endif.
endform.                    " CREATE_OBJECT_IN_CONTAINER


*&---------------------------------------------------------------------*
*&      Form  BUILD_REPORT_TITLE
*&---------------------------------------------------------------------*
*       Build table for ALVtree header
*----------------------------------------------------------------------*
*  <->  p1        Header details
*  <->  p2        Logo value
*----------------------------------------------------------------------*
FORM build_report_title CHANGING
      pt_report_title  TYPE slis_t_listheader
      pa_logo             TYPE sdydo_value.

  DATA: ls_line TYPE slis_listheader,
        ld_date(10) TYPE c.

* List Heading Line(TYPE H)
  CLEAR ls_line.
  ls_line-typ  = 'H'.
* ls_line-key     "Not Used For This Type(H)
  ls_line-info = 'PO ALVTree Display'.
  APPEND ls_line TO pt_report_title.

* Status Line(TYPE S)
  ld_date(2) = sy-datum+6(2).
  ld_date+2(1) = '/'.
  ld_date+3(2) = sy-datum+4(2).
  ld_date+5(1) = '/'.
  ld_date+6(4) = sy-datum(4).

  ls_line-typ  = 'S'.
  ls_line-key  = 'Date'.
  ls_line-info = ld_date.
  APPEND ls_line TO pt_report_title.

* Action Line(TYPE A)
  CLEAR ls_line.
  ls_line-typ  = 'A'.
  CONCATENATE 'Report: ' sy-repid INTO ls_line-info  SEPARATED BY space.
  APPEND ls_line TO pt_report_title.
ENDFORM.                    " BUILD_REPORT_TITLE


*&---------------------------------------------------------------------*
*&      Form  CREATE_EMPTY_ALVTREE_CONTROL
*&---------------------------------------------------------------------*
*       Create empty tree control
*----------------------------------------------------------------------*
FORM create_empty_alvtree_control.
* Create emty tree-control
  CLEAR: it_emptytab.
  REFRESH: it_emptytab.
  CALL METHOD gd_tree->set_table_for_first_display
     EXPORTING
               is_hierarchy_header  = gd_hierarchy_header
               it_list_commentary   = gd_report_title
               i_logo               = gd_logo
*               i_background_id      = 'ALV_BACKGROUND'
               i_save               = 'A'
               is_variant            = gd_variant
     CHANGING
               it_outtab            =  it_emptytab      "Must be empty
               it_fieldcatalog      =  gd_fieldcat.
ENDFORM.                    " CREATE_EMPTY_ALVTREE_CONTROL


*&---------------------------------------------------------------------*
*&      Form  CREATE_ALVTREE_HIERARCHY
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*       Builds ALV tree display, (inserts nodes, subnodes etc)
*----------------------------------------------------------------------*
form create_alvtree_hierarchy.
  data: ls_sflight type sflight,
        lt_sflight type sflight occurs 0.
  data: ld_ebeln_key type lvc_nkey,
        ld_ebelp_key type lvc_nkey.

  loop at it_ekko into wa_ekko.
    perform add_ekko_node using      wa_ekko
                                     ''
                            changing ld_ebeln_key.


    loop at it_ekpo into wa_ekpo where ebeln eq wa_ekko-ebeln.
      perform add_ekpo_line using      wa_ekpo
                                       ld_ebeln_key
                              changing ld_ebelp_key.
    endloop.
  endloop.

* calculate totals
  call method gd_tree->update_calculations.

* this method must be called to send the data to the frontend
  call method gd_tree->frontend_update.
endform.                    " CREATE_ALVTREE_HIERARCHY


*&---------------------------------------------------------------------*
*&      Form  ADD_EKKO_NODE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_WA_EKPO  text
*      -->P_0553   text
*      <--P_EBELN_KEY  text
*----------------------------------------------------------------------*
form add_ekko_node using    ps_ekko like wa_ekko
                            value(p_relate_key)
                   changing p_node_key.

 data: ld_node_text type lvc_value,
       ls_sflight type sflight.

* Set item-layout
  data: lt_item_layout type lvc_t_layi,
        ls_item_layout type lvc_s_layi.
  ls_item_layout-t_image   = '@3P@'.
  ls_item_layout-fieldname = gd_tree->c_hierarchy_column_name.
  ls_item_layout-style     = cl_gui_column_tree=>style_default.
  ld_node_text             = ps_ekko-ebeln.
  append ls_item_layout to lt_item_layout.

* Add node
  call method gd_tree->add_node
    exporting
          i_relat_node_key = p_relate_key
          i_relationship   = cl_gui_column_tree=>relat_last_child
          i_node_text      = ld_node_text
          is_outtab_line   = ps_ekko
          it_item_layout   = lt_item_layout
       importing
          e_new_node_key = p_node_key.
endform.                    " ADD_EKKO_NODE


*&---------------------------------------------------------------------*
*&      Form  ADD_EKPO_LINE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_WA_EKPO  text
*      -->P_LD_EBELN_KEY  text
*      <--P_LD_EBELP_KEY  text
*----------------------------------------------------------------------*
form add_ekpo_line using    ps_ekpo like wa_ekpo
                            value(p_relate_key)
                   changing p_node_key.

 data: ld_node_text type lvc_value,
       ls_sflight type sflight.

* Set item-layout
  data: lt_item_layout type lvc_t_layi,
        ls_item_layout type lvc_s_layi.
  ls_item_layout-t_image   = '@3P@'.
  ls_item_layout-fieldname = gd_tree->c_hierarchy_column_name.
  ls_item_layout-style     = cl_gui_column_tree=>style_default.
  ld_node_text             = ps_ekpo-ebelp.
  append ls_item_layout to lt_item_layout.

* Add node
  call method gd_tree->add_node
    exporting
          i_relat_node_key = p_relate_key
          i_relationship   = cl_gui_column_tree=>relat_last_child
          i_node_text      = ld_node_text
          is_outtab_line   = ps_ekpo
          it_item_layout   = lt_item_layout
       importing
          e_new_node_key = p_node_key.
endform.                    " ADD_EKPO_LINE
内容概要:本文围绕“考虑电动汽车聚合可调节能力的含波动性电源电氢耦合系统多目标优化运行”展开研究,提出了一种基于Matlab代码实现的多目标优化模型。该模型深度融合电-氢耦合系统与高比例波动性可再生能源(如风电、光伏),充分挖掘电动汽车(EV)集群作为移动储能单元的灵活调节潜力,通过聚合调控提升系统对新能源的消纳能力与运行经济性。研究系统构建了电动汽车可调度能力、电解水制氢与储氢动态过程、多能源协同互补的优化调度框架,并结合智能优化算法实现经济性、低碳性与运行稳定性等多重目标的协同优化。文中配套提供了完整的Matlab仿真代码、相关数据及可能的论文支撑材料,极大地方便了模型的复现、验证与后续深化研究。; 适合人群:具备电力系统、综合能源系统、优化理论或新能源技术等相关领域基础知识的研究生、科研人员,以及从事新型电力系统规划、清洁能源消纳与智慧能源管理的工程技术人员。; 使用场景及目标:①开展高渗透率可再生能源接入下的综合能源系统多目标优化调度研究;②探究电动汽车集群在电网削峰填谷、平抑新能源出力波动及提供辅助服务方面的应用价值与潜力;③学习并掌握电氢耦合系统的建模方法、多目标优化求解技术及其在Matlab/Simulink环境下的仿真实现流程。; 阅读建议:此资源不仅提供可运行的代码,更蕴含了前沿的科研思路与创新方法,建议读者结合所提供的代码、数据与可能的论文文档,系统性地学习从问题建模、算法设计到仿真分析的完整科研过程,并重点关注其中关于需求侧资源聚合、多能互补协同与绿色低碳运行的核心理念。
内容概要:本文档名为《经济学期刊论文复现:数字化转型能促进企业的高质量发展吗》,表面上聚焦于经济学领域中数字化转型对企业高质量发展影响的研究,实则是一份涵盖多学科交叉的科研仿真代码资源合集。资源以Matlab、Simulink、Python为主要工具,系统整合了电力系统仿真、微电网优化调度、路径规划、信号处理、图像处理、机器学习预测模型等方向的可复现算法与仿真模型。尽管标题指向经济学实证分析,但内容重心在于提供顶级期刊论文的复现代码,如企业全要素生产率(TFP)测算方法(OL、FE、LP、OP、GMM)、风光储氢系统优化、需求响应与综合能源系统调度等,并融合智能优化算法与深度学习技术进行数据建模与预测分析,体现出极强的工程化与科研实用性。; 适合人群:具备一定编程基础,熟练掌握Matlab/Simulink/Python等仿真工具,从事工程仿真、经济实证研究或交叉学科科研工作的研究生、高校教师及科研人员。; 使用场景及目标:① 复现经济学顶刊论文中的计量经济模型,深入探究数字化转型对企业全要素生产率的影响机制;② 借助提供的代码资源开展电力系统故障仿真、微电网优化、多能系统调度等科研项目的算法验证与仿真分析;③ 应用机器学习与深度学习模型完成负荷预测、风电光伏出力预测、电池健康状态评估等典型实证任务; 阅读建议:此资源虽冠以经济学论文之名,实质为多领域高价值仿真代码集成,建议读者依据自身研究方向筛选适配内容,优先关注“顶刊复现”“论文复现”类项目,结合配套数据与代码进行实证推演,并通过公众号“荔枝科研社”获取完整资料与持续技术支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Andrew.Liu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值