根据条件插入数据库表

2020-08-18 10:23发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨!
我有一个选择屏幕,插入到DB表中。 它有两个选项-输入带有开始时间的条目,然后输入带有结束时间的条目。 是否可以创建一种逻辑,当某人创建一个具有结束时间的条目时,它将插入到开始时间的同一表行中,而只是结束时间?
我需要将其插入到最后一个输入X表中的y = y(两个条目中的一个字段都必须为eq)。
然后定义要在何处插入哪些字段。

也许有人知道如何实现?

谢谢!

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨!
我有一个选择屏幕,插入到DB表中。 它有两个选项-输入带有开始时间的条目,然后输入带有结束时间的条目。 是否可以创建一种逻辑,当某人创建一个具有结束时间的条目时,它将插入到开始时间的同一表行中,而只是结束时间?
我需要将其插入到最后一个输入X表中的y = y(两个条目中的一个字段都必须为eq)。
然后定义要在何处插入哪些字段。

也许有人知道如何实现?

谢谢!

付费偷看设置
发送
6条回答
大道至简
1楼 · 2020-08-18 10:38.采纳回答

您好用户c

也许是这样吗?

参数:p_y 类型为char10强制性。
 参数:p_start TYPE数据。
 参数:p_end TYPE数据。

 选择开始。
   执行run_report。
   提交工作并等待。

 FORM run_report。
   如果p_start是INITIAL并且p_end是INITIAL。
     写:/'请提供开始或结束日期'。
     返回。  " 没事做
   万一。

   选择 *
     从ztable
     哪里y = @p_y
     ORDER BY record_count DESC"我假设有一些记录计数列
     INTO @DATA(ls_ztable)
     最多1行。
   如果sy-subrc = 0。
     如果p_start不是INITIAL。
       如果ls_ztable-end_date是INITIAL。
         写:/"您应提供最后一条记录的结束日期"。
         返回。
       其他。
         最后一条记录已关闭
         使用ls_ztable-record_count执行create_record。
       万一。

       返回。
     万一。

     如果p_end不是INITIAL。
       如果ls_ztable-end_date不是INITIAL。
         写:/'上一个记录已关闭。 创建一个新的。
         返回。
       其他。
         ls_ztable-end_date = p_end。
         从ls_ztable修改ztable。
       万一。
     万一。
   其他。
     "找不到最后的记录
     创建新的,但只有在提供开始日期的情况下
     如果p_start不是INITIAL。
       使用0执行PERFORM create_record。
     其他。
       写:/'没有找到最后的记录'。
     万一。
   万一。
 ENDFORM。

 使用iv_record_count类型TYPE FORM create_record。
   数据:
     ls_ztable TYPE ztable。

   检查p_start是否不初始化。

   ls_ztable-y = p_y。
   ls_ztable-record_count = iv_record_count + 1。
   ls_ztable-start_date = p_start。
   从ls_ztable插入到ztable中。
 ENDFORM。

我的假设是表中有一些记录计数键列。

我可以是简单的整数列,数字或日期。 您必须先看一下并分别修改代码。

注意,

Mateusz

2楼-- · 2020-08-18 10:50

在关系数据库中没有顺序的概念。 因此,除非您将其内置,否则就没有"最后一个条目"。

Nir深蓝
3楼-- · 2020-08-18 10:30

从ABAP版本7.52开始(在S/4HANA OP 1709中也是如此),有一种非常简单的方法可以在单个OpenSQL语句中执行此操作。/p>

从7.50开始,您可以将子查询用作OpenSQL中INSERT语句的数据源:
https://help.sap.com/doc/abapdocu_750_index_htm/7.50/en-US/abennews-750-open_sql.htm#!ABAP_MODIFICATION_8 @ 8 @
从7.52开始,您可以在子查询中使用ORDER BY子句和UP TO加法: https://help.sap.com/doc/abapdocu_752_index_htm/7.52/zh-CN/abennews-752-open_sql.htm #!ABAP_MODIFICATION_6 @ 6 @

这两项更改完全可以满足您的需求-无需将记录从数据库传输到应用程序服务器,也无需将记录传输回。

吹牛啤
4楼-- · 2020-08-18 10:49

用户c

我可以理解,您正在尝试记录更改,但无法获得完整的业务要求,如果可以帮助我们举例说明, 会更好地提出解决方案。

悻福寶寶
5楼-- · 2020-08-18 10:35

非常感谢!

Bunny_CDM
6楼-- · 2020-08-18 10:53

谢谢!

一周热门 更多>