订单项出现问题(表格控件)

2020-08-17 21:11发布

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

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


您好,我目前停留在订单项插入中。 保存后,不会保存订单项

我使用以下select语句获取订单项。 从数据库表创建标题和订单项时没有问题。 当我尝试为插入保存更改(功能代码:sve)时,发生了问题。 如果我的选择语句有问题,请纠正我

模块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。

     将gwa_zekpo移动到zekpo_03。
 

这是我使用的插入物。 我试图用where子句或索引

-current_line寻找insert ,似乎没有这样的语句(如果存在,请纠正我)。

" SVE"时。

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

       IF GV_CREATE EQ'X'。

         从GWA_ZEKKO插入ZEKKO_03。


         读取表gt_zekpo索引tc_zekpo-current_line INTO gwa_zekpo。
         插入INTO zekpo_03值gwa_zekpo。

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

       万一。

       如果SY-SUBRC = 0。
         提交工作。
         消息"条目已创建" TYPE" S"。
       其他。
         消息"创建条目失败",类型为" E"。

       万一。

       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。
         提交工作。

       万一。

   结束。

   清除GT_ZEKKO。
   清除GT_ZEKPO。

 ENDMODULE。

(18.5 kB)

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

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


您好,我目前停留在订单项插入中。 保存后,不会保存订单项

我使用以下select语句获取订单项。 从数据库表创建标题和订单项时没有问题。 当我尝试为插入保存更改(功能代码:sve)时,发生了问题。 如果我的选择语句有问题,请纠正我

模块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。

     将gwa_zekpo移动到zekpo_03。
 

这是我使用的插入物。 我试图用where子句或索引

-current_line寻找insert ,似乎没有这样的语句(如果存在,请纠正我)。

" SVE"时。

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

       IF GV_CREATE EQ'X'。

         从GWA_ZEKKO插入ZEKKO_03。


         读取表gt_zekpo索引tc_zekpo-current_line INTO gwa_zekpo。
         插入INTO zekpo_03值gwa_zekpo。

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

       万一。

       如果SY-SUBRC = 0。
         提交工作。
         消息"条目已创建" TYPE" S"。
       其他。
         消息"创建条目失败",类型为" E"。

       万一。

       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。
         提交工作。

       万一。

   结束。

   清除GT_ZEKKO。
   清除GT_ZEKPO。

 ENDMODULE。

(18.5 kB)
付费偷看设置
发送
9条回答
软件心理学工程师
1楼 · 2020-08-17 22:04.采纳回答

亲爱的A.S.

您的代码似乎令人困惑,而且顺序不正确。.我相信您正在尝试按以下方式操作:

创建时,您正在创建全新的条目并将其推入 您的z表

  • 标题
  • 详细信息

请遵循以下顺序。

何时 " SVE"。
       IF GV_CREATE EQ'X'。
          "页眉插入在这里................。
          "第一步-生成数字
           通话功能" NUMBER_GET_NEXT"
           出口
             NR_RANGE_NR = GV_RANGE
             OBJECT ='ZEBELN_03'
           输入
             NUMBER = GWA_ZEKKO-EBELN。

         "第2步-添加前导零
         通话功能" CONVERSION_EXIT_ALPHA_INPUT"
         出口
           输入= GWA_ZEKKO-EBELN
         输入
           输出= GWA_ZEKKO-EBELN。

         "步骤3-插入表格
         从GWA_ZEKKO插入ZEKKO_03。

         "详细信息表插入到这里..............
          "步骤4使用生成的编号更新明细表
          环聊GT_ZEKPO进入GWA_ZEKPO
              GWA_ZEKPO-EBELN = GWA_ZEKKO-EBELN。
              从GWA_ZEKPO索引SY-TABIX修改GT_ZEKPO。
         结局。
        
         "步骤5-插入详细信息表
         从表GT_ZEKPO插入ZEKPO_03。
      
       万一。

       如果SY-SUBRC = 0。
         提交工作。
         消息"条目已创建" TYPE" S"。
       其他。
         消息"创建条目失败",类型为" E"。
       万一。
 
黑丝骑士
2楼-- · 2020-08-17 22:10

Venket,谢谢您的回复。

是的,插入新的ebeln,我已经尝试过您的方法,内部表中没有值,因此当插入gt_zekpo时sy-subrc = 4(如调试屏幕快照所示)

我将INSERT ZEKKO_03从GWA_ZEKKO放在NUMBER_GET_NEXT之前的原因是为了防止数字范围跳过。否则,它将从45000000跳过到45000002,记录从45000000保存到45000002,然后继续。

