带有子例程的功能模块

2020-08-26 16:09发布

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

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


大家好,

我必须创建一个对象的外部链接,并具有以下代码:

 FUNCTION Z_ANLAGE_HINZUFUEGEN4。
 *" ------------------------------------------------  ----------------------
 *" *" Lokale Schnittstelle:
 *"正在导入
 *" VALUE(I_OBJECTTYPE)喜欢BORIDENT-OBJTYPE可选
 *" VALUE(I_OBJECTKEY)像BORIDENT-OBJKEY可选
 *" VALUE(I_URL)喜欢SOLI-LINE可选
 *" VALUE(I_URLDES)喜欢SOOD1-OBJDES可选
 *" VALUE(I_NOCOMMIT)类型XFELD可选
 *"表格
 *" OT_RETURN结构BAPIRET2
 *" ------------------------------------------------  ----------------------

  数据:l_owner像soud-usrnam,
          l_folderid像soodk,
          l_obj_id就像soodk,
          l_objdata像sood1,

          带有标题行的sol_lt_objcont类型表,
          带有标题行的sol_lt_objhead类型表,

          l_object像borident,
          l_reldoc像borident,

          l_syst就像syst。
 * -------------------------------------------------  ----------------------

 * 1。 获取文件夹ID。
    l_owner = sy-uname。
    调用函数" SO_FOLDER_ROOT_ID_GET"
      出口
        所有者= l_owner
        地区='B'
      输入
        folder_id = l_folderid
      例外情况
        communication_failure = 1
        owner_not_exist = 2
        system_failure = 3
        x_错误= 4
        其他= 5。
    如果sy-subrc <> 0。
      l_syst = syst。
      使用ot_return l_syst'1.FolderRoot'执行collect_message。
      附加ot_return。
      出口。
    万一。

 * 2。 插入物件

    l_objdata-objla ='EN'。
    l_objdata-objdes = i_urldes。
    l_objdata-objsns ='O'。

    将"&KEY&" i_url连接到lt_objcont。
    附加lt_objcont。

    调用函数" SO_OBJECT_INSERT"
      出口
        folder_id = l_folderid
        object_type ='URL'
        object_hd_change = l_objdata
        所有者= l_owner
      输入
        object_id = l_obj_id
      桌子
        objcont = lt_objcont
        objhead = lt_objhead
      例外情况
        active_user_not_exist = 1
        communication_failure = 2
        component_not_available = 3
        dl_name_exist = 4
        folder_not_exist = 5
        folder_no_authorization = 6
        object_type_not_exist = 7
        operation_no_authorization = 8
        owner_not_exist = 9
        parameter_error = 10
        replace_not_active = 11
        replace_not_defined = 12
        system_failure = 13
        x_错误= 14
        其他= 15。
    如果sy-subrc <> 0。
      l_syst = syst。
      使用ot_return l_syst'2.ObjectInsert'执行collect_message。
      附加ot_return。
      出口。
    万一。

 * 3。 创建二进制关系

    l_object-objkey = i_objectkey。
    l_object-objtype = i_objecttype。

    将l_folderid l_obj_id连接到l_reldoc-objkey中。
    l_reldoc-objtype ='MESSAGE'。

    调用函数" BINARY_RELATION_CREATE"
      出口
        obj_rolea = l_object
        obj_roleb = l_reldoc
        Relationtype ='URL'
      例外情况
        no_model = 1
        internal_error = 2
        未知= 3
        其他= 4。
    如果sy-subrc <> 0。
      l_syst = syst。
      使用ot_return l_syst执行collect_message
      '3.BinaryRelationCreate'。
      附加ot_return。
      出口。
    万一。

 * 4。 提交LUW
 *所有成功,发送成功消息。

    清除:l_syst-msgid,l_syst-msgno。
    l_syst-msgty ='S'。
    l_syst-msgv1 ='链接创建成功'。

    使用ot_return l_syst'4执行collect_message。  URLLinkCreated"。
    附加ot_return。
    如果i_nocommit是初始的。
      调用函数" BAPI_TRANSACTION_COMMIT"。
    万一。





 结束功能。


 

以及子例程:collect_message:

 * ----------------------------------------------  ------------------------ *
 ***包含/1BCDWB/LIQG000000000039F01。
 * -------------------------------------------------  --------------------- *

 *&------------------------------------------------  --------------------- *
 *&表格collect_message
 *&------------------------------------------------  --------------------- *


 像bapiret2一样使用o_return形成collect_message
                             i_syst像syst
                             i_callpoint像bapiret2-parameter。

    清除o_return。
    o_return-type = i_syst-msgty。
    如果i_syst-msgty是初始的。
      o_return-type ='E'。
      i_syst-msgty ='E'。
    万一。
    o_return-id = i_syst-msgid。
    o_return-number = i_syst-msgno。
    o_return-message_v1 = i_syst-msgv1。
    o_return-message_v2 = i_syst-msgv2。
    o_return-message_v3 = i_syst-msgv3。
    o_return-message_v4 = i_syst-msgv4。

    o_return-parameter = i_callpoint。

    消息ID i_syst-msgid类型i_syst-msgty编号i_syst-msgno
    o_return-message。

  最终形式。  " collect_message


 
但是不幸的是,错误消息出现了:表格" COLLECT_MESSAGE"不存在。

那是为什么,我该如何解决?

非常感谢Taha

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

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


大家好,

