调用RFC函数时出错

2020-08-25 10:06发布

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

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


嗨,我现在从SAP开始。 执行以下代码时出现空白错误消息:

oEquipPtr = BapiPtr.GetSAPObject(" Equipment")'设备

oTipoObj = BapiPtr.DimAs(oEquipPtr," GetList"," ObjecttypeRa")

ListaOT = BapiPtr.DimAs(oEquipPtr," GetList"," EquipmentList")

ret = BapiPtr.DimAs(oEquipPtr," GetList"," Return")

oTipoObj.Rows.Add()

oTipoObj(1," SIGN")=" I"

oTipoObj(1," OPTION")=" EQ"

oTipoObj(1," LOW")= TipoObjTec

oEquipPtr.GetList(ObjecttypeRa:= oTipoObj,EquipmentList:= ListaOT,RETURN:= ret)

如果ret(" NUMBER")=" 000"然后

retval =真

其他

retval = False

如果结束

如果结束

TrataErro:

ObterListaObjetosTecnicos = retval

该错误发生在.TipoObj.Rows.Add()中。

从我读到的内容来看,设备是业务对象,我正在访问BAPI,对吗? 我也正在访问其GetList方法。

我是否没有收到错误反馈的任何原因? 我还注意到在执行仅通过RFC进行搜索时会得到结果。 代码:

oLista = SapFun.Add(" BAPI_FUNCLOC_GETLIST")

ListaLI = oLista.Tables.Item(" FUNCLOC_LIST")

oRanges = oLista.Tables.Item(" FUNCLOC_RA")

oRanges.Rows.Add()

oRanges(1," SIGN")=" I"

oRanges(1," OPTION")=" CP"

oRanges(1," LOW")=" F-U-***"'" 01000101"

BAPI是否有可能成为唯一无法正常运行的东西?

我不知道该如何前进。

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

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


嗨,我现在从SAP开始。 执行以下代码时出现空白错误消息:

oEquipPtr = BapiPtr.GetSAPObject(" Equipment")'设备

oTipoObj = BapiPtr.DimAs(oEquipPtr," GetList"," ObjecttypeRa")

ListaOT = BapiPtr.DimAs(oEquipPtr," GetList"," EquipmentList")

ret = BapiPtr.DimAs(oEquipPtr," GetList"," Return")

oTipoObj.Rows.Add()

oTipoObj(1," SIGN")=" I"

oTipoObj(1," OPTION")=" EQ"

oTipoObj(1," LOW")= TipoObjTec

oEquipPtr.GetList(ObjecttypeRa:= oTipoObj,EquipmentList:= ListaOT,RETURN:= ret)

如果ret(" NUMBER")=" 000"然后

retval =真

其他

retval = False

如果结束

如果结束

TrataErro:

ObterListaObjetosTecnicos = retval

该错误发生在.TipoObj.Rows.Add()中。

从我读到的内容来看,设备是业务对象,我正在访问BAPI,对吗? 我也正在访问其GetList方法。

我是否没有收到错误反馈的任何原因? 我还注意到在执行仅通过RFC进行搜索时会得到结果。 代码:

oLista = SapFun.Add(" BAPI_FUNCLOC_GETLIST")

ListaLI = oLista.Tables.Item(" FUNCLOC_LIST")

oRanges = oLista.Tables.Item(" FUNCLOC_RA")

oRanges.Rows.Add()

oRanges(1," SIGN")=" I"

oRanges(1," OPTION")=" CP"

oRanges(1," LOW")=" F-U-***"'" 01000101"

BAPI是否有可能成为唯一无法正常运行的东西?

我不知道该如何前进。

付费偷看设置
发送
6条回答
浮生未央
1楼-- · 2020-08-25 10:30

嗨,凡妮莎。

