RANGES: R_STGRD FOR ZFEMSMAINCURR-STGRD.
R_STGRD-SIGN = 'I'.
R_STGRD-OPTION = 'EQ'.
CASE BUKRS.
WHEN 'C4B5'.
R_STGRD-LOW = '01'.
APPEND R_STGRD. CLEAR R_STGRD-LOW.
R_STGRD-LOW = '02'.
APPEND R_STGRD. CLEAR R_STGRD-LOW.
WHEN 'C430'.
R_STGRD-LOW = '01'.
APPEND R_STGRD. CLEAR R_STGRD-LOW.
R_STGRD-LOW = '02'.
APPEND R_STGRD. CLEAR R_STGRD-LOW.
R_STGRD-LOW = '1'.
APPEND R_STGRD. CLEAR R_STGRD-LOW.
WHEN 'C4M0'.
R_STGRD-LOW = '1'.
APPEND R_STGRD. CLEAR R_STGRD-LOW.
R_STGRD-LOW = '2'.
APPEND R_STGRD. CLEAR R_STGRD-LOW.
R_STGRD-LOW = '3'.
APPEND R_STGRD. CLEAR R_STGRD-LOW.
R_STGRD-LOW = '4'.
APPEND R_STGRD. CLEAR R_STGRD-LOW.
ENDCASE.
SELECT SINGLE STGRD
FROM ZFEMSMAINCURR
INTO CORRESPONDING FIELDS OF GT_MAINCURR
WHERE STGRD IN R_STGRD
AND BUKRS = BUKRS.
IF SY-SUBRC NE 0.
MESSAGE A001 WITH 'it is not companycode'.
ELSE.
MESSAGE S002 WITH 'IT IS SUCCESS'.
ENDIF.
지금 제가 짜놓은 로직에서 case문을 다 빼고 bukrs => 법인코드를 입력하면
stgrd => reason code가 그 법인에 해당하는것만 나오게 할수있나요?
각 법인에서 사용하는 reason code는 다 다릅니다.
고수님들 부탁 드립니다.
급해서요
댓글 4
-
SAP폐인
2008.12.18 21:40
-
하루나
2008.12.18 21:55
삼성 구주 법인쪽인가요??눈에 익은 법인 코드인데요ㅎㅎ Reasons for Reverse Posting 관리하는걸 만드실려고 하는건가봐요?? 항상 목적이 무엇인지가 중요하니까요. 해당 cbo 테이블 레이아웃을 알면 좋겠지만 없으니 소스로만 보면 왜 R_STGRD를 만들려고 하는지 알수가 없네요,, 보통 법인 코드별 reason code가 관리 될텐데 해당 테이블도 마찬가지구요.. 그럼
SELECT STGRD
FROM ZFEMSMAINCURR
INTO CORRESPONDING FIELDS OF GT_MAINCURR
WHERE BUKRS = BUKRS.
하면 해당 법인의 reason code가 쭉 들어올텐데요..
필요하다면
RANGES: R_STGRD FOR ZFEMSMAINCURR-STGRD.
R_STGRD-SIGN = 'I'.
R_STGRD-OPTION = 'EQ'.
loop at ZFEMSMAINCURR .
R_STGRD-LOW = ZFEMSMAINCURR-STGRD.
APPEND R_STGRD. CLEAR R_STGRD-LOW.
endloop .
여튼 위 구문은 한 라인만 가져오니까 오류가 날듯합니다..
수고하세요^^
-
하루나
2008.12.18 23:28
다시 정리하면 위 구문을
CLEAR : gt_maincurr , gt_maincurr[] .
SELECT BUKRS stgrd "<==Single을 빼세요
FROM zfemsmaincurr
INTO CORRESPONDING FIELDS OF gt_maincurr
WHERE bukrs = bukrs.
IF sy-subrc NE 0.
MESSAGE a001 WITH 'it is not companycode'.
ELSE.
MESSAGE s002 WITH 'IT IS SUCCESS'.
ENDIF.
이렇게 정리하면 법인 코드와 reason code가 gt_maincurr 테이블에 들어오겠죠.
아니면
RANGES: r_stgrd FOR zfemsmaincurr-stgrd.
CLEAR : r_stgrd , r_stgrd[] ,
gt_maincurr , gt_maincurr[] .
SELECT stgrd "<==Single을 빼세요
FROM zfemsmaincurr
INTO CORRESPONDING FIELDS OF gt_maincurr
WHERE bukrs = bukrs.
IF sy-subrc NE 0.
MESSAGE a001 WITH 'it is not companycode'.
ELSE.
LOOP AT zfemsmaincurr .
r_stgrd-sign = 'I'.
r_stgrd-option = 'EQ'.
r_stgrd-low = zfemsmaincurr-stgrd.
APPEND r_stgrd. CLEAR r_stgrd.
ENDLOOP .
MESSAGE s002 WITH 'IT IS SUCCESS'.
ENDIF.
이렇게 정리하면 해당 법인의 reason code만 Range와 테이블에 들어갈겁니다.
-
쭈니
2008.12.19 03:44
지금까지 답변 달아주신분들께 너무 감사합니다.
덕분에 잘 해결이 되었습니다.
음.. 어디서 쓰는 로직인지.. 흐 많이 보는 법인코드가 ;;
법인코드 하나에 여러개의 reason code가 들어가는것 같은데.. select single 이라...
법인코드만 입력하실려면 reason code와 법인코드를 매칭시키는 테이블 하나 만드셔서 거기서 끌고 오셔야 할것 같은데요?