‎2009 Apr 22 11:29 AM
hi,
DATA : BEGIN OF ITAB OCCURS 0.
INCLUDE STRUCTURE WB2_V_MKPF_MSEG2.
DATA : END OF ITAB.
DATA : BEGIN OF IT_ZTPLSTOCK OCCURS 0.
INCLUDE STRUCTURE ZTPLSTOCK.
DATA : END OF IT_ZTPLSTOCK.
DATA : BEGIN OF ITAB_NEW OCCURS 0.
INCLUDE STRUCTURE WB2_V_MKPF_MSEG2.
DATA : END OF ITAB_NEW.
DATA : BEGIN OF IT_FINAL OCCURS 0,
MATNR LIKE ZTPLSTOCK-MATNR,
WERKS LIKE ZTPLSTOCK-WERKS,
ZMONTH LIKE ZTPLSTOCK-ZMONTH,
MJAHR LIKE ZTPLSTOCK-MJAHR,
MENGE1 LIKE ZTPLSTOCK-MENGE1,
MEINS1 LIKE ZTPLSTOCK-MEINS1,
DMBTR1 LIKE ZTPLSTOCK-DMBTR1,
MENGE2 LIKE ZTPLSTOCK-MENGE2,
MEINS2 LIKE ZTPLSTOCK-MEINS2,
DMBTR2 LIKE ZTPLSTOCK-DMBTR2,
END OF IT_FINAL.
DATA : IT_FINAL1 LIKE IT_FINAL OCCURS 0 WITH HEADER LINE.
DATA DATE LIKE SY-DATUM.
DATA DATE1 LIKE SY-DATUM.
DATA DATE2 LIKE SY-DATUM.
DATA DATE3 LIKE SY-DATUM.
DATA BUDAT LIKE SY-DATUM.
DATA BEDAT LIKE SY-DATUM.
DATA : D1(4),
D2(2),
D3(2).
DATA: BEGIN OF MONTH OCCURS 4,
SIGN(1),
OPTION(2),
LOW(8),
HIGH(8),
END OF MONTH .
SELECT-OPTIONS: S_WERKS FOR WB2_V_MKPF_MSEG2-WERKS_I.
PARAMETERS: S_MJAHR LIKE WB2_V_MKPF_MSEG2-MJAHR OBLIGATORY.
SELECT-OPTIONS: S_MATNR FOR WB2_V_MKPF_MSEG2-MATNR_I OBLIGATORY.
SELECT-OPTIONS: S_MONTH FOR T549M-PCMTH.
CONCATENATE S_MJAHR S_MONTH-LOW '01' INTO DATE.
CONCATENATE S_MJAHR S_MONTH-HIGH '01' INTO DATE3.
IF S_MONTH-HIGH IS INITIAL.
CALL FUNCTION 'BKK_GET_MONTH_LASTDAY'
EXPORTING
I_DATE = DATE
IMPORTING
E_DATE = DATE1.
MONTH-SIGN = 'I'.
MONTH-OPTION = 'BT'.
MONTH-LOW = DATE.
MONTH-HIGH = DATE1.
APPEND MONTH.
ELSE.
CALL FUNCTION 'BKK_GET_MONTH_LASTDAY'
EXPORTING
I_DATE = DATE
IMPORTING
E_DATE = DATE1.
CALL FUNCTION 'BKK_GET_MONTH_LASTDAY'
EXPORTING
I_DATE = DATE3
IMPORTING
E_DATE = DATE2.
MONTH-SIGN = 'I'.
MONTH-OPTION = 'BT'.
MONTH-LOW = DATE.
MONTH-HIGH = DATE2.
APPEND MONTH.
ENDIF.
DATA: QUAN1 LIKE MSEG-MENGE.
DATA: QUAN2 LIKE MSEG-MENGE.
DATA: QUAN3 LIKE MSEG-MENGE.
DATA: QUAN4 LIKE MSEG-MENGE.
DATA: QUAN5 LIKE MSEG-MENGE.
DATA: QUAN6 LIKE MSEG-MENGE.
DATA: AMT1 LIKE MSEG-DMBTR.
DATA: AMT2 LIKE MSEG-DMBTR.
DATA: AMT3 LIKE MSEG-DMBTR.
DATA: AMT4 LIKE MSEG-DMBTR.
DATA: AMT5 LIKE MSEG-DMBTR.
DATA: AMT6 LIKE MSEG-DMBTR.
START-OF-SELECTION.
SELECT * FROM WB2_V_MKPF_MSEG2 INTO CORRESPONDING FIELDS OF TABLE ITAB
WHERE WERKS_I IN S_WERKS
AND MJAHR_I EQ S_MJAHR
AND MATNR_I IN S_MATNR
AND BUDAT IN MONTH.
LOOP AT ITAB.
MOVE : ITAB-MATNR_I TO IT_FINAL-MATNR,
ITAB-WERKS_I TO IT_FINAL-WERKS,
ITAB-MJAHR_I TO IT_FINAL-MJAHR,
ITAB-MENGE_I TO IT_FINAL-MENGE,
ITAB-DMBTR_I TO IT_FINAL-DMBTR.
APPEND IT_FINAL.
CLEAR IT_FINAL.
ENDLOOP.
SELECT * FROM WB2_V_MKPF_MSEG2 INTO CORRESPONDING FIELDS OF TABLE
ITAB_NEW FOR ALL ENTRIES IN IT_FINAL WHERE WERKS_I = IT_FINAL-WERKS
AND MJAHR_I = IT_FINAL-MJAHR
AND MATNR_I = IT_FINAL-MATNR
AND BUDAT IN MONTH.
LOOP AT IT_FINAL.
MOVE-CORRESPONDING IT_FINAL TO IT_FINAL1.
LOOP AT ITAB_NEW WHERE WERKS_I = IT_FINAL-WERKS
AND MJAHR_I = IT_FINAL-MJAHR
AND MATNR_I = IT_FINAL-MATNR
AND BUDAT IN MONTH.
IF ITAB_NEW-SHKZG_I = 'H'.
ITAB_NEW-MENGE_I = ITAB_NEW-MENGE_I * -1.
ITAB_NEW-DMBTR_I = ITAB_NEW-DMBTR_I * -1.
ELSE.
ITAB_NEW-MENGE_I = ITAB_NEW-MENGE_I.
ITAB_NEW-DMBTR_I = ITAB_NEW-DMBTR_I.
ENDIF.
IF ITAB_NEW-BWART_I = '101' OR ITAB_NEW-BWART_I = '102'
OR ITAB_NEW-BWART_I = '122' OR ITAB_NEW-BWART_I = '123'.
QUAN1 = QUAN1 + ITAB_NEW-MENGE_I.
AMT1 = AMT1 + ITAB_NEW-DMBTR_I.
MOVE ITAB_NEW-MEINS_I TO IT_FINAL1-MEINS1.
ENDIF.
IF ITAB_NEW-BWART_I = '201' OR ITAB_NEW-BWART_I = '202'
OR ITAB_NEW-BWART_I = '261' OR ITAB_NEW-BWART_I = '262'.
QUAN2 = QUAN2 + ITAB_NEW-MENGE_I.
AMT2 = AMT2 + ITAB_NEW-DMBTR_I.
MOVE ITAB_NEW-MEINS_I TO IT_FINAL1-MEINS2.
ENDIF.
ENDLOOP.
MOVE QUAN1 TO IT_FINAL1-MENGE1.
MOVE QUAN2 TO IT_FINAL1-MENGE2.
MOVE AMT1 TO IT_FINAL1-DMBTR1.
MOVE AMT2 TO IT_FINAL1-DMBTR2.
APPEND IT_FINAL1.
CLEAR: QUAN1,QUAN2,
AMT1,AMT2,IT_FINAL.
ENDLOOP.
LOOP AT IT_FINAL1.
MOVE-CORRESPONDING IT_FINAL1 TO ZTPLSTOCK.
INSERT ZTPLSTOCK.
ENDLOOP.In the above program i need to insert month fields in zmonth field in the table.
in the selection-screen s_month high and low values are there how to insert those values.
suggest some ideas.
regards,
Bathri
‎2009 Apr 22 11:33 AM
This is not the way to post a thread...
it should be in a proper way to understand
‎2009 Apr 22 11:34 AM
hello,
Use the following pointers:
LOOP AT IT_FINAL1.
MOVE-CORRESPONDING IT_FINAL1 TO ZTPLSTOCK.
it_final1-zmonth = s_date-high+04(02). " This is the filed to be added
INSERT ZTPLSTOCK.
ENDLOOP
‎2009 Apr 22 11:35 AM
Transfer your
wa_tm is type table of target table where data has to be pass
wa-field = wa_tmp-field
‎2009 Apr 22 12:01 PM
Hi,
To update table from internal table.
You can use
MODIFY TABLE TABLE NAME FROM INTERNAL TABLE.
Hope it helps
Regards
Mansi
‎2009 May 04 1:30 PM