Hallo Thomas,
wir standen auch vor der Aufgabe und wir konnten das mit einer kleinen Erweiterung, die uns jemand zur Verfügung stellte, lösen:
In Funktionsgruppe MMPUR_OCI_API für Funktionsbaustein MMPUROCI_CALL folgende Erweiterung implementiert (Position: \FU:MMPUROCI_CALL\SE:BEGIN\EI):
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*" IMPORTING
*" REFERENCE(IMD_WEBSERVICE_ID) TYPE WSI_SERVICE_ID OPTIONAL
*" REFERENCE(IMD_BSTYP) TYPE BSTYP OPTIONAL
*" RAISING
*" CX_MMPUR_NOT_FOUND
*" CX_MMPUR_INCORRECT_CUSTOMIZING
*"----------------------------------------------------------------------
* DATA: lr_badi TYPE REF TO if_ex_bbp_cat_call_enrich,
* lt_additional_name_values TYPE TABLE OF savwctxt.
MOVE imd_webservice_id TO gd_webservice_id.
** get BADI
* CALL METHOD cl_exithandler=>get_instance
* CHANGING
* instance = lr_badi.
*
** call BADI to change the webservice
* CALL METHOD lr_badi->cat_call_enrich
* EXPORTING
* id_bstyp = IMD_BSTYP
* CHANGING
* ct_webservice_id = gd_webservice_id.
**********************************************************************
* 2011-03-29/SER/GSt START OF MODIFICATION *
**********************************************************************
DATA: lt_mmpuroci_details TYPE STANDARD TABLE OF mmpuroci_details,
lv_answer TYPE char2,
ls_spopli TYPE spopli,
lt_spopli TYPE TABLE OF spopli.
FIELD-SYMBOLS: LIKE LINE OF lt_mmpuroci_details. SELECT * FROM mmpuroci_details INTO TABLE lt_mmpuroci_details.
LOOP AT lt_mmpuroci_details ASSIGNING . ls_spopli-varoption = -service_id. ls_spopli-selflag = 'X'.
APPEND ls_spopli TO lt_spopli.
ENDLOOP.
IF lt_spopli[] IS INITIAL.
MESSAGE i000(zgrob_mm).
EXIT.
ENDIF.
CALL FUNCTION 'POPUP_TO_DECIDE_LIST'
EXPORTING
textline1 = 'OCI-Katalog auswählen:'
titel = 'OCI-Auswahl'
IMPORTING
answer = lv_answer
TABLES
t_spopli = lt_spopli
EXCEPTIONS
not_enough_answers = 1
too_much_answers = 2
too_much_marks = 3
OTHERS = 4.
IF sy-subrc <> 0.
EXIT.
ENDIF.
CHECK lv_answer NE 'A'.
READ TABLE lt_spopli INDEX lv_answer INTO ls_spopli.
IF sy-subrc = 0.
gd_webservice_id = ls_spopli-varoption.
ENDIF.
**********************************************************************
* 2011-03-29/SER/GSt END OF MODIFICATION *
**********************************************************************
* in case there is no catalog select the default catalog
IF gd_webservice_id IS INITIAL.
SELECT SINGLE service_id FROM mmpuroci_details "#EC *
INTO gd_webservice_id
WHERE defaultkz EQ cl_mmpur_constants=>yes.
IF sy-subrc NE 0.
RAISE EXCEPTION TYPE cx_mmpur_not_found.
ENDIF.
ENDIF.
** get BADI
* CALL METHOD cl_exithandler=>get_instance
* CHANGING
* instance = lr_badi.
*
** call BADI to add catalog parameters
* CALL METHOD lr_badi->cat_call_enrich
* EXPORTING
* is_cat_entity = gs_ws_header
* CHANGING
* ct_post_values = lt_additional_name_values[].
*
* APPEND LINES OF lt_additional_name_values TO
* gt_additional_name_values.
CALL SCREEN 0100.
EXIT.
Ist schon ein Weilchen her, hat aber funktioniert.