Нужно описать функцию по аналогии со следующим методом:
Code:
METHOD CallSHlp.
DATA: lsSHlp TYPE shlp_descr_t,
ltRetVal TYPE TABLE OF ddshretval,
lsInterface TYPE ddshiface,
lsRetVal TYPE ddshretval,
ltParam TYPE PassParam.
CLEAR: lsSHlp, ltRetVal, lsInterface.
REFRESH ltRetVal.
CHECK sy-subrc = 0.
CALL FUNCTION 'F4IF_GET_SHLP_DESCR'
EXPORTING
SHLPNAME = lHlpName
IMPORTING
SHLP = lsSHlp
EXCEPTIONS
OTHERS = 1.
READ TABLE lsSHlp-interface
WITH KEY shlpfield = lFldName
INTO lsInterface.
IF sy-subrc IS INITIAL.
lsInterface-valfield = 'X'.
MODIFY lsSHlp-interface FROM lsInterface INDEX sy-tabix.
ENDIF.
CALL FUNCTION 'F4IF_START_VALUE_REQUEST'
EXPORTING
SHLP = lsSHlp
TABLES
RETURN_VALUES = ltRetVal
EXCEPTIONS
OTHERS = 1.
READ TABLE ltRetVal INTO lsRetVal INDEX 1.
IF SY-SUBRC = 0.
lRet = lsRetVal-fieldval.
ENDIF.
ENDMETHOD.
declaration
CallSHlp
IMPORTING
lHlpName TYPE C
lFldName TYPE C
CHANGING
lRet TYPE ANY.
Затем вызвать следующим образом
Code:
REFRESH ltParam.
CLEAR ltParam.
ltParam-FldName = 'RECN'.
ltParam-DefaultVal = otab-lifnr.
APPEND ltParam TO ltParam.
IF NOT otab-zuonr IS INITIAL.
CLEAR ltParam.
ltParam-FldName = 'EXTNUM'.
ltParam-DefaultVal = otab-zuonr.
APPEND ltParam TO ltParam.
ENDIF.
CLEAR ltParam.
ltParam-FldName = 'HBKID'.
ltParam-DefaultVal = febko-hbkid.
APPEND ltParam TO ltParam.
CLEAR ltParam.
ltParam-FldName = 'HKTID'.
ltParam-DefaultVal = febko-hktid.
APPEND ltParam TO ltParam.
CLEAR ltParam.
ltParam-FldName = 'MNUM'.
ltParam-ValField = 'X'.
APPEND ltParam TO ltParam.
CLEAR ltParam.
ltParam-FldName = 'LIFNR'.
ltParam-ValField = 'X'.
APPEND ltParam TO ltParam.
CLEAR ltParam.
ltParam-FldName = 'KUNNR'.
ltParam-ValField = 'X'.
APPEND ltParam TO ltParam.
CLEAR ltParam.
ltParam-FldName = 'BANKL'.
ltParam-ValField = 'X'.
APPEND ltParam TO ltParam.
CLEAR ltParam.
ltParam-FldName = 'BANKN'.
ltParam-ValField = 'X'.
APPEND ltParam TO ltParam.
CALL METHOD cl_stuff=>CallSHlpExt
EXPORTING
lHlpName = 'ZDRAFT'
CHANGING
ltValues = ltParam[].
READ TABLE ltParam WITH KEY FldName = 'MNUM'.
IF sy-subrc = 0.
otab-kidno = ltParam-retvalue.
ENDIF.
ну и потом полученное значение после считывания из таблицы ltParam вывести на экран...
ОГраничение устанавливается через вот эту конструкцию:
Code:
CLEAR ltParam.
ltParam-FldName = 'HKTID'.
ltParam-DefaultVal = febko-hktid.
APPEND ltParam TO ltParam.
Смотреть где встречается в в коде выше...