SAP 创建动态内表

news2025/1/20 3:43:18

创建动态内表

一、根据表名创建内表
  1. 程序代码:

    "复杂方式
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
    PARAMETERS:p_tab TYPE string.
    SELECTION-SCREEN END OF BLOCK b1.
    
    DATA:lr_struct TYPE REF TO data,
         lr_table  TYPE REF TO data.
    FIELD-SYMBOLS:<fs_table>  TYPE ANY TABLE,
                  <fs_struct> TYPE any.
    "RTTS
    DATA(lo_struct) = CAST  cl_abap_structdescr( cl_abap_structdescr=>describe_by_name( p_tab ) ).
    DATA(lo_table) = cl_abap_tabledescr=>create( lo_struct ).
    "反射机制
    CREATE DATA lr_struct TYPE HANDLE lo_struct.
    CREATE DATA lr_table  TYPE HANDLE lo_table.
    "引用访问
    ASSIGN lr_struct->* TO <fs_struct>.
    ASSIGN lr_table->*  TO <fs_table>.
    
    "DATA(lv_where) =  'SPRAS EQ 1'.
    SELECT *
     FROM (p_tab)
     INTO TABLE @<fs_table>
       UP TO 10 ROWS.
    "WHERE (lv_where) .
    
    cl_demo_output=>display_data( <fs_table> ).
    
    “简单方式
    DATA:ref_table TYPE REF TO data.
    DATA:lv_where TYPE string.
    FIELD-SYMBOLS:<fs_table> TYPE ANY TABLE.
    
    PARAMETERS:p_tab TYPE dd02l-tabname OBLIGATORY DEFAULT 'TJ02T'.
    
    "创建表
    CREATE DATA ref_table TYPE TABLE OF (p_tab).
    ASSIGN ref_table->* TO <fs_table>.
    
    lv_where =  'SPRAS EQ 1'.
    SELECT *
     FROM (p_tab)
     INTO TABLE @<fs_table>
       UP TO 10 ROWS
    WHERE (lv_where) .
    
    cl_demo_output=>display_data( <fs_table> ).
    
  2. 展示结果:

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
    在这里插入图片描述

二、根据Fieldcat创建内表
  1. 程序代码:

    *&---------------------------------------------------------------------*
    *& Report ZDMEO_001
    *&---------------------------------------------------------------------*
    *&
    *&---------------------------------------------------------------------*
    REPORT zdmeo_001.
    
    *&------------------------------------------------*
    *                alv陪ボ
    *&------------------------------------------------*
    DATA: gt_fcat TYPE lvc_t_fcat,
          gs_fcat TYPE lvc_s_fcat.
    DATA: gt_layo TYPE lvc_s_layo.
    DATA: gt_table TYPE REF TO data.
    
    FIELD-SYMBOLS:<fs_tab> TYPE ANY TABLE.
    FIELD-SYMBOLS: <fs_table> TYPE STANDARD TABLE,
                   <fs_wa>    TYPE any,
                   <fs_field> TYPE any.
    
    PERFORM frm_set_fcat."设置Fieldcat
    PERFORM frm_create_dynamic_tab."创建动态内表
    PERFORM frm_set_data."设置值
    PERFORM frm_insert_fcat."插入Fieldcat
    ASSIGN <fs_table> TO <fs_tab>."将动态内表1的数据复制到内表2
    PERFORM frm_create_dynamic_tab."创建动态内表
    MOVE-CORRESPONDING <fs_tab> TO <fs_table>."将值赋值回来
    PERFORM frm_set_data.
    BREAK-POINT.
    "设置Fieldcat
    FORM frm_create_row USING pv_name TYPE c
                                 pv_row  TYPE i
                                 pv_txt  TYPE c
                                 pv_out  TYPE i
                                 pv_edit TYPE c
                                 pv_no_zero TYPE c
                                 pv_tabname TYPE c.
      gs_fcat-fieldname = pv_name.
      gs_fcat-col_pos   = pv_row.
      gs_fcat-coltext   = pv_txt.
      gs_fcat-outputlen = pv_out.
      gs_fcat-edit      = pv_edit.
      gs_fcat-no_zero = pv_no_zero.
      gs_fcat-tabname = pv_tabname.
      APPEND gs_fcat TO gt_fcat.
      CLEAR: gs_fcat.
    ENDFORM. " FRM_CREATE_ROW
    
    FORM frm_create_dynamic_tab .
    *&------承笆篈ず---------
      CALL METHOD cl_alv_table_create=>create_dynamic_table
        EXPORTING
          it_fieldcatalog           = gt_fcat
        IMPORTING
          ep_table                  = gt_table
        EXCEPTIONS
          generate_subpool_dir_full = 1
          OTHERS                    = 2.
      IF sy-subrc = 0.
        CASE sy-subrc.
          WHEN 1.
          WHEN 2.
          WHEN OTHERS.
        ENDCASE.
      ENDIF.
      ASSIGN gt_table->* TO <fs_table>.
    ENDFORM.
    
    FORM frm_set_fcat .
      PERFORM frm_create_row USING  'ZBOX' 1 '' '' '' '' ''.
      PERFORM frm_create_row USING  'PBDNR' 2 TEXT-006  '10' '' 'X' 'PBIM'."
      PERFORM frm_create_row USING  'BERID' 3 TEXT-005  '10' '' 'X' ''."
      PERFORM frm_create_row USING  'Z_CUSNO' 4 TEXT-039  '10' '' 'X' ''."
      PERFORM frm_create_row USING  'KDMAT' 5 TEXT-013  '35' '' 'X' 'KNMT'."
      PERFORM frm_create_row USING  'MATNR' 6 TEXT-014  '18' '' 'X' 'MAKT'."
      PERFORM frm_create_row USING  'MAKTX' 7 TEXT-032  '40' '' 'X' 'MAKT'."
      PERFORM frm_create_row USING  'PLNMG' 8 TEXT-030  '15' '' 'X' ''."
      PERFORM frm_create_row USING  'PDATU' 9 TEXT-031  '6' '' 'X' ''."
    ENDFORM.
    
    FORM frm_insert_fcat .
      PERFORM frm_create_row USING  'C_RESULT' 2 TEXT-008 '1' '' '' ''."
      PERFORM frm_create_row USING  'Z_SIGN' 3 TEXT-036 '20' '' '' ''."
      PERFORM frm_create_row USING  'C_MESSAGE' 4 TEXT-009 '40' '' '' ''."
    ENDFORM.
    *&---------------------------------------------------------------------*
    *& Form frm_set_data
    *&---------------------------------------------------------------------*
    *& text
    *&---------------------------------------------------------------------*
    *& -->  p1        text
    *& <--  p2        text
    *&---------------------------------------------------------------------*
    FORM frm_set_data .
      DATA: lv_line TYPE REF TO data.
      CREATE DATA lv_line LIKE LINE OF <fs_table>.
      ASSIGN lv_line->* TO <fs_wa>.
    
      "给字段赋值.
      ASSIGN COMPONENT 'PBDNR' OF STRUCTURE <fs_wa> TO <fs_field>.
      CLEAR <fs_field>.
      <fs_field> = '12394'.
    
      APPEND <fs_wa> TO <fs_table>.
      CLEAR <fs_wa>.
    ENDFORM.
    
  2. 执行结果:

    在这里插入图片描述

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

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

