插入对话框编程

2020-08-18 05:10发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)在屏幕1中,要求将采购订单号留为...

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

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


在屏幕1中,要求将采购订单号留为空白–按创建

会自动从ZKKO_nn获取下一个采购订单号。

到目前为止,我已经从zekko数据库表中为PO创建了3条记录,分别为PO,45000000、45000003和45000004。

从逻辑上讲,它将自动从45000001、45000002、45000005等创建PO。

另一个要求是在屏幕2中,使用相同的按钮"保存编辑"(功能代码-SVE),我也将其用于更新语句以保存创建的条目。

PO数据由我自己创建。 完整代码如下所示:

表格: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,
        gv_edit TYPE C LENGTH 1,
        gv_create TYPE C长度1。

 *&------------------------------------------------  --------------------- *
 *&包括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。

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


   情况为OK_CODE。


     当"编辑"。

      gv_edit ='X'。
       环视屏幕。

         ""标题
         如果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'。
       环视屏幕。

         ""标题
         如果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中删除。
         提交工作。
       万一。

     当" SVE"。


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


      如果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。

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

(4.6 kB)
7条回答
spaceman01
2020-08-18 05:37 .采纳回答

嗨A.S。

您调用的数据类型函数是错误的。

步骤1。

您应该通过SNRO创建一个数字生成对象。 只有在该对象之后,才能在以下函数中使用该对象

步骤2。

 DATA:number_Generated类型INRI-NRRANGENR。
        通话功能" NUMBER_GET_NEXT"
           出口
             NR_RANGE_NR = <===这应该是两个字符长度(步骤1)
             对象= <====这应该是通过SNRO步骤1创建的对象。
 * QUANTITY ='1'
 * SUBOBJECT =''
 * TOYEAR ='0000'
 * IGNORE_BUFFER =''
           输入
             NUMBER =数字生成
 *数量=
 * RETURNCODE =
 *例外情况
 * INTERVAL_NOT_FOUND = 1
 * NUMBER_RANGE_NOT_INTERN = 2
 * OBJECT_NOT_FOUND = 3
 * QUANTITY_IS_0 = 4
 * QUANTITY_IS_NOT_1 = 5
 * INTERVAL_OVERFLOW = 6
 * BUFFER_OVERFLOW = 7
 *其他= 8
           。
 GWA_ZEKKO-EBELN =数字生成。
 

REgards

Venkat

一周热门 更多>