Han pasado varios años, pero como ninguna respuesta satisfacía mis necesidades, me gustaría compartir mi solución basada en BOPF aquí también.
Estaba confundido por el título que decía "encontrar FU para FO dado", pero en la pregunta misma suena como "encontrar FO para un FU dado". La segunda parte ya fue resuelta por Thiago Bohn. Me gustaría dar una solución para la primera tarea.
Puedes seleccionar todos los elementos asociados a los TOs mediante retrieve_by_association y desde allí puedes llegar a los FUs por encima de los elementos mediante retrieve_by_associaction nuevamente.
Desde mi entendimiento, no puedes referir directamente de los FOs a los FUs.
Contenido de los fragmentos de código:
-
Recuperando los ITEM_TRs de nuestros TOs
-
Colocando las claves recuperadas en una tabla separada para poder pasarlas al siguiente método
-
Recuperando los FUs
lo_service_manager->retrieve_by_association( EXPORTING iv_node_key = /scmtms/if_tor_c=>sc_node-root it_key = lo_chaco_request->mt_tor_key iv_association = /scmtms/if_tor_c=>sc_association-root-item_tr iv_fill_data = abap_true IMPORTING et_data = lt_item_tr ).
LOOP AT lt_ITEM_TR INTO ls_item_tr. MOVE ls_item_tr-key TO ls_item_key-key. APPEND ls_item_key TO lt_item_key.ENDLOOP.
lo_service_manager->retrieve_by_association( EXPORTING iv_node_key = /scmtms/if_tor_c=>sc_node-item_tr it_key = LT_item_key iv_association = /scmtms/if_tor_c=>sc_association-item_tr-fu_root iv_fill_data = abap_true IMPORTING et_data = lt_tor_root_fu ).