FIELD_EXIT 구현시 문제가 생겨서 문의 드립니다.
MM02에서 자재그룹을 변경 할때 영업:판매조직1 뷰에서 자재그룹을 변경하고 영업:판매조직2 뷰에서 자재그룹1 필드를
수정하려고 하는데 영업:판매조직1 뷰의 제품군 필드값을 불러와서 자재마스터 CBO 체크항목 테이블(ZCHK01)에 있는
값만 넣을수 있게 지금 하고 있습니다. 그런데 영업:판매조직1 뷰의 제품군 화면값(수정후)을 가지고 와서 체크항목 테이블과
비교해서 없는경우 에러를 발생시키고 있는경우 자재그룹1의 필드값에 정상적으로 저장시키려고 합니다.
그런데 아래 로직과 같이 구현을 했는데 제품군을 수정후 자재그룹1을 입력하면 '배치별 단위' 기능이 활성이 아닙니다. 라는
에러가 발생합니다. 혹시 제가 로직구현이 이상한게 된건지 아니면 다른부분에 문제가 있는지 혹시 아시는분은 답변 부탁
드립니다.
===============================================================================================================
FUNCTION field_exit_mvgr1.
*"----------------------------------------------------------------------
*"*"Local interface:
*" IMPORTING
*" REFERENCE(INPUT)
*" EXPORTING
*" REFERENCE(OUTPUT)
*"----------------------------------------------------------------------
DATA: v_fieldvalue LIKE dynpread-fieldvalue.
DATA: v_matkl LIKE mara-matkl,
v_spart LIKE mara-spart,
v_mvgr1 LIKE mvke-mvgr1.
CLEAR: v_fieldvalue.
CLEAR: v_matkl, v_mvgr1, v_spart.
IF input IS INITIAL.
output = input.
ELSE.
GET PARAMETER ID 'WRK' FIELD v_fieldvalue.
IF v_fieldvalue = '1000' OR v_fieldvalue = '1100' OR
v_fieldvalue = '2100'
OR v_fieldvalue = '9100'.
output = input.
EXIT.
ENDIF.
CLEAR v_fieldvalue.
PERFORM dynp_values_read USING 'SAPLMGD1' '1004' 'RMMG1-MATNR'
CHANGING v_fieldvalue.
SELECT SINGLE matkl
INTO v_matkl
FROM mara
WHERE matnr = v_fieldvalue.
IF v_matkl IS INITIAL.
MESSAGE e999(zmsg) WITH '자재그룹 조회오류 발생 !'.
ELSE.
CLEAR v_fieldvalue.
PERFORM dynp_values_read USING 'SAPLMGD1' '2158' 'MARA-SPART'
CHANGING v_fieldvalue.
SELECT SINGLE mvgr1
INTO v_mvgr1
FROM zchk01
WHERE matkl = v_matkl
AND spart = v_fieldvalue.
IF sy-subrc <> 0.
MESSAGE e999(zmsg) WITH '해당 자재그룹의 체크항목이 없습니다!'.
ELSE.
IF input <> v_mvgr1.
MESSAGE e996(zmsg) WITH '자재그룹1이 옳바르지 않습니다....'
v_mvgr1 '(으)로 선택되어야 합니다 !'.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDFUNCTION.
댓글 2
-
mean
2008.10.16 23:35
-
이노펠리스
2008.10.16 23:39
화면 필드값 가지고 오는 PERFORM 부분에 해당 에러 메세지가 있습니다.
FUNCTION-POOL zpdfgktgrm. "MESSAGE-ID ..
TYPE-POOLS shlp. "탐색도움말-Exit에 사용될 변수형 선언
*&---------------------------------------------------------------------*
*& Form DYNP_VALUES_READ
*&---------------------------------------------------------------------*
* 화면 필드값 읽어오기
*----------------------------------------------------------------------*
* -->P_DYNAME 프로그램명
* -->P_DYNUMB 화면번호
* -->P_FIELDNAME 필드명
* <--P_FIELDVALUE 필드값 (리턴)
*----------------------------------------------------------------------*
FORM dynp_values_read USING p_dyname
p_dynumb
p_fieldname
CHANGING p_fieldvalue.
DATA: it_dynfld LIKE STANDARD TABLE OF dynpread
WITH HEADER LINE.
CLEAR it_dynfld. REFRESH it_dynfld.
it_dynfld-fieldname = p_fieldname.
APPEND it_dynfld.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = p_dyname
dynumb = p_dynumb
TABLES
dynpfields = it_dynfld
EXCEPTIONS
invalid_abapworkarea = 1
invalid_dynprofield = 2
invalid_dynproname = 3
invalid_dynpronummer = 4
invalid_request = 5
no_fielddescription = 6
invalid_parameter = 7
undefind_error = 8
double_conversion = 9
stepl_not_found = 10
OTHERS = 11.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
p_fieldvalue = it_dynfld-fieldvalue.
ENDFORM. " DYNP_VALUES_READ
배치별 단위' 기능이 활성이 아닙니다.' 라는 메세지는 구현한 부분이 없는데, 뜨네요.
혹시 message번호를 실수로 잘못 지정하셨다거나, message-class이름을 잘못 지정하신건 아닐까요.
저도 그런경우가 종종 있어서요.