ABAP高效率批量修改内表的数据

DATA  BEGIN  OF hah ,
         flag  TYPE  c ,
         sex   TYPE  c ,
        END  OF hah .
DATA it_hah  LIKE  TABLE  OF hah .
CLEAR hah .
hah -flag  'X' .
hah -sex  'f' .
APPEND hah  TO  it_hah .
CLEAR hah .
hah -sex  'm' .
APPEND hah  TO  it_hah .
CLEAR hah .
hah -sex  'm' .
APPEND hah  TO  it_hah .
CLEAR hah .
hah -sex  'm' .
APPEND hah  TO  it_hah .
LOOP  AT it_hah  INTO hah .
   WRITE  :/ hah -flag , ' ' ,hah -sex .

ENDLOOP.

这个结果是:


现在,我要把凡是flag没有值的,都赋值为'x’,

第一种办法:

 DATA : BEGIN OF hah,
        flag TYPE c,
        sex TYPE c,
       END OF hah.
DATA it_hah like TABLE OF hah.
CLEAR hah.
hah-flag = 'X'.
hah-sex = 'f'.
APPEND hah to  it_hah.
CLEAR hah.
hah-sex = 'm'.
APPEND hah to  it_hah.
CLEAR hah.
hah-sex = 'm'.
APPEND hah to  it_hah.
CLEAR hah.
hah-sex = 'm'.
APPEND hah to  it_hah.

*****************这里**************
LOOP AT it_hah INTO hah.
  IF hah-flag is INITIAL.
    hah-flag = 'x'.
  ENDIF.
  MODIFY it_hah FROM hah.
ENDLOOP.

************************************


LOOP AT it_hah INTO hah.
  WRITE :/ hah-flag,' ',hah-sex.
ENDLOOP.

 

这种办法效率不够高,采用第二种办法的话,效率会高一点:

 DATA : BEGIN OF hah,
        flag TYPE c,
        sex TYPE c,
       END OF hah.
DATA it_hah like TABLE OF hah.
CLEAR hah.
hah-flag = 'X'.
hah-sex = 'f'.
APPEND hah to  it_hah.
CLEAR hah.
hah-sex = 'm'.
APPEND hah to  it_hah.
CLEAR hah.
hah-sex = 'm'.
APPEND hah to  it_hah.
CLEAR hah.
hah-sex = 'm'.
APPEND hah to  it_hah.
*****************这里***************

hah-flag = 'x'.
MODIFY it_hah FROM hah TRANSPORTING flag WHERE flag is INITIAL.

****************************
LOOP AT it_hah INTO hah.
  WRITE :/ hah-flag,' ',hah-sex.
ENDLOOP.

 

明显第二种效率会高于第一种。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 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
发出的红包

打赏作者

ChampaignWolf

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

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

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

打赏作者

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

抵扣说明:

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

余额充值