현재 월포함 +3
예를 들어 201102로 조건을 주면
02월 03월 04월 05월 4개만 데이터들을 가져오려고합니다.
DB필드들이
ZYEAR "해당년도
MQTY_01
MQTY_02
MQTY_03
MQTY_04
MQTY_05
...
...
...
MQTY_12
이런식으로 되있는데 ... '201102' 사용자가 주는 랜덤 조건에 맞게 어떻게 SELECT해와야 할까요...
아님 다12월까지 SELECT하고나서
필요한것만 4개 빼고 어떻게 지워야하는지 잘 모르겠습니다.
도와주세요..;ㅠㅠ
========================================================================================
답변해주셔서 정말 감사합니다. 많은 도움 되었습니다 ^^
근데 또 막히는 부분이 있네요. ㅠㅠ
select할때 만약에 '201111'로11월 달로 조건을 줬을경우에 11 12 01 02월달
01월 02월은 2012년인데 2011년에 01 02월달은 지우고 가져올 수 있는 방법있을까요?
아래엔 2011년 01월 02월을 가져오고 2012년 01월 02월도 가져오는 로직인데 어떻게 변경할 수 있는 방법이 있을까요..?
SELECT (LT_SEL) "필요한 field하고, 월field을 가져옵니다.
FROM ZSDT0506
INTO TABLE GT_0506
WHERE Z_YYYY IN R_YEAR "r_year에 2011년 2012년
AND REGION IN S_REGION
AND SITE IN R_SITE
AND CUSTOMER IN S_CUST
AND MATNR IN S_MATNR.
댓글 2
-
아밥어렵네요
2011.02.08 00:01
-
ABAPCHOJJA
2011.02.08 00:07
* SELECT : 현재년도(포함) + 3개월치
DATA LT_SELFIELD TYPE TABLE OF STRING.
DATA LT_DATA TYPE TABLE OF (dbtab) WITH HEADER LINE.
DATA LV_FNAME TYPE STRING.
DATA LV_MONTH TYPE N LENGTH 2.
APPEND 'ZYEAR' TO LT_SELFIELD.
DO 4 TIMES.
LV_MONTH = SY-DATUM+4(2) + SY-INDEX - 1. " 당월 포함이므로 당월부터 3개월(4개월)
IF LV_MONTH > 12.
" 년도 증가
" 조건이 다음년도임 - 조건에 다음년도 포함.
LV_MONTH = LV_MONTH - 12.
ENDIF.
CONCATENATE 'MQTY_' LV_MONTH INTO LV_FNAME.
READ TABLE LT_SELFIELD TRANSPORTING NO FIELDS FROM LV_FNAME.
IF SY-SUBRC IS NOT INITIAL.
APPEND LV_FNAME TO LT_SELFIELD.
ENDIF.
ENDDO.
SELECT (LT_SELFIELD) INTO CORRESPONDING FIELDS OF TABLE LT_DATA
FROM (dbtab)
WHERE ....
대략 이정도로 하시면 셀렉트는 될 것 같구요.
삭제는 위처럼 셀렉트하면 나머지는 빈값일 것이니 그대로 modify 해주시면 될 것 같네요. ^^
DATA : lv_count(2) TYPE n,
BEGIN OF ls_append,
append(40) TYPE c,
END OF ls_append,
lt_append LIKE STANDARD TABLE OF ls_append.
LV_COUNT 는 시작월보다 한달 적은
PA_YYMM는 TO
WHILE lv_count < pa_yymm+4(2).
lv_count = lv_count + 1.
CONCATENATE 'MQTY_' lv_count INTO ls_append-append.
APPEND ls_append TO lt_append.
ENDWHILE.
SELECT (lt_append)
INTO CORRESPONDING FIELDS OF TABLE ~~~~
FROM ~~~
WHERE zyear = pA_yymm(4)