.NET连接SAP系统专题:C#调用BAPI给账户赋予权限(八)
2021/4/23 20:25:43
本文主要是介绍.NET连接SAP系统专题:C#调用BAPI给账户赋予权限(八),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
接上篇博文。
上篇博文讲到C#调用BAPI BAPI_USER_CREATE 来生成SAP账户,但是新建的账户一点权限也没有,现在我们就再次利用BAPI给账户授予权限。
首先,我们在BAPI画面里查找出相关的BAPI出来,利用角色去给用户添加权限:
双击此BAPI,进入到BAPI预览画面:
Table属性页:
第一个ACTIVITYGROUPS是指我们要传进去的表格内容,不再是一个栏位和结构内容了。第二个的RETURN则是返回调用结果。
双击BAPIAGR的结构,进入结构详情画面:
以上AGR_NAME是角色名,应该是必须要的。
那么,接下去就是在C#中编写相应的代码来调用它了。
1、首先引用dll,然后在程序开头:using SAP.Middleware.Connector;
2、接下去就是设置登陆参数了,以前相关博文都有说明:
public class MyBackendConfig : IDestinationConfiguration
{
public RfcConfigParameters GetParameters(String destinationName)
{
if ("PRD_000".Equals(destinationName))
{
RfcConfigParameters parms = new RfcConfigParameters();
parms.Add(RfcConfigParameters.AppServerHost, "192.168.1.3");
parms.Add(RfcConfigParameters.SystemNumber, "00");
parms.Add(RfcConfigParameters.User, "MENGXIN");
parms.Add(RfcConfigParameters.Password, "5239898");
parms.Add(RfcConfigParameters.Client, "888");
parms.Add(RfcConfigParameters.Language, "ZH");
parms.Add(RfcConfigParameters.PoolSize, "5");
parms.Add(RfcConfigParameters.MaxPoolSize, "10");
parms.Add(RfcConfigParameters.IdleTimeout, "60");
return parms;
}
else return null;
}
public bool ChangeEventsSupported()
{
return false;
}
public event RfcDestinationManager.ConfigurationChangeHandler ConfigurationChanged;
}
3、设置一个方法,引用这个登陆参数的类:
public void nco()
{
IDestinationConfiguration ID = new MyBackendConfig();
RfcDestinationManager.RegisterDestinationConfiguration(ID);
RfcDestination prd = RfcDestinationManager.GetDestination("PRD_000");
RfcDestinationManager.UnregisterDestinationConfiguration(ID);
nco(prd);
}
4、然后就是开始了调用代码,以下代码全部放出,然后一行一行说明:
public void nco(RfcDestination prd)
{
//调用BAPI
RfcFunctionMetadata BAPI_COMPANYCODE_GETDETAIL_MD = prd.Repository.GetFunctionMetadata("BAPI_USER_ACTGROUPS_ASSIGN");
IRfcFunction function = null;
function = BAPI_COMPANYCODE_GETDETAIL_MD.CreateFunction();
//传入我们要赋予权限的用户名
function.SetValue("USERNAME", USERID.Text.Trim());
//接下去就是传入角色名。由于ACTIVITYGROUPS 是在Table属性页,所以我们是用Table 而不是Import和Export属性页里面用的Structure
IRfcTable ROFTable = function.GetTable("ACTIVITYGROUPS");
//上面语句产生的ROFTable 其实是一张空表,里面除了有那几个栏位之外是没有任何记录的,所以在对表格赋值之前需要先进性新增一行
ROFTable .Insert();
//接下去就是对表格当前行的相关栏位赋值。如下的角色名“MIS”是预选在SAP中建立好的
ROFTable .CurrentRow.SetValue("AGR_NAME", "MIS");
ROFTable .CurrentRow.SetValue("FROM_DAT", "20110825");
ROFTable .CurrentRow.SetValue("TO_DAT", "99991231");
//传入该赋值后的表格
function.SetValue("ACTIVITYGROUPS", ROFTable);
//引用回传结果
IRfcTable RETURNStructure = function.GetTable("RETURN");
//提交调用
function.Invoke(prd);
//显示调用结果
MessageBox.Show(RETURNStructure.GetString("MESSAGE").ToString());
prd = null;
}
5、调用结果如下:
如此则此用户已经赋予相应的权限了,运行所有T-CODE,没问题!
对了,如果要赋予多个角色的话,那么就是多做ROFTable.Insert();然后再做相应赋值即可。
这篇关于.NET连接SAP系统专题:C#调用BAPI给账户赋予权限(八)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-11-18微软研究:RAG系统的四个层次提升理解与回答能力
- 2024-11-15C#中怎么从PEM格式的证书中提取公钥?-icode9专业技术文章分享
- 2024-11-14云架构设计——如何用diagrams.net绘制专业的AWS架构图?
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#
- 2024-01-24Advanced .Net Debugging 1:你必须知道的调试工具