Application Development and Automation 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: 
Read only

Int_Table into Ztable

Former Member
0 Likes
2,462

Hello,

i'm trying to insert the values of an internal table into a ztable and inspite of the data in the internal table is correct, when i pass the values to the ztable it shows up messed up (like on the imagem i'm sending)...

any idea why?


**********************************

******** MODIFICAR INSERIR *******

******* NA TABELA Z **************

**********************************

      v_mat = w_tab1-mat.

      w_tab1-data = sy-datum.

      w_tab1-hora = sy-uzeit.

      w_tab1-dsc = v_maktx.

      w_tab1-user = sy-uname.

      w_tab1-idioma = so_lang.

      w_tab1-t_lote = v_tlotes.

      MODIFY  t_tab1 FROM  w_tab1.

      MODIFY  ztab1 FROM TABLE t_tab1.

    ENDLOOP.

  ENDIF.

My ztab1 is like this structure (plus the MANDT).


TYPES:

  BEGIN OF t_type1.

TYPES:

*     client type mara-mandt,

      mat TYPE mara-matnr,

      data TYPE ztab1-datac,

      hora TYPE ztab1-horac,

      dsc TYPE makt-maktx,

      user TYPE ztab1-userc,

      idioma TYPE makt-spras,

      t_lote TYPE int4,

END OF t_type1.

TYPES: t_table TYPE TABLE OF t_type1.

DATA: t_tab1 TYPE t_table.

DATA: w_tab1 TYPE t_type1.

Messed up table

- ON THE ATTACHED FILES

description (denominaçao) should be FRANGO VIVO, for example.

it seems it's shifted... o.O can't understand why.

Thanks in advance.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
2,419

Hi bruno,

Pls check following code:  I have modified.

*&---------------------------------------------------------------------*
*& Report  ZR_EX1
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZR_EX1.

**** TABELAS STANDARD E Z
TABLES: mara, makt, marc, mcha, ztab1.

**** ESTRUTURA DADOS TABELA Z_TAB1
TYPES:
   BEGIN OF t_type1.
     TYPES:
       client type mara-mandt,
       mat TYPE mara-matnr,
       data TYPE ztab1-datac,
       hora TYPE ztab1-horac,
       dsc TYPE makt-maktx,
       user TYPE ztab1-userc,
       idioma TYPE makt-spras,
       t_lote TYPE int4,
END OF t_type1.

TYPES: t_table TYPE TABLE OF t_type1.
DATA: t_tab1 TYPE t_table.
DATA: w_tab1 TYPE t_type1.

*** SELECT OPTIONS

SELECT-OPTIONS: so_matnr FOR mara-matnr.
SELECT-OPTIONS: so_date FOR sy-datum DEFAULT sy-datum TO '99991231'.
SELECT-OPTIONS: so_time FOR sy-timlo DEFAULT sy-timlo TO '235959'.
PARAMETER: so_lang TYPE makt-spras.
SELECT-OPTIONS: so_centr FOR marc-werks.
SELECT-OPTIONS: so_userc FOR ztab1-userc NO INTERVALS.

**** RADIO BUTTONS
PARAMETERS: p_read RADIOBUTTON GROUP g1,
             p_write RADIOBUTTON GROUP g1 DEFAULT 'X'.

**** Estrutura WA dos valores retornados dos forms

DATA: v_mat TYPE mara-matnr,
       v_maktx TYPE makt-maktx,
       v_marc TYPE marc-werks,
       v_tlotes TYPE i VALUE 0,
       v_data TYPE date,
       v_hora TYPE time,
       v_user TYPE username.

DATA: v_count TYPE i VALUE 0.

START-OF-SELECTION.
************************************
** LEITURA NA TABELA INTERNA
************************************

   IF p_read = 'X'.
     write: ztab1-mat.

*  DATA r_grid TYPE REF TO cl_gui_alv_grid. "referencia à classe alvgrid
*  DATA: wa_fieldcat TYPE slis_fieldcat_alv, "field catalog
*        wa_layout   TYPE slis_layout_alv,
*        it_fieldcat TYPE slis_t_fieldcat_alv.

*  PERFORM MONTAR_CAMPOS.
*  PERFORM MONTAR_LAYOUT.
*  PERFORM EXIBIR_ALV.

************************************
** ESCRITA NA TABELA INTERNA
************************************
   ELSEIF p_write = 'X'.