相关文章

【云原生系列】Docker学习

目录 一、Docker常用命令 1 基础命令 2 镜像命令 2.1 docker images 查看本地主机的所有镜像 2.2 docker search 搜索镜像 2.3 docker pull 镜像名[:tag] 下载镜像 2.4 docker rmi 删除镜像 2.5 docker build 构建镜像 3 容器命令 3.1 如拉取一个centos镜像 3.2 运行…

.env文件详解

.env配置文件 vue会根据 process.env.NODE_ENV 的值&#xff0c;自动加载对应的环境配置文件 .env 全局默认配置文件&#xff0c;在所有的环境中被载入;.env.production 生产环境文件 production;.env.development 开发环境文件 development&#xff1b;.env.test/.env.stagi…

从零开始完整实现-循环神经网络RNN

一 简介 使用 pytorch 搭建循环神经网络RNN&#xff0c;循环神经网络&#xff08;Recurrent Neural Network&#xff0c;RNN&#xff09;是一类用于 处理序列数据的神经网络架构。与传统神经网络不同&#xff0c;RNN 具有内部循环结构&#xff0c;可以在处理序列数据时保持状态…

MySQL基础篇:掌握数据库基本操作,轻松上手

查看和指定现有的数据库 mysql> show databases; -------------------- | Database | -------------------- | information_schema | | bjpowernode | | eladmin | | mysql | | performance_schema | | sqlalchemy | | s…

makefile之使用函数wildcard和patsubst

Makefile之调用函数 调用makefile机制实现的一些函数 $(function arguments) : function是函数名,arguments是该函数的参数 参数和函数名用空格或Tab分隔,如果有多个参数,之间用逗号隔开. wildcard函数:让通配符在makefile文件中使用有效果 $(wildcard pattern) 输入只有一个参…

Qt串口基本设置与协议收发

前言 1.一直都想要做一个Qt上位机&#xff0c;趁着这个周末有时间&#xff0c;动手写一下 2.comboBox没有点击的信号&#xff0c;所以做了一个触发的功能 3.Qt的数据类型很奇怪&#xff0c;转来转去的我也搞得很迷糊 4.给自己挖个坑&#xff0c;下一期做一个查看波形的上位…

Java输入-a,-b,geek,-c,888,-d,[hello,world]字符之后,如何将[hello,world]这个不分开

Java输入-a,-b,geek,-c,888,-d,[hello,world]字符之后&#xff0c;如何将[hello,world]这个不分开&#xff1f; 你可以使用命令行参数解析库来处理Java输入中的各个参数。在这种情况下&#xff0c;你可以使用Apache Commons CLI库来解析命令行参数。以下是一个示例代码片段&am…

