zoukankan      html  css  js  c++  java
  • SM30相关操作

    目录

    SM30相关操作... 1

    前提条件:创建的表必须支持表维护... 1

    一、建立表维护,维护数据... 1

    二、使用FM调用表维护,维护数据... 3

    三、创建Tcode维护表维护... 4

    四、使用BDC实现有限制条件的表维护... 7

     


     

    前提条件:创建的表必须支持表维护

    SM30相关操作

    一、建立表维护,维护数据

    SE11创建表维护:

    SM30相关操作

    SM30相关操作

    点击保存即可,

     

    SE80可见生成的FunctionGroup

    SM30相关操作

    二、使用FM调用表维护,维护数据

    FMVIEW_MAINTENANCE_CALL

    代码如下:

    SM30相关操作

    其他参数自己查看FM,必输如上:

    执行结果如下:

    SM30相关操作

    其中,action是只模式,显示/修改/传输

    具体取值范围可以参考函数描述:

    SM30相关操作

    显示如下:

    SM30相关操作

    三、创建Tcode维护表维护

    前台业务是不能直接sm30维护数据的,所以需要给他们创建tcode

    也会为此tcode分配权限,方便管控

     

    Se93

    SM30相关操作

    SM30相关操作

    SM30相关操作

    此页最下方(需要回车一下,这个帮助才起作用
    SM30相关操作

    SM30相关操作

    一般只需要维护这两个参数

    SM30相关操作

    保存即可

    输入tcode回车直接进入,

    SM30相关操作

    如果不勾选跳过第一个屏幕,执行结果是

    SM30相关操作

    四、使用BDC实现有限制条件的表维护

    调用维护视图时其实是有三种模式的:

    SM30相关操作

    无限制

    限制

     

    变式

    有时候需要对维护的数据进行控制,可使用第二种,Eenter conditions

    SM30相关操作

    然后进入如下:

    选择控制条件:

    SM30相关操作

    只维护公司码为20的数据:

    SM30相关操作

    SM30相关操作

    但是如果使用tcode或者调用FM方式控制显示数据我没有实现,

    所以我就是用了BDC录屏:(录屏单独去介绍,这里不赘述

    代码见最后,效果如下:

    SM30相关操作

    特别注意的是:

    点击返回时,进入的不是刚才的选择屏幕,而是:

    SM30相关操作

    为解决此,

    我给刚bdc程序分配tcodeZLM_SM30_BDC

    在视图函数组中

     

    添加了一个自定义的module: mdl_get_command

    SM30相关操作

    下面代码仅仅是简单范例,到时候需要考虑的有多个tcode

    sy-ucomm = ende 或者 = abr 或者= okay 或者 = back等等的

    SM30相关操作


    L_mm从内存里取值,(bdc程序里赋值),这里控制的是:

    如果是在bdc程序里调用的SM30,则直接返回bdc程序,

    如果其他情况调用sm30,则不受这个影响即不调回到BDC程序


    BDC程序如下:

    *&---------------------------------------------------------------------*
    *& Report  ZLM_TEST_SM30_BDC
    *&
    *&---------------------------------------------------------------------*
    *&使用bdc调用带有控制的SM30表维护
    *&---------------------------------------------------------------------*

    REPORT  zlm_test_sm30_bdc.

    *&---------------------------------------------------------------------*
    *&  "BDC 变量
    *&---------------------------------------------------------------------*
    DATAv_mode  TYPE char1,
          bdcdata 
    LIKE bdcdata      OCCURS WITH HEADER LINE,
          messtab 
    LIKE bdcmsgcoll   OCCURS WITH HEADER LINE.
    DATAl_mm    TYPE flag VALUE 'X'.
    *&---------------------------------------------------------------------*
    *&  "选择屏幕
    *&---------------------------------------------------------------------*
    PARAMETERS:p_cmcode TYPE zmm00t_y_078-comcode.

    START-OF-SELECTION.

      
    EXPORT l_mm  TO MEMORY ID 'M1'.

      
    PERFORM frm_sub_bdc USING p_cmcode.

    *&---------------------------------------------------------------------*
    *&  "BDC FORM
    *&---------------------------------------------------------------------*
    FORM frm_sub_bdc USING p_cmcode TYPE zmm00t_y_078-comcode.

      
    PERFORM bdc_dynpro      USING 'SAPMSVMA' '0100'.
      
    PERFORM bdc_field       USING 'BDC_CURSOR'
                                    
    'VIMDYNFLDS-LTD_DTA_AR'.
      
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                    
    '=UPD'.
      
    PERFORM bdc_field       USING 'VIEWNAME'
                                    
    'ZMM00T_Y_078'                  "视图名称
      
    PERFORM bdc_field       USING 'VIMDYNFLDS-LTD_DTA_NO'
                                    
    ''                              "无限制模式赋值为空,或者不要这句话
      
    PERFORM bdc_field       USING 'VIMDYNFLDS-LTD_DTA_AR'
                                    
    'X'                             "限制模式为X
      
    PERFORM bdc_dynpro      USING 'SAPLSVIX' '0210'.
      
    PERFORM bdc_field       USING 'BDC_CURSOR'
                                    
    'MARK_CHECKBOX(06)'.
      
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                    
    '=OKAY'.
      
    PERFORM bdc_field       USING 'MARK_CHECKBOX(02)'
                                    
    'X'                             "控制条件选第二个复选框(COMCODE
      
    PERFORM bdc_dynpro      USING 'SAPLSVIX' '0100'.
      
    PERFORM bdc_field       USING 'BDC_CURSOR'
                                    
    'D0100_FIELD_TAB-UPPER_LIMIT(02)'.
      
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                    
    '=OKAY'.
      
    PERFORM bdc_field       USING 'D0100_FIELD_TAB-LOWER_LIMIT(01)'
                                    p_cmcode
                          "限制条件值下限(LOWER_LIMIT)还可以添加上限制(UPPER_LIMIT
      
    PERFORM bdc_dynpro      USING 'SAPLZMM00T_Y_078' '0001'.
      
    PERFORM bdc_field       USING 'BDC_CURSOR'
                                    
    'VIM_POSITION_INFO'.
      
    CALL TRANSACTION 'SM30' USING bdcdata
                        
    MODE 'E'  MESSAGES INTO messtab            "这里必须使用E类型

    *A  显示所有屏幕
    *E  显示错误
    *N  后台的处理
    *P  后台处理;可以调试

    ENDFORM                   "sub_bdc



    "BDC 相关

    *----------------------------------------------------------------------*
           Start new screen                                              *
    *----------------------------------------------------------------------*
    FORM bdc_dynpro USING program dynpro.
      
    CLEAR bdcdata.
      bdcdata
    -program  program.
      bdcdata
    -dynpro   dynpro.
      bdcdata
    -dynbegin 'X'.
      
    APPEND bdcdata.
    ENDFORM                   "BDC_DYNPRO

    *----------------------------------------------------------------------*
           Insert field                                                  *
    *----------------------------------------------------------------------*
    FORM bdc_field USING fnam fval.

      
    IF fnam 'BDC_OKCODE' AND fval '/EBACK'.
        
    LEAVE TO SCREEN 0.
      
    ENDIF.
      
    CLEAR bdcdata.
      bdcdata
    -fnam fnam.
      bdcdata
    -fval fval.
      
    APPEND bdcdata.

    ENDFORM                   "BDC_FIELD



    如果哪位不是使用bdc实现的最后一种情况,请告诉我一声,我也学习学习,谢谢










    http://blog.sina.com.cn/sapliumeng
  • 相关阅读:
    SpringBoot学习
    Matlab立体标定mat转换成Opencv的CvMat
    由lib引发的血案(opencv找不函数问题)
    C# 使用Epplus导出Excel [4]:合并指定行
    C# 使用Epplus导出Excel [3]:合并列连续相同数据
    C# 使用Epplus导出Excel [2]:导出动态列数据
    C# 使用Epplus导出Excel [1]:导出固定列数据
    C# Excel常用控件总结
    C# IsNullOrEmpty与IsNullOrWhiteSpace
    C# 读App.config配置文件[2]: .Net Core框架
  • 原文地址:https://www.cnblogs.com/senlinmu110/p/3802130.html
Copyright © 2011-2022 走看看