* preform s_mara - BUSCA NUM MATERIAL
     PERFORM select_mara.
     LOOP AT t_tab1 INTO w_tab1.
* preform select makt - BUSCA DESCRIÇÃO
       PERFORM select_makt USING  w_tab1-mat
                                  so_lang
                            CHANGING v_maktx.
* preform select mcha - CALCULA TOTAL LOTES por Material
       PERFORM select_charg TABLES so_centr
                            USING w_tab1-mat
                            CHANGING v_tlotes .

**********************************
******** MODIFICAR INSERIR *******
******* NA TABELA Z **************
**********************************
*     valores dos results forms p/WA
       v_mat = w_tab1-mat.
       w_tab1-data = sy-datum.
       w_tab1-hora = sy-uzeit.
       w_tab1-dsc = v_maktx.
       w_tab1-user = sy-uname.
       w_tab1-idioma = so_lang.
       w_tab1-t_lote = v_tlotes.

*     Carrega tabela interna com valores da WA
       MODIFY  t_tab1 FROM  w_tab1.

*     Carrega Ztable com valores da Tab intern


     ENDLOOP.

     LOOP AT t_tab1 into w_tab1.
       MODIFY  ztab1 FROM w_tab1.
     ENDLOOP.
   ENDIF.


*---------------------------------------------------------------------*
*       FORM s_mara                                                   *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*

FORM select_mara.
   BREAK-POINT.
   SELECT matnr AS mat
   FROM mara
   INTO CORRESPONDING FIELDS OF TABLE t_tab1
   WHERE matnr IN so_matnr.
ENDFORM.

*&---------------------------------------------------------------------*
*&      Form  select_makt
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_W_TAB1_MATNR  text
*      -->P_SO_LANG  text
*      <--P_V_MAKTX  text
*----------------------------------------------------------------------*

FORM select_makt USING    p_w_tab1_mat
                           p_so_lang
                  CHANGING p_v_maktx.

   SELECT SINGLE maktx FROM  makt INTO p_v_maktx
          WHERE  matnr  p_w_tab1_mat
          AND    spras  = p_so_lang.

   IF sy-subrc NE 0.
     CLEAR p_v_maktx.
   ENDIF.
ENDFORM.                    " SELECT_MAKT


*
**&---------------------------------------------------------------------
**
**&      Form  select_charg
**&---------------------------------------------------------------------
**
**       text
**----------------------------------------------------------------------
**
**      -->P_W_TAB1_MAT  text
**      -->P_SO_CENTR  text
**      -->P_SO_LOTE  text
**      <--P_V_TLOTES  text
**----------------------------------------------------------------------

*

FORM select_charg   TABLES p_so_centr USING
                     p_w_tab1_mat
                   CHANGING p_v_tlotes.
* cria table interna p/carregar só valores de lotes c/matnr passados P

   TYPES:
     BEGIN OF int_type,
         matnr TYPE mara-matnr,
         werks TYPE marc-werks,
         charg TYPE mcha-charg,
   END OF int_type.

   TYPES: int_type1 TYPE TABLE OF int_type.
   DATA: t_tablei TYPE int_type1.
   DATA: w_tablei TYPE int_type.
* carrega tabela interna
   SELECT matnr werks charg FROM mcha
     INTO TABLE t_tablei
     WHERE matnr = p_w_tab1_mat
     AND werks IN p_so_centr.

* Se encontra registos, vai contar quantos sao...

   IF sy-subrc = 0.
* percorre todos os campos da tabela adicionando contador
     LOOP AT t_tablei INTO w_tablei.
       v_count = v_count + 1.
     ENDLOOP.

* nr total de lotes naquele matnr passado como parametro
     p_v_tlotes = v_count.
     CLEAR v_count.
   ENDIF.

ENDFORM.                    " select_charg

Hello,

i'm trying to insert the values of an internal table into a ztable and inspite of the data in the internal table is correct, when i pass the values to the ztable it shows up messed up (like on the imagem i'm sending)...

any idea why?


**********************************

******** MODIFICAR INSERIR *******

******* NA TABELA Z **************

**********************************

      v_mat = w_tab1-mat.

      w_tab1-data = sy-datum.

      w_tab1-hora = sy-uzeit.

      w_tab1-dsc = v_maktx.

      w_tab1-user = sy-uname.

      w_tab1-idioma = so_lang.

      w_tab1-t_lote = v_tlotes.

      MODIFY  t_tab1 FROM  w_tab1.

      MODIFY  ztab1 FROM TABLE t_tab1.

    ENDLOOP.

  ENDIF.

