在对话框编程中以"切换"模式修改

2020-08-18 07:58发布

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

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


我添加了带有功能代码" SVE"的"保存编辑"按钮。 功能代码" switch"用于切换到可编辑和不可编辑模式。

当我在可编辑模式下单击" SVE"时(单击"开关"时),它应该将值更新到数据库中。 我如何一起参加"交换"活动和" SVE"活动? 使用哪种语法

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

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

     当" SVE"。
       从表GT_ZEKKO修改ZEKKO_03。


   结束。

   清除GT_ZEKKO。
   清除GT_ZEKPO。
 

完整代码和屏幕代码如下所示:

 PROMRAM SAPMZDLGPROG_03_REPORT。

 表格:ZEKKO_03,
         ZEKPO_03。

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


 数据:OK_CODE TYPE SY-UCOMM,
        ZEKKO_03的GT_ZEKKO类型表,
        GWA_ZEKKO TYPE ZEKKO_03,
        ZEKPO_03的GT_ZEKPO类型表,
        GWA_ZEKPO之类的GT_ZEKPO,
        F1 CHAR1型
        GV_LINES TYPE I,
        GV_TABIX TYPE SY-TABIX,
        C型长度ON_OFF 1值" 0",
        GV_ACTION TYPEI。



 *&------------------------------------------------  --------------------- *
 *&包括MZDLGPROG_03_REPORTO01
 *&------------------------------------------------  --------------------- *

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


 *&------------------------------------------------  --------------------- *
 *&模块FETCH_DATA OUTPUT
 *&------------------------------------------------  --------------------- *
 *&
 *&------------------------------------------------  --------------------- *
 模块FETCH_DATA输出。
 *设置PF-STATUS'xxxxxxxx'。
 * SET TITLEBAR'xxx'。

   从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。

 ENDMODULE。


 *&------------------------------------------------  --------------------- *
 *&模块开关输出
 *&------------------------------------------------  --------------------- *
 *&
 *&------------------------------------------------  --------------------- *
 模块开关输出。
 *设置PF-STATUS'xxxxxxxx'。
 * SET TITLEBAR'xxx'。

   情况为OK_CODE。
     当"切换"时。
       如果ON_OFF ='0'。
         GV_ACTION = 0。
         ON_OFF ='1'。
       其他。
         GV_ACTION = 1。
         ON_OFF ='0'。
       万一。


       环视屏幕。

         ""标题
         如果SCREEN-NAME ='GWA_ZEKKO-EKGRP'。
           屏幕输入= GV_ACTION。
           修改屏幕。
         万一。

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

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

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

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

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

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

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

         万一。
         修改屏幕。

       结局。

   结束。


 ENDMODULE。


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



 ENDMODULE。

 *&------------------------------------------------  --------------------- *
 *&模块MODIFY_IT_ZEKPO INPUT
 *&------------------------------------------------  --------------------- *
 *文字
 * -------------------------------------------------  --------------------- *
 模组MODIFY_GT_ZEKPO输入。

   从GWA_ZEKPO修改GT_ZEKPO
   INDEX TC_ZEKPO-CURRENT_LINE。

 ENDMODULE。

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

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

     当" SVE"。
       从表GT_ZEKKO修改ZEKKO_03。


   结束。

   清除GT_ZEKKO。
   清除GT_ZEKPO。

 ENDMODULE。

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

     在"编辑"时。
       致电屏幕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。

(19.7 kB)

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

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


我添加了带有功能代码" SVE"的"保存编辑"按钮。 功能代码" switch"用于切换到可编辑和不可编辑模式。

当我在可编辑模式下单击" SVE"时(单击"开关"时),它应该将值更新到数据库中。 我如何一起参加"交换"活动和" SVE"活动? 使用哪种语法

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

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

     当" SVE"。
       从表GT_ZEKKO修改ZEKKO_03。


   结束。

   清除GT_ZEKKO。
   清除GT_ZEKPO。
 

完整代码和屏幕代码如下所示:

 PROMRAM SAPMZDLGPROG_03_REPORT。

 表格:ZEKKO_03,
         ZEKPO_03。

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


 数据:OK_CODE TYPE SY-UCOMM,
        ZEKKO_03的GT_ZEKKO类型表,
        GWA_ZEKKO TYPE ZEKKO_03,
        ZEKPO_03的GT_ZEKPO类型表,
        GWA_ZEKPO之类的GT_ZEKPO,
        F1 CHAR1型
        GV_LINES TYPE I,
        GV_TABIX TYPE SY-TABIX,
        C型长度ON_OFF 1值" 0",
        GV_ACTION TYPEI。



 *&------------------------------------------------  --------------------- *
 *&包括MZDLGPROG_03_REPORTO01
 *&------------------------------------------------  --------------------- *

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


 *&------------------------------------------------  --------------------- *
 *&模块FETCH_DATA OUTPUT
 *&------------------------------------------------  --------------------- *
 *&
 *&------------------------------------------------  --------------------- *
 模块FETCH_DATA输出。
 *设置PF-STATUS'xxxxxxxx'。
 * SET TITLEBAR'xxx'。

   从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。

 ENDMODULE。


 *&------------------------------------------------  --------------------- *
 *&模块开关输出
 *&------------------------------------------------  --------------------- *
 *&
 *&------------------------------------------------  --------------------- *
 模块开关输出。
 *设置PF-STATUS'xxxxxxxx'。
 * SET TITLEBAR'xxx'。

   情况为OK_CODE。
     当"切换"时。
       如果ON_OFF ='0'。
         GV_ACTION = 0。
         ON_OFF ='1'。
       其他。
         GV_ACTION = 1。
         ON_OFF ='0'。
       万一。


       环视屏幕。

         ""标题
         如果SCREEN-NAME ='GWA_ZEKKO-EKGRP'。
           屏幕输入= GV_ACTION。
           修改屏幕。
         万一。

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

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

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

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

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

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

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

         万一。
         修改屏幕。

       结局。

   结束。


 ENDMODULE。


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



 ENDMODULE。

 *&------------------------------------------------  --------------------- *
 *&模块MODIFY_IT_ZEKPO INPUT
 *&------------------------------------------------  --------------------- *
 *文字
 * -------------------------------------------------  --------------------- *
 模组MODIFY_GT_ZEKPO输入。

   从GWA_ZEKPO修改GT_ZEKPO
   INDEX TC_ZEKPO-CURRENT_LINE。

 ENDMODULE。

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

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

     当" SVE"。
       从表GT_ZEKKO修改ZEKKO_03。


   结束。

   清除GT_ZEKKO。
   清除GT_ZEKPO。

 ENDMODULE。

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

     在"编辑"时。
       致电屏幕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。

(19.7 kB)
付费偷看设置
发送

一周热门 更多>