使用键-非键链接在2个实体之间导航

2020-09-19 21:03发布

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

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


专家们,

我有一个要求:

我有3种实体类型,EKKO,EKPO,MARA,其结构和键与SE11表完全相同。

我创建了2个导航,如下所示。

  1. EKKO_EKPO从采购订单标题导航到项目(参考约束EBELN-EBELN)
  2. MARA_EKPO获取相应物料的采购订单(参考约束MATNR-MATNR)

我正在使用BAPI作为所有实体集的数据源。 然后,我意识到EKKO_EKPO导航可以直接使用以检索相关的EKPO数据...即 EKKOSet/?$ expand = EKKO_EKPO

同时,当我尝试将MARA(其中MATNR不是关键)导航到EKPO(其中MATNR不是关键)时,即 MARASet/?$ expand = MARA_EKPO,我没有得到相关的EKPO数据。 我可以知道最合适的方法吗?

在此期间,我设法做到了以下解决方法(或者我不确定它是否是正确的解决方案)。 我这样做正确吗? 还是有更合适的方法?

如果IV_SOURCE_NAME ='MARA'。
   清除LS_KEYTB。
   将表IT_KEY_TAB读入LS_KEYTB索引1。
   如果SY-SUBRC = 0。
         选择埃伯恩·埃伯普·洛伊兹txz01
                Werks lgort ktmng Menge meins
            来自ekpo
            进入TABLE et_entityset
            其中MATNR = LS_KEYTB-VALUE
            由ebeln ebelp订购。
    万一。
 其他。
 **常规键对键导航
    尝试。
       调用方法SUPER-> EKPOSET_GET_ENTITYSET
       出口
          IV_ENTITY_NAME = IV_ENTITY_NAME
          IV_ENTITY_SET_NAME = IV_ENTITY_SET_NAME
          IV_SOURCE_NAME = IV_SOURCE_NAME
          IT_FILTER_SELECT_OPTIONS = IT_FILTER_SELECT_OPTIONS
          IS_PAGING = IS_PAGING
          IT_KEY_TAB = IT_KEY_TAB
          IT_NAVIGATION_PATH = IT_NAVIGATION_PATH
          IT_ORDER = IT_ORDER
          IV_FILTER_STRING = IV_FILTER_STRING
          IV_SEARCH_STRING = IV_SEARCH_STRING
          IO_TECH_REQUEST_CONTEXT = IO_TECH_REQUEST_CONTEXT
       输入
          ET_ENTITYSET = ET_ENTITYSET
          ES_RESPONSE_CONTEXT = ES_RESPONSE_CONTEXT。
       赶上/IWBEP/CX_MGW_BUSI_EXCEPTION。
       赶上/IWBEP/CX_MGW_TECH_EXCEPTION。
     努力。
 endif。

最好的问候

安德烈·朱利叶斯

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

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


专家们,

我有一个要求:

我有3种实体类型,EKKO,EKPO,MARA,其结构和键与SE11表完全相同。

我创建了2个导航,如下所示。

  1. EKKO_EKPO从采购订单标题导航到项目(参考约束EBELN-EBELN)
  2. MARA_EKPO获取相应物料的采购订单(参考约束MATNR-MATNR)

我正在使用BAPI作为所有实体集的数据源。 然后,我意识到EKKO_EKPO导航可以直接使用以检索相关的EKPO数据...即 EKKOSet/?$ expand = EKKO_EKPO

同时,当我尝试将MARA(其中MATNR不是关键)导航到EKPO(其中MATNR不是关键)时,即 MARASet/?$ expand = MARA_EKPO,我没有得到相关的EKPO数据。 我可以知道最合适的方法吗?

在此期间,我设法做到了以下解决方法(或者我不确定它是否是正确的解决方案)。 我这样做正确吗? 还是有更合适的方法?

如果IV_SOURCE_NAME ='MARA'。
   清除LS_KEYTB。
   将表IT_KEY_TAB读入LS_KEYTB索引1。
   如果SY-SUBRC = 0。
         选择埃伯恩·埃伯普·洛伊兹txz01
                Werks lgort ktmng Menge meins
            来自ekpo
            进入TABLE et_entityset
            其中MATNR = LS_KEYTB-VALUE
            由ebeln ebelp订购。
    万一。
 其他。
 **常规键对键导航
    尝试。
       调用方法SUPER-> EKPOSET_GET_ENTITYSET
       出口
          IV_ENTITY_NAME = IV_ENTITY_NAME
          IV_ENTITY_SET_NAME = IV_ENTITY_SET_NAME
          IV_SOURCE_NAME = IV_SOURCE_NAME
          IT_FILTER_SELECT_OPTIONS = IT_FILTER_SELECT_OPTIONS
          IS_PAGING = IS_PAGING
          IT_KEY_TAB = IT_KEY_TAB
          IT_NAVIGATION_PATH = IT_NAVIGATION_PATH
          IT_ORDER = IT_ORDER
          IV_FILTER_STRING = IV_FILTER_STRING
          IV_SEARCH_STRING = IV_SEARCH_STRING
          IO_TECH_REQUEST_CONTEXT = IO_TECH_REQUEST_CONTEXT
       输入
          ET_ENTITYSET = ET_ENTITYSET
          ES_RESPONSE_CONTEXT = ES_RESPONSE_CONTEXT。
       赶上/IWBEP/CX_MGW_BUSI_EXCEPTION。
       赶上/IWBEP/CX_MGW_TECH_EXCEPTION。
     努力。
 endif。

最好的问候

安德烈·朱利叶斯

付费偷看设置
发送
1条回答
Doze时光
1楼-- · 2020-09-19 21:43

嗨,

我假设您正在使用BAPI_PO_GET_DETAIL(或类似的东西),它可以一次性获取PO标头及其所有项目的详细信息,因此您的导航看起来像是可以正常工作,但在后台却是BAPI的功能。 对于材料,我不确定是否有任何此类BAPI/FM,因此您对Expanded_Entity的自定义处理看起来很不错,可以满足要求。

一周热门 更多>