MATLAB遗传算法求解生鲜货损制冷时间窗碳排放多成本车辆路径规划问题

MATLAB遗传算法求解生鲜货损制冷时间窗碳排放多成本车辆路径规划问题实例 1、问题描述 已知配送中心和需求门店的地理位置,并且已经获得各个门店的需求量。关于送货时间的要求,门店都有规定的时间窗,对于超过规定时间窗外的配送时间会产生相应的惩罚成本。为保持生鲜农产品的…

2023.09.10 学习周报

文章目录 摘要文献阅读1-1 题目1-2 创新点1-3 本文工作2-1 题目2-2 什么是图2-3 图神经网络2-4 信息传递3-1 题目3-2 创新点3-3 本文工作 深度学习1.GNN的构建步骤2.构建图的方法3.GNN的简单样例 总结 摘要 本周阅读了三篇文章&#xff0c;第一篇是基于物理信息深度学习和激光…

【LeetCode题目详解】第九章 动态规划part11 ● 123.买卖股票的最佳时机III ● 188.买卖股票的最佳时机IV (day50补)

本文章代码以c为例&#xff01; 一、力扣第123题&#xff1a;买卖股票的最佳时机 III 题目&#xff1a; 给定一个数组&#xff0c;它的第 i 个元素是一支给定的股票在第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。 注意&#xff1…

基于springboot+vue的在线课程学习网站(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

unity实现Perlin噪声

Perlin噪声目的是为了生成连续变化的随机值。这里推荐一个使用unity实现的perlin噪声插件&#xff0c;包含源码&#xff0c;源码下载地址&#xff1a;https://download.csdn.net/download/hulinhulin/88323641https://download.csdn.net/download/hulinhulin/88323641 插件界面…

vscode 下载安装

vscode 下载安装常用插件 vscode 官网&#xff1a; https://code.visualstudio.com/ 点击右上角 Download 进入下载选择页面 选择自己使用操作对应 CPU 架构 下载 本文使用 x86 架构 64位 windows 系统为例 跳转下载页面 自动 开始下载 下载不开始&#xff1f;试试这个直…

关于黑马hive课程案例FineBI中文乱码的解决

文章目录 问题描述情况一的解决情况二的解决 ETL数据清洗知识社交案例参考代码结果展示 问题描述 情况1&#xff1a;FineBI导入表名中文乱码&#xff0c;字段内容正常情况2&#xff1a;FineBI导入表字段中文乱码&#xff0c;表名内容正常 情况一的解决 使用navcat等工具连接…

第九章 Linux实际操作——Linux磁盘分区、挂载

第九章 Linux实际操作——Linux磁盘分区、挂载 9.1 Linux分区9.1.1原理介绍9.1.2 硬盘说明9.1.3 查看所有设备搭载情况 9.2 挂载的经典案例9.2.1 说明9.2.2 如何增加一块硬盘9.2.3 虚拟机增加硬盘步骤 9.3 磁盘情况查询9.3.1 查询系统整体磁盘使用情况9.3.2 查询指定目录的磁盘…

TypeScript对象类型

废话不多说&#xff0c;还是挑点有营养的讲。 对象类型 1、匿名对象 匿名对象类型是在定义变量时直接使用花括号{}&#xff0c;来定义一个对象类型。 const person: { name: string, age: number } { name: John, age: 25 }; 2、接口类型 使用接口来定义对象类型&#x…

二叉树的顺序结构以及堆的实现——【数据结构】

W...Y的主页 &#x1f60a; 代码仓库分享 &#x1f495; 上篇文章&#xff0c;我们认识了什么是树以及二叉树的基本内容、表示方法……接下来我们继续来深入二叉树&#xff0c;感受其中的魅力。 目录 二叉树的顺序结构 堆的概念及结构 堆的实现 堆的创建 堆的初始化与…

LeetCode(力扣)455. 分发饼干Python

LeetCode20. 有效的括号 题目链接代码 题目链接 https://leetcode.cn/problems/assign-cookies/ 代码 从大遍历 class Solution:def findContentChildren(self, g: List[int], s: List[int]) -> int:g.sort()s.sort()index len(s) - 1result 0for i in range(len(g) -…

老胡的周刊(第107期)

老胡的信息周刊[1]&#xff0c;记录这周我看到的有价值的信息&#xff0c;主要针对计算机领域&#xff0c;内容主题极大程度被我个人喜好主导。这个项目核心目的在于记录让自己有印象的信息做一个留存以及共享。 &#x1f3af; 项目 open-interpreter[2] 基于 LLM 为你提供一种…

车载软件架构——基础软件供应商开发工具链(一)

车载软件架构——基础软件供应商&开发工具链(一) 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 没有人关注你。也无需有人关注你。你必须承认自己的价值,你不能站在他人的角度来反对自己…