필드에 있는 수량을 가져와서 합계를 내려고 합니다
----------------------
| 수량 | 상태
----------------------
1 | 100 | O
2 | 100 | X
테이블에 위와 같이 저장되어 있다고 할때
상태가 O이면 입고, X이면 반품상태로
지정하여 서로의 합은 0 이 되어야 합니다.
O이면 양수, X이면 음수로 계산하면 될 것 같은데,
이것을 어떻게 처리해야 좋을지 모르겠습니다.
(수량은 모두 양수로 되어 있습니다.)
조언 부탁드리겠습니다^^
댓글 4
-
Joon
2010.07.20 02:37
-
맑은하늘
2010.07.20 02:46
CONSTANTS : CO_O VALUE 'O',
CO_X VALUE 'X'.
DATA : BEGIN OF ITAB OCCURS 0,
SERNO TYPE I,
QTY TYPE I,
STAT ,
END OF ITAB.
DATA RESULT TYPE I.
START-OF-SELECTION.
CLEAR ITAB.
ITAB-SERNO = 1.
ITAB-QTY = 100.
ITAB-STAT = CO_O.
APPEND ITAB.
CLEAR ITAB.
ITAB-SERNO = 2.
ITAB-QTY = 100.
ITAB-STAT = CO_X.
APPEND ITAB.
CLEAR RESULT.
WRITE : /(04) '순번' CENTERED,
(05) '수량' CENTERED,
(04) '상태' CENTERED,
(10) '결과' CENTERED.
LOOP AT ITAB.
CASE ITAB-STAT.
WHEN CO_O. ADD ITAB-QTY TO RESULT.
WHEN CO_X. SUBTRACT ITAB-QTY FROM RESULT.
ENDCASE.
WRITE : /(4) ITAB-SERNO CENTERED,
(5) ITAB-QTY CENTERED,
(4) ITAB-STAT CENTERED,
(10) RESULT CENTERED.
ENDLOOP.
일반적으로 위와 같이 하시면 될 거예요. ^^;;
-
JG
2010.07.20 08:41
간단하게 체크만 하시는거라면 전역 변수 하나 선언해 두시고 상태가 O이면 +1을 X면 -1을 해서 나온 결과값을 보면 될 듯 싶네요.
궁금한게 있는데요... 입고 + 반품 = 0 이 되기를 바라시는거 같은데... 이렇게 되면 무슨 상태(?)인건가요??
+면 입고 된 수량이 많은 듯 싶고..
-면 반품 된 수량이 많은 듯 싶고..
0이면 음.. 어떻게 생각을 해야 될지.. 모르겠네요. 나간게 없다고 봐야 하나요?? (입고된게 모두 출고되고 다시 반품이 되었다......)
-
Chaconne
2010.07.20 17:40
답변 모두 감사합니다 ^^ 현재 구현 중인 기능을 위해서 예를 든 것인데 조금 혼란이 오신듯 합니다.
테이블의 구조와 실제로 제가 출력하고 싶은 부분을 많이 제외 했는데, 해결하는데 많은 도움이 되었습니다~
테이블에서 키값이 존재할꺼잖아요~
루프 돌면서 그 키값을 기준으로,
상태가 O이면 그대로, 상태가 X이면 -1 곱해서 COLLECT 하면 될것같아요~(반대도 상관없겠지요)
그럼 합이 0이 되면 맞는 것이고, 0이 아니면 틀린 것이겠네요.
이정도로 말씀드리면 될런지 모르겠네요~;