通过BAPI发送表并使用net

2020-08-18 04:32发布

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

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


所以,这是我第一次这样做,并将结构发送到由其他人创建的BAPI,BAPI可以运行,我已经在SAP中尝试过,但是现在,我们需要使用主系统来使用它。

这是结构:

in值具有3个值...

好,所以我可以正确连接并获取信息,但是我遇到了一个错误,我认为这是由于结构在发送之前已经准备好了...

这是代码:

公共字符串SendASFEmail(字符串id,字符串tipo,字符串correo)
         {
             字符串idCompuesto =" 0000" + id;
             SAPConnection sapConnection =新的SAPConnection();
             RfcDestination rfcDes = sapConnection.getRfcDestination(sapConnection);
             RfcRepository rfcRep = rfcDes.Repository;
             IRfcFunction fun = rfcRep.CreateFunction(" ZSLCM_UPDATE_EMAIL");
            //使用id,tipo和correo创建结构
             IRfcTable tablaEntrada = fun.GetTable(" T_CORREOS_IN");
            //分配参数
             RfcStructureMetadata stru = rfcRep.GetStructureMetadata(" T_CORREOS_IN");
             IRfcStructure datos = stru.CreateStructure();
             tablaEntrada.SetValue(" ZFKK_FAM",idCompuesto);
             tablaEntrada.SetValue(" BPKI",tipo);
             tablaEntrada.SetValue(" SMTP_ADDR",correo);
             tablaEntrada.Append(datos);
             fun.SetValue(" T_CORREOS_IN",tablaEntrada);
            //跑
             fun.Invoke(rfcDes);


            //成功并获取out表,该表包含相同的参数以及第4列中的消息
             IRfcTable tablaSalida = fun.GetTable(" T_CORREOS_OUT");
             DataTable dtMessages = GetDataTableFromRFCTable(tablaSalida); //这是取出out结构并只获取字符串
             字符串respuesta = dtMessages.Rows [0] [3] .ToString();
             返回respuesta;
         }
 

我不断收到错误消息:

其他信息:StructureOnly T_CORREOS_IN的元数据不可用:NOT_FOUND:T_CORREOS_IN的活动名称标签不存在

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

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


所以,这是我第一次这样做,并将结构发送到由其他人创建的BAPI,BAPI可以运行,我已经在SAP中尝试过,但是现在,我们需要使用主系统来使用它。

这是结构:

in值具有3个值...

好,所以我可以正确连接并获取信息,但是我遇到了一个错误,我认为这是由于结构在发送之前已经准备好了...

这是代码:

公共字符串SendASFEmail(字符串id,字符串tipo,字符串correo)
         {
             字符串idCompuesto =" 0000" + id;
             SAPConnection sapConnection =新的SAPConnection();
             RfcDestination rfcDes = sapConnection.getRfcDestination(sapConnection);
             RfcRepository rfcRep = rfcDes.Repository;
             IRfcFunction fun = rfcRep.CreateFunction(" ZSLCM_UPDATE_EMAIL");
            //使用id,tipo和correo创建结构
             IRfcTable tablaEntrada = fun.GetTable(" T_CORREOS_IN");
            //分配参数
             RfcStructureMetadata stru = rfcRep.GetStructureMetadata(" T_CORREOS_IN");
             IRfcStructure datos = stru.CreateStructure();
             tablaEntrada.SetValue(" ZFKK_FAM",idCompuesto);
             tablaEntrada.SetValue(" BPKI",tipo);
             tablaEntrada.SetValue(" SMTP_ADDR",correo);
             tablaEntrada.Append(datos);
             fun.SetValue(" T_CORREOS_IN",tablaEntrada);
            //跑
             fun.Invoke(rfcDes);


            //成功并获取out表,该表包含相同的参数以及第4列中的消息
             IRfcTable tablaSalida = fun.GetTable(" T_CORREOS_OUT");
             DataTable dtMessages = GetDataTableFromRFCTable(tablaSalida); //这是取出out结构并只获取字符串
             字符串respuesta = dtMessages.Rows [0] [3] .ToString();
             返回respuesta;
         }
 

我不断收到错误消息:

其他信息:StructureOnly T_CORREOS_IN的元数据不可用:NOT_FOUND:T_CORREOS_IN的活动名称标签不存在

付费偷看设置
发送
1条回答
代楠1984
1楼-- · 2020-08-18 05:00

你好何塞,

T_CORREOS_IN是调用表的参数名称,而不是ABAP词典中的结构定义。 因此,GetStructureMetadata调用失败,因为这样的结构类型不存在。有一种更简单的方法来实现所需的功能。 只需在设置参数值之前在表参数实例上使用Append(),然后将所有内容放到stru和datos以及有趣的行中即可。 不需要。 无论如何,您在GetTable语句中都有对该表的引用

最好查看在 https://上找到的NCo样本。 support.sap.com/nco

最好的问候,
马库斯

一周热门 更多>