Один из простых способов выбрать последовательно материал — завод — склад, с учётом зависимости воспользоваться следующими ФМ:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
REPORT zre_test. PARAMETERS: p_matnr TYPE matnr, " Материал p_werks TYPE werks, " Завод p_lgort TYPE mard-lgort. " Склад AT SELECTION-SCREEN OUTPUT. LOOP AT SCREEN. IF screen-NAME = 'P_WERKS' AND p_matnr IS INITIAL. screen-INPUT = '0'. CLEAR p_werks. MODIFY SCREEN. ENDIF. IF screen-NAME = 'P_LGORT' AND p_werks IS INITIAL. screen-INPUT = '0'. CLEAR p_lgort. MODIFY SCREEN. ENDIF. ENDLOOP. AT SELECTION-SCREEN ON p_matnr. SELECT SINGLE matnr INTO (p_matnr) FROM mara WHERE matnr = p_matnr. IF sy-subrc NE 0. p_matnr = ''. ELSE. LOOP AT SCREEN. IF screen-NAME = 'P_WERKS'. screen-INPUT = '1'. MODIFY SCREEN. ENDIF. ENDLOOP. ENDIF. AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_werks. CALL FUNCTION 'EINGABEWERTE_WERK' EXPORTING kzall = ' ' kzbew_werk = ' ' matnr = p_matnr IMPORTING werks = p_werks. AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_lgort. CALL FUNCTION 'EINGABEWERTE_LGORT' EXPORTING kzall = ' ' matnr = p_matnr werks = p_werks IMPORTING lagerort = p_lgort werks = p_werks EXCEPTIONS ERROR_MESSAGE = 1. |
Жалко что нельзя так написать, p_matnr TYPE matnr USER-COMMAND f, » Материал
Не удобно каждый раз enter нажимать.
Еще проще написать, как-то так:
p_matnr TYPE mdcl-matnr, » Материал
p_werks TYPE mdcl-werks, » Завод
p_lgort TYPE mdcl-lgpro. » Склад
Согласен, проще найти подходящую структуру, чем сейчас активно и пользуюсь 🙂