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实现的最后一种情况,请告诉我一声,我也学习学习,谢谢










转载于:https://www.cnblogs.com/senlinmu110/p/3802130.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SAP SM30是一个用于数据维护的事务码。当无法添加数据时,可能是由于以下几种原因: 1. 数据锁定:首先要检查是否有其他用户正在维护该数据,导致数据被锁定。可以通过事务码SM12查看锁定的数据,如果有其他用户锁定了该数据,可以等待锁定释放后再尝试添加数据。 2. 权限限制:在SAP系统中,对于不同的用户或角色,可能存在不同的权限限制。如果当前用户没有添加数据的权限,那么无法成功添加数据。可以联系系统管理员或相应的角色负责人,询问是否有相应的权限。 3. 输入错误:在SM30中,需要输入相应的表名、数据字段和对应的值来添加数据。如果输入有误,例如表名错误、字段名错误或者值不符合字段的数据类型要求,都会导致添加数据失败。可以仔细检查输入的参数是否正确。 4. 数据完整性限制:有些表可能设置了数据完整性规则,要求某些字段有特定的取值范围或满足某些条件才能添加数据。如果输入的数据不符合这些规则,也会导致添加数据失败。可以查阅相应的文档或咨询相关的业务人员,确认是否有数据完整性限制。 综上所述,当SAP SM30无法添加数据时,首先要检查数据是否被锁定,然后检查权限限制、输入错误和数据完整性限制。根据具体情况进行操作,并且可以向系统管理员或相关的业务人员寻求帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值