Returns set up on pick lists
hi,
again i have a returns problem :).
this time i want to set up returns based on pick lists from warehouses and suppliers. the imagined scenarios goes something like this. a store orders a set if items, usually up to 800 - 1000 lines of items. this is delivered in a unknow set of crates, which is packed differently depending on deliery. ie on some days similar orders may require 4 crates, other days its 5 crates (this is mostly due to the crates availabe at the wh may be of different size). naturally one or more crates may be dilivered to the wrong place. now, since the employe at the store dont want to go through 800 lines of items to find the missing ones, they would just want to make a full return on the entire crate.
ideally this would be done using the pick list from the wh/supplier, since this is the only way to accuratly know whats in hte crate, but i dont know of any way to do that in sim without having to manually enter every single item. can this be done somehow? please dont restrict yourselfs to vanilla solutions, any and all extra tables are welcome :)!
cheers
nils
Having the same problem here - were you ever able to resolve the issue?
Similar Messages
-
How to set Bin Location when adding Pick List by DI
I would like to add Pick Lists by DI.
This is Working but if i Try to Add a Bin Location by using This Code:
oPL.Lines.BinAllocations.BinAbsEntry = Convert.ToInt32(binabs[a]);
oPL.Lines.BinAllocations.Quantity = Convert.ToDouble( quantity[a]) ;
i'll get iternal error -2007
if i Update the Picklist afert addig using above mentioned code update runs without error Message but no Bin Locations are visible in Pick List.
Picklist looks like this:Hi Fabian,
SAPbobsCOM.PickLists oPickList = SBO_Company.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oPickLists);
oPickList.Lines.BaseObjectType = "17";
oPickList.Lines.OrderEntry = 378;
oPickList.Lines.OrderRowID = 0;
oPickList.Lines.ReleasedQuantity = 5;
if (oPickList.Add() != 0)
System.Windows.Forms.MessageBox.Show("Error : " + SBO_Company.GetLastErrorDescription());
//Screenshot 1
if (oPickList.GetByKey(Convert.ToInt32(SBO_Company.GetNewObjectKey())))
oPickList.Lines.BinAllocations.BinAbsEntry = 1; // 05-SYSTEM-BIN-LOCATION
oPickList.Lines.BinAllocations.Quantity = oPickList.Lines.ReleasedQuantity;
if (oPickList.UpdateReleasedAllocation() != 0)
System.Windows.Forms.MessageBox.Show("Error : " + SBO_Company.GetLastErrorDescription());
//Screenshot2
Screenshot 1
Screenshot 2
regards,
Maik -
Hi,
Could anybody post the program and form in XML format for pick list smartform /SMB40/SDPLK_L ?
I could not find this smartform in the preconfigured package in market place.
Thanks Appreciated.
AnnaHere is the print program:
* Print of pickinglist for one single delivery note with Smart Form
REPORT /bpr3pf/rvadek01 LINE-COUNT 100 MESSAGE-ID vn.
TABLES: vbco3, "Communicationarea for view
vblkk, "Headerview
vblkp, "Itemview
ltak, "Transportauftrag
adrs, "Communicationarea for Address
riserls, "Serialnumbers
komser, "Communicationarea Serialnumbers
tvst, tvstt, "Shipping point
vbkok, vbpok.
TABLES: nast, "Messages
*nast, "Messages
tnapr, "Programs & Forms
itcpo, "Communicationarea for Spool
arc_params, "Archive parameters
toa_dara, "Archive parameters
addr_key. "Adressnumber for ADDRESS
TYPE-POOLS szadr.
DATA: retcode LIKE sy-subrc, "Returncode
xvbeln LIKE likp-vbeln,
xkomau LIKE likp-vbeln,
xscreen(1) TYPE c. "Output on printer or screen
DATA: BEGIN OF tvblkp OCCURS 0. "Internal table for items
INCLUDE STRUCTURE vblkp.
DATA: END OF tvblkp.
DATA: BEGIN OF tsernr OCCURS 0. "Internal table for serialnumbers
INCLUDE STRUCTURE riserls.
DATA: END OF tsernr.
DATA: BEGIN OF tsernr_print OCCURS 0.
INCLUDE STRUCTURE komser.
DATA: END OF tsernr_print.
DATA: BEGIN OF tltap OCCURS 50. "TA-Positionen
INCLUDE STRUCTURE ltap.
INCLUDE STRUCTURE ltap1.
DATA: END OF tltap.
DATA: BEGIN OF svblkp.
INCLUDE STRUCTURE vblkp.
DATA: END OF svblkp.
INCLUDE /smb40/vblpdata.
*include vblpdata.
INCLUDE /smb40/vbfadata.
*include vbfadata.
INCLUDE /smb40/vbukdata.
*include vbukdata.
INCLUDE /smb40/vbupdata.
*include vbupdata.
INCLUDE /smb40/vbbddata.
*include vbbddata.
INCLUDE /smb40/vbpadata.
*include vbpadata.
INCLUDE /smb40/sadrdata.
*include sadrdata.
* FORM ENTRY *
* Steuerung des Drucks *
FORM entry USING return_code us_screen.
CLEAR retcode.
xscreen = us_screen.
PERFORM processing USING us_screen.
IF retcode NE 0.
return_code = 1.
ELSE.
* Kommimengen an Lieferungen zurückgeben, aber nicht bei Druckansicht
IF xscreen = ' '.
PERFORM delivery_update.
ENDIF.
return_code = 0.
ENDIF.
ENDFORM. "entry
* FORM PROCESSING *
* --> PROC_SCREEN *
FORM processing USING proc_screen.
REFRESH: xlips,
xvbfa,
xvbuk,
xvbup,
yvbfa,
yvbuk,
yvbup.
PERFORM get_data.
CHECK retcode = 0.
PERFORM get_comm USING proc_screen tvst-aland.
CHECK retcode = 0.
PERFORM user_exit1.
PERFORM smartform_print.
CHECK retcode = 0.
ENDFORM. "processing
* S U B R O U T I N E S *
* FORM DELIVERY_UPDATE *
* Ergänzen Lieferung um Kommissionierinformation *
* Ergänzen der Lieferungen um Kommissionierinformation
FORM delivery_update.
DATA: BEGIN OF hvbpok OCCURS 10. "Lieferpositionen Kommiss.
INCLUDE STRUCTURE vbpok.
DATA: END OF hvbpok.
DATA: BEGIN OF sav_nast.
INCLUDE STRUCTURE nast.
DATA: END OF sav_nast.
* DATA: SYNC_FLAG TYPE C. "synchrone Verbuchung?
* Füllen Lieferkopfdaten für Kommi-Update
vbkok-vbeln_vl = xvbeln.
vbkok-vbeln = vblkk-komau.
* Füllen Positionsdaten zu Liefernr.
LOOP AT tvblkp.
hvbpok-vbeln_vl = tvblkp-vbeln.
hvbpok-posnr_vl = tvblkp-posnr.
hvbpok-posnn = tvblkp-posnr.
hvbpok-vbeln = vblkk-komau.
hvbpok-vbtyp_n = 'Q'.
hvbpok-pikmg = tvblkp-komng.
hvbpok-meins = tvblkp-meins.
hvbpok-ndifm = 0.
hvbpok-taqui = ' '.
hvbpok-charg = tvblkp-charg.
hvbpok-matnr = tvblkp-matnr.
hvbpok-brgew = tvblkp-brgew.
hvbpok-gewei = tvblkp-gewei.
hvbpok-volum = tvblkp-volum.
hvbpok-voleh = tvblkp-voleh.
hvbpok-orpos = 0.
APPEND hvbpok.
ENDLOOP.
* IF NAST-VSZTP <> 4.
* SYNC_FLAG = 'X'.
* ELSE.
* SYNC_FLAG = ' '.
* ENDIF.
sav_nast = nast.
CALL FUNCTION 'SD_DELIVERY_UPDATE_PICKING'
EXPORTING
nicht_sperren = 'X'
vbkok_wa = vbkok
aufrufer_t = 'X'
TABLES
vbpok_tab = hvbpok.
nast = sav_nast.
* Freigabe an Datenbank
* COMMIT WORK.
ENDFORM. "delivery_update
* FORM get_comm *
* --> US_SCREEN Output on screen *
* ' ' = printer *
* 'X' = screen *
* --> US_COUNTRY County for telecommunication and SET COUNTRY *
FORM get_comm USING us_screen us_country.
DATA: lvs_itcpo TYPE itcpo,
lvf_device(30) TYPE c,
lvf_dialog(1) TYPE c VALUE ' ',
lvs_recipient LIKE swotobjid,
lvs_sender LIKE swotobjid,
lvs_snast TYPE snast,
lvf_program LIKE sy-repid,
lvs_comm_type TYPE ad_comm,
lvs_comm_values TYPE szadr_comm_values.
* reset return code
retcode = 0.
* if there is a communication strategy used ...
IF NOT nast-tcode IS INITIAL.
* ... use stratagy to get communication type
CALL FUNCTION 'ADDR_GET_NEXT_COMM_TYPE'
EXPORTING
strategy = nast-tcode
* ADDRESS_TYPE =
* ADDRESS_NUMBER = VBDKA-ADRNR
* PERSON_NUMBER = VBDKA-ADRNP
address_number = addr_key-addrnumber
person_number = addr_key-persnumber
IMPORTING
comm_type = lvs_comm_type
comm_values = lvs_comm_values
* TABLES
* STRATEGY_TABLE =
EXCEPTIONS
address_not_exist = 1
person_not_exist = 2
no_comm_type_found = 3
internal_error = 4
parameter_error = 5
OTHERS = 6.
IF sy-subrc <> 0.
retcode = sy-subrc.
syst-msgty = 'E'.
PERFORM protocol_update.
ENDIF.
ENDIF.
* convert communication data
MOVE-CORRESPONDING nast TO lvs_snast.
MOVE sy-repid TO lvf_program.
CALL FUNCTION 'CONVERT_COMM_TYPE_DATA'
EXPORTING
pi_comm_type = lvs_comm_type
pi_comm_values = lvs_comm_values
pi_screen = us_screen
* PI_NEWID =
pi_country = us_country
pi_repid = lvf_program
pi_snast = lvs_snast
IMPORTING
pe_itcpo = lvs_itcpo
pe_device = lvf_device
pe_mail_recipient = lvs_recipient
pe_mail_sender = lvs_sender
EXCEPTIONS
comm_type_not_supported = 1
recipient_creation_failed = 2
sender_creation_failed = 3
OTHERS = 4.
IF sy-subrc <> 0.
retcode = sy-subrc.
syst-msgty = 'E'.
PERFORM protocol_update.
ENDIF.
CHECK retcode EQ 0.
* if there is no communication type
IF lvs_comm_type IS INITIAL.
* set device
CASE nast-nacha.
WHEN '1'.
lvf_device = 'PRINTER'.
WHEN '2'.
lvf_device = 'TELEFAX'.
lvs_itcpo-tdtelenum = nast-telfx.
IF nast-tland IS INITIAL.
lvs_itcpo-tdteleland = us_country.
ELSE.
lvs_itcpo-tdteleland = nast-tland.
ENDIF.
lvs_itcpo-tdsenddate = nast-vsdat.
lvs_itcpo-tdsendtime = nast-vsura.
lvs_itcpo-tdfaxuser = nast-usnam.
WHEN '3'.
lvf_device = 'TELETEX'.
lvs_itcpo-tdtelenum = nast-teltx.
IF nast-tland IS INITIAL.
lvs_itcpo-tdteleland = us_country.
ELSE.
lvs_itcpo-tdteleland = nast-tland.
ENDIF.
lvs_itcpo-tdsenddate = nast-vsdat.
lvs_itcpo-tdsendtime = nast-vsura.
WHEN '4'.
lvf_device = 'TELEX'.
lvs_itcpo-tdtelenum = nast-telx1.
IF nast-tland IS INITIAL.
lvs_itcpo-tdteleland = us_country.
ELSE.
lvs_itcpo-tdteleland = nast-tland.
ENDIF.
lvs_itcpo-tdsenddate = nast-vsdat.
lvs_itcpo-tdsendtime = nast-vsura.
WHEN OTHERS.
lvf_device = 'PRINTER'.
ENDCASE.
ENDIF.
* fill structure itcpo
itcpo = lvs_itcpo.
SET COUNTRY us_country.
* include rvadopfo.
ENDFORM. "get_comm
* FORM GET_DATA *
* General provision of data for the form *
FORM get_data.
DATA: vblkp_lines TYPE p.
* Beschaffen View
xvbeln = nast-objky.
CALL FUNCTION 'RV_DELIVERY_PICK_VIEW'
EXPORTING
vbeln = xvbeln
zweck = 'D'
spras = nast-spras
IMPORTING
vblkk_wa = vblkk
TABLES
vblkp_tab = tvblkp
EXCEPTIONS
OTHERS = 1.
IF sy-subrc NE 0.
PERFORM protocol_update.
ENDIF.
* gibt es zu kommissionierende Positionen, ggf. sortieren
DESCRIBE TABLE tvblkp LINES vblkp_lines.
IF vblkp_lines GT 0.
* Nummernvergabe Kommissionierauftrag
CLEAR vblkk-komau.
CALL FUNCTION 'NUMBER_GET_NEXT'
EXPORTING
nr_range_nr = '01'
object = 'SD_PICKING'
IMPORTING
number = vblkk-komau
EXCEPTIONS
OTHERS = 1.
IF sy-subrc NE 0.
ENDIF.
IF vblkk-komau IS INITIAL.
vblkk-komau = sy-datum+2.
vblkk-komau+6(4) = sy-uzeit(4).
ENDIF.
PERFORM sort_pick_list.
retcode = 0.
ELSE.
retcode = 4.
syst-msgid = 'VN'.
syst-msgno = '202'.
syst-msgty = 'E'.
syst-msgv1 = vblkk-vbeln.
PERFORM protocol_update.
CHECK 1 = 2.
ENDIF.
* Lesen Versandstelle
IF vblkk-vstel EQ space.
CLEAR: tvst, tvstt.
ELSE.
SELECT SINGLE * FROM tvst WHERE vstel EQ vblkk-vstel.
IF sy-subrc NE 0.
CLEAR tvst.
syst-msgid = 'VN'.
syst-msgno = '203'.
syst-msgty = 'E'.
syst-msgv1 = 'TVST'.
syst-msgv2 = syst-subrc.
PERFORM protocol_update.
ENDIF.
SELECT SINGLE * FROM tvstt WHERE spras EQ nast-spras
AND vstel EQ vblkk-vstel.
IF sy-subrc NE 0.
CLEAR tvstt.
syst-msgid = 'VN'.
syst-msgno = '203'.
syst-msgty = 'E'.
syst-msgv1 = 'TVSTT'.
syst-msgv2 = syst-subrc.
PERFORM protocol_update.
ENDIF.
ENDIF.
ENDFORM. "get_data
* FORM GET_SERIAL_NO *
* In this routine the serialnumbers are fetched from the *
* database. *
FORM get_serial_no.
REFRESH tsernr.
REFRESH tsernr_print.
CHECK vblkp-anzsn > 0.
* Read the Serialnumbers of a Position.
CALL FUNCTION 'SERIAL_LS_PRINT'
EXPORTING
vbeln = vblkp-vbeln
posnr = vblkp-posnr
TABLES
iserls = tsernr.
* Process the stringtable for Printing.
CALL FUNCTION 'PROCESS_SERIALS_FOR_PRINT'
EXPORTING
i_boundary_left = '(_'
i_boundary_right = '_)'
i_sep_char_strings = ',_'
i_sep_char_interval = '_-_'
i_use_interval = 'X'
i_boundary_method = 'C'
i_line_length = 50
i_no_zero = 'X'
i_alphabet = sy-abcde
i_digits = '0123456789'
i_special_chars = '-'
i_with_second_digit = ' '
TABLES
serials = tsernr
serials_print = tsernr_print
EXCEPTIONS
boundary_missing = 01
interval_separation_missing = 02
length_to_small = 03
internal_error = 04
wrong_method = 05
wrong_serial = 06
two_equal_serials = 07
serial_with_wrong_char = 08
serial_separation_missing = 09.
IF sy-subrc NE 0.
PERFORM protocol_update.
ENDIF.
ENDFORM. "get_serial_no
* FORM SMARTFORM_PRINT
FORM smartform_print.
DATA: e_werks LIKE tvblkp-werks VALUE ' ',
e_lgort LIKE tvblkp-lgort VALUE ' ',
e_lgnum LIKE tvblkp-lgnum VALUE ' ',
e_mbdat LIKE tvblkp-mbdat VALUE IS INITIAL.
DATA: lf_fm_name TYPE rs38l_fnam.
DATA: ls_control_param TYPE ssfctrlop.
DATA: ls_composer_param TYPE ssfcompop.
DATA: ls_recipient TYPE swotobjid.
DATA: ls_sender TYPE swotobjid.
DATA: lf_formname TYPE tdsfname.
DATA: ls_addr_key LIKE addr_key.
CLEAR retcode.
* nast_key = objky.
PERFORM set_print_param USING ls_addr_key
CHANGING ls_control_param
ls_composer_param
ls_recipient
ls_sender
retcode.
*Get the Smart Form name.
IF NOT tnapr-sform IS INITIAL.
lf_formname = tnapr-sform.
ELSE.
MESSAGE e001(/smb40/ssfcomposer).
ENDIF.
* determine smartform function module for invoice
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING formname = lf_formname
* variant = ' '
* direct_call = ' '
IMPORTING fm_name = lf_fm_name
EXCEPTIONS no_form = 1
no_function_module = 2
OTHERS = 3.
IF sy-subrc <> 0.
* error handling
retcode = sy-subrc.
IF sy-subrc = 1.
MESSAGE e001(/smb40/ssfcomposer).
ENDIF.
IF sy-subrc = 2.
MESSAGE e002(/smb40/ssfcomposer).
ENDIF.
PERFORM protocol_update.
ENDIF.
CALL FUNCTION lf_fm_name
EXPORTING
archive_index = toa_dara
* ARCHIVE_INDEX_TAB =
archive_parameters = arc_params
control_parameters = ls_control_param
* MAIL_APPL_OBJ =
mail_recipient = ls_recipient
mail_sender = ls_sender
output_options = ls_composer_param
user_settings = ' '
vblkk = vblkk
TABLES
tvblkp = tvblkp
* IMPORTING
* DOCUMENT_OUTPUT_INFO =
* JOB_OUTPUT_INFO =
* JOB_OUTPUT_OPTIONS =
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5
IF sy-subrc <> 0.
retcode = sy-subrc.
PERFORM protocol_update.
* get SmartForm protocoll and store it in the NAST protocoll
PERFORM add_smfrm_prot.
ENDIF.
ENDFORM. "smartform_print
* FORM PROTOCOL_UPDATE *
* The messages are collected for the processing protocol. *
FORM protocol_update.
CHECK xscreen = space.
CALL FUNCTION 'NAST_PROTOCOL_UPDATE'
EXPORTING
msg_arbgb = syst-msgid
msg_nr = syst-msgno
msg_ty = syst-msgty
msg_v1 = syst-msgv1
msg_v2 = syst-msgv2
msg_v3 = syst-msgv3
msg_v4 = syst-msgv4
EXCEPTIONS
OTHERS = 1.
ENDFORM. "protocol_update
* FORM SENDER *
* This routine determines the address of the sender (Table VBUR)*
FORM user_exit1.
ENDFORM. "user_exit1
INCLUDE /smb40/mv50bfz1.
*include mv50bfz1.
*& Form set_print_param
* text
* -->P_LS_ADDR_KEY text
* <--P_LS_CONTROL_PARAM text
* <--P_LS_COMPOSER_PARAM text
* <--P_LS_RECIPIENT text
* <--P_LS_SENDER text
* <--P_RETCO text
FORM set_print_param USING is_addr_key LIKE addr_key
CHANGING cs_control_param TYPE ssfctrlop
cs_composer_param TYPE ssfcompop
cs_recipient TYPE swotobjid
cs_sender TYPE swotobjid
cf_retcode TYPE sy-subrc.
DATA: ls_itcpo TYPE itcpo.
DATA: lf_repid TYPE sy-repid.
DATA: lf_device TYPE tddevice.
DATA: ls_recipient TYPE swotobjid.
DATA: ls_sender TYPE swotobjid.
lf_repid = sy-repid.
IF itcpo IS INITIAL.
CALL FUNCTION 'WFMC_PREPARE_SMART_FORM'
EXPORTING
pi_nast = nast
pi_addr_key = is_addr_key
pi_repid = lf_repid
IMPORTING
pe_returncode = cf_retcode
pe_itcpo = ls_itcpo
pe_device = lf_device
pe_recipient = cs_recipient
pe_sender = cs_sender.
IF cf_retcode = 0.
MOVE-CORRESPONDING ls_itcpo TO cs_composer_param.
* CS_CONTROL_PARAM-NO_OPEN
* CS_CONTROL_PARAM-NO_CLOSE
cs_control_param-device = lf_device.
cs_control_param-no_dialog = 'X'.
cs_control_param-preview = xscreen.
cs_control_param-getotf = ls_itcpo-tdgetotf.
cs_control_param-langu = nast-spras.
* CS_CONTROL_PARAM-REPLANGU1
* CS_CONTROL_PARAM-REPLANGU2
* CS_CONTROL_PARAM-REPLANGU3
* CS_CONTROL_PARAM-STARTPAGE
ENDIF.
ELSE.
MOVE-CORRESPONDING itcpo TO cs_composer_param.
* CS_CONTROL_PARAM-NO_OPEN
* CS_CONTROL_PARAM-NO_CLOSE
cs_control_param-device = lf_device.
cs_control_param-no_dialog = 'X'.
cs_control_param-preview = xscreen.
cs_control_param-getotf = itcpo-tdgetotf.
cs_control_param-langu = nast-spras.
* CS_CONTROL_PARAM-REPLANGU1
* CS_CONTROL_PARAM-REPLANGU2
* CS_CONTROL_PARAM-REPLANGU3
* CS_CONTROL_PARAM-STARTPAGE
ENDIF.
ENDFORM. " set_print_param
**& Form protocol_update_i
** text
** --> p1 text
** <-- p2 text
*form protocol_update_i.
* check xscreen = space.
* call function 'NAST_PROTOCOL_UPDATE'
* exporting
* msg_arbgb = syst-msgid
* msg_nr = syst-msgno
* msg_ty = syst-msgty
* msg_v1 = syst-msgv1
* msg_v2 = syst-msgv2
* msg_v3 = syst-msgv3
* msg_v4 = syst-msgv4
* exceptions
* others = 1.
*endform. " protocol_update_i
*& Form add_smfrm_prot
* text
* --> p1 text
* <-- p2 text
FORM add_smfrm_prot.
DATA: lt_errortab TYPE tsferror.
DATA: lf_msgnr TYPE sy-msgno.
DATA: l_s_log TYPE bal_s_log,
p_loghandle TYPE balloghndl,
l_s_msg TYPE bal_s_msg.
FIELD-SYMBOLS: <fs_errortab> TYPE LINE OF tsferror.
* get smart form protocoll
CALL FUNCTION 'SSF_READ_ERRORS'
IMPORTING
errortab = lt_errortab.
* add smartform protocoll to nast protocoll
LOOP AT lt_errortab ASSIGNING <fs_errortab>.
CLEAR lf_msgnr.
lf_msgnr = <fs_errortab>-errnumber.
CALL FUNCTION 'NAST_PROTOCOL_UPDATE'
EXPORTING
msg_arbgb = <fs_errortab>-msgid
msg_nr = lf_msgnr
msg_ty = <fs_errortab>-msgty
msg_v1 = <fs_errortab>-msgv1
msg_v2 = <fs_errortab>-msgv2
msg_v3 = <fs_errortab>-msgv3
msg_v4 = <fs_errortab>-msgv4
EXCEPTIONS
OTHERS = 1.
ENDLOOP.
* open the application log
l_s_log-extnumber = sy-uname.
CALL FUNCTION 'BAL_LOG_CREATE'
EXPORTING
i_s_log = l_s_log
IMPORTING
e_log_handle = p_loghandle
EXCEPTIONS
OTHERS = 1.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
LOOP AT lt_errortab ASSIGNING <fs_errortab>.
MOVE-CORRESPONDING <fs_errortab> TO l_s_msg.
CALL FUNCTION 'BAL_LOG_MSG_ADD'
EXPORTING
i_log_handle = p_loghandle
i_s_msg = l_s_msg
EXCEPTIONS
OTHERS = 1.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDLOOP.
CALL FUNCTION 'BAL_DSP_LOG_DISPLAY'.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. " add_smfrm_prot -
Pick List Creation Released quantity exceeds open quantity
Hi all,
I'm getting the following error when trying to create pick lists through the SAPB1 DI:
"Released quantity exceeds open quantity "
Every time, the stock quantity in the warehouse that the code concerns is by far enough when compared to the released quantity.
I cannot turn off the warehouse setting recommended on another post on here.
Any ideas?
Thanks
Cal.Hi, sorry for my delayed response!
This is still an issue, I already have a condition to check against the warehouse's current stock, this is being successful but still generates the above error when we get to PLIST.add()
Here's the SQL I'm using to gather my data:
select distinct t3.docnum,t4.listName as'Price List',(select isnull(sum(1),0) from pkl1 S99 where S99.orderentry = T0.docentry
and S99.orderline = T0.linenum) as 'cupid',t0.DocEntry, t3.Confirmed, DATEDIFF(DAY,GETDATE(),t3.DocDueDate)
as 'DateDifference' from rdr1 t0 inner join oitm t2 on t0.ItemCode = t2.ItemCode inner join ORDR t3
on t3.DocEntry = t0.DocEntry inner join OCRD t1 on t3.CardCode = t1.cardcode inner join OPLN t4
on t1.listnum = t4.listNum where T0.[WhsCode] = 'xxx' and T2.[OnHand] > 0 and T0.[OpenQty] > 0 and T2.InvntItem = 'y'
and t3.Confirmed = 'y' and (select isnull(sum(1),0) from pkl1 S99 where S99.orderentry = T0.docentry and S99.orderline = T0.linenum) = 0
and t4.ListName <> 'EconoSupplies Sales' and t4.ListName <> 'EconoSupplies Sales (EUR)'
and DATEDIFF(DAY,GETDATE(),t3.DocDueDate) < case when datepart(WEEKDAY,getdate()) = 6 then 4 else 2 end group by t3.docnum,t0.docEntry,
t3.Confirmed , t0.LineNum, t4.listname, DATEDIFF(DAY,GETDATE(),t3.DocDueDate) order by t0.DocEntry
This returns a list of all the picks that I am interested in. I have changed the warehouse code for privacy.
Next, we loop through each pick and extract the data:
SELECT T1.[DocNum], T1.[DocEntry],T0.[LineNum], T1.[CardCode],T0.[ItemCode], T0.[Dscription], T0.[OpenQty], (SELECT sum(s99
.[OpenQty]) FROM RDR1 s99 WHERE s99.[DocEntry] = T0.[DocEntry] and s99.[ItemCode] = T0.[ItemCode]) as 'TotalQty',T3.
[OnHand] FROM RDR1 T0 INNER JOIN ORDR T1 ON T0.DocEntry = T1.DocEntry INNER JOIN OITM T2 ON T0.ItemCode = T2.ItemCode INNER
JOIN OITW T3 ON T0.ItemCode = T3.ItemCode and T0.WhsCode = T3.WhsCode WHERE T0.[WhsCode] = 'DSV' and T3.[OnHand] > 0 and
T0.[OpenQty] > 0 and T2.InvntItem = 'y' and t0.docEntry = <<<VB VARIABLE HERE>>>
ORDER BY T1.[DocEntry], T0.[LineNum]
These two sql commands are stored in a table and called from the VB code, for soft code re-usability.
The SQL returns the results I am expecting, and I don't think the problem lies here.
Here's the VB code:
Dim PLIST As SAPbobsCOM.PickLists
PLIST = GetDIConnection.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oPickLists)
Dim RS, RS1, RS2, RS12 As SAPbobsCOM.Recordset
Dim i, ii As Integer
RS = GetDIConnection.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset)
RS1 = GetDIConnection.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset)
RS12 = GetDIConnection.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset)
Dim WhsCode As String = GetCompanyNamedConfigValue("xxxxx", "xx")
Dim SQLText As String
Dim nErr, errMsg As String
Dim DocDate As Date = Now
Dim tempI As Integer = 1
Dim executeBody As Boolean = True
Dim ExecuteHead As Boolean = True
Dim picklistcheck, picklistcheck1 As String
Dim Type As String
'CJB---- AUTO GENERATE PICK LIST-------------------------------------
Dim OCHAPPCFGValue As String = GetAPPCFGEntry("GeneratePicks")
If OCHAPPCFGValue = "Y" The
Dim DocEntry, qty, docnum As Integer 'SO docentry & line qty
Dim ItemCode As String ' Itemcode for SO line
Dim price As Double
Dim LineNum As Integer
Dim OrderRs, ORderRs1 As SAPbobsCOM.Recordset
Dim HashTable As New Hashtable
Dim HashArray(2) As String
OrderRs = GetDIConnection.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset)
ORderRs1 = GetDIConnection.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset)
Dim sqlstring1 As String = GetAPPCFGEntry("SQLSTRING1SOWMS03")
Echo("Debug, sqlstring1: " & sqlstring1)
OrderRs.DoQuery(sqlstring1) ' just assume the SQL brings back what I need
Dim Attemptcount As Integer = 1
'We now have the docEntries we need, so we loop through each docEntry and extract the lines
Do Until OrderRs.EoF
DocEntry = OrderRs.Fields.Item("DocEntry").Value
EchoBanner("NEW RECORD, attempt count: " & Attemptcount)
Echo("DocEntry: " & DocEntry)
Dim sqlstringPart1, SqlStringPart2 As String
sqlstringPart1 = GetAPPCFGEntry("SQLSTRINGSOWMS03P1")
SqlStringPart2 = GetAPPCFGEntry("SQLSTRINGSOWMS03P2")
Dim sqlstring As String = sqlstringPart1 & " '" & DocEntry & "' " & SqlStringPart2
Echo("Debug: SOFT CODED SQL STRING FROM OCHAPPCFG FOR PICK LIST SELECTION CRITERIA:")
Echo(sqlstring)
ORderRs1.DoQuery(sqlstring)
If ORderRs1.RecordCount = 0 Then
'Error!
EchoBanner("No records found under docEntry: " & DocEntry)
End If
PLIST.PickDate = Today
PLIST.Name = "DSV Interface"
PLIST.OwnerCode = 1
Dim icount As Integer = 0
Dim onHand, TotalQty As Integer
Dim LineAdded As Boolean = False
Do Until ORderRs1.EoF
docnum = ORderRs1.Fields.Item("DocNum").Value
'PLIST.Lines.SetCurrentLine(icount)
ItemCode = ORderRs1.Fields.Item("ItemCode").Value
' price = OrderRs1.Fields.Item("Price").Value
onHand = CInt(ORderRs1.Fields.Item("onHand").Value)
TotalQty = CInt(ORderRs1.Fields.Item("TotalQty").Value)
Echo("DocNum: " & docnum)
Echo("Debug: Onhand: " & onHand)
Echo("Debug: TotalQty: " & TotalQty)
If TotalQty > onHand Then
'WE CANNOT RAISE THIS PICK LIST, MORE REQUESTED THAN IN STOCK!
Echo("Unable to generate Pick List, not enough stock for item: " & ItemCode)
Exit Do
End If
PLIST.Lines.SetCurrentLine(icount)
Echo("Line set to " & icount)
PLIST.Lines.BaseObjectType = SAPbobsCOM.BoObjectTypes.oOrders
PLIST.Lines.OrderEntry = DocEntry
'CJB
LineNum = ORderRs1.Fields.Item("LineNum").Value
PLIST.Lines.OrderRowID = LineNum
'PLIST.Lines.ReleasedQuantity = OrderRs1.RecordCount ' quantity from the line in SO - OpenLineQty
PLIST.Lines.ReleasedQuantity = ORderRs1.Fields.Item("OpenQty").Value
' PLIST.Lines.TaxCode = OrderRs1.Fields.Item("VatGroup").Value
Echo("Record count : " & ORderRs1.RecordCount)
Echo("Icount: " & icount)
Echo("Details...")
Echo("Debug: LineNum: " & LineNum)
Echo("Debug: DocNum: " & docnum)
Echo("Debug: ItemCode: " & ItemCode)
Echo("Debug: Released Quantity: " & PLIST.Lines.ReleasedQuantity)
Echo("Debug: Picked Quantity: " & PLIST.Lines.PickedQuantity)
Echo("Debug: OnHand: " & onHand)
Echo("Debug: PickDate: " & PLIST.PickDate)
PLIST.Lines.Add()
Echo("Pick List line added!")
icount += 1
ORderRs1.MoveNext()
LineAdded = True
Loop
' OrderRs.DoQuery("select t0.absentry, t0.pickentry, t0.orderEntry, t1.DocEntry, t0.PickQtty from pkl1 t0 inner join ordr t1 on t0.OrderEntry = t1.DocEntry where t1.DocEntry = '" & DocEntry & "'"
' If OrderRs.RecordCount = 0 Then
If LineAdded = True Then
Echo("Adding Pick List...")
Dim lretcode As Integer = PLIST.Add()
If lretcode = 0 Then
'success!
EchoBanner("Success")
Dim LastPickEntry As String = GetDIConnection.GetNewObjectKey()
Echo("Enitre Pick List created! See Pick & Pack -> Pick List in SAPB1")
Echo("Pick Entry: " & LastPickEntry)
Else
EchoBanner("ERROR! UNABLE TO GENERATE PICKLIST!! " & GetDIConnection.GetLastErrorDescription)
End If
Else
Echo("NO LINES FOUND TO ADD TO THE PICK LIST!")
' Err.Raise(vbObjectError, "SOWMS03, generate picklist", "Error creating PickList! Error Description: " & GetDIConnection.GetLastErrorDescription & " Error Code: " & GetDIConnection.GetLastErrorCode)
'need a way of logging this error without jumping out of the loop.
End If
OrderRs.MoveNext()
Attemptcount += 1
Loop -
Delivery Notes Generation Via Pick List
Am trying to generate delivery notes off pick tickets and i can't find any code example. I now came up with the following code but am having issues when items are in multiple Bin Locations.
Public Sub Sales2Delivery() '(ByVal OrderID As String)
Dim OrderID As String = ""
Try
Using connection As New SqlConnection(StaginConn)
'Dim command As New SqlCommand("SELECT DocEntry from ORDR with (nolock) WHERE NumAtCard = '" & OrderID & "'", connection)
Dim command As New SqlCommand("SET DATEFORMAT DMY; select distinct top 5 o.DocEntry, o.NumAtCard from ordr O with (nolock) join RDR1 R with (nolock) on R.DocEntry = O.DocEntry join OPKL P with (nolock) on P.AbsEntry = R.PickIdNo where u_shipstate = 'Delivered' and CAST(O.docdate as date) >= '30/04/2014' and P.Status = 'Y';", connection)
connection.Open()
Dim reader As SqlDataReader = command.ExecuteReader()
' Call Read before accessing data.
While reader.Read()
Dim BusinessOrders As Documents = DirectCast(vCompany.GetBusinessObject(BoObjectTypes.oOrders), Documents)
Dim BusinessDelivery As Documents = DirectCast(vCompany.GetBusinessObject(BoObjectTypes.oDeliveryNotes), Documents)
Dim orders As Documents = BusinessOrders
orders.GetByKey(Convert.ToInt32(reader(0)))
OrderID = Convert.ToString(reader(1))
Dim Delivery As Documents = BusinessDelivery
Delivery.CardCode = orders.CardCode
Delivery.CardName = orders.CardName
Delivery.NumAtCard = orders.NumAtCard
'Delivery.DocNum = orders.DocNum
Delivery.HandWritten = BoYesNoEnum.tNO
Delivery.Series = 8
Delivery.DocDate = DateTime.Today
Delivery.DocDueDate = DateTime.Today
Delivery.TaxDate = DateTime.Today
Delivery.Address = orders.Address
Delivery.Address2 = orders.Address2
Delivery.Comments = "Based on Sales Order #" + orders.NumAtCard & "."
Delivery.DocCurrency = orders.DocCurrency
Delivery.DocDueDate = orders.DocDueDate
Delivery.DocObjectCode = SAPbobsCOM.BoObjectTypes.oDeliveryNotes
Delivery.ShipToCode = orders.ShipToCode
Dim lines As Document_Lines = orders.Lines
'If (count > 0) Then
' lines.Add()
' lines.SetCurrentLine((lines.Count - 1))
'End If
Dim oPickList As PickLists = DirectCast(vCompany.GetBusinessObject(BoObjectTypes.oPickLists), PickLists)
oPickList.GetByKey(orders.Lines.PickListIdNumber)
For i As Int32 = 0 To (lines.Count - 1)
If i > 0 Then
Delivery.Lines.Add()
Delivery.Lines.SetCurrentLine(i)
End If
' Set the Current Lines on the order
orders.Lines.SetCurrentLine(i)
Try
oPickList.Lines.SetCurrentLine(i)
Delivery.Lines.BaseEntry = oPickList.Lines.OrderEntry
Delivery.Lines.BaseLine = oPickList.Lines.OrderRowID
Delivery.Lines.Quantity = oPickList.Lines.PickedQuantity
Delivery.Lines.BaseType = DirectCast(SAPbobsCOM.BoObjectTypes.oOrders, Integer)
Delivery.Lines.BinAllocations.BinAbsEntry = oPickList.Lines.BinAllocations.BinAbsEntry
Dim rs As SAPbobsCOM.Recordset = vCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset)
rs.DoQuery("select itemcode, price, dscription from RDR1 R where R.LineNum = " & oPickList.Lines.OrderRowID & " and R.PickIdNo = " & oPickList.Lines.AbsoluteEntry)
While (rs.EoF <> True)
Delivery.Lines.ItemCode = rs.Fields.Item(0).Value.ToString 'orders.Lines.ItemCode
Delivery.Lines.UnitPrice = CType(rs.Fields.Item(1).Value.ToString, Double) 'orders.Lines.UnitPrice
Delivery.Lines.ItemDescription = rs.Fields.Item(2).Value.ToString 'orders.Lines.ItemDescription
rs.MoveNext()
End While
rs = Nothing
Catch ex As Exception
Continue For
My.Computer.FileSystem.WriteAllText(_LogPath, ErrDetails.ToString, True)
End Try
Next
If Delivery.Add() <> 0 Then
ErrDetails.AppendLine(" Unable to create Delivery note for Order: " & OrderID & " <br /> " & vCompany.GetLastErrorCode() & ":" & vCompany.GetLastErrorDescription())
Else
ErrDetails.AppendLine("Successfully created Delivery note for Order:" & OrderID) ' & " as requested by " & UserEmail & ".")
End If
orders = Nothing
Delivery = Nothing
BusinessOrders = Nothing
BusinessDelivery = Nothing
My.Computer.FileSystem.WriteAllText(_LogPath, ErrDetails.ToString, True)
End While
'orders = Nothing
'BusinessOrders = Nothing
End Using
Catch ex As Exception
ErrDetails.AppendLine(" Error generating Delivery note for Order: " & OrderID & " <br /> " & ex.ToString())
My.Computer.FileSystem.WriteAllText(_LogPath, ErrDetails.ToString, True)
Finally
If Not String.IsNullOrWhiteSpace(ErrDetails.ToString) Then
My.Computer.FileSystem.WriteAllText(_LogPath, (ChrW(13) & ChrW(10) & ChrW(13) & ChrW(10) & "Errors encountered while registering data on " & System.DateTime.Now.ToString("F") & ".Errors:" & ChrW(13) & ChrW(10) & Me.ErrDetails.ToString), True)
Else
My.Computer.FileSystem.WriteAllText(_LogPath, (ChrW(13) & ChrW(10) & ChrW(13) & ChrW(10) & "Application Ran successfully on " & System.DateTime.Now.ToString("F") & "."), True)
End If
End Try
End Sub
The Error message am getting is 1470000368 - The quantity allocated to bin locations must be positive.Am getting this error now is
"1470000341 - Fully allocate item "1017494" to bin locations in warehouse "Isolo". Issue is we have items in multiple Bin locations and the items have been picked via the pick ticket. Is it also possible to generate the delivery note off the Pick List.
The new code am using is
Public Sub Sales2Delivery() '(ByVal OrderID As String)
Dim OrderID As String = ""
Try
Using connection As New SqlConnection(StaginConn)
'Dim command As New SqlCommand("SELECT DocEntry from ORDR with (nolock) WHERE NumAtCard = '" & OrderID & "'", connection)
Dim command As New SqlCommand("SET DATEFORMAT DMY; select distinct top 5 o.DocEntry, o.NumAtCard from ordr O with (nolock) join RDR1 R with (nolock) on R.DocEntry = O.DocEntry join OPKL P with (nolock) on P.AbsEntry = R.PickIdNo where u_shipstate = 'Delivered' and CAST(O.docdate as date) >= '30/04/2014' and P.Status = 'Y' and o.DocStatus = 'O';", connection)
connection.Open()
Dim reader As SqlDataReader = command.ExecuteReader()
' Call Read before accessing data.
While reader.Read()
Dim BusinessOrders As Documents = DirectCast(vCompany.GetBusinessObject(BoObjectTypes.oOrders), Documents)
Dim BusinessDelivery As Documents = DirectCast(vCompany.GetBusinessObject(BoObjectTypes.oDeliveryNotes), Documents)
Dim orders As Documents = BusinessOrders
orders.GetByKey(Convert.ToInt32(reader(0)))
OrderID = Convert.ToString(reader(1))
Dim Delivery As Documents = BusinessDelivery
Delivery.CardCode = orders.CardCode
Delivery.CardName = orders.CardName
Delivery.NumAtCard = orders.NumAtCard
'Delivery.DocNum = orders.DocNum
Delivery.HandWritten = BoYesNoEnum.tNO
'Delivery.Series = 8
Delivery.DocDate = DateTime.Today
Delivery.DocDueDate = DateTime.Today
Delivery.TaxDate = DateTime.Today
Delivery.Address = orders.Address
Delivery.Address2 = orders.Address2
Delivery.Comments = "Based on Sales Order #" + orders.NumAtCard & "."
Delivery.DocCurrency = orders.DocCurrency
Delivery.DocDueDate = orders.DocDueDate
Delivery.DocObjectCode = SAPbobsCOM.BoObjectTypes.oDeliveryNotes
Delivery.ShipToCode = orders.ShipToCode
Dim lines As Document_Lines = orders.Lines
'If (count > 0) Then
' lines.Add()
' lines.SetCurrentLine((lines.Count - 1))
'End If
Dim oPickList As PickLists = DirectCast(vCompany.GetBusinessObject(BoObjectTypes.oPickLists), PickLists)
oPickList.GetByKey(orders.Lines.PickListIdNumber)
For i As Int32 = 0 To (lines.Count - 1)
If i > 0 Then
Delivery.Lines.Add()
Delivery.Lines.SetCurrentLine(i)
End If
' Set the Current Lines on the order
orders.Lines.SetCurrentLine(i)
Try
oPickList.Lines.SetCurrentLine(i)
Delivery.Lines.BaseEntry = oPickList.Lines.OrderEntry
Delivery.Lines.BaseLine = oPickList.Lines.OrderRowID
Delivery.Lines.Quantity = oPickList.Lines.PickedQuantity
Delivery.Lines.BaseType = DirectCast(SAPbobsCOM.BoObjectTypes.oOrders, Integer)
'Dim rs As SAPbobsCOM.Recordset = vCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset)
'rs.DoQuery("select itemcode, price, dscription from RDR1 R where R.LineNum = " & oPickList.Lines.OrderRowID & " and R.PickIdNo = " & oPickList.Lines.AbsoluteEntry)
'While (rs.EoF <> True)
Delivery.Lines.ItemCode = orders.Lines.ItemCode
Delivery.Lines.UnitPrice = orders.Lines.UnitPrice
Delivery.Lines.ItemDescription = orders.Lines.ItemDescription
' rs.MoveNext()
' End While
'rs = Nothing
Catch ex As Exception
Continue For
My.Computer.FileSystem.WriteAllText(_LogPath, ErrDetails.ToString, True)
End Try
Next
If Delivery.Add() <> 0 Then
ErrDetails.AppendLine(" Unable to create Delivery note for Order: " & OrderID & " <br /> " & vCompany.GetLastErrorCode() & ":" & vCompany.GetLastErrorDescription())
Else
ErrDetails.AppendLine("Successfully created Delivery note for Order:" & OrderID) ' & " as requested by " & UserEmail & ".")
End If
orders = Nothing
Delivery = Nothing
BusinessOrders = Nothing
BusinessDelivery = Nothing
My.Computer.FileSystem.WriteAllText(_LogPath, ErrDetails.ToString, True)
End While
'orders = Nothing
'BusinessOrders = Nothing
End Using
Catch ex As Exception
ErrDetails.AppendLine(" Error generating Delivery note for Order: " & OrderID & " <br /> " & ex.ToString())
My.Computer.FileSystem.WriteAllText(_LogPath, ErrDetails.ToString, True)
Finally
If Not String.IsNullOrWhiteSpace(ErrDetails.ToString) Then
My.Computer.FileSystem.WriteAllText(_LogPath, (ChrW(13) & ChrW(10) & ChrW(13) & ChrW(10) & "Errors encountered while registering data on " & System.DateTime.Now.ToString("F") & ".Errors:" & ChrW(13) & ChrW(10) & Me.ErrDetails.ToString), True)
Else
My.Computer.FileSystem.WriteAllText(_LogPath, (ChrW(13) & ChrW(10) & ChrW(13) & ChrW(10) & "Application Ran successfully on " & System.DateTime.Now.ToString("F") & "."), True)
End If
End Try
End Sub -
Any ideas of how to set up a meal list in Numbers?
Hey.
I just got Numbers and I love it. This app is great.
Does anyone have an idea of how to set up a meal list for a family in Numbers? I used to use TextEdit to type the meals in, separated with hard returns. It was one long list. I'd like to use someething a little more robust.
Any ideas?Hi Ashka.
Thanks, that's giving me some ideas. Sometimes I overcomplicate my thought process, only to streamline it once I've gotten the big picture. Your idea looks very close to what I can use.
In the meantime, I made two weeks worth of breakfast, lunch, and dinner ideas. That helped me tremendously. I made a grocery list, based loosely off of the menu template, as Johnny mentioned above. It has an ingredient column (that lists all of the things that I would purchase), Have it column (with checkboxes. I'm sure that I'll be able to sort by that, later), Quantity (how many or much I'll need), How sold (pound, box, can, pieces...), Price, Estimate, and Store (you like the check boxes, I LOVE the selection menus! I set the cells in this column to have a list of the stores that I shop from. When I get to a particular item I choose the store from the selection menu. I love it!).
Thanks for the help!
-Scott -
Pick List Will Not Print On Add with SAP B1 2007A
There appears to be a bug with printing pick lists on Add with SAP B1 2007A. I have replicated the problem with PL03, 06 and 08.
Pick lists will print manually, but if you have them setup to print on add (Administration->System Initialization->Print Preferences), the following error in the log will appear:
Error Default report not found for current report type; set a default report and try again C:\Program Files\SAP\SAP Business One\SAP Business One.exe PID=6104 TID=1672
I ran a SQL trace and found the problem. The default Pick List report is set and set correctly in tables RTYP and RDOC. The problem is that SAP is looking for a RTYP.CODE value of PKL1 (instead of RLR2). PKL1 does not exist as a code in either 2005 or 2007. The Pick List document ID is RLR20001.
To confirm this on my demo database, I updated RTYP and set the CODE of RLR2 to PKL1. Afterwards, when adding a Pick List, it printed without any errors. I suppose another temporary fix would be to add a new record to the RTYP tabe with a CODE of PKL1 and the default pick list report document ID.After many hours of inquiring, searching and digging... There is an obscur SAP Note that says clearly, NOT SUPPORTED.
Best thing I could do, was to keep a server with the same configuration ready to connect to my SAN and take over from the dead server.
So for anyone interested in this topic. Save you time, search the SAP Notes for Support and high availability.
Hope that helps others. -
I defaulted input help field (pick list) but SAP CRM still asking for one
We are running SAP CRM 7.0.
Some fields as you know are dialog / pick list fields.
What I mean by this is they are input help fields where you
can click a little square (in sap crm 7.0) to the right of the text box
and it brings up a dialog screen of values that you can select from.
Here is an example screen shot of what I am talking about:
http://img834.imageshack.us/img834/5676/imageschak.png
So what I have done is implemented the GETTER function for this input help field so that by default it has a value.
The code is like so:
method GET_CURRENCY.
CALL METHOD SUPER->GET_CURRENCY
EXPORTING
ATTRIBUTE_PATH = attribute_path
ITERATOR = iterator
RECEIVING
VALUE = value.
if value eq ''.
IF sy-langu EQ 'E'.
VALUE = 'USD'.
elseif sy-langu EQ 'D'.
VALUE = 'EUR'.
ENDIF.
endif.
endmethod.
Here even is a link to this method that I created: Field Currency of Context Node BTADMINH - How to set default
The method works great it sets the default of the currency to say USD. When I click the create button to create an opportunity the field currency is set to USD, this is great because it makes my job easier that I dont have to click the input help button and select a currency, it is already there.
But once I click the "Save" button for an opportunity I get a small error in the error notification box that tells me I need to select a currency! But why is this happening a currency already exists? So If I click the input help (the little button) and reselect the currency value USD then save my opportunity this error goes away.
The question is why does this happen? I need it so that the default currency value is recognized by the SAP CRM system. Why do I have to go back in and re-select the currency if it is already set? Is there some sort of consistency check or something I need to do to eliminate this problem?
Here is a screen shot after creating an opportunity with the default Currency set to USD (this means I did not select USD in the dialog input help it was defaulted by the getter method:
http://img832.imageshack.us/img832/3011/enteracurrency.png
Only if I go back into edit mode and actually click the little square to bring up the dialog of values and select USD does this error go away. Why does this happen ?I called SET_CURRENCY right after setting my value and the error is now gone.
SET_CURRENCY( EXPORTING ATTRIBUTE_PATH = ATTRIBUTE_PATH
iterator = iterator
value = value ).
Got the tip from Pieter who has a good blog on SAP CRM: http://sapcrmweblog.blogspot.com/ -
Clarifications in pick list output type EK00
Hello ,
Have any one of you used the pick list output EK00 . I have
tried this and I do have some issues with
We are using SAP R/3 4.7 x 200 version .
Output type EK00 is not available in the application V2 (
Shipping ) . Its available in application V4 (Shipping special
case).
1. I have assigned the shipping points through T code VOK2 as I
am not able to find the output EK00 through customization menu.
2. I have maintained the printers details through VP01SHP ( correct me if I am wrong) . I am using the standard program RVADEK01 and form
SD_PICK_SINGLE in the output EK00.
After doing the above setting when I am creating delivery in
VL01N , the output type EK00 is not assigned automatically and
when I try to assign it manually , it gives an error message
"Processing program missing for output EK00 (medium 1)in
application V2" . I dont know why the system is looking for
application V2 when it is not available in V2 and only available
in V4 .
Am I missing anything in my process . Can some one help me in this .
With regards,
Joseph Anand.BDear Joseph,
Have you done the following setting in transaction v/38:
1.On the Display View "Output Types": Overview screen, in the Output type group box, select EK00. (Application V4)
2.In the left frame, under Dialog Structure, double-click on the Processing routines folder.
3.On the Change View "Processing Routines": Overview screen, choose .
4.In the first medium, for Print output, enter the Smart Form print program /SMB40/RVADEK01 under Program and Smart Form /SMB40/SDPIK_L under SmartForm.
Document Types Picking List
Output Types EK00
Transaction Code v/38
Smart Form Program /SMB40/RVADEK01
Smart Form /SMB40/SDPIK_L
/SMB40/SDPIK_A
5. Save the changes.
Regards,
Naveen. -
Infoview pick list values and CR parameter values are not the same
Hello All
We have created created Crystal Reports based upon BW Query using Static Parameters as recomended by SAP. When we run the query in InfoView the Pick List is dynamically updated and returns the correct data for selection. When The Crystal Report opens and you wish to navigate through the report using the parameter selection the selection criteria has not been maintained by BW and does not match the Pick List.
Can you please advise if there is any way to make this work?
We ar using Crystal Reports 2008 version 12.3.1.684
on BOBJ XI 3.1
Any help would be appreciated,
PhillipHello Ingo
What is strange that in InfoView the pick list is only dynamic the Parameters when the document is open (in InfoView) are not dynamic. An example would be Searching on Material. In Info view the pick list provides all the materials to select from. Once though the report is open the parameter list on the left hand side could be seen as blank as it refers to the static list that is not manually maintained within Crystal Reports or provide a list of details that has no reference to the dynamic selection as returned from BW as it is a static list that was loaded with Crystal Reports Designer on creation.
What we are wanting to achieve is that Info View Pick List is Dynamic and the Parameter list that can be used to navigate within the document once opened is dynamically refreshed to be the same as the Pick List provided by BW and InfoView.
Is this possible?
With CR Designer if we use Do Not Show, Info View no longer provides this parameter on the left hand side.
If we use Editable the list provided in InfoView is equal to the static list as maintained within CR Designer.
We have not tested Read Only Yet so I am not sure if this could be the solution or not.
Any ideas would be of great benefit
Phillip
Edited by: Phillip L on Nov 26, 2010 5:22 PM
Edited by: Phillip L on Nov 26, 2010 5:23 PM -
Error printing pick list from IW32
Hi all,
When trying to print pick list from transaction IW32, I get this error message:
Express document "Update was terminated" received from author ...
When I checked out this error message in SM13, I found this:
Transaction code: IW32
Module name (function): PM_ORDER_PRINT_CONTROL
Status: Update was terminated
Raise exception: KEY_NOT_FULLY_SPECIFIED (Complete key not entered)
The shop paper (pick list) is customer defined (Z*) under application area O (Maintenance orders). This shop paper is set up to print to a certain printer, P1, and printing other PLM documents on this output device works fine.
Does anyone have an idea what can be causing this error?
All helpful answers will be rewarded.
Best regards,
MVHi,
I have tried to print the pick list several times, in development, test, and production systems. It fails with the same error each time.
Do you have any ideas why this error occurs, is there any special IMG activity or PLM configuration that I could check to see if some printer settings are wrong?
Regards,
MV -
[PLEASE HELP] Display Customer Ref. No. in Pick List
Hi,
We are trying to display Customer Ref. No. (from Sales Order / Res. Invoice) in the pick list.
I have created a new UDF in the PIck List row.
But I am not sure what is the correct query to use to call this out so I can link it to the UDF.
Could someone please help us?
Thank you very much.
Edited by: Anfernee Chang on Nov 21, 2011 5:53 AMshafi_sunshine wrote:
Hi ,
>
> Try This....
>
> You can use FMS
>
>
> SELECT $[$14.0.0]
>
>
>
> Thanks
> Shafi
Hi shafi_sunshine,
I have tried both of the following queries,
SELECT $[ORDR.NumAtCard]
SELECT $[$14.0.0]
but it's hasn't worked. It returned the following error in the pick list screen
Internal error (3006) occurred.
Thank you. -
SAP MDM 7.1 - Stemmer and Pick list
Hi,
Please elaborate or provide details on below (Specific to MDM7.1)
1. Keyword Search = Stemmer
2. 'Pick List' in Look up table property.
Regards,
VinayHi ,
By making keyword property field stemmer,you allow mdm to create the field keyword searchable.
When you set keyword property to stemmer ,it will add the contents into keyword search index .
basically mdm uses stemming engine to search the keywords using the index concept.
So if you search word like ant it will give result that contain ant ,anttena as the stem of both words are same.
When you set up field to be lookup flat then there is two option available in value selection property
1. picklist : in this whatever values available in the falt table it comes in a drop down and you can directly select the value.
2.mini search : in this you have to search the value on the disolay field og lookup flat then if if that saerch matches any record iot will show you to select any one.Like for ex if you search for vendor then all the value that conatin vendor will come and you can select one of them for main table field
Thanks,
sudhanshu
Edited by: Sudhanshu Agarwal on Oct 27, 2010 11:42 PM -
Picking List Output in ECC 6.0
Hello SAP Gurus,
Can anybody tell me how to get the output for Picking List in ECC 6.0.Please do let me know the steps to be followed in configuration for the same for output generation.
Thanks & Regards,
SunilHi,
The Pick List is printed from the Pick and Pack Manager.
goto Inventory > Pick and Pack > Pick List and then Open the Pick List and Print from there.
If this is what you are doing then if your FMS are set to Auto Refresh then as soon as your Pull the Pick list the FMS should fire and the mode should change to UPDATE.
Alternatively,
you can do this by customizing a report with your needed fields with ABAP person.
regards,
Siddharth. -
Hi
Only stock items get selected on to the pick slip as per the system behaviour
Is there any way we can set up non stock items to show on the pick list.
One of our customer has few non stock items which they want to show on the pick list at the time when the SO is created. They buy these items at times if a customer requires it and sell with other stock items.
Thank you
Regards
ApsaraAre you using Pick and Pack Manager / Sales Order itself as picklist.
As you would understand, only inventory items are recognized by the system as requiring to be picked. One of the ways could be to add a Text type row and enter the item number there.
Suda
Maybe you are looking for
-
I have an itunes gift card balance on my account however I would rather use my credit card to pay for my music downloads. I cannot find an option to choose credit card over my balance, it just automatically uses my gift card balance instead. Is there
-
How to intergrate customer short profile into employee profile page MSS WDA
Hi I have created a z version of SAP_MSS_General_profile and amended some the fieids contained within. I can't see where this is referred to in the employee profile application in order to get it to refer to the non-standard version. Can anyone help?
-
Download/Upload Multi-valued property using Code
We are developing program that will download document properties from one Portal Server and upload document properties to another server. Can someone provide a code snipplet on how to deal with multi-valued property for this download/upload requireme
-
Greetings all I have a challange!!!!!! I have created a crosstab report showing a list of wards acroos the columns and a list of days for each row. The data is the number of patients on each by day. The customer would wish to click on the number of
-
My wife and I use one laptop that has her her itunes library on it. I do not have a separate library. I would like to update my iphone to the newest version. When I connect to the laptop, it warns that I must backup my songs or risk losing them.