删除表控件中的行问题

2020-08-18 15:26发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我正在使用创建的2个屏幕进行对话...

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

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


我正在使用创建的2个屏幕进行对话框编程。 第一个屏幕包含带有删除按钮的zebeln字段,第二个屏幕包含zekko_03的字段和zekpo_03的表控件。 我遇到的两个问题:

首先,对标头执行select语句时,提示错误,提示数据类型不兼容。

其次,表控件删除(删除按钮功能代码'DEL')存在问题,我在网上查找了一些不适用于我的案例的方法,包括以下逻辑。

我使用的表格如下

tbl-po-header.png

 *&---------------------------------------------  ------------------------ *
 *&包括MZDLGPROG_03_REPORTTOP-模块池SAPMZDLGPROG_03_REPORT
 *&------------------------------------------------  --------------------- *
 程序SAPMZDLGPROG_03_REPORT。

 数据:OK_CODE TYPE SY-UCOMM,
        ZEKKO_03的GT_ZEKKO类型表,
        GWA_ZEKKO TYPE ZEKKO_03,
        ZEKPO_03的GT_ZEKPO类型表,
        GWA_ZEKPO TYPE ZEKPO_03,
        GV_EBELN TYPE ZEBELN_EL,
        MARK TYPE CE_MARK,
        gv_flag类型char1。


 控件:使用屏幕9002的TC_ZEKPO类型表。

 数据:f1 TYPE char1。
 *&---------------------------------------------  ------------------------ *
 *&包括MZDLGPROG_03_REPORTO01
 *&------------------------------------------------  --------------------- *

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

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


 如果f1 <> 1。

 从zekko_03到表gt_zekko中选择SELECT ebeln lifnr ekorg ekgrp bukrs waers zterm zdesc。 此选择语句的<<<<问题

 选择单个ebeln lifnr ekorg ekgrp bukrs waers zterm zdesc从zekko_03
   gwa_zekko的对应字段
   其中ebeln = gwa_zekko-ebeln。
 读取表gt_zekko INTO gwa_zekko INDEX sy-tabix。
 SELECT EBELP MATNR怪异LGORT Menge Meins
   来自zekpo_03的表格gt_zekpo的对应字段
    其中ebeln = gwa_zekko-ebeln。


 如果f1 = 1。

   如果sy-tabix不是INITIAL。
       删除gt_zekko索引sy-tabix。
       删除gt_zekpo索引sy-tabix。
   万一。
 万一。
 万一。


 ENDMODULE。
 *&---------------------------------------------  ------------------------ *
 *&包括MZDLGPROG_03_REPORTI01
 *&------------------------------------------------  --------------------- *
 *&------------------------------------------------  --------------------- *
 *&模块USER_COMMAND_9002 INPUT
 *&------------------------------------------------  --------------------- *
 *文字
 * -------------------------------------------------  --------------------- *
 模组USER_COMMAND_9002输入。
   情况为OK_CODE。
     当"返回"时。
       设置屏幕0。
       离开屏幕0。

   结束。

 ENDMODULE。
 *&------------------------------------------------  --------------------- *
 *&模块MODIFY_IT_ZEKPO INPUT
 *&------------------------------------------------  --------------------- *
 *文字
 * -------------------------------------------------  --------------------- *
 模组MODIFY_GT_ZEKPO输入。
   从gwa_zekpo修改gt_zekpo
   INDEX TC_ZEKPO-CURRENT_LINE。

 ENDMODULE。
 *&------------------------------------------------  --------------------- *
 *&模块USER_COMMAND_9001 INPUT
 *&------------------------------------------------  --------------------- *
 *文字
 * -------------------------------------------------  --------------------- *
 模组USER_COMMAND_9001输入。

   情况为OK_CODE。
     当"返回"或"退出"或"取消"时。
       离开程序。
     当"删除"时。
       如果GWA_ZEKKO-EBELN是INITIAL。
         信息"请输入文件编号" TYPE" E"。
       其他。
         致电屏幕9002。
       万一。

     当" DEL"。
     获取光标线sy-tabix。
     f1 = 1。


   结束。

 ENDMODULE。
输出前的过程。
   模块状态_9002。
     模块fetch_data。
   通过控制TC_ZEKPO光标将GT_ZEKPO放入GWA_ZEKPO中
 TC_ZEKPO-CURRENT_LINE。

   结局。

 输入后的过程。
 在gt_zekpo循环。
   模块modify_gt_zekpo。
 结束循环。
   模组USER_COMMAND_9002。

(5.5 KB)
2条回答
野沐沐
2020-08-18 15:38

实际上我想删除 基于在第一个屏幕的参数中输入的选定记录(在不可编辑模式下,我将所有字段和表都设置为不可编辑的上级需求),因此我使用了sy-tabix。

我做的另一种方式是使用

数据:gv_ebeln类型zekko_03-ebeln

 如果gv_ebeln不是INITIAL。
       删除gt_zekko,在其中ebeln = gwa_zekko-ebeln。
       删除gt_zekpo WHERE ebeln = gwa_zekpo-ebeln。
   ENDIF。

我不确定我是否还错过了删除操作

一周热门 更多>