首页 > 其他分享 >ABAP转换SM34 TOTAL

ABAP转换SM34 TOTAL

时间:2024-04-15 10:58:35浏览次数:23  
标签:cl lo ABAP TYPE abap table TOTAL DATA SM34

* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Static Public Method ZCL_MDG_UTIL=>SM34_TABLE_TO_TOTAL
* +-------------------------------------------------------------------------------------------------+
* | [--->] TABLE                          TYPE        STANDARD TABLE
* | [--->] TABLE_NAME                     TYPE        TABNAM
* | [<---] TOTAL                          TYPE        STANDARD TABLE
* +--------------------------------------------------------------------------------------</SIGNATURE>
  METHOD sm34_table_to_total.

    DATA:lr_table TYPE REF TO data.

    "根据表名动态创建内表
    DATA(lo_struct) = CAST cl_abap_structdescr( cl_abap_tabledescr=>describe_by_name( table_name ) ).
    DATA(lt_comp) = lo_struct->get_components( ).
    "添加action && mark字段
    DATA(lo_element) = CAST cl_abap_datadescr( cl_abap_elemdescr=>describe_by_name( 'CHAR01') ).
    lt_comp = VALUE #( BASE lt_comp ( name = 'ACTION' type = lo_element ) ( name = 'MARK' type = lo_element ) ).
    lo_struct = cl_abap_structdescr=>create( p_components = lt_comp ).
    DATA(lo_table) = cl_abap_tabledescr=>create( p_line_type = lo_struct ).

    CREATE DATA lr_table TYPE HANDLE lo_table.
    FIELD-SYMBOLS:<ft_table> TYPE STANDARD TABLE.
    ASSIGN lr_table->* TO <ft_table>.

    LOOP AT table ASSIGNING FIELD-SYMBOL(<table_line>).
      APPEND INITIAL LINE TO total ASSIGNING FIELD-SYMBOL(<total_line>).
      "      <table_line> = <total_line>.
      DATA:total_line_string TYPE  string.
      cl_abap_container_utilities=>fill_container_c(
      EXPORTING
        im_value          =  <table_line>
      IMPORTING
        ex_container           = total_line_string
      EXCEPTIONS
        illegal_parameter_type = 1
        OTHERS                 = 2
        ) .
      IF sy-subrc <> 0.
*     Implement suitable error handling here
      ELSE.
        <total_line> = total_line_string.
      ENDIF.
    ENDLOOP.

  ENDMETHOD.


* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Static Public Method ZCL_MDG_UTIL=>SM34_TOTAL_TO_TABLE
* +-------------------------------------------------------------------------------------------------+
* | [--->] TOTAL                          TYPE        ANY TABLE
* | [--->] TABLE_NAME                     TYPE        TABNAM
* | [<-()] TABLE_REF                      TYPE REF TO DATA
* +--------------------------------------------------------------------------------------</SIGNATURE>
  METHOD sm34_total_to_table.

    DATA:lr_table TYPE REF TO data.

    "获取数据库表对应的结构
    DATA(lo_struct) = CAST cl_abap_structdescr( cl_abap_tabledescr=>describe_by_name( table_name ) ).
    DATA(lt_comp) = lo_struct->get_components( ).
    "添加action && mark字段
    DATA(lo_element) = CAST cl_abap_datadescr( cl_abap_elemdescr=>describe_by_name( 'CHAR01') ).
    lt_comp = VALUE #( BASE lt_comp ( name = 'ACTION' type = lo_element ) ( name = 'MARK' type = lo_element ) ).
    lo_struct = cl_abap_structdescr=>create( p_components = lt_comp ).
    DATA(lo_table) = cl_abap_tabledescr=>create( p_line_type = lo_struct ).

    CREATE DATA lr_table TYPE HANDLE lo_table.
    FIELD-SYMBOLS:<ft_table> TYPE STANDARD TABLE.
    ASSIGN lr_table->* TO <ft_table>.

    LOOP AT total ASSIGNING FIELD-SYMBOL(<total_line>).
      APPEND INITIAL LINE TO <ft_table> ASSIGNING FIELD-SYMBOL(<table_line>).
      "      <table_line> = <total_line>.
      DATA:total_line_string TYPE  string.
      total_line_string = <total_line>.
      cl_abap_container_utilities=>read_container_c(
      EXPORTING
        im_container          =  total_line_string
      IMPORTING
        ex_value           = <table_line>
      EXCEPTIONS
        illegal_parameter_type = 1
        OTHERS                 = 2
        ) .
      IF sy-subrc <> 0.
*     Implement suitable error handling here
      ENDIF.
    ENDLOOP.

    GET REFERENCE OF <ft_table> INTO table_ref.
  ENDMETHOD.