My ztab1 is like this structure (plus the MANDT).


TYPES:

  BEGIN OF t_type1.

TYPES:

*     client type mara-mandt,

      mat TYPE mara-matnr,

      data TYPE ztab1-datac,

      hora TYPE ztab1-horac,

      dsc TYPE makt-maktx,

      user TYPE ztab1-userc,

      idioma TYPE makt-spras,

      t_lote TYPE int4,

END OF t_type1.

TYPES: t_table TYPE TABLE OF t_type1.

DATA: t_tab1 TYPE t_table.

DATA: w_tab1 TYPE t_type1.

Messed up table

- ON THE ATTACHED FILES

description (denominaçao) should be FRANGO VIVO, for example.

it seems it's shifted... o.O can't understand why.

Thanks in advance.

10 REPLIES 10
Read only

Florian
SAP Champion
SAP Champion
0 Likes
2,419

Hi Bruno,

I'm pretty sure that your internal table has another definition than your database-table.

Why do you have a type definition and not refer your internal table to your databasetable with type definition.

DATA: t_tab1 type standard table of <name_of_database_table>

~Florian

Read only

Former Member
0 Likes
2,419

I'm new at abap so i was declaring like that at first and then realize that i should declare it like the way you said... thing is i try to change it to:

DATA: t_tab1 type standard table of ztab1 " my ztable

DATA: w_tab1 type ztab1.


but then i don't know what to change in the code, as the values of t_tab1 don't appear in my table.

basically the ztab1 is a table that records fields from mara, mcha etc and then i'll put it as ALV GRID.

the code is here and ztable on the image attached:


REPORT z_ex1 .

**** TABELAS STANDARD E Z

TABLES: mara, makt, marc, mcha, ztab1.

**** ESTRUTURA DADOS TABELA Z_TAB1

TYPES:

  BEGIN OF t_type1.

TYPES:

*     client type mara-mandt,

      mat TYPE mara-matnr,

      data TYPE ztab1-datac,

      hora TYPE ztab1-horac,

      dsc TYPE makt-maktx,

      user TYPE ztab1-userc,

      idioma TYPE makt-spras,

      t_lote TYPE int4,

END OF t_type1.

TYPES: t_table TYPE TABLE OF t_type1.

DATA: t_tab1 TYPE t_table.

DATA: w_tab1 TYPE t_type1.

*** SELECT OPTIONS

SELECT-OPTIONS: so_matnr FOR mara-matnr.

SELECT-OPTIONS: so_date FOR sy-datum DEFAULT sy-datum TO '99991231'.

SELECT-OPTIONS: so_time FOR sy-timlo DEFAULT sy-timlo TO '235959'.

PARAMETER: so_lang TYPE makt-spras.

SELECT-OPTIONS: so_centr FOR marc-werks.

SELECT-OPTIONS: so_userc FOR ztab1-userc NO INTERVALS.

**** RADIO BUTTONS

PARAMETERS: p_read RADIOBUTTON GROUP g1,

            p_write RADIOBUTTON GROUP g1.

**** Estrutura WA dos valores retornados dos forms

DATA: v_mat TYPE mara-matnr,

      v_maktx TYPE makt-maktx,

      v_marc TYPE marc-werks,

      v_tlotes TYPE i VALUE 0,

      v_data TYPE date,

      v_hora TYPE time,

      v_user TYPE username.

DATA: v_count TYPE i VALUE 0.

START-OF-SELECTION.

************************************

** LEITURA NA TABELA INTERNA

************************************

*

  IF p_read = 'X'.

  write: ztab1.

*  DATA r_grid TYPE REF TO cl_gui_alv_grid. "referencia à classe alvgrid

*  DATA: wa_fieldcat TYPE slis_fieldcat_alv, "field catalog

*        wa_layout   TYPE slis_layout_alv,

*        it_fieldcat TYPE slis_t_fieldcat_alv.

*

*  PERFORM MONTAR_CAMPOS.

*  PERFORM MONTAR_LAYOUT.

*  PERFORM EXIBIR_ALV.

************************************

** ESCRITA NA TABELA INTERNA

************************************

  ELSEIF p_write = 'X'.

* preform s_mara - BUSCA NUM MATERIAL

    PERFORM select_mara.

    LOOP AT t_tab1 INTO w_tab1.

