【原创】ABAP动态编程之功能实现

根据名字获取结构
DATA: STRUCTTYPE TYPE REF TO CL_ABAP_STRUCTDESCR.
STRUCTTYPE ?= CL_ABAP_TYPEDESCR=>DESCRIBE_BY_NAME( 'SPFLI' ).
根据变量获取结构
DATA: DATATYPE TYPE REF TO CL_ABAP_ELEMDESCR,W_CHAR TYPE CHAR5.
DATATYPE ?= CL_ABAP_TYPEDESCR=>DESCRIBE_BY_DATA( W_CHAR ).
自定义数值结构
DATA: ELEMTYPE TYPE REF TO CL_ABAP_ELEMDESCR.
ELEMTYPE ?= CL_ABAP_ELEMDESCR=>GET_I( ).
ELEMTYPE ?= CL_ABAP_ELEMDESCR=>GET_C( 20 ).
定义动态长度的字符串
DATA: W_C10 TYPE CHAR10 VALUE 'HB',W_C20 TYPE CHAR20,W_CNT TYPE I.
W_CNT = STRLEN( W_C10 ).DATA: DREF  TYPE REF TO DATA,CTYPE TYPE REF TO CL_ABAP_ELEMDESCR.
FIELD-SYMBOLS:<FS>.CTYPE = CL_ABAP_ELEMDESCR=>GET_C( W_CNT ).CREATE DATA DREF TYPE HANDLE CTYPE.
ASSIGN DREF->* TO <FS>.
*ASSIGN DREF->* TO <FS> CASTING TYPE HANDLE CTYPE.<FS> = W_C10(W_CNT).
CONCATENATE '***' <FS> '***' INTO W_C20 RESPECTING BLANKS.
WRITE W_C20.动态读取系统表数据
PARAMETERS P_NAME TYPE TABNAME.DATA: LR_STRUC  TYPE REF TO CL_ABAP_STRUCTDESCR,LR_DATA   TYPE REF TO CL_ABAP_DATADESCR,LR_TABLE  TYPE REF TO CL_ABAP_TABLEDESCR,DYN_TABLE TYPE REF TO DATA,DYN_WA    TYPE REF TO DATA.FIELD-SYMBOLS: <DYN_TABLE> TYPE STANDARD TABLE,<DYN_WA>    TYPE ANY.LR_STRUC ?= CL_ABAP_TYPEDESCR=>DESCRIBE_BY_NAME( P_NAME ).LR_TABLE ?= CL_ABAP_TABLEDESCR=>CREATE( P_LINE_TYPE = LR_STRUC ).*ASSIGN DYN_WA->*    TO <DYN_WA>    CASTING TYPE HANDLE LR_STRUC.
*ASSIGN DYN_TABLE->* TO <DYN_TABLE> CASTING TYPE HANDLE LR_TABLE.CREATE DATA DYN_WA    TYPE HANDLE LR_STRUC.
CREATE DATA DYN_TABLE TYPE HANDLE LR_TABLE.
ASSIGN DYN_WA->*    TO <DYN_WA>.
ASSIGN DYN_TABLE->* TO <DYN_TABLE>.SELECT * INTO CORRESPONDING FIELDS OF TABLE <DYN_TABLE>UP TO 100 ROWSFROM (P_NAME).*CALL METHOD LR_TABLE->GET_TABLE_LINE_TYPE
*  RECEIVING
*    P_DESCR_REF = LR_DATA
*    .CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'EXPORTINGI_STRUCTURE_NAME = P_NAMETABLEST_OUTTAB         = <DYN_TABLE>EXCEPTIONSPROGRAM_ERROR    = 1OTHERS           = 2.
IF SY-SUBRC <> 0.MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgnoWITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.动态定义表结构
TYPES:BEGIN OF TYP_PERSON,NAME TYPE CHAR10,SEX  TYPE CHAR1,AGE  TYPE I,END OF TYP_PERSON.DATA: ST_PERSON TYPE TYP_PERSON,TR_TABLE  TYPE REF TO CL_ABAP_TABLEDESCR,TR_STRUCT TYPE REF TO CL_ABAP_STRUCTDESCR,TR_TYPE   TYPE REF TO CL_ABAP_TYPEDESCR,FS_TABLE  TYPE REF TO DATA,FS_STRUCT TYPE REF TO DATA,TD_COMP   TYPE CL_ABAP_STRUCTDESCR=>COMPONENT_TABLE,TH_COMP   LIKE LINE OF TD_COMP.FIELD-SYMBOLS:<FS_TABLE>  TYPE STANDARD TABLE,<FS_STRUCT> TYPE ANY.TR_STRUCT ?= CL_ABAP_STRUCTDESCR=>DESCRIBE_BY_DATA( ST_PERSON ).
TD_COMP = TR_STRUCT->GET_COMPONENTS( ).CALL METHOD CL_ABAP_STRUCTDESCR=>CREATEEXPORTINGP_COMPONENTS = TD_COMP
*    P_STRICT     = TRUE
  RECEIVINGP_RESULT     = TR_STRUCT.CALL METHOD CL_ABAP_TABLEDESCR=>CREATEEXPORTINGP_LINE_TYPE  = TR_STRUCTRECEIVINGP_RESULT     = TR_TABLE.CREATE DATA FS_STRUCT TYPE HANDLE TR_STRUCT.