看一下源代码,您会发现,如果未指定正确的参数,则返回参数将只有值,或者对FM FUNC_LOCATION_GETLIST的调用返回任何异常,在这种情况下,它将终止执行 在没有返回其他参数的情况下使用EXIT,因此,如果您正在接收表FUNCLOC_LIST/FUNCLOC_RA中返回的值,则通常将RETURN参数返回为空白。

 FUNCTION bapi_funcloc_getlist。
 *" ------------------------------------------------  ----------------------
 *" *" Lokale Schnittstelle:
 *"正在导入
 *" VALUE(语言)类型BAPI_ITOB_PARMS-LANGU默认SY-LANGU
 *" VALUE(LANGUAGE_ISO)类型BAPI_ITOB_PARMS-LANGU_ISO可选
 *" VALUE(PARTNERFUNCTION)类型BAPIIHPA-PAR_FUNCT可选
 *"汇出
 *" VALUE(返回)类型BAPIRET2
 *"表格
 *" FUNCLOC_RA结构BAPI_ITOB_SEL_FUNCLOC可选
 *" DESCRIPT_RA结构BAPI_ITOB_SEL_DESCRIPT可选
 *" MAINTPLANT_RA结构BAPI_ITOB_SEL_MAINTPLANT可选
 *" PLANGROUP_RA结构BAPI_ITOB_SEL_PLANGROUP可选
 *" PLANPLANT_RA结构BAPI_ITOB_SEL_PLANPLANT可选
 *" SORTFIELD_RA结构BAPI_ITOB_SEL_SORTFIELD可选
 *" FUNCLOC_LIST结构BAPI_ITOB_FL_SEL_RESULT
 *" STATUS_RA结构BAPI_ITOB_SEL_STATUS可选
 *" ADDRESS_SEARCH_TERM_1_RA结构BAPI_ITOB_SEL_ADDR_SORT1
 *"       可选的
 *" ADDRESS_SEARCH_TERM_2_RA结构BAPI_ITOB_SEL_ADDR_SORT2
 *"       可选的
 *" ADDRESS_NAME_RA结构BAPI_ITOB_SEL_ADDR_NAME可选
 *" ADDRESS_POST_CODE_RA结构BAPI_ITOB_SEL_ADDR_POST_CODE
 *"       可选的
 *" ADDRESS_CITY_RA结构BAPI_ITOB_SEL_ADDR_CITY可选
 *" ADDRESS_STREET_RA结构BAPI_ITOB_SEL_ADDR_STREET可选
 *" PARTNER_RA结构BAPI_ITOB_SEL_PARTNER可选
 *" OBJECTTYPE_RA结构BAPI_ITOB_SEL_OBJECTTYPE可选
 *" ------------------------------------------------  ----------------------


 * --- EhP5的新增功能:选择状态,伙伴,对象类型和地址
 * ---文字搜索调整为使用语言


   数据:l_select_result类型ilo14_strno_tplnr_tab,
         l_wa_funcloc_list类型bapi_itob_fl_sel_result。
   字段符号:类型strno_tplnr。


   cl_eam_usage =>插入('BAPI_FUNCLOC_GETLIST')。
   明确:
     返回。

   如果funcloc_ra []初始且
      descript_ra []是INITIAL AND
      maintplant_ra []初始且
      plangroup_ra []初始且
      planplant_ra []初始且
      sortfield_ra []是INITIAL AND
      status_ra []是INITIAL AND
      address_search_term_1_ra []是INITIAL AND
      address_search_term_2_ra []是INITIAL AND
      address_name_ra []是INITIAL AND
      address_post_code_ra []初始且
      address_city_ra []是INITIAL AND
      address_street_ra []初始且
      partner_ra []是INITIAL AND
      objecttype_ra []是INITIAL。

 *选择不能是初始的
     通话功能'BALW_BAPIRETURN_GET2'
       出口
         类型='E'
         cl ='ITOB_BAPI'
         数字='000'
       输入
         return =返回。
     出口。
   万一。


   通话功能" FUNC_LOCATION_GET_LIST"
     出口
       funcloc_ra = funcloc_ra []
       descript_ra = descript_ra []
       maintplant_ra = maintplant_ra []
       plangroup_ra = plangroup_ra []
       planplant_ra = planplant_ra []
       sortfield_ra = sortfield_ra []
       语言=语言
       language_iso = language_iso
       partnerfunction =合作伙伴功能
       status_ra = status_ra []
       address_search_term_1_ra = address_search_term_1_ra []
       address_search_term_2_ra = address_search_term_2_ra []
       address_name_ra = address_name_ra []
       address_post_code_ra = address_post_code_ra []
       address_city_ra = address_city_ra []
       address_street_ra = address_street_ra []
       partner_ra = partner_ra []
       objecttype_ra = objecttype_ra []
     输入
       select_result = l_select_result []
     例外情况
       not_found = 1
       其他= 2。

   如果sy-subrc <> 0。
 *错误处理
     通话功能'BALW_BAPIRETURN_GET2'
       出口
         类型= sy-msgty
         cl = sy-msgid
         数字= sy-msgno
         par1 = sy-msgv1
         par2 = sy-msgv2
         par3 = sy-msgv3
         par4 = sy-msgv4
       输入
         return =返回。
     出口。
   万一。


   环回l_select_result ASSIGNING 。
     清除l_wa_funcloc_list。
     l_wa_funcloc_list-functlocation =  -tplnr_int。
     l_wa_funcloc_list-funcloc =  -tplnr。
     l_wa_funclocloc_list-label_syst =  -alkey。
     l_wa_funclocloc_list-descript =  -pltxt。
     l_wa_funcloc_list-strind =  -tplkz。
     l_wa_funclocloc_list-category =  -fltyp。
     l_wa_funclocloc_list-supfloc =  -tplma。
     l_wa_funclocloc_list-planplant =  -iwerk。
     l_wa_funclocloc_list-maintplant =  -swerk。
     l_wa_funclocloc_list-plangroup =  -ingrp。
     l_wa_funclocloc_list-sortfield =  -eqfnr。
     APPEND l_wa_funcloc_list到funcloc_list。
   结局。

 结束功能。

 