* preform select makt - BUSCA DESCRIÇÃO

      PERFORM select_makt USING  w_tab1-mat

                                 so_lang

                           CHANGING v_maktx.

* preform select mcha - CALCULA TOTAL LOTES por Material

      PERFORM select_charg TABLES so_centr

                           USING w_tab1-mat

                           CHANGING v_tlotes .

**********************************

******** MODIFICAR INSERIR *******

******* NA TABELA Z **************

**********************************

*     valores dos results forms p/WA

      v_mat = w_tab1-mat.

      w_tab1-data = sy-datum.

      w_tab1-hora = sy-uzeit.

      w_tab1-dsc = v_maktx.

      w_tab1-user = sy-uname.

      w_tab1-idioma = so_lang.

      w_tab1-t_lote = v_tlotes.

*     Carrega tabela interna com valores da WA

      MODIFY  t_tab1 FROM  w_tab1.

*     Carrega Ztable com valores da Tab interna

      MODIFY  ztab1 FROM TABLE t_tab1.

    ENDLOOP.

  ENDIF.

*---------------------------------------------------------------------*

*       FORM s_mara                                                   *

*---------------------------------------------------------------------*

*       ........                                                      *

*---------------------------------------------------------------------*

FORM select_mara.

  SELECT matnr

  FROM mara

  INTO TABLE t_tab1

  WHERE matnr IN so_matnr.

ENDFORM.

*&---------------------------------------------------------------------*

*&      Form  select_makt

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*      -->P_W_TAB1_MATNR  text

*      -->P_SO_LANG  text

*      <--P_V_MAKTX  text

*----------------------------------------------------------------------*

FORM select_makt USING    p_w_tab1_mat

                          p_so_lang

                 CHANGING p_v_maktx.

  SELECT SINGLE maktx FROM  makt INTO p_v_maktx

         WHERE  matnr  =  p_w_tab1_mat

         AND    spras  = p_so_lang.

  IF sy-subrc NE 0.

    CLEAR p_v_maktx.

  ENDIF.

ENDFORM.                    " SELECT_MAKT

*

**&---------------------------------------------------------------------

**

**&      Form  select_charg

**&---------------------------------------------------------------------

**

**       text

**----------------------------------------------------------------------

**

**      -->P_W_TAB1_MAT  text

**      -->P_SO_CENTR  text

**      -->P_SO_LOTE  text

**      <--P_V_TLOTES  text

**----------------------------------------------------------------------

*

FORM select_charg   TABLES p_so_centr USING

                    p_w_tab1_mat

                  CHANGING p_v_tlotes.

* cria table interna p/carregar só valores de lotes c/matnr passados P

  TYPES:

    BEGIN OF int_type,

        matnr TYPE mara-matnr,

        werks TYPE marc-werks,

        charg TYPE mcha-charg,

  END OF int_type.

  TYPES: int_type1 TYPE TABLE OF int_type.

  DATA: t_tablei TYPE int_type1.

  DATA: w_tablei TYPE int_type.

* carrega tabela interna

  SELECT matnr werks charg FROM mcha

    INTO TABLE t_tablei

    WHERE matnr = p_w_tab1_mat

    AND werks IN p_so_centr.

* Se encontra registos, vai contar quantos sao...

  IF sy-subrc = 0.

* percorre todos os campos da tabela adicionando contador

    LOOP AT t_tablei INTO w_tablei.

      v_count = v_count + 1.

    ENDLOOP.

* nr total de lotes naquele matnr passado como parametro

    p_v_tlotes = v_count.

    CLEAR v_count.

  ENDIF.

ENDFORM.                    " select_charg

Read only

0 Likes
2,419

Hi Bruno,

this one has to be done once after your loop


*     Carrega Ztable com valores da Tab interna

      MODIFY  ztab1 FROM TABLE t_tab1.

and you need to know, that your table need all other fields of mara in the same form than before.

Additional to that, I recommend you to work through the help content SAP provides you. Here is the link to your specific problem:

SAP Online Help

Here is a snippet out of the link:


MODIFY dbtab FROM TABLE itab. or
MODIFY (dbtabname) FROM TABLE itab.

... CLIENT SPECIFIED

Effect

Mass modify: Inserts new lines or updates existing lines of a database table. The primary keys for identifying the lines to be inserted or updated and the relevant values are taken from the internal table itab. The lines of the internal table itab must satisfy the same conditions as the work area wa in addition 1 to variant 1.