CREATE DATA FS_TABLE  TYPE HANDLE TR_TABLE.
ASSIGN FS_STRUCT->* TO <FS_STRUCT>.
ASSIGN FS_TABLE->*  TO <FS_TABLE>.动态读取表结构
TYPES:BEGIN OF TYP_PERSON,NAME TYPE CHAR10,SEX  TYPE CHAR1,AGE  TYPE I,END OF TYP_PERSON.DATA: TH_PERSON TYPE TYP_PERSON,TD_PERSON TYPE TABLE OF TYP_PERSON.PERFORM FRM_SWAP_TABLE  TABLES TD_PERSON.
*&---------------------------------------------------------------------*
*&      Form  FRM_SWAP_TABLE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->PTD_PERSON  text
*----------------------------------------------------------------------*
FORM FRM_SWAP_TABLE  TABLES   PTD_PERSON.
DATA: FS_TABLE  TYPE REF TO DATA,FS_STRUCT TYPE REF TO DATA,TR_TABLE  TYPE REF TO CL_ABAP_TABLEDESCR,TR_STRUCT  TYPE REF TO CL_ABAP_STRUCTDESCR,TR_TYPE   TYPE REF TO CL_ABAP_TYPEDESCR.FIELD-SYMBOLS:<FS_TABLE>  TYPE STANDARD TABLE,<FS_STRUCT> TYPE ANY.TR_STRUCT ?=CL_ABAP_TABLEDESCR=>DESCRIBE_BY_DATA( P_DATA = PTD_PERSON ).CREATE DATA FS_STRUCT TYPE HANDLE TR_STRUCT.
ASSIGN FS_STRUCT->* TO <FS_STRUCT>.
CREATE DATA FS_TABLE  LIKE TABLE OF <FS_STRUCT>.
ASSIGN FS_TABLE->*  TO <FS_TABLE>.ENDFORM.                    " FRM_SWAP_TABLE

转载于:https://www.cnblogs.com/loveplxf/archive/2012/08/15/2640767.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/274664.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【逃离一线】被裁后的面经与感慨

大家好&#xff0c;我是若川。持续组织了8个月源码共读活动&#xff0c;感兴趣的可以 点此加我微信ruochuan12 参与&#xff0c;每周大家一起学习200行左右的源码&#xff0c;共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。历史面试系列。另外…

document.body.scrollTop以及一些备忘

网页可见区域宽&#xff1a;document.body.clientWidth; 网页可见区域高&#xff1a; document.body.clientHeight; 网页可见区域宽&#xff1a; document.body.offsetWidth (包括边线的宽); 网页可见区域高&#xff1a; document.body.offsetHeight (包括边线的宽); 网页正文全…

使命召唤ios_使命召唤的精巧UI:战地

使命召唤iosWith over 50 million players worldwide it’s safe to say Warzone has become a global sensation. Featuring cross-platform play, multiple game modes, customisation and wealth of features too long to mention here — it’s captured its audience and …

深入浅出 package.json,目测大多数人不了解它

大家好&#xff0c;我是若川。持续组织了8个月源码共读活动&#xff0c;感兴趣的可以 点此加我微信ruochuan12 参与&#xff0c;每周大家一起学习200行左右的源码&#xff0c;共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。历史面试系列。另外…

图片旋转代码

http://code.google.com/p/jqueryrotate/wiki/Examples转载于:https://www.cnblogs.com/booth/archive/2012/08/16/2642163.html

鲸鱼网络连接_登陆鲸鱼:在网络上读书,第1部分

鲸鱼网络连接I don’t know when it was I started using the text of Moby Dick in my workshops and talks. Likely it dates back to some of my earliest explorations of web typography. Since it’s out of copyright, it’s one those texts you can find online in va…

2022年值得使用的 Node.js 框架

大家好&#xff0c;我是若川。持续组织了8个月源码共读活动&#xff0c;感兴趣的可以 点此加我微信ruochuan12 参与&#xff0c;每周大家一起学习200行左右的源码&#xff0c;共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。历史面试系列。另外…

