Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

table update from internal table

Former Member
0 Kudos

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

5 REPLIES 5

Former Member
0 Kudos

This is not the way to post a thread...

it should be in a proper way to understand

Former Member
0 Kudos

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

former_member659396
Participant
0 Kudos

Transfer your

wa_tm is type table of target table where data has to be pass

wa-field = wa_tmp-field

Former Member
0 Kudos

Hi,

To update table from internal table.

You can use

MODIFY TABLE TABLE NAME FROM INTERNAL TABLE.

Hope it helps

Regards

Mansi

Former Member
0 Kudos

answered