그런데, lv_sum 에 합산한 값은 어디서 처리하나요??
move-corresponding..문이 똑같은게 2번이네요..
lv_sum 을...GT_KSGRU 여기또는 GT_TAB 에 밀어넣고 collect 해야하는거 아닌지요..??
>띵호아빠님 답변 감사합니다^^ 멍하니 손가만히 있다가 답변해 주신걸로 해보았습니다.
>
>그런데..값이 안나와요-. ㅠ제가 코딩을 잘못 한거 같은데 봐주실수 있을까하여
>
>코딩한거 올리겠습니다^^; 다시 제질문을 하여 죄송합니다.
> >
>DATA : LV_INDEX(3) TYPE N,
LV_KOSTL TYPE KOSTL,
GV_FIELD(30),
LV_GJAHR TYPE GJAHR,
LT_COSP LIKE COSP OCCURS 0 WITH HEADER LINE.
FIELD-SYMBOLS
DATA : LV_SUM LIKE COSP-WKG001.
SELECT * INTO TABLE LT_COSP
FROM COSP
WHERE LEDNR = '00'
AND OBJNR IN R_OBJNR
AND GJAHR = P_GJAHR
AND GEBER IN R_GEBER
AND WRTTP IN (60)
AND GEBER LIKE '005%' OR GEBER LIKE '006%' OR GEBER LIKE '007%'.
*WKG001 WKG007 INDEX 이용
* LT_COSP-WKG001 ~ LT_COSP-WKG007. "기간값.
"GT_TAB-ACTUAL3= LT_COSP-WKG001 ~ LT_COSP-WKG007 .
LOOP AT LT_COSP.
PERFORM GET_OBJECT USING LT_COSP-OBJNR CHANGING LV_KOSTL.
READ TABLE GT_KSGRU WITH KEY KOSTL = LV_KOSTL.
CHECK SY-SUBRC = 0.
READ TABLE GT_GBGRU WITH KEY GEBER = LT_COSP-GEBER.
CHECK SY-SUBRC = 0.
* LV_INDEX = P_PERBV.
CLEAR LV_SUM.
DO 7 TIMES.
LV_INDEX = SY-INDEX.
CONCATENATE 'LT_COSP-WKG' LV_INDEX INTO GV_FIELD.
ASSIGN (GV_FIELD) TO
LV_SUM = LV_SUM +
ENDDO.
* LV_INDEX = LV_INDEX + 1.
IF LV_INDEX > P_PERBB.
EXIT.
ENDIF.
MOVE-CORRESPONDING GT_KSGRU TO GT_TAB.
MOVE-CORRESPONDING GT_KSGRU TO GT_TAB.
*
COLLECT GT_TAB. CLEAR GT_TAB.
ENDLOOP.
>
>잘못되있거나 수정부분있으시면 답변부탁드려요^^
댓글 7
-
띵호아빠
2008.11.21 18:17
-
국화
2008.11.21 18:38
정말 감사합니다^^ 해결했습니다~~ 한가지만 더 물어봐두될런지요~~// 동일한코딩에 작년 을 구한다면
GJAHR (회계연도)하면 될듯한데요 GJAHR -1을 해봐도 안되길래 다시 질문드려요~~
-
띵호아빠
2008.11.21 19:32
아마도..select 시 where 절의 조건을 확인해 보시면 답을 찾을수 있을것 같은데요..
where 절의 내용중 회계년도 뿐아니라..다른 조건도 달라져야 할것으로 사료됩니다..
도움이 되었다니..다행입니다.
-
국화
2008.11.21 19:52
아빠님 정말 많은 도움이 됬습니다^^ SELECT 절에... 제가 못알아 들어서죄송합니다;;ㅜ_ㅜ
LV_GJAHR = P_GJAHR - 1을 하면안되는건가요... 간단한 문같은데 제가 해석이 서툴러서 죄송해요~
-
띵호아빠
2008.11.21 20:05
죄송은 안하셔도 되구요..ㅋ~
SELECT * INTO TABLE LT_COSP
FROM COSP
WHERE LEDNR = '00'
AND OBJNR IN R_OBJNR
AND GJAHR = P_GJAHR
AND GEBER IN R_GEBER
AND WRTTP IN (60)
AND GEBER LIKE '005%' OR GEBER LIKE '006%' OR GEBER LIKE '007%'.
위의 부분중
WHERE LEDNR = '00'
AND OBJNR IN R_OBJNR
AND GJAHR = P_GJAHR
AND GEBER IN R_GEBER
AND WRTTP IN (60)
AND GEBER LIKE '005%' OR GEBER LIKE '006%' OR GEBER LIKE '007%'.
이중에 table의 data 를 확인하시면 조건이 다를수 있는 항목이 있을것 같습니다.
Table에서 작년 data를 확인하시고, 조건을 만들어 보시기바랍니다.
그리고, lv_gjahr = p_gjahr - 1 은 잘되는 것이지만, select시 사용안하셨으니,
select 전에 p_gjahr = p_gjahr - 1. 후에 select 하시면
하시면 문제 없을듯 싶습니다.
즉, 당년 select 시는 기존 select문 그냥 쓰시고,
작년치 자료 select 시는,
P_GJAHR = P_GJAHR – 1.
SELECT * INTO TABLE LT_COSP
FROM COSP
WHERE LEDNR = '00'
AND OBJNR IN R_OBJNR
AND GJAHR = P_GJAHR
AND GEBER IN R_GEBER
AND WRTTP IN (60)
AND GEBER LIKE '005%' OR GEBER LIKE '006%' OR GEBER LIKE '007%'.
로 해보세요..
-
국화
2008.11.21 20:45
p_gjahr = p_gjahr - 1 SELECT 이전에 줬더니 실행화면에서 회계연도 2008년을 치면 들어가면 2007년 화면이 뜨네요 ㅜ_ㅜ 2008년 조회할때는 누계가 0이 되야되는데 값이 뜨구요~// ㅠ_ㅠ
-
띵호아빠
2008.11.21 21:05
Select 할때 사용할 p_gjahr buff 를 -1 을 해서 읽으면 회계년도가 작년인 데이타를 읽어 오는 거고,
그냥 읽으면 당년의 누적 데이타를 읽어 오게 됩니다...(상기 select 문이 잘 탄다고..가정하에요)..
지금 하시는 프로그램이 Report 프로그램인것 같은데,
p_gjahr = 2007 을 입력하면 작년 데이타를
p_gjahr = 2008 을 입력하면 2008년 데이타를 읽어서 처리할수 있도록 해주면 될것 같습니다..
* LV_INDEX = LV_INDEX + 1.
* LV_INDEX = LV_INDEX + 1.
IF LV_INDEX > P_PERBB.
EXIT.
ENDIF.
MOVE-CORRESPONDING GT_KSGRU TO GT_TAB.
MOVE-CORRESPONDING GT_KSGRU TO GT_TAB.
*
*--이부분 대신에,
GT_TAB-ACTUAL3 = lv_sum.
MOVE-CORRESPONDING GT_KSGRU TO GT_TAB.
MOVE-CORRESPONDING GT_KSGRU TO GT_TAB.
이렇게 바꿔보세요..