Haoba3210
2楼-- · 2020-08-25 10:29

谢谢,我知道空白邮件不是错误。

在这一部分中,我将返回表:

 oLista = SapFun.Add(" BAPI_FUNCLOC_GETLIST")
  ListaLI = oLista.Tables.Item(" FUNCLOC_LIST")
  oRanges = oLista.Tables.Item(" FUNCLOC_RA")
  oRanges.Rows.Add()
  oRanges(1," SIGN")=" I"
  oRanges(1," OPTION")=" CP"
  oRanges(1," LOW")=" F-U-*****"'" 01000101" 

我的问题在这里:

出现错误时转到TotaErro

  oEquipPtr = BapiPtr.GetSAPObject(" Equipment")'设备
  oTipoObj = BapiPtr.DimAs(oEquipPtr," GetList"," ObjecttypeRa")
  ListaOT = BapiPtr.DimAs(oEquipPtr," GetList"," EquipmentList")
  ret = BapiPtr.DimAs(oEquipPtr," GetList"," Return")
  oTipoObj.Rows.Add()<=====================错误
  oTipoObj(1," SIGN")=" I"
  oTipoObj(1," OPTION")=" EQ"
  oTipoObj(1," LOW")= TipoObjTec
  oEquipPtr.GetList(ObjecttypeRa:= oTipoObj,EquipmentList:= ListaOT,RETURN:= ret)

 TrataErro:
  ObterListaObjetosTecnicos = retval 

该错误发生在.TipoObj.Rows.Add()中,然后转到" TrataErro"。 即使在桌子上,我也没有任何结果。

Aaron 3364
3楼-- · 2020-08-25 10:48

BapiPtr实例指的是什么? 相同的BAPI_FUNCLOC_GETLIST?

蓋茨
4楼-- · 2020-08-25 10:23

所以,您的问题是您在此行出现错误:

 .TipoObj.Rows.Add()

您遇到什么错误

您使用什么语言以及使用什么RFC库?

黑丝骑士
5楼-- · 2020-08-25 10:26

我的错误是:

 System.Runtime.InteropServices.COMException:您试图访问一个已经删除的对象。 通常,这会导致GP故障! 您的OCX开发团队。
梦想连接
6楼-- · 2020-08-25 10:40

Dairo和 VanessaBrandão-请使用"评论"按钮 这种对话框。 将这些评论(我认为是针对现有答案)作为单独的答案发布时,很难理解和遵循。

谢谢。

一周热门 更多>