Note

If the internal table itab is empty, SY-SUBRC and SY-DBCNT are set to 0.

~Florian

Read only

mauriciolauffer
Product and Topic Expert
Product and Topic Expert
0 Likes
2,419

Hi Bruno.

You should declare your Internal Table as your Z Table type.

DATA: t_tab1 type standard table of ztab1 " my ztable

DATA: w_tab1 type ztab1.



After this, you have to change some fields name because, for example, you don't have DATA and HORA in your Z Table. But you have DATAC e HORAC.


w_tab1-datac = sy-datum.

w_tab1-horac = sy-uzeit.

w_tab1-dsc = v_maktx.

w_tab1-userc = sy-uname.

w_tab1-idioma = so_lang.

w_tab1-t_lote = v_tlotes.



Besides it, you have a lot of performance issues in your code.

You should avoid to use SELECT inside a LOOP block. The same for MODIFY operations...
But first you have to solve this problem and make your program works, then you think about performance.

Read only

Former Member
0 Likes
2,419

is ztable a transparent table?

Read only

VenkatRamesh_V
Active Contributor
0 Likes
2,419

Hi Bruno,

Hope it help full.

Try,

Data: wa type ztab1,

        itab type table of ztab1.

Inside  loop.

MOVE-CORRESPONDING  w_tab1 to wa.

MODIFY  ztab1 FROM  wa.

Clear wa.

Outside loop.

APPEND  the Work area values to internal table  itab.

MODIFY  ztab1 FROM TABLE itab.

if sy-subrc = 0.

commit work.

endif.

Regards,

Venkat.

Read only

former_member209696
Participant
0 Likes
2,419

Hi,

Y don't you use  "ITAB TYPE TABLE OF ZTAB1".

Thanks,

Riyas

Read only

Former Member
0 Likes
2,420

Hi bruno,

Pls check following code:  I have modified.

*&---------------------------------------------------------------------*
*& Report  ZR_EX1
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZR_EX1.

**** TABELAS STANDARD E Z
TABLES: mara, makt, marc, mcha, ztab1.

**** ESTRUTURA DADOS TABELA Z_TAB1
TYPES:
   BEGIN OF t_type1.
     TYPES:
       client type mara-mandt,
       mat TYPE mara-matnr,
       data TYPE ztab1-datac,
       hora TYPE ztab1-horac,
       dsc TYPE makt-maktx,
       user TYPE ztab1-userc,
       idioma TYPE makt-spras,
       t_lote TYPE int4,
END OF t_type1.

TYPES: t_table TYPE TABLE OF t_type1.
DATA: t_tab1 TYPE t_table.
DATA: w_tab1 TYPE t_type1.

*** SELECT OPTIONS

SELECT-OPTIONS: so_matnr FOR mara-matnr.
SELECT-OPTIONS: so_date FOR sy-datum DEFAULT sy-datum TO '99991231'.
SELECT-OPTIONS: so_time FOR sy-timlo DEFAULT sy-timlo TO '235959'.
PARAMETER: so_lang TYPE makt-spras.
SELECT-OPTIONS: so_centr FOR marc-werks.
SELECT-OPTIONS: so_userc FOR ztab1-userc NO INTERVALS.

**** RADIO BUTTONS
PARAMETERS: p_read RADIOBUTTON GROUP g1,
             p_write RADIOBUTTON GROUP g1 DEFAULT 'X'.

**** Estrutura WA dos valores retornados dos forms

DATA: v_mat TYPE mara-matnr,
       v_maktx TYPE makt-maktx,
       v_marc TYPE marc-werks,
       v_tlotes TYPE i VALUE 0,
       v_data TYPE date,
       v_hora TYPE time,
       v_user TYPE username.

DATA: v_count TYPE i VALUE 0.

START-OF-SELECTION.
************************************
** LEITURA NA TABELA INTERNA
************************************

   IF p_read = 'X'.
     write: ztab1-mat.

*  DATA r_grid TYPE REF TO cl_gui_alv_grid. "referencia à classe alvgrid
*  DATA: wa_fieldcat TYPE slis_fieldcat_alv, "field catalog
*        wa_layout   TYPE slis_layout_alv,
*        it_fieldcat TYPE slis_t_fieldcat_alv.

*  PERFORM MONTAR_CAMPOS.
*  PERFORM MONTAR_LAYOUT.
*  PERFORM EXIBIR_ALV.

