在表控件中保存多个条目

2020-08-17 11:20发布

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

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


嗨,我能够为表控件及其ztable创建并保存一个条目。 当前我正在尝试将多个条目保存到表控件和ztable中。我能够为一个新记录输入多个条目,但是按保存按钮只能保存一个记录(第一条记录)。

我正确处理表格控制逻辑吗?

将GT_ZEKPO的LOOP放入GWA_ZEKPO。

           GWA_ZEKPO-EBELN = GWA_ZEKKO-EBELN。

           从GWA_ZEKPO索引SY-TABIX修改GT_ZEKPO。

         结局。

         从表GT_ZEKPO插入ZEKPO_03接受重复的键。

在屏幕代码中

输入后处理。

  环行GT_ZEKPO。
  模块修改。
  模块插入。
  结局。

  模组USER_COMMAND_9002。

表控制逻辑:

将GT_ZEKPO的LOOP放入GWA_ZEKPO。

           GWA_ZEKPO-EBELN = GWA_ZEKKO-EBELN。

           从GWA_ZEKPO索引SY-TABIX修改GT_ZEKPO。

         结局。

         从表GT_ZEKPO插入ZEKPO_03接受重复的键。



 *&------------------------------------------------  --------------------- *
 *&模块修改输入
 *&------------------------------------------------  --------------------- *
 *文字
 * -------------------------------------------------  --------------------- *
 模块修改输入。
  将表GT_ZEKPO读入GWA_ZEKPO INDEX TC_ZEKPO-CURRENT_LINE。

  如果标记不是初始的。
  GWA_ZEKPO-ZMARK ='X'。
  从ZEKPO_03 INDEX TC_ZEKPO-CURRENT_LINE修改GT_ZEKPO。

  万一。
 ENDMODULE。

 *&------------------------------------------------  --------------------- *
 *&模块INSERT INPUT
 *&------------------------------------------------  --------------------- *
 *文字
 * -------------------------------------------------  --------------------- *
 模块插入输入。

  如果SY-SUBRC NE 0。
  将GWA_ZEKPO附加到GT_ZEKPO。
  万一。

 ENDMODULE。

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

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


嗨,我能够为表控件及其ztable创建并保存一个条目。 当前我正在尝试将多个条目保存到表控件和ztable中。我能够为一个新记录输入多个条目,但是按保存按钮只能保存一个记录(第一条记录)。

我正确处理表格控制逻辑吗?

将GT_ZEKPO的LOOP放入GWA_ZEKPO。

           GWA_ZEKPO-EBELN = GWA_ZEKKO-EBELN。

           从GWA_ZEKPO索引SY-TABIX修改GT_ZEKPO。

         结局。

         从表GT_ZEKPO插入ZEKPO_03接受重复的键。

在屏幕代码中

输入后处理。

  环行GT_ZEKPO。
  模块修改。
  模块插入。
  结局。

  模组USER_COMMAND_9002。

表控制逻辑:

将GT_ZEKPO的LOOP放入GWA_ZEKPO。

           GWA_ZEKPO-EBELN = GWA_ZEKKO-EBELN。

           从GWA_ZEKPO索引SY-TABIX修改GT_ZEKPO。

         结局。

         从表GT_ZEKPO插入ZEKPO_03接受重复的键。



 *&------------------------------------------------  --------------------- *
 *&模块修改输入
 *&------------------------------------------------  --------------------- *
 *文字
 * -------------------------------------------------  --------------------- *
 模块修改输入。
  将表GT_ZEKPO读入GWA_ZEKPO INDEX TC_ZEKPO-CURRENT_LINE。

  如果标记不是初始的。
  GWA_ZEKPO-ZMARK ='X'。
  从ZEKPO_03 INDEX TC_ZEKPO-CURRENT_LINE修改GT_ZEKPO。

  万一。
 ENDMODULE。

 *&------------------------------------------------  --------------------- *
 *&模块INSERT INPUT
 *&------------------------------------------------  --------------------- *
 *文字
 * -------------------------------------------------  --------------------- *
 模块插入输入。

  如果SY-SUBRC NE 0。
  将GWA_ZEKPO附加到GT_ZEKPO。
  万一。

 ENDMODULE。
付费偷看设置
发送
6条回答
Nir深蓝
1楼-- · 2020-08-17 11:46

亲爱的A.S。