更改apk安装包对android系统等级要求

此篇文章解决的为问题: █问题1.系统等级与apk等级不匹配. █问题2.更改api等级后的签名问题. 1.工具准备: 解压缩tool.zip文件夹: 2.开始反编译apk安装包 3.切换目录到tool目录下: 4.反编译: apktool.bat d 待编译apk目录名 存放编译后的文件目录 apktool.bat d Onenote_v14.…

推荐一个前端技术选型神器!真好用~

大家好&#xff0c;我是若川。持续组织了8个月源码共读活动&#xff0c;感兴趣的可以 点此加我微信ruochuan12 参与&#xff0c;每周大家一起学习200行左右的源码&#xff0c;共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。历史面试系列。另外…

静态原型设计 加载中_见解1:原型设计有助于填补静态设计留下的空白。

静态原型设计 加载中In April 2015, I joined the Disney Parks creative team to design mobile experiences for the happiest place on Earth. I learned a lot from a diverse group of humble, creative, and smart people.2015年4月&#xff0c;我加入了迪士尼公园创意团…

tar 压缩与解压缩打包命令

tar [-cxtzjvfpPN] 文件与目录 参数&#xff1a; -c :建立压缩文件的参数命令&#xff08;creat的意思&#xff09; -x :解压缩文件的参数命令 -t :查看tar包里文件的命令特别注意&#xff0c;在使用参数时,c/x/t只能有一个&#xff0c;不能同时存在 因为不可能同时压缩与解压缩…

最优资产组合步骤_重新设计投资组合网站之前,请按照以下5个步骤进行操作

最优资产组合步骤The portfolio website is one of the most important assets for a designer. Without it, it can be tough to find your next job or client.作品集网站是设计师最重要的资产之一。 没有它&#xff0c;很难找到下一份工作或客户。 The temptation is high …

裁员潮之下,13次面试拿下字节前端岗offer!

|前言很多粉丝私信&#xff0c;这两个月求职没有往年那么好跳&#xff0c;还有不少粉丝已经收到公司的“优化”通知下面分享一位粉丝的最近的面试经历&#xff0c;在疫情裁员潮的环境下&#xff0c;经历了成长、膨胀、闭关打磨等一系列的跌宕起伏&#xff0c;最终拿下字节总包5…

hdu 1754/zstu 3121 I Hate It(线段树)

http://acm.hdu.edu.cn/showproblem.php?pid1754 http://acm.zstu.edu.cn:8080/JudgeOnline/showproblem?problem_id3121 &#xff08;1&#xff09;线段树的基本操作&#xff1a;建树&#xff0c;查询&#xff0c;更新。 &#xff08;2&#xff09;重新写一遍时&#xff0c;…

sketch放入app组件_使用Sketch App设计CSS网格

sketch放入app组件首先定义您的网格 (Start by defining your grid) Sketch has 2 built-in layout features — Layout and Grid. In most cases, layout is a great way to organize content on a typical website utilizing a 12 column grid. However for this exercise we…

鲜为人知的CSS实用技巧

大家好&#xff0c;我是若川。持续组织了8个月源码共读活动&#xff0c;感兴趣的可以 点此加我微信ruochuan12 参与&#xff0c;每周大家一起学习200行左右的源码&#xff0c;共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。历史面试系列。另外…

猎鹰spacex_我如何重新创建SpaceX仪表板UI

猎鹰spacexA couple of weeks ago, SpaceX Crew Dragon launched from Kennedy Space Center to transport astronauts Robert L. Behnken and Douglas G. Hurley to the ISS. Lots of things were revolutionary about this launch, but the one that caught my attention was…

Base64 编码原来这么简单

大家好&#xff0c;我是若川。持续组织了8个月源码共读活动&#xff0c;感兴趣的可以 点此加我微信ruochuan12 参与&#xff0c;每周大家一起学习200行左右的源码&#xff0c;共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。历史面试系列。另外…

spring事物 设计模式_是什么使事物变得美丽,以及如何在设计中使用它

spring事物 设计模式What do you think about the phrase “beautiful design”? You like it, don’t care or does it make you wince?w ^帽子你想想那句“美丽的设计”&#xff1f; 您喜欢它&#xff0c;不在乎还是让自己畏缩了&#xff1f; For many, “beautiful” is …

直接插入排序(Straight Insertion Sort)

将一个数组,按当前元素的大小,插入到前面已经排好序的数据中的适当位置中,依次直到全入插入完全.下面是一个数组在经过插入排序时的变化情况(t表次数times)Init---{7, 4, 3, 2, 5, 6, 1} 初始t1----{4, 7, 3, 2, 5, 6, 1} 将第1个元素按其大小插到前面排好序的数列的相应位置…