************************************
** ESCRITA NA TABELA INTERNA
************************************
   ELSEIF p_write = 'X'.
* preform s_mara - BUSCA NUM MATERIAL
     PERFORM select_mara.
     LOOP AT t_tab1 INTO w_tab1.
* preform select makt - BUSCA DESCRIÇÃO
       PERFORM select_makt USING  w_tab1-mat
                                  so_lang
                            CHANGING v_maktx.
* preform select mcha - CALCULA TOTAL LOTES por Material
       PERFORM select_charg TABLES so_centr
                            USING w_tab1-mat
                            CHANGING v_tlotes .

**********************************
******** MODIFICAR INSERIR *******
******* NA TABELA Z **************
**********************************
*     valores dos results forms p/WA
       v_mat = w_tab1-mat.
       w_tab1-data = sy-datum.
       w_tab1-hora = sy-uzeit.
       w_tab1-dsc = v_maktx.
       w_tab1-user = sy-uname.
       w_tab1-idioma = so_lang.
       w_tab1-t_lote = v_tlotes.

*     Carrega tabela interna com valores da WA
       MODIFY  t_tab1 FROM  w_tab1.

*     Carrega Ztable com valores da Tab intern


     ENDLOOP.

     LOOP AT t_tab1 into w_tab1.
       MODIFY  ztab1 FROM w_tab1.
     ENDLOOP.
   ENDIF.


*---------------------------------------------------------------------*
*       FORM s_mara                                                   *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*

FORM select_mara.
   BREAK-POINT.
   SELECT matnr AS mat
   FROM mara
   INTO CORRESPONDING FIELDS OF TABLE t_tab1
   WHERE matnr IN so_matnr.
ENDFORM.

*&---------------------------------------------------------------------*
*&      Form  select_makt
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_W_TAB1_MATNR  text
*      -->P_SO_LANG  text
*      <--P_V_MAKTX  text
*----------------------------------------------------------------------*

FORM select_makt USING    p_w_tab1_mat
                           p_so_lang
                  CHANGING p_v_maktx.

   SELECT SINGLE maktx FROM  makt INTO p_v_maktx
          WHERE  matnr  p_w_tab1_mat
          AND    spras  = p_so_lang.

   IF sy-subrc NE 0.
     CLEAR p_v_maktx.
   ENDIF.
ENDFORM.                    " SELECT_MAKT


*
**&---------------------------------------------------------------------
**
**&      Form  select_charg
**&---------------------------------------------------------------------
**
**       text
**----------------------------------------------------------------------
**
**      -->P_W_TAB1_MAT  text
**      -->P_SO_CENTR  text
**      -->P_SO_LOTE  text
**      <--P_V_TLOTES  text
**----------------------------------------------------------------------

*

FORM select_charg   TABLES p_so_centr USING
                     p_w_tab1_mat
                   CHANGING p_v_tlotes.
* cria table interna p/carregar só valores de lotes c/matnr passados P

   TYPES:
     BEGIN OF int_type,
         matnr TYPE mara-matnr,
         werks TYPE marc-werks,
         charg TYPE mcha-charg,
   END OF int_type.

   TYPES: int_type1 TYPE TABLE OF int_type.
   DATA: t_tablei TYPE int_type1.
   DATA: w_tablei TYPE int_type.
* carrega tabela interna
   SELECT matnr werks charg FROM mcha
     INTO TABLE t_tablei
     WHERE matnr = p_w_tab1_mat
     AND werks IN p_so_centr.

* Se encontra registos, vai contar quantos sao...

   IF sy-subrc = 0.
* percorre todos os campos da tabela adicionando contador
     LOOP AT t_tablei INTO w_tablei.
       v_count = v_count + 1.
     ENDLOOP.

* nr total de lotes naquele matnr passado como parametro
     p_v_tlotes = v_count.
     CLEAR v_count.
   ENDIF.

ENDFORM.                    " select_charg

Read only

0 Likes
2,419

Thanks mate! Can you explain what was wrong with my code? I'm new so all the info i can get is very useful... thank you once again! Hope i can help people too in a near future

Read only

0 Likes
2,419

Hi bruno,

I removed MODIFY  ztab1 FROM w_tab1 from the Loop to a new Loop. That's it.

LOOP AT t_tab1 into w_tab1.
       MODIFY  ztab1 FROM w_tab1.
ENDLOOP.