标签:cl,lo,ABAP,TYPE,abap,table,TOTAL,DATA,SM34
From: https://www.cnblogs.com/break-point/p/18135422

相关文章

  • 解决wpscan运行报错Could not find 'nokogiri' (>= 1.11.4, < 1.13.0) among 125 tota
    报错内容:/usr/lib/ruby/vendor_ruby/rubygems/specification.rb:1404:in`rescueinblockinactivate_dependencies':Couldnotfind'nokogiri'(>=1.11.4,<1.13.0)among125totalgem(s)(Gem::MissingSpecError)Checkedin'GEM_PATH=/roo......
  • 36. 关于 SAP ABAP OData 服务如何实现 Deep Insert 场景 - SAP 应用的标准行为
    有朋友在知乎上向我咨询:OData更新多表数据的时候,可以做多层级结构的entity吗?多层的时候etag怎么做?比如我要更新表1.2.3。分别是header级别以及子层级别以及子层的子层。调用元调用一次会把三层的数据都给我们。如果put不可以做,一般odata这种怎么做。请赐教。......
  • ABAP 读取EXCEL 文件内容,函数 TEXT_CONVERT_XLS_TO_SAP
    EXCEL内容:读取内容:代码:TYPES:BEGINOFITAB,   FL1(50) TYPEC,   FL2(50) TYPEC,   FL3(50) TYPEC,   FL4(50) TYPEC,   FL5(50) TYPEC,   FL6(50) TYPEC,ENDOFITAB.DATA:T_ITEMTYPETABLEOFI......
  • TotallySAF+Ubuntu简要配置
    一、配置环境1、虚拟机管理器:WMwareWorkstationPro17.02、虚拟机:22.04.1Ubuntu二、概述TotallySAFisacodethatestimatesthecosmologicalparametersconstraintsusingtheFisherformalism。简要来说就是使用Fisher矩阵来估计宇宙学参数约束的代码。出处来自Eucli......
  • 第16期 Double Commander 开源免费的Total Commander替代型【体验100款文件管理工具】
     体验背景:我们正在做一款文件版本管理软件,追光几何(追光几何),期待以最无感的方式,解决新一代工程师文件管理的问题,让大家有更多时间去做快乐和有成就感的事情。所以打算体验100款文件管理软件,来取长补短。真实1h体验DoubleCommander是一款开源的跨平台文件管理软件,灵感来源......
  • ABAP 简单ALV 按钮+隐藏和显示
    结果代码REPORT ZGUO_TEST.*调用数据表TABLES:SPFLI.*定义、申明变量TYPE-POOLS:SLIS.DATA:GT_FIELDCATTYPELVC_T_FCAT,GS_FIELDCATTYPELVC_S_FCAT,ITEMTYPEI,   LS_LAYOUT TYPELVC_S_LAYO,   GT_EVENT  TYPESLIS_T_EVENTWITHHEADER......
  • SAP HCM ABAP 数据选择期间与个人选择期
    个人选择期间:个人选择期间和0001中的各项条件共同作用确定逻辑数据库可以抓到符合条件的人员。对应的字段:PN-BEGPS  PN-ENDPS对应的屏幕字段:PNPBEGPSPNPENDPS 数据选择期间:对应的字段是pn-begda和pn-endda,用户在选择屏幕中输入了数据选择期间的相关数值后,之所以起到......
  • 问题解答:ABAP 关键字 ANY TABLE 的使用场合深入剖析
    本教程下面这篇讲述ABAP动态编程的文章,有朋友提问:127.答网友疑问:ABAPFunctionModule如何支持内表结构不确定的动态输入参数汪老师,我这边定义了一个ANYTABLE,但是报错,说是没有这个类型,我在SE38定义的时候也报错,只有用FIELD-symbols定义才不会报错,所以就很好奇为什......
  • 149. 如何在 SAPGUI 的 ABAP 报表里显示图片
    本教程前一篇步骤,我们学习了在SAPGUI里,将屏幕划分成若干个区域,每个区域分别放置GUI元素进行屏幕绘制的方法。148.使用SAPGUI的Docking控件将屏幕划分成若干子区域当时我们完成了一个例子,一个完整的屏幕,被划分成了左上,左下和右边三个区域,分别显示了三个TextEd......
  • ABAP PARAMETERS 功能及用法
    前言千篇一律,实用最要紧。PARAMETERS可用于文本输入,单选/复选框,与SELECT-OPTIONS不同的是,PARAMETERS只能用于单个输入。功能实例PARAMETERS:P_CARRIDTYPECDEFAULT'1',"DEFAULT默认值P_CONNIDTYPEMARA-MATNRMEMORYIDMAB,"'MEMORYID'将PARAMETERS存储在SAP......