‎2008 Jun 21 8:59 AM
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.
‎2008 Jun 21 9:02 AM
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
‎2008 Jun 21 9:02 AM
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
‎2008 Jun 21 9:33 AM
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.
‎2008 Jun 21 9:39 AM
‎2008 Jun 21 9:03 AM
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.
‎2008 Jun 21 9:38 AM
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.