您要确保ebelp也在内部表中填充,如下所示:

将循环从GT_ZEKPO放入GWA_ZEKPO。
           GWA_ZEKPO-EBELN = GWA_ZEKKO-EBELN。
           GWA_ZEKPO-EBELP = SY-TABIX。  <====添加此行
           从GWA_ZEKPO索引SY-TABIX修改GT_ZEKPO。
         结局。

         从表GT_ZEKPO插入ZEKPO_03接受重复的密钥。 在向社区发布问题之前进行搜索,并完成本教程链接 https://developers.sap.com/tutorials/community-qa  .html 谢谢。

愤怒的猪头君
2楼-- · 2020-08-17 12:10

您好,AS

我相信您是使用带有"插入和删除"按钮的向导创建表控件的。

因此,您无需为将数据从表控件插入内部表而多带带编写,该操作已经存在。 当您按Ins并添加条目时-这将在内部表中显示。

因此,您只需要在按下保存按钮

葫芦娃快救爷爷
3楼-- · 2020-08-17 11:48
时调用插入语句即可。  *&------------------------------------------------  --------------------- *
 *&包括MZDLGPROG_03_REPORTO01
 *&------------------------------------------------  --------------------- *

 *&------------------------------------------------  --------------------- *
 *&模块STATUS_9001输出
 *&------------------------------------------------  --------------------- *
 *&
 *&------------------------------------------------  --------------------- *
 模组STATUS_9001输出。
   设置PF-STATUS'ZSTATUS'。
   设置标题栏" ZTITLE"。
 ENDMODULE。


 *&------------------------------------------------  --------------------- *
 *&模块FETCH_DATA OUTPUT
 *&------------------------------------------------  --------------------- *
 *&
 *&------------------------------------------------  --------------------- *
 模块FETCH_DATA输出。
   从ZEKKO_03中选择EBELN LIFNR EKORG EKGRP BUKRS WAERS ZTERM ZDESC
 表GT_ZEKKO的对应字段
 EBELN在哪里= GWA_ZEKKO-EBELN。

   从ZEKKO_03中选择单个埃伯恩·莱弗特·埃科格·埃格普·布克尔·华兹·泽特斯
     GWA_ZEKKO的对应字段
     EBELN在哪里= GWA_ZEKKO-EBELN。

   将表GT_ZEKKO读入GWA_ZEKKO INDEX SY-TABIX。

   选择EBELP MATNR WERKS LGORT MENGE MEINS
     ZEKPO_03中表GT_ZEKPO的对应字段
      EBELN在哪里= GWA_ZEKKO-EBELN。

   描述表gt_zekpo行tc_zekpo行。

 ENDMODULE。

 *&------------------------------------------------  --------------------- *
 *&模块操作输出
 *&------------------------------------------------  --------------------- *
 *&
 *&------------------------------------------------  --------------------- *
 模块操作输出。

   情况为OK_CODE。

     当"编辑"。

       GV_EDIT ='X'。
       GV_CREATE =''。
       环视屏幕。

         ""标题
         如果SCREEN-NAME ='GWA_ZEKKO-EBELN'。
           屏幕输入= 1。

           修改屏幕。
         万一。


         如果SCREEN-NAME ='GWA_ZEKKO-EKGRP'。
           屏幕输入= 1。

           修改屏幕。
         万一。

         如果SCREEN-NAME ='GWA_ZEKKO-EKORG'。
           屏幕输入= 1。
           修改屏幕。
         万一。

         如果SCREEN-NAME ='GWA_ZEKKO-BUKRS'。
           屏幕输入= 1。
           修改屏幕。
         万一。

         如果SCREEN-NAME ='GWA_ZEKKO-LIFNR'。
           屏幕输入= 1。
           修改屏幕。
         万一。

         如果SCREEN-NAME ='GWA_ZEKKO-WAERS'。
           屏幕输入= 1。
           修改屏幕。
         万一。

         如果SCREEN-NAME ='GWA_ZEKKO-ZTERM'。
           屏幕输入= 1。
           修改屏幕。
         万一。

         如果SCREEN-NAME ='GWA_ZEKKO-ZDESC'。
           屏幕输入= 1。
           修改屏幕。
         万一。


       结局。

       环视屏幕。
         """订单项
         IF(SCREEN-GROUP1 ='GRP')。
           屏幕输入= 1。

         万一。
         修改屏幕。

       结局。



     当"创建"时。

       GV_CREATE ='X'。
       GV_EDIT =''。
       环视屏幕。

         ""标题
         如果SCREEN-NAME ='GWA_ZEKKO-EKGRP'。
           屏幕输入= 1。

           修改屏幕。
         万一。

         如果SCREEN-NAME ='GWA_ZEKKO-EKORG'。
           屏幕输入= 1。
           修改屏幕。
         万一。

         如果SCREEN-NAME ='GWA_ZEKKO-BUKRS'。
           屏幕输入= 1。
           修改屏幕。
         万一。

         如果SCREEN-NAME ='GWA_ZEKKO-LIFNR'。
           屏幕输入= 1。
           修改屏幕。
         万一。

         如果SCREEN-NAME ='GWA_ZEKKO-WAERS'。
           屏幕输入= 1。
           修改屏幕。
         万一。

         如果SCREEN-NAME ='GWA_ZEKKO-ZTERM'。
           屏幕输入= 1。
           修改屏幕。
         万一。

         如果SCREEN-NAME ='GWA_ZEKKO-ZDESC'。
           屏幕输入= 1。
           修改屏幕。
         万一。


       结局。

       环视屏幕。
         """订单项
         IF(SCREEN-GROUP1 ='GRP')。
           屏幕输入= 1。

         万一。
         修改屏幕。

       结局。

   结束。


 ENDMODULE。


 *&------------------------------------------------  --------------------- *
 *&模块STATUS_9002 OUTPUT
 *&------------------------------------------------  --------------------- *
 *&
 *&------------------------------------------------  --------------------- *
 MODULE STATUS_9002 OUTPUT。
   设置PF-STATUS'ZSTATUS'。
   设置标题栏" ZTITLE1"。

 ENDMODULE。



 *&------------------------------------------------  --------------------- *
 *&包括MZDLGPROG_03_REPORTI01
 *&------------------------------------------------  --------------------- *
 *&------------------------------------------------  --------------------- *
 *&模块USER_COMMAND_9002 INPUT
 *&------------------------------------------------  --------------------- *
 *文字
 * -------------------------------------------------  --------------------- *
 模组USER_COMMAND_9002输入。
   设置PF-STATUS'ZSTATUS'。
   设置标题栏" ZTITLE1"。


   情况为OK_CODE。
     当"返回"或"取消"时。
       设置屏幕0。
       离开屏幕0。

     当" DEL"。
       获取光标行GV_TABIX。
       F1 = 1。
       执行FETCH_DATA。
       如果F1 = 1。
           从表GT_ZEKKO中删除ZEKKO_03。
           从ZEKPO_03 WHERE EBELN = GWA_ZEKKO-EBELN中删除。
           描述表GT_ZEKPO行TC_ZEKPO行。
           提交工作。
       万一。

     当" SVE"。

       IF GV_EDIT EQ'X'。

         更新ZEKKO_03 SET
        EKGRP = GWA_ZEKKO-EKGRP
        EKORG = GWA_ZEKKO-EKORG
        BUKRS = GWA_ZEKKO-BUKRS
        LIFNR = GWA_ZEKKO-LIFNR
        WAERS = GWA_ZEKKO-WAERS
        ZTERM = GWA_ZEKKO-ZTERM
        ZDESC = GWA_ZEKKO-ZDESC
        EBELN在哪里= GWA_ZEKKO-EBELN。


         更新ZEKPO_03设置
        玉宝= GWA_ZEKPO-玉宝
        MATNR = GWA_ZEKPO-MATNR
        WERKS = GWA_ZEKPO-WERKS
        LGORT = GWA_ZEKPO-LGORT
        MENGE = GWA_ZEKPO-MENGE
        MEINS = GWA_ZEKPO-MEINS
        EBELN在哪里= GWA_ZEKKO-EBELN。
         提交工作。

       万一。

     当" INS"时。

       IF GV_CREATE EQ'X'。

         通话功能" NUMBER_GET_NEXT"
           出口
             NR_RANGE_NR = GV_RANGE
             OBJECT ='ZEBELN_03'
           输入
             NUMBER = GWA_ZEKKO-EBELN。
 *
         通话功能" CONVERSION_EXIT_ALPHA_INPUT"
           出口
             输入= GWA_ZEKKO-EBELN
           输入
             输出= GWA_ZEKKO-EBELN。

         通话功能" CONVERSION_EXIT_ALPHA_INPUT"
           出口
             输入= GWA_ZEKPO-EBELN
           输入
             输出= GWA_ZEKPO-EBELN。

         通话功能" CONVERSION_EXIT_ALPHA_INPUT"
           出口
             输入= GWA_ZEKPO-EBELP
           输入
             输出= GWA_ZEKPO-EBELP。

         通话功能" CONVERSION_EXIT_ALPHA_INPUT"
           出口
             输入= GWA_ZEKPO-MATNR
           输入
             输出= GWA_ZEKPO-MATNR。

         从GWA_ZEKKO插入ZEKKO_03。

         将GT_ZEKPO循环到GWA_ZEKPO中。

           GWA_ZEKPO-EBELN = GWA_ZEKKO-EBELN。
           gwa_zekpo-ebelp = sy-tabix。

           从GWA_ZEKPO索引SY-TABIX修改GT_ZEKPO。

         结局。

          从表gt_zekpo插入zekpo_03。

         如果sy-subrc = 0。
           提交工作。
           消息"条目已创建" TYPE" S"。
         万一。
       万一。


   结束。

 ENDMODULE。




 *&------------------------------------------------  --------------------- *
 *&模块USER_COMMAND_9001 INPUT
 *&------------------------------------------------  --------------------- *
 *文字
 * -------------------------------------------------  --------------------- *
 模组USER_COMMAND_9001输入。
   情况为OK_CODE。
     当"返回"或"退出"或"取消"时。
       离开程序。
     当"删除"或"显示"时。
       如果GWA_ZEKKO-EBELN是INITIAL。
         信息"请输入文件编号" TYPE" E"。
       其他。
         执行FETCH_DATA。
         致电屏幕9002。
       万一。

     在"编辑"时。
       如果GWA_ZEKKO-EBELN是INITIAL。
         信息"请输入文件编号" TYPE" E"。
       其他。
         致电屏幕9002。
       万一。

     当"创建"时。
       致电屏幕9002。



   结束。

 ENDMODULE。

 *&------------------------------------------------  --------------------- *
 *&表格FETCH_DATA
 *&------------------------------------------------  --------------------- *
 *和文字
 *&------------------------------------------------  --------------------- *
 *&-> p1文字
 *&<-p2文字
 *&------------------------------------------------  --------------------- *
 表格FETCH_DATA。

   IF F1 NE 1。

     从ZEKKO_03中选择EBELN LIFNR EKORG EKGRP BUKRS WAERS ZTERM ZDESC
       表GT_ZEKKO的对应字段
       EBELN在哪里= GWA_ZEKKO-EBELN。

     从ZEKKO_03中选择单个埃伯恩·莱弗特·埃科格·埃格普·布克尔·华兹·泽特斯
       GWA_ZEKKO的对应字段
       EBELN在哪里= GWA_ZEKKO-EBELN。

     将表GT_ZEKKO读入GWA_ZEKKO INDEX SY-TABIX。

     选择EBELP MATNR WERKS LGORT MENGE MEINS
       ZEKPO_03中表GT_ZEKPO的对应字段
        EBELN在哪里= GWA_ZEKKO-EBELN。

   万一。

 ENDFORM。


 *&------------------------------------------------  --------------------- *
 *&模块修改输入
 *&------------------------------------------------  --------------------- *
 *文字
 * -------------------------------------------------  --------------------- *
 模块修改输入。

     从ZEKPO_03 INDEX TC_ZEKPO-CURRENT_LINE修改GT_ZEKPO。
 ENDMODULE。


 *&------------------------------------------------  --------------------- *
 *&模块PASS_DATA OUTPUT
 *&------------------------------------------------  --------------------- *
 *&
 *&------------------------------------------------  --------------------- *
 模组PASS_DATA输出。

   读取表gt_zekpo索引tc_zekpo-current_line。

 ENDMODULE。
Nir深蓝
4楼-- · 2020-08-17 12:04

好的,

步骤1。在添加时-如果gt_zekpo []是初始的,请删除。

,然后显示

1的调试屏幕。 在按添加按钮后按SAVE_INSERT

SAP小菜
5楼-- · 2020-08-17 12:00

屏幕。

追夢秋陽
6楼-- · 2020-08-17 12:03

是 您的问题得到解决了吗?

问候

Venkat

一周热门 更多>