我必须创建一个对象的外部链接,并具有以下代码:

 FUNCTION Z_ANLAGE_HINZUFUEGEN4。
 *" ------------------------------------------------  ----------------------
 *" *" Lokale Schnittstelle:
 *"正在导入
 *" VALUE(I_OBJECTTYPE)喜欢BORIDENT-OBJTYPE可选
 *" VALUE(I_OBJECTKEY)像BORIDENT-OBJKEY可选
 *" VALUE(I_URL)喜欢SOLI-LINE可选
 *" VALUE(I_URLDES)喜欢SOOD1-OBJDES可选
 *" VALUE(I_NOCOMMIT)类型XFELD可选
 *"表格
 *" OT_RETURN结构BAPIRET2
 *" ------------------------------------------------  ----------------------

  数据:l_owner像soud-usrnam,
          l_folderid像soodk,
          l_obj_id就像soodk,
          l_objdata像sood1,

          带有标题行的sol_lt_objcont类型表,
          带有标题行的sol_lt_objhead类型表,

          l_object像borident,
          l_reldoc像borident,

          l_syst就像syst。
 * -------------------------------------------------  ----------------------

 * 1。 获取文件夹ID。
    l_owner = sy-uname。
    调用函数" SO_FOLDER_ROOT_ID_GET"
      出口
        所有者= l_owner
        地区='B'
      输入
        folder_id = l_folderid
      例外情况
        communication_failure = 1
        owner_not_exist = 2
        system_failure = 3
        x_错误= 4
        其他= 5。
    如果sy-subrc <> 0。
      l_syst = syst。
      使用ot_return l_syst'1.FolderRoot'执行collect_message。
      附加ot_return。
      出口。
    万一。

 * 2。 插入物件

    l_objdata-objla ='EN'。
    l_objdata-objdes = i_urldes。
    l_objdata-objsns ='O'。

    将"&KEY&" i_url连接到lt_objcont。
    附加lt_objcont。

    调用函数" SO_OBJECT_INSERT"
      出口
        folder_id = l_folderid
        object_type ='URL'
        object_hd_change = l_objdata
        所有者= l_owner
      输入
        object_id = l_obj_id
      桌子
        objcont = lt_objcont
        objhead = lt_objhead
      例外情况
        active_user_not_exist = 1
        communication_failure = 2
        component_not_available = 3
        dl_name_exist = 4
        folder_not_exist = 5
        folder_no_authorization = 6
        object_type_not_exist = 7
        operation_no_authorization = 8
        owner_not_exist = 9
        parameter_error = 10
        replace_not_active = 11
        replace_not_defined = 12
        system_failure = 13
        x_错误= 14
        其他= 15。
    如果sy-subrc <> 0。
      l_syst = syst。
      使用ot_return l_syst'2.ObjectInsert'执行collect_message。
      附加ot_return。
      出口。
    万一。

 * 3。 创建二进制关系

    l_object-objkey = i_objectkey。
    l_object-objtype = i_objecttype。

    将l_folderid l_obj_id连接到l_reldoc-objkey中。
    l_reldoc-objtype ='MESSAGE'。

    调用函数" BINARY_RELATION_CREATE"
      出口
        obj_rolea = l_object
        obj_roleb = l_reldoc
        Relationtype ='URL'
      例外情况
        no_model = 1
        internal_error = 2
        未知= 3
        其他= 4。
    如果sy-subrc <> 0。
      l_syst = syst。
      使用ot_return l_syst执行collect_message
      '3.BinaryRelationCreate'。
      附加ot_return。
      出口。
    万一。

 * 4。 提交LUW
 *所有成功,发送成功消息。

    清除:l_syst-msgid,l_syst-msgno。
    l_syst-msgty ='S'。
    l_syst-msgv1 ='链接创建成功'。

    使用ot_return l_syst'4执行collect_message。  URLLinkCreated"。
    附加ot_return。
    如果i_nocommit是初始的。
      调用函数" BAPI_TRANSACTION_COMMIT"。
    万一。





 结束功能。


 

以及子例程:collect_message:

 * ----------------------------------------------  ------------------------ *
 ***包含/1BCDWB/LIQG000000000039F01。
 * -------------------------------------------------  --------------------- *

 *&------------------------------------------------  --------------------- *
 *&表格collect_message
 *&------------------------------------------------  --------------------- *


 像bapiret2一样使用o_return形成collect_message
                             i_syst像syst
                             i_callpoint像bapiret2-parameter。

    清除o_return。
    o_return-type = i_syst-msgty。
    如果i_syst-msgty是初始的。
      o_return-type ='E'。
      i_syst-msgty ='E'。
    万一。
    o_return-id = i_syst-msgid。
    o_return-number = i_syst-msgno。
    o_return-message_v1 = i_syst-msgv1。
    o_return-message_v2 = i_syst-msgv2。
    o_return-message_v3 = i_syst-msgv3。
    o_return-message_v4 = i_syst-msgv4。

    o_return-parameter = i_callpoint。

    消息ID i_syst-msgid类型i_syst-msgty编号i_syst-msgno
    o_return-message。

  最终形式。  " collect_message


 
但是不幸的是,错误消息出现了:表格" COLLECT_MESSAGE"不存在。

那是为什么,我该如何解决?

非常感谢Taha

付费偷看设置
发送
2条回答
Aaron 3364
1楼-- · 2020-08-26 16:52

如果双击" perform collect_message "语句会发生什么情况?

PeteA

葫芦娃快救爷爷
2楼-- · 2020-08-26 16:51

它会跳转到 表格 collect_message/Endform

我通过在函数Z_ANLAGE_HINZUFUEGEN4中添加子例程来解决



一周热门 更多>