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

  • Smarform for pick list

    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.
    Anna

    Here 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.B

    Dear 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,
    Phillip

    Hello 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,
    MV

    Hi,
    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 AM

    shafi_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,
    Vinay

    Hi ,
    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,
    Sunil

    Hi,
    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.

  • Non stock item on pick list

    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
    Apsara

    Are 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