SAP ABAP 动态字段赋值

最近优化了很多老程序,代码很冗余,特别是财务的有很多有规则的字段以及月份计算。 通常的来可能会写一个form 来把通用的放在一起,然后通过传值来实现只用一个字段变量来达到动态的目的,但是这个有一个弊端,就是外层还是要把所有字段全部列出来,比如FAGFLEXT 表里的月份字段,12个都要列出来。
为了更简单易懂,删除掉冗余的东西,还是要来点真正的动态。这里用到了指针。来举个具体的例子。

用这段的背景是,我做了QM质检一系列的,有整机档案,检验批,质量通知单, 还有一个汇总的程序,因为要求实时获取,所以当运行汇总程序时会抓取另外三个程序的数据过来,然后在ALV中实现穿透,如果穿透的时候再去调用程序就会太慢了,所以就要把抓取过来的数据存起来,然后根据月份去分类,这时就有个规律了,1-12月,字段也是有规则的。

首先定义好变量用来装字段名 ,然后定义一个指针。

    DATA:
  fieldname1 TYPE string,   " 定义变量用于保存字段名
  fieldname2 TYPE string,   " 定义变量用于保存字段名
  fieldname3 TYPE string.   " 定义变量用于保存字段名
FIELD-SYMBOLS:
  <dyn_field_c1> TYPE any,
  <dyn_field_c2> TYPE any,
  <dyn_field_c3> TYPE any.

    DO 12 TIMES.

      lv_num3 = lv_num3 + 1.  &
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
ABAP是一种编程语言,用于SAP系统中的应用程序开发。在ABAP中,动态内表是一种特殊类型的内表,它允许在运行时动态地添加、删除和修改表格的行和列。动态内表是通过使用ABAP内部表类型"ANY TABLE"来实现的。 要处理动态内表数据,您可以按照以下步骤进行操作: 1. 定义动态内表:使用内部表类型"ANY TABLE"来定义动态内表。例如: DATA: dynamic_table TYPE STANDARD TABLE OF ANY. 2. 创建动态行结构:定义一个结构体,用于描述动态内表中的行。这个结构体可以包含任意数量和类型的字段。例如: DATA: dynamic_row TYPE REF TO data, dynamic_row_structure TYPE STANDARD TABLE OF string. 3. 添加行到动态内表:使用CREATE DATA语句来创建动态行,并将其添加到动态内表中。例如: CREATE DATA dynamic_row TYPE HANDLE dynamic_row_structure. ASSIGN dynamic_row->* TO <dynamic_row>. APPEND <dynamic_row> TO dynamic_table. 4. 访问动态内表数据:使用ASSIGN语句将动态行的字段赋值变量,并对其进行操作。例如: FIELD-SYMBOLS: <field> TYPE any. ASSIGN COMPONENT 'FIELD_NAME' OF STRUCTURE <dynamic_row> TO <field>. IF sy-subrc = 0. <field> = 'VALUE'. ENDIF. 5. 删除动态内表行:使用DELETE语句从动态内表中删除行。例如: DELETE dynamic_table INDEX i. 6. 修改动态内表行:使用MODIFY语句修改动态内表中的行。例如: MODIFY dynamic_table INDEX i FROM <dynamic_row>. 以上是处理ABAP动态内表数据的基本步骤。根据您具体的需求,您可以进一步扩展和优化这些步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

abap帅哥

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

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

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

打赏作者

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

抵扣说明:

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

余额充值