小编fou*_*rio的帖子

使用cl_salv_table显示数据时发生意外的数据库提交

在ABAP程序中,使用class显示本地表时,我注意到数据的意外持久性cl_salv_table

为了重现,我创建了一个最小的代码示例。该程序进行插入,在ALV中显示数据,然后执行ROLLBACK WORK。我希望插入的值在回滚之前存在于数据库中,而在回滚之后不存在。

但是,如果在插入和回滚之间显示ALV网格,则数据将保留在回滚之后,并立即对其他事务可见。

这是预期的行为吗?如果是,该如何避免呢?我们确实经常使用此类,并且看起来当我们实际上不想要时,可能会无意间将值提交给数据库。


这是代码:

*&---------------------------------------------------------------------*
*& Report  zok_alv_commit
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zok_alv_commit.

SELECTION-SCREEN BEGIN OF BLOCK b1.

PARAMETERS: p_showtb TYPE boolean AS CHECKBOX DEFAULT abap_false.

SELECTION-SCREEN END OF BLOCK b1.

START-OF-SELECTION.

  DATA: lt_table TYPE TABLE OF zok_alv,
        ls_table TYPE zok_alv.

  """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  " Create new GUID and insert into table
  """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  TRY.
      ls_table-guid = cl_system_uuid=>create_uuid_c22_static( ).
    CATCH cx_uuid_error.
      " Error creating UUID
      MESSAGE e836(/basf/dps3_apodata).
  ENDTRY.
  WRITE: |Create guid { ls_table-guid } |, …
Run Code Online (Sandbox Code Playgroud)

sap abap alv

4
推荐指数
1
解决办法
183
查看次数

一次对多个整数应用按位运算符

我有一个整数列表,可以有任意数量的项目。现在,我想计算所有这些数字的 BITWISE XOR。如果数字已经知道,可以按如下方式完成:

int xor = 10 ^ 25 ^ 40 ^ 55......and so on
Run Code Online (Sandbox Code Playgroud)

但是当元素数量未知时,我无法在运行时为列表的每个元素动态实现它。我想一次对所有时间应用按位异或,而不是一次两个。

c# bit-manipulation bitwise-operators bitwise-xor

1
推荐指数
1
解决办法
280
查看次数

标签 统计

abap ×1

alv ×1

bit-manipulation ×1

bitwise-operators ×1

bitwise-xor ×1

c# ×1

sap ×1