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

Syntax error on INCLUDE STRUCTURE.

Former Member
0 Likes
1,186

Hi Experts,

It is abit hard to explain what I need here.

But I try to explain as much as I can.

I am writing this code in order to update the customer material numbers into internal table tvbdpa. As you can see in my code, getting the customer material numbers require mapping the position number.

I am stuck at the LOOP below with ***.

Also getting the syntax error

_The declaration for the key field "KDMAT" is imcomplete.

However "KDMAT" is is contained in the key of table "TVBDPA" and must be filled._


TABLES: vbco3.
DATA: da_mess LIKE vbfs OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF tvbdpa OCCURS 0,        "Internal table for items
        kdmat LIKE LIPS-KDMAT.
        INCLUDE STRUCTURE vbdpa.
DATA: END OF tvbdpa.

DATA: itab_vbak TYPE SORTED TABLE OF vbak
         WITH UNIQUE KEY vbeln,
      wa_vbak  LIKE LINE OF itab_vbak,
      itab_lips TYPE SORTED TABLE OF lips
         WITH UNIQUE KEY vbeln,
      wa_lips   LIKE LINE OF itab_lips,
      wa_tvbdpa LIKE LINE OF tvbdpa,
      lv_zuonr  TYPE vbak-zuonr.

  vbco3-mandt = sy-mandt.
  vbco3-spras = nast-spras.
  vbco3-vbeln = nast-objky.
  vbco3-kunde = nast-parnr.
  vbco3-parvw = nast-parvw.

CALL FUNCTION 'RV_DOCUMENT_PRINT_VIEW'
  EXPORTING
    comwa                       = vbco3
  IMPORTING
    kopf                        = vbdka
  TABLES
    pos                         = tvbdpa
    mess                        = da_mess
  EXCEPTIONS
    fehler_bei_datenbeschaffung = 1.

IF NOT tvbdpa[] IS INITIAL.
  SELECT SINGLE zuonr FROM vbak
    INTO lv_zuonr
    WHERE vbeln = vbdka-vbeln.

    IF sy-subrc = 0 AND lv_zuonr <> ''.
      SELECT vbeln posnr kdmat FROM lips
        INTO CORRESPONDING FIELDS OF TABLE itab_lips
        WHERE vbeln = lv_zuonr.

***I am stuck at here.
      LOOP AT itab_lips INTO wa_lips.
        READ TABLE tvbdpa INTO wa_tvbdpa
          WITH TABLE KEY posnr = wa_lips-posnr.

        wa_tvbdpa-kdmat = wa_lips-kdmat.
 
        MODIFY TABLE tvbdpa FROM wa_tvbdpa
               TRANSPORTING kdmat.
      ENDLOOP.
***end I am stuck at here.
    ENDIF.
ENDIF.

All advise are welcome and greatly appreciated.

Thanks in advance.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
930

hi,

LOOP AT tvbdpa INTO wa_tvbdpa.

READ TABLE itab_lips INTO wa_lips.

WITH TABLE KEY posnr = wa_tvndpa-posnr.

wa_tvbdpa-kdmat = wa_lips-kdmat.

MODIFY TABLE tvbdpa FROM wa_tvbdpa

TRANSPORTING kdmat.

ENDLOOP.

Regards,

Subramanian

5 REPLIES 5
Read only

Former Member
0 Likes
931

hi,

LOOP AT tvbdpa INTO wa_tvbdpa.

READ TABLE itab_lips INTO wa_lips.

WITH TABLE KEY posnr = wa_tvndpa-posnr.

wa_tvbdpa-kdmat = wa_lips-kdmat.

MODIFY TABLE tvbdpa FROM wa_tvbdpa

TRANSPORTING kdmat.

ENDLOOP.

Regards,

Subramanian

Read only

0 Likes
930

Hi Subramanian,

Does this more make sense for you?

Can I read the table like :-


        READ TABLE itab_lips INTO wa_lips
          WITH TABLE KEY VBELN = wa_tvbdpa-matnr." AND POSNR = wa_tvbdpa-posnr.


TABLES: vbco3.

DATA: da_mess LIKE vbfs OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF tvbdpa OCCURS 0,        "Internal table for items
        kdmat LIKE LIPS-KDMAT.
        INCLUDE STRUCTURE vbdpa.
DATA: END OF tvbdpa.

DATA: itab_vbak TYPE SORTED TABLE OF vbak
         WITH UNIQUE KEY vbeln,
      wa_vbak  LIKE LINE OF itab_vbak,
      itab_lips TYPE SORTED TABLE OF lips
         WITH UNIQUE KEY vbeln,
      wa_lips   LIKE LINE OF itab_lips,
      wa_tvbdpa LIKE LINE OF tvbdpa,
      lv_zuonr  TYPE vbak-zuonr.

  vbco3-mandt = sy-mandt.
  vbco3-spras = nast-spras.
  vbco3-vbeln = nast-objky.
  vbco3-kunde = nast-parnr.
  vbco3-parvw = nast-parvw.

CALL FUNCTION 'RV_DOCUMENT_PRINT_VIEW'
  EXPORTING
    comwa                       = vbco3
  IMPORTING
    kopf                        = vbdka
  TABLES
    pos                         = tvbdpa
    mess                        = da_mess
  EXCEPTIONS
    fehler_bei_datenbeschaffung = 1.

IF NOT tvbdpa[] IS INITIAL.
  SELECT SINGLE zuonr FROM vbak
    INTO lv_zuonr
    WHERE vbeln = vbdka-vbeln.

    IF sy-subrc = 0 AND lv_zuonr <> ''.
      SELECT vbeln posnr kdmat FROM lips
        INTO CORRESPONDING FIELDS OF TABLE itab_lips
        WHERE vbeln = lv_zuonr.
    
      LOOP AT tvbdpa INTO wa_tvbdpa.
        READ TABLE itab_lips INTO wa_lips
          WITH TABLE KEY VBELN = wa_tvbdpa-matnr." AND POSNR = wa_tvbdpa-posnr.
    
        wa_tvbdpa-kdmat = wa_lips-kdmat.
    
        MODIFY TABLE tvbdpa FROM wa_tvbdpa
               TRANSPORTING kdmat.
      ENDLOOP.
    ENDIF.
ENDIF.

Read only

0 Likes
930

Yes.

This should work.

Regards,

SUbramanian

Read only

Former Member
0 Likes
930
make the change as follows:

DATA: BEGIN OF tvbdpa OCCURS 0,        "Internal table for items
        kdmat LIKE LIPS-KDMAT,                 "IT should be a Comma
        INCLUDE STRUCTURE vbdpa.
DATA: END OF tvbdpa.
Read only

Former Member
0 Likes
930

hi check this..

replace this with this...delete the table command here..it will work..

READ TABLE tvbdpa INTO wa_tvbdpa

WITH KEY posnr = wa_lips-posnr.