on 02-08-2007 8:19 PM
Hello Experts,
I am creating inbound delivery with reference to purchase order, my problem
is i have a record in table xkomdlgn , and i want to create single inbound delivery
for all data available in above mentioned table ,but it is creating inbound delivery
for each
hi sanju
i was wondering whether you can give/write the program which called this FORM...
and tell me please when or on which proccess are you calling this function
im writing here my code which is activated on the "POST GOOD ISSUES" in the "vl02n" transection
the whole point of my application is to create an inbound delivery and assign the Handling Units after posting good issues in the outbound delivery creation (vl02n).
im getting a various kinds of errors about it:
No document number was assigned
Data of preceding document was not transmitted
im pretty sure it is caused by the function
here is my code:
METHOD f_ex_le_shp_delivery_proc~save_document_prepare.
types: BEGIN OF t_hu_numbers,
exidv type exidv,
venum type venum,
vepos type vepos,
matnr type matnr,
charg type CHARG_D,
END OF t_hu_numbers.
DATA: wa_xlikp LIKE LINE OF ct_xlikp,
wa_xvbuk LIKE LINE OF it_xvbuk,
lv_status TYPE vttk-stlad.
added by Eyal Cohen 07.01.08
types: BEGIN OF t_hu_numbers,
exidv type exidv,
venum type venum,
vepos type vepos,
matnr type matnr,
charg type CHARG_D,
END OF t_hu_numbers.
DATA: out_del_lines TYPE TABLE OF lips,
wa_out_del_lines like LINE OF out_del_lines,
wa_hu_numbers type t_hu_numbers,
hu_numbers TYPE TABLE OF t_hu_numbers.
Data for the create inbound delivery function
DATA: wa_XVBPA like LINE OF CT_XVBPA,
xkomdlgn TYPE TABLE OF komdlgn ,
wa_xkomdlgn like LINE OF xkomdlgn,
wa_vbsk_i TYPE vbsk,
wa_vbsk_i like LINE OF vbsk_i,
xvbfs TYPE TABLE OF vbfs ,
xvbls TYPE TABLE OF vbls,
hu_tab TYPE hum_rehang_hu_t,
l_sammg type SAMMG,
tvsa TYPE TABLE OF tvsa,
wa_tvsa like line of tvsa,
L_NRNR type nrnr,
l_number type integer,
wa_hu_tab TYPE hum_rehang_hu.
DATA: hu_name(15) TYPE c VALUE 'V51VE-EXIDV(',
line_no(2) TYPE n VALUE '00',
lifnr type lifnr,
in_del_num type vbeln,
l_out_del type vbeln,
l_lifnr type lifnr,
rfpos type posnr.
READ TABLE ct_xlikp INTO wa_xlikp INDEX 1.
IF not is_v50agl-warenausgang is INITIAL and wa_xlikp-lfart = 'ZNL'.
l_out_del = wa_xlikp-vbeln.
READ TABLE CT_XVBPA into wa_xvbpa index 1.
l_lifnr = wa_XVBPA-lifnr.
get the vbsk data
SELECT SINGLE *
FROM TVSA
into wa_tvsa
WHERE SMART = 'L'.
L_NRNR = wa_TVSA-NUMKI.
CALL FUNCTION 'NUMBER_GET_NEXT'
EXPORTING
NR_RANGE_NR = L_NRNR
OBJECT = 'RV_SAMMG'
IMPORTING
NUMBER = wa_vbsk_i-SAMMG
EXCEPTIONS
OTHERS = 1.
wa_vbsk_i-mandt = sy-mandt.
wa_vbsk_i-
wa_vbsk_i-ERNAM = sy-uname.
wa_vbsk_i-BRGEW = 1111.
APPEND wa_vbsk_i to vbsk_i.
Get data from the outbound delivery
SELECT *
INTO TABLE out_del_lines
FROM lips
WHERE vbeln EQ l_out_del.
SORT out_del_lines BY posnr.
Get HU data
SELECT exidv vekp~venum vepos matnr charg
INTO TABLE hu_numbers
FROM vepo INNER JOIN vekp
ON vepovenum = vekpvenum
WHERE vepo~vbeln = l_out_del.
rfpos = 10.
Get the next free number for the inbound delivery
CALL FUNCTION 'NUMBER_GET_NEXT'
EXPORTING
nr_range_nr = '41'
object = 'RV_BELEG'
IMPORTING
number = in_del_num
EXCEPTIONS
interval_not_found = 1
number_range_not_intern = 2
object_not_found = 3
quantity_is_0 = 4
quantity_is_not_1 = 5
interval_overflow = 6
buffer_overflow = 7
OTHERS = 8.
IF sy-subrc <> 0.
MESSAGE e036(ysd) WITH text-013.
ENDIF.
init data for inbound delivery
LOOP AT out_del_lines INTO wa_out_del_lines.
wa_xkomdlgn-mandt = sy-mandt.
wa_xkomdlgn-lfart = 'EL'.
wa_xkomdlgn-auart = 'DL'.
wa_xkomdlgn-vbeln = in_del_num.
wa_xkomdlgn-matnr = wa_out_del_lines-matnr.
wa_xkomdlgn-werks = wa_out_del_lines-werks.
Get the delivery date
CLEAR wa_xkomdlgn-lfdat.
SELECT SINGLE eindt
INTO wa_xkomdlgn-lfdat
FROM eket
WHERE ebeln EQ wa_out_del_lines-vgbel AND
ebelp EQ wa_out_del_lines-vgpos.
wa_xkomdlgn-lfimg = wa_out_del_lines-lfimg.
wa_xkomdlgn-umvkz = '1'.
wa_xkomdlgn-umvkn = '1'.
wa_xkomdlgn-vrkme = wa_out_del_lines-vrkme.
wa_xkomdlgn-meins = wa_out_del_lines-meins.
wa_xkomdlgn-vgbel = wa_out_del_lines-vgbel.
wa_xkomdlgn-vgpos = wa_out_del_lines-vgpos.
wa_xkomdlgn-vgtyp = 'V'.
wa_xkomdlgn-kzazu = 'X'.
wa_xkomdlgn-lgort = '2000'.
wa_xkomdlgn-charg = wa_out_del_lines-charg.
wa_xkomdlgn-ntgew = wa_out_del_lines-ntgew.
wa_xkomdlgn-brgew = wa_out_del_lines-brgew.
wa_xkomdlgn-gewei = wa_out_del_lines-gewei.
wa_xkomdlgn-lifnr = l_lifnr.
wa_xkomdlgn-bukrs_best = '2000'.
wa_xkomdlgn-matkl = wa_out_del_lines-matkl.
wa_xkomdlgn-ematn = wa_out_del_lines-matnr.
wa_xkomdlgn-vkorg = ekpv_tab-vkorg.
wa_xkomdlgn-vtweg = ekpv_tab-vtweg.
wa_xkomdlgn-spart = ekpv_tab-spart.
APPEND wa_xkomdlgn to xkomdlgn.
Init the handle unit for the inbound delivery
LOOP AT hu_numbers into wa_hu_numbers WHERE matnr EQ wa_out_del_lines-matnr.
SHIFT wa_hu_numbers-exidv LEFT DELETING LEADING '0'.
wa_hu_tab-top_hu_internal = wa_hu_numbers-exidv.
wa_hu_tab-venum = wa_hu_numbers-venum.
wa_hu_tab-vepos = wa_hu_numbers-vepos.
wa_hu_tab-rfbel = in_del_num.
wa_hu_tab-rfpos = rfpos.
APPEND wa_hu_tab TO hu_tab.
ENDLOOP.
ADD 10 TO rfpos.
ENDLOOP.
create the inbound delivery
CALL FUNCTION 'GN_DELIVERY_CREATE'
EXPORTING
vbsk_i = wa_vbsk_i
it_handling_units = hu_tab
TABLES
xkomdlgn = xkomdlgn
xvbfs = xvbfs
xvbls = xvbls.
commit WORK AND WAIT.
ENDIF.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
solve myself
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
form xkomdlgn_fill using p_open_qty like ekpo-menge
p_eindt like eket-eindt
p_licha like eket-licha
p_charg like eket-charg
p_uzeit like eket-uzeit.
STATICS: h_grkor LIKE lips-grkor,
h_bsmng LIKE ekpo-menge.
clear T_xkomdlgn.
check T_ekpo-uptyp NE '5' " Lot
AND T_ekpo-uptyp NE '6' " Display
AND T_ekpo-uptyp NE '7' " VK-Set
AND T_ekpo-uptyp NE 'H'. " GT-Stückliste
if T_ekpo-uebpo is initial and T_ekpo-upvor CA '1I'.
check 1 = 2.
endif.
if not ekko-lifnr is initial.
CALL FUNCTION 'VENDOR_MASTER_DATA_SELECT_12'
EXPORTING
PI_LIFNR = EKKO-LIFNR
PI_EKORG = EKKO-EKORG
IMPORTING
PE_LFM1 = LFM1
EXCEPTIONS
NO_ENTRY_FOUND = 1
OTHERS = 2.
T_xkomdlgn-vsbed = lfm1-vsbed.
else.
clear T_xkomdlgn-vsbed.
endif.
T_xkomdlgn-adrnr_li = ekko-adrnr.
T_xkomdlgn-lifnr = ekko-lifnr.
T_xkomdlgn-inco1 = ekko-inco1.
T_xkomdlgn-inco2 = ekko-inco2.
T_xkomdlgn-exnum = ekko-exnum.
T_xkomdlgn-bukrs_best = ekko-bukrs.
T_xkomdlgn-matnr = T_ekpo-matnr.
T_xkomdlgn-werks = T_ekpo-werks.
*IF STORAGE LOCATION IS MISSING APPEND
*FG01 As storage location
IF T_ekpo-lgort IS INITIAL .
T_xkomdlgn-lgort = 'FG01' .
ELSE .
T_xkomdlgn-lgort = T_ekpo-lgort.
ENDIF.
xkomdlgn-charg = ?
T_xkomdlgn-vrkme = T_ekpo-meins.
T_xkomdlgn-meins = T_ekpo-lmein.
T_xkomdlgn-umvkz = T_ekpo-umrez.
T_xkomdlgn-umvkn = T_ekpo-umren.
if T_ekpo-matnr eq space.
T_xkomdlgn-meins = T_ekpo-meins.
T_xkomdlgn-umvkz = 1.
T_xkomdlgn-umvkn = 1.
endif.
T_xkomdlgn-insmk = T_ekpo-insmk.
T_xkomdlgn-kzfme = T_ekpo-kzfme.
T_xkomdlgn-kzvbr = T_ekpo-kzvbr.
T_xkomdlgn-lfimg = p_open_qty.
T_xkomdlgn-lfdat = p_eindt.
T_xkomdlgn-lfuhr = p_uzeit.
xkomdlgn-vstel = ?
xkomdlgn-vkorg = ?
xkomdlgn-vtweg = ?
xkomdlgn-spart = ?
T_xkomdlgn-TRAID = T_ekpo-TRAID."CARRIER CODE
T_xkomdlgn-LIFEX = T_ekpo-LIFEX."External ID
T_xkomdlgn-BOLNR = T_ekpo-BOLNR."Bill Of Lading
T_xkomdlgn-XABLN = T_ekpo-XABLN."Goods Receipt/Issue Slip Number
T_xkomdlgn-vgbel = T_ekpo-ebeln.
T_xkomdlgn-vgpos = T_ekpo-ebelp.
T_xkomdlgn-lfart = gf_dlv_type.
T_xkomdlgn-vgtyp = 'V'.
T_xkomdlgn-kzazu = 'X'.
T_xkomdlgn-knttp = T_ekpo-knttp.
T_xkomdlgn-sobkz = T_ekpo-sobkz.
select * from t163g where bstae eq T_EKPO-bstae
and ebtyp eq gf_ebtyp.
exit.
endselect.
if sy-subrc = 0.
Prüfen, ob Lieferavis WE-Zuordnung hat (Vorauss. für WE über VL32)
und wepos prüfen
if t163g-wezuo eq space or T_ekpo-wepos eq space.
T_xkomdlgn-nowab = 'X'.
else.
clear T_xkomdlgn-nowab.
endif.
endif.
if T_ekpo-matnr is initial or T_ekpo-pstyp = '6'.
T_xkomdlgn-posar = 'B'.
endif.
T_xkomdlgn-ematn = T_EKPO-ematn.
T_xkomdlgn-mfrnr = T_EKPO-mfrnr.
T_xkomdlgn-mfrpn = T_EKPO-mfrpn.
T_xkomdlgn-emnfr = T_EKPO-emnfr.
T_xkomdlgn-cuobj = T_EKPO-cuobj.
T_xkomdlgn-uebto = T_EKPO-uebto.
T_xkomdlgn-untto = T_EKPO-untto.
T_xkomdlgn-uebtk = T_EKPO-uebtk.
T_xkomdlgn-lichn = p_licha.
T_xkomdlgn-charg = p_charg.
T_xkomdlgn-bwtar = T_EKPO-bwtar.
T_xkomdlgn-kdmat = T_EKPO-idnlf.
T_xkomdlgn-arktx = T_EKPO-txz01.
T_xkomdlgn-mfrgr = T_EKPO-mfrgr.
T_xkomdlgn-gewei = T_EKPO-gewei.
T_xkomdlgn-voleh = T_EKPO-voleh.
T_xkomdlgn-ntgew = T_EKPO-ntgew * T_xkomdlgn-lfimg.
T_xkomdlgn-brgew = T_EKPO-brgew * T_xkomdlgn-lfimg.
T_xkomdlgn-volum = T_EKPO-volum * T_xkomdlgn-lfimg.
T_xkomdlgn-ean11 = T_EKPO-ean11.
T_xkomdlgn-podrel = t163l-podrel.
T_xkomdlgn-aktnr = T_EKPO-aktnr.
T_xkomdlgn-abeln = T_EKPO-abeln.
T_xkomdlgn-abelp = T_EKPO-abelp.
xkomdlgn-ltssf = only sort criteria in vl31n
T_xkomdlgn-aurel = T_EKPO-aurel.
T_xkomdlgn-idnlf = T_EKPO-idnlf.
T_xkomdlgn-matkl = T_EKPO-matkl.
Leergut-Stückliste übernehmen
clear T_XKOMDLGN-grkor.
clear T_XKOMDLGN-kmpmg.
clear T_XKOMDLGN-uepos.
clear T_XKOMDLGN-uepvw. "549736
if T_EKPO-upvor ca '3X'.
h_grkor = h_grkor + 1.
T_XKOMDLGN-grkor = h_grkor.
h_bsmng = T_EKPO-menge.
endif.
if not T_EKPO-uebpo is initial and
T_EKPO-uptyp ca '3X'.
T_XKOMDLGN-uepvw = 'G'. "549736
T_XKOMDLGN-uepos = T_EKPO-uebpo.
T_XKOMDLGN-grkor = h_grkor.
if h_bsmng ne 0.
T_XKOMDLGN-kmpmg = T_EKPO-menge / h_bsmng.
endif.
endif.
if T_EKPO-pstyp eq '2'.
T_XKOMDLGN-sobkz = 'K'.
endif.
Kontierungsfelder
if T_EKPO-sobkz eq 'E' or T_EKPO-sobkz eq 'Q'.
call function 'MMPUR_EKKN_READ_EBELN_EBELP'
exporting
pi_ebeln = T_EKPO-ebeln
pi_ebelp = T_EKPO-ebelp
PI_BYPASSING_BUFFER =
PI_REFRESH_BUFFER =
tables
pto_ekkn_po = xekkn
exceptions
no_records_requested = 1
others = 2.
if sy-subrc eq 0.
read table xekkn index 1.
T_XKOMDLGN-ps_psp_pnr = xekkn-ps_psp_pnr.
T_XKOMDLGN-vbelv = xekkn-vbeln.
T_XKOMDLGN-posnv = xekkn-vbelp.
endif.
endif.
append T_XKOMDLGN.
ENDFORM. "xkomdlgn_fill
LOOP AT T_XKOMDLGN.
set default parameter
T_XKOMDLGN-VGTYP = 'V'.
T_XKOMDLGN-KZAZU = 'X'.
IF T_XKOMDLGN-LFART IS INITIAL.
T_XKOMDLGN-LFART = 'EL'.
ENDIF.
MODIFY T_XKOMDLGN.
ENDLOOP.
SELECT SINGLE * FROM TVSA WHERE SMART = xvbsk-SMART.
IF SY-SUBRC <> 0.
Error Handling To be Done
Meldung ins Protokoll
ENDIF.
L_NRNR = TVSA-NUMKI.
CALL FUNCTION 'NUMBER_GET_NEXT'
EXPORTING
NR_RANGE_NR = L_NRNR
OBJECT = 'RV_SAMMG'
IMPORTING
NUMBER = xvbsk-SAMMG
EXCEPTIONS
OTHERS = 1.
IF SY-SUBRC <> 0.
Error Hadling TBD
Meldung ins Protokoll
ENDIF.
call function 'GN_DELIVERY_CREATE'
exporting
no_commit = 'X'
vbsk_i = xvbsk
if_no_deque = 'X'
IF_MASS_READ_MAT_SW = 'X'
*
vbls_pos_rueck = 'X'
tables
xkomdlgn = T_xkomdlgn
xvbfs = xvbfs
xvbls = xvbls
xxlips = xlips.
get informatioin from ekpo table and fill T_xkomdlgn
User | Count |
---|---|
86 | |
10 | |
10 | |
9 | |
6 | |
6 | |
6 | |
5 | |
4 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.