" SVE"时。
 IF GV_CREATE EQ'X'。

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

         从GWA_ZEKKO插入ZEKKO_03。

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

         将GT_ZEKpO循环到GWA_ZEKpO中。
                    GWA_ZEKPO-EBELN = GWA_ZEKKO-EBELN。

           从GWA_ZEKPO INDEX sy-tabix修改GT_ZEKPO。

         结局。

     
         从表GT_ZEKPO中插入ZEKPO_03。

       万一。

       如果SY-SUBRC = 0。
         提交工作。
         消息"条目已创建" TYPE" S"。
       其他。
         消息"创建条目失败",类型为" E"。

       万一。



       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。

         从gwa_zekpo修改zekpo_03。  <<<此处所做的更改

         提交工作。

       万一。

   结束。

   清除GT_ZEKKO。
   清除GT_ZEKPO。
 

因此,我在以下内容中进行了更改,结果仍然相同,下面的操作是我要从zekpo表中检索数据,因此选择语句并使用表控件的当前行进行修改

通话功能'CONVERSION_EXIT_ALPHA_INPUT'
           出口
             输入= GWA_ZEKKO-EBELN
           输入
             输出= GWA_ZEKKO-EBELN。

         从GWA_ZEKKO插入ZEKKO_03。

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

         将GT_ZEKpO循环到GWA_ZEKpO中。
                    GWA_ZEKPO-EBELN = GWA_ZEKKO-EBELN。
                   
               SELECT EBELP MATNR WERKS LGORT MENGE MEINS <<<添加了此
       ZEKPO_03中表GT_ZEKPO的对应字段
        EBELN在哪里= GWA_ZEKpO-EBELN。
 
           从GWA_ZEKPO索引tc_zekpo-current_line修改GT_ZEKPO。  <<<更改了此

         结局。

     
         从表GT_ZEKPO插入ZEKPO_03。
xfwsx85
3楼-- · 2020-08-17 22:03

我实际上是这样做的,这有意义吗,小写字母是我添加的

1。 将数据从Itab移至tbl控件

表:zekko_03,zekpo_03。

 模块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 INTO gwa_zekpo索引sy-tabix。
 如果sy-subrc = 0。
     zekpo_03-ebelp = gt_zekpo-ebelp。
     zekpo_03-matnr = gt_zekpo-matnr。
     zekpo_03-werks = gt_zekpo-werks。
     zekpo_03-lgort = gt_zekpo-lgort。
     zekpo_03-menge = gt_zekpo-menge。
     zekpo_03-meins = gt_zekpo-meins。
 万一。

 结束模块。

2。 将数据从表控件移至Itab

" SVE"时。

       IF GV_CREATE EQ'X'。

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

         从GWA_ZEKKO插入ZEKKO_03。

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


     gt_zekpo-ebelp = zekpo_03-ebelp。
     gt_zekpo-matnr = zekpo_03-matnr。
     gt_zekpo-werks = zekpo_03-werks。
     gt_zekpo-lgort = zekpo_03-lgort。
     gt_zekpo-menge = zekpo_03-menge。
     gt_zekpo-meins = zekpo_03-meins。
    
     在gt_zekpo INTO gwa_zekpo中循环。
      
       GWA_ZEKPO-EBELN = GWA_ZEKKO-EBELN。
     从gwa_zekpo索引sy-tabix修改gt_zekpo。

     结束循环。
    
     从表gt_zekpo修改zekpo_03。
    
     zekpo_03-ebelp = gwa_zekpo-ebelp。
     zekpo_03-matnr = gwa_zekpo-matnr。
     zekpo_03-werks = gwa_zekpo-werks。
     zekpo_03-lgort = gwa_zekpo-lgort。
     zekpo_03-menge = gwa_zekpo-menge。
     zekpo_03-meins = gwa_zekpo-meins。

3。 插入语句。 如果表控件中不存在数据,则插入

如果SY-SUBRC = 0。
         提交工作。  <<<<<此部分用于标题(正在显示数据)
         消息"条目已创建" TYPE" S"。
       ELSEIF sy-subrc ne 0。
          插入zekpo_03。  <<<<<如果tbl ctrl中不存在数据,请插入
         提交工作。
       其他。
         消息"创建条目失败",类型为" E"。
       ENDIF。

对不起,我完全被卡住了。

一周热门 更多>

向帮助了您的网友说句感谢的话吧!