Smartforms for picking list

Hi,
Someone knows smartforms and its program for picking list?.
I don't want to use sapscript SD_PICK_COLL and its program RVADSK01.
Thanks very much.
Matteo Vernile.

hi,
go through this code.
Program Description:                                     *
A packing list is printed for each outbound delivery.    *
Before the delivery is made to a customer the goods are  *
packed in a box or any other container and to have a     *
list of products put in the package packing list is      *
required. This packing list will be printed upon pick    *
confirmation or at a time the delivery note is created.  *
REPORT  z_sd_rep_000002 MESSAGE-ID zdevmsg.
********************TABLES USED***************************************
TABLES:   likp,       "SD Document: Delivery Header Data
          lips,       "SD document: Delivery: Item data
          vbak,       "Sales Document: Header Data
          vbpa,       "Sales Document: Partner
          vbuk,       "Sales Document: Header Status and Admin Data
          vttp,       "Shipment Item
          vttk,       "Shipment Header,
          adrc,       "Addresses (Business Address Services)
          tvst,       "Organizational Unit: Shipping Points
          vbfa,       "Sales Document Flow
          kna1,       "General Data in Customer Master
          vepo,       "Packing: Handling Unit Item (Contents)
          vekp.       "Handling Unit - Header Table
INCLUDE rvadtabl.
********************WORK AREA*****************************************
DATA    : wa_zpacklist TYPE  zpacklist,  "structure to hold all the data
                                         "that has to be passed to the
                                         "smart form
          wa_item TYPE LINE OF zitempack."workarea of main item struct
DATA    : wa_item_lips TYPE LINE OF zitempack."wrkarea for data selected
"from LIPS table
********************INTERNAL TABLE************************************
DATA    : i_item_lips TYPE zitempack,       "Internal table for data
                                            "selected from LIPS table
          i_item TYPE   zitempack.          "main internal table for
"items data.
*****************************CONSTANTS********************************
CONSTANTS : c_posnn(1)        TYPE c VALUE 'J',
YATHAM6 Insert Begin
            c_vbtyp_v(1)      type c VALUE 'C',
YATHAM6 Insert End
            c_parvw_stp       TYPE vbpa-parvw VALUE 'AG',
            c_parvw_shp       TYPE vbpa-parvw VALUE 'WE',
            c_formname        TYPE tdsfname VALUE 'Z_PACKINGLIST',
            c_zdevmsg         TYPE SY-MSGID value 'ZDEVMSG',
            c_e               TYPE SY-MSGTY VALUE 'E',
            c_000             TYPE SY-MSGNO VALUE '000',
            c_X(1)            TYPE c VALUE 'X',
            c_fully_picked(1) TYPE c VALUE 'C'.
***************************GLOBAL VARIABLE****************************
DATA    : v_objnm         LIKE   thead-tdname,
          v_tknum_tmp     LIKE   vttp-tknum,
          v_formname      TYPE   rs38l_fnam,
          v_venum         TYPE vekp-venum,
          v_screen,        "Output on printer or screen
          v_picked(1).
************************MAIN PROGRAM ***********************************
FORM entry USING return_code us_screen.
  DATA: v_retcode TYPE sy-subrc.
  CLEAR v_retcode.
Clear any previous data.
  CLEAR wa_zpacklist.
  v_screen = us_screen.
Check whether the Delivery number is already been picked.If it is
picked the set the print parameters
  PERFORM processing USING us_screen
                     CHANGING v_retcode.
  IF v_retcode NE 0.
    return_code = 1.
  ELSE.
    return_code = 0.
  ENDIF.
ENDFORM.                    "ENTRY
*&      Form  PROCESSING
Check whether the Delivery number is already been picked.If it is
picked the set the print parameters
FORM processing  USING    us_screen
                 CHANGING v_retcode.
  DATA: v_fm_name            TYPE rs38l_fnam.
  DATA: v_control_param      TYPE ssfctrlop.
  DATA: v_composer_param     TYPE ssfcompop.
  DATA: v_recipient          TYPE swotobjid.
  DATA: v_sender             TYPE swotobjid.
  DATA: v_formname           TYPE tdsfname .
get SmartForm from customizing table TNAPR
  v_formname = tnapr-sform.
Check whether the delivery number has been picked.If it is picked
select the relevant data for that delivery number
  PERFORM get_data CHANGING v_retcode.
  CHECK v_retcode EQ 0.
Set the print parameters for Smartform
  PERFORM set_print_param CHANGING v_control_param
                                   v_composer_param
                                   v_recipient
                                   v_sender
                                   v_retcode.
Check whether the Smart form exists.
  CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
  EXPORTING
    formname                 = c_formname
    VARIANT                  = ' '
    DIRECT_CALL              = ' '
IMPORTING
   fm_name                  = v_formname
  EXCEPTIONS
    NO_FORM                  = 1
    NO_FUNCTION_MODULE       = 2
    OTHERS                   = 3
  IF sy-subrc <> 0.
    v_retcode = sy-subrc.
    PERFORM protocol_update.
  ENDIF.
Check the structure wa_zpacklist for data.
  IF NOT wa_zpacklist IS INITIAL.
    CALL FUNCTION v_formname
      EXPORTING
        archive_index      = toa_dara
        archive_parameters = arc_params
        control_parameters = v_control_param
        mail_recipient     = v_recipient
        mail_sender        = v_sender
        output_options     = v_composer_param
        user_settings      = ' '
        wa_zpacklist               = wa_zpacklist
      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.
        error handling
      v_retcode = sy-subrc.
      PERFORM protocol_update.
    ENDIF.
  ELSE.
    IF v_screen = space.
      CALL FUNCTION 'NAST_PROTOCOL_INIT_AND_LOAD'
        EXPORTING
          cps_nast = nast.
      CALL FUNCTION 'NAST_PROTOCOL_UPDATE'
        EXPORTING
          msg_arbgb = c_ZDEVMSG
          msg_nr    = c_000
          msg_ty    = c_E
          msg_v1    = syst-msgv1
          msg_v2    = syst-msgv2
          msg_v3    = syst-msgv3
          msg_v4    = syst-msgv4
        EXCEPTIONS
          OTHERS    = 1.
    ELSE.
      MESSAGE e000 WITH 'No Data Exists, to Display Output'(002).
    ENDIF.                    " IF v_screen = space.
  ENDIF.                  " if not wa_zpacklist[] is initial
ENDFORM.                    " PROCESSING
*&      Form  get_data
Check whether the delivery number has been picked.If it is picked
select the relevant data for that delivery number
FORM get_data  CHANGING v_retcode.
This is the Input obtained from the NAST entry, Delivery Number
  wa_zpacklist-vbeln = nast-objky.
  CLEAR v_picked.
Check if the Delivery has Not been Picked, if not then Do Not Display
the Layout and display an Error Message
  CLEAR vbuk.
  SELECT SINGLE kostk
    FROM vbuk
    INTO vbuk-kostk
    WHERE vbeln EQ wa_zpacklist-vbeln.
The Picking should Not be Processed, Else Display a Msg
  IF vbuk-kostk NE c_fully_picked AND vbuk-kostk NE space.
    v_picked = c_X.
    v_retcode = 1.
    IF v_screen = space.
      CALL FUNCTION 'NAST_PROTOCOL_INIT_AND_LOAD'
        EXPORTING
          cps_nast = nast.
      CALL FUNCTION 'NAST_PROTOCOL_UPDATE'
        EXPORTING
          msg_arbgb = c_ZDEVMSG
          msg_nr    = c_000
          msg_ty    = c_E
          msg_v1    = syst-msgv1
          msg_v2    = syst-msgv2
          msg_v3    = syst-msgv3
          msg_v4    = syst-msgv4
        EXCEPTIONS
          OTHERS    = 1.
    ELSE.
      MESSAGE e000 WITH
                'Delivery has not been Picked-Please Check'(001).
    ENDIF.
  ENDIF.
  CHECK v_retcode = 0.
get all the header related data from LIKP,VBAK,VBFA,VTTP,VTTK
  PERFORM get_header_data.
get the address numbers for shipping point ,ship-to-party and
sold-to-party from VBFA,TVST tables
  PERFORM get_addr_no.
get all the item details from VBAP ,LIPS
  PERFORM get_item_data.
ENDFORM.                    " get_data
*&      Form  get_header_data
Get all the header related data from LIKP,VBAK,VBFA,VTTP,VTTK
FORM get_header_data.
select the header data from LIKP based on Delivery number.
select the following fields and put it into workarea wa_zpacklist.
  SELECT SINGLE vbeln          "Delivery number
                kunnr          "Sold to party
                kunag          "Shipt to party
                inco1          "Inco term
                inco2          "Inco term 2
                btgew          "Total Weight
                gewei          "Net weight
                anzpk          "Total noumber of packages in delivery
                vkorg          "Sales Organization
                vstel          "Shipping Point/Receiving Point
                bldat          "Date on which the Docu. was created
           FROM likp
           INTO CORRESPONDING FIELDS OF wa_zpacklist
          WHERE vbeln = wa_zpacklist-vbeln.
to get Purchase order number (BSTNK),
      Sales order number (VBELV),
      Contract number (VBELN_GRP),
      Customer order date first get the Sales document from VBFA
using Delivery number (LIKP-VBELN) and VBTYP_N in the where clause.
YATHAM6 Del Begin - D47K910351 05/12/2004
SELECT SINGLE  vbelv          "Sales Document
          INTO  wa_zpacklist-vbelv
          FROM  vbfa
          WHERE vbeln   = wa_zpacklist-vbeln
          AND   vbtyp_n = c_posnn
YATHAM6 Insert Begin - 04/15/2004
Preceding Document category only Order need to be selected
Without this it is selecting Quote and/or Inquiry because of
Select single (Which would select the first entry)
          AND   vbtyp_v = c_vbtyp_v.
YATHAM6 Insert End - 04/15/2004
YATHAM6 Del End - D47K910351 05/12/2004
YATHAM6 Insert Begin - D47K910351 05/12/2004
When a Sales order is created with reference to another sales order
two precding document categorys will be available for a delivery.
Example: Order with subsequent delivery free of charge
Need to get latest preceding document. This change was made to pull
correct preceding document which will be on delivery line item.
All delivery items will have the same preceding document number.
    select single vgbel from lips into wa_zpacklist-vbelv
          where vbeln = wa_zpacklist-vbeln.
YATHAM6 Insert End   - D47K910351 05/12/2004
  SELECT SINGLE bstnk           "Customer purchase order number
                vbeln_grp       "Master Contract NUmber
                bstdk           "Customer Order date
         INTO  (wa_zpacklist-bstnk,
                 wa_zpacklist-vbeln_grp,
                 wa_zpacklist-bstdk)
         FROM  vbak
         WHERE vbeln = wa_zpacklist-vbelv.
select shipment number from VTTP table using wa_zpaclist-vbeln in the
where clause.
  SELECT tknum                  "Shipment Number
         FROM   vttp
         UP TO 1 ROWS
         INTO   wa_zpacklist-tknum_tmp
         WHERE  vbeln = wa_zpacklist-vbeln.
  ENDSELECT.
for this value of wa_zpacklist-tknum_tmp select
External identification 2
Shipping type
Number of forwarding agent
from VTTK
  SELECT SINGLE exti2          "External identification 2
                vsart          "Shipping type
                tdlnr          "Number of forwarding agent
         INTO   (wa_zpacklist-exti2,
                 wa_zpacklist-vsart,
                 wa_zpacklist-tdlnr)
         FROM   vttk
         WHERE  tknum = wa_zpacklist-tknum_tmp.
get the packing date from VEkP table for which Internal Handling
Unit Number(VENUM) is required from VEPO table.
get the value from VEPO table for the delivery number.
  SELECT venum
         UP TO 1 ROWS
         FROM vepo
         INTO v_venum
         WHERE vbeln = wa_zpacklist-vbeln.
    EXIT.
  ENDSELECT.
  CHECK sy-subrc = 0.
  SELECT SINGLE erdat
         FROM   vekp
         INTO   wa_zpacklist-erdat
         WHERE  venum = v_venum.
ENDFORM.                    " get_header
*&      Form  get_item
Get all the item details from VBAP ,LIPS
FORM get_item_data.
refresh the internal tables of item data.
data: v_tabix like sy-tabix.   "YATHAM6 Insert 03/31/2004
  REFRESH : i_item,
            i_item_lips.
get the item details from VBAP table based on the sales document
number(VBELV) and store the data in i_item
  SELECT   posnr             "Sales Document Item
           posex             "Item Number of the Underlying Purchase
                             "Order
           kwmeng            "Quantity Ordered
           kdmat             "Customer Item Number
    INTO   CORRESPONDING FIELDS OF
    TABLE  i_item
    FROM   vbap
    WHERE  vbeln EQ wa_zpacklist-vbelv.
get the item details from LIPS based on Delivery number and
ZZCATNO(Catalog numer)from mara using an inner join between LIPS and
MARA using matnr as key
*Begin of GONAGUNTLA2 - @0001 02/11/2004 D47K906487
SELECT   a~vbeln          "Delivery Number
          a~vtweg          "Distribution Channel
          a~posnr          "Delivery item
          a~lfimg          "Actual quantity delivered (in sales units)
          a~matnr          "Material Number
          b~zzcatno        "Catlog Number for each material
          FROM lips AS a
          INNER JOIN
          mara AS b
     ON   amatnr = bmatnr
    INTO  CORRESPONDING FIELDS OF
   TABLE  i_item_lips
   WHERE  a~vbeln = wa_zpacklist-vbeln.
  SELECT     a~vbeln          "Delivery Number
             a~vtweg          "Distribution Channel
             a~posnr          "Delivery item
             a~pstyv          "Delivery item category
             a~lfimg
             "Actual quantity delivered (in sales units)
             a~matnr          "Material Number
             a~uepos
             "Higher-level item in bill of material structures
             a~vgpos          "Sales order line item
             b~zzcatno        "Catlog Number for each material
             FROM lips AS a
             INNER JOIN
             mara AS b
        ON   amatnr = bmatnr
       INTO  CORRESPONDING FIELDS OF
      TABLE  i_item_lips
      WHERE  a~vbeln = wa_zpacklist-vbeln.
*End of GONAGUNTLA2 - @0001 02/11/2004 D47K906487
  clear the workareas
  CLEAR : wa_item,
          wa_item_lips.
loop at the main internal table which contains the item data.
so that the data in the internal table i_item_lips is passed in the
i_item table
  LOOP AT i_item INTO wa_item.
    v_tabix = sy-tabix.   "YATHAM6 Insert 03/31/2004
read the internal table i_item_lips for key Item Number(POSNR)
because the only link between the LIPS table and VBAP table is
(POSNR) for the same delivery number.
*Begin of GONAGUNTLA2 - @0001 02/12/2004
   READ TABLE i_item_lips
              INTO wa_item_lips
              WITH KEY posnr = wa_item-posnr.
    READ TABLE i_item_lips
               INTO wa_item_lips
               WITH KEY vgpos = wa_item-posnr.
*End of GONAGUNTLA2 - @0001 02/12/2004
  check whether the same POSNR value is there in the I_item_lips table
    IF sy-subrc = 0.
*Begin of GONAGUNTLA2 - @0001 02/12/2004
      perform get_previous_del_qty using wa_zpacklist-vbelv
                                         wa_item_lips-vgpos
                                         wa_item_lips-vbeln
                                         wa_item_lips-posnr
                                         wa_item-kwmeng.
      move wa_item-kwmeng to wa_item_lips-kwmeng.
*End of GONAGUNTLA2 - @0001 02/12/2004
  to find out the Back Orders subtract Ordered Qty (KWMENG)
  with Actual Qty (LFIMG)
      wa_item_lips-zbkord = wa_item-kwmeng - wa_item_lips-lfimg.
Begin of Modifications - YATHAM6 12/15/2003
  if wa_item-posex is not blank the repace wa_item-posnr with it.If *
  it is not blank then don't do anything.
     IF NOT wa_item-posex IS INITIAL.
       MOVE wa_item-posex TO wa_item_lips-posnr .
     ENDIF.                  "if not wa_item-posex is initial.
      If wa_item-posex is initial.
Begin of GONAGUNTLA2 - @0001 02/12/2004
      move wa_item-posnr to wa_item_lips-posex.
        move wa_item_lips-posnr to wa_item_lips-posex.
*End of GONAGUNTLA2  - @0001 02/12/2004
      else.
        move wa_item-posex to wa_item_lips-posex.
      endif.
End of Modifications - YATHAM6 12/15/2003
  modify the internal table i_item by transporting VBELN LFIMG ZCALC.
*Begin of GONAGUNTLA2 - @0001 02/11/2004 D47K906487
     MODIFY i_item FROM wa_item_lips
                   TRANSPORTING vbeln        "Delivery Number
                                posnr        "Delivery item
                                posex        "   YATHAM6 Insert
*lfimg        "Actual Quantity Delivered
                                zbkord       "Back Order
                                zzcatno      "Catlog Number
                                matnr        "Material Number
                                vtweg
                   WHERE posnr = wa_item-posnr.
   MODIFY i_item FROM wa_item_lips         "YATHAM6 Del 03/31/2004
      MODIFY i_item FROM wa_item_lips index v_tabix
                          TRANSPORTING vbeln        "Delivery Number
                                       posnr        "Delivery item
                                       posex        "   YATHAM6 Insert
                                       KWMENG
                                       "   gonaguntla2 Insert
                                       lfimg
                                       "Actual Quantity Delivered
                                       zbkord       "Back Order
                                       zzcatno      "Catlog Number
                                       matnr        "Material Number
                                       vtweg
                                       uepos
                                       pstyv.
*Table i_item should be updated with the corresponding entry not with
*the
item number.
                       WHERE posnr = wa_item-posnr.   "YATHAM6 Del
    else.
YATHAM6 Mod Begin - 04/22/2004
Delete the Current row instead of item. Because the Delivery item
sequence could be different than that of the Sales Order item #.
    delete i_item where posnr = wa_item-posnr.
      delete i_item index v_tabix.
YATHAM6 Mod End - 04/22/2004
*End of GONAGUNTLA2 - @0001 02/11/2004 D47K906487
    ENDIF.                  " if sy-subrc = 0.
  ENDLOOP.                  "loop at i_item
now once the i_item internal table is full
check it.
  IF NOT i_item[] IS INITIAL.
    sort i_item[] by vbeln descending posex.   "YATHAM6 Insert
move the data from i_item into the structure wa_zpacklist.
    wa_zpacklist-zitempack_tb[] = i_item[].
  ENDIF.                    "if not i_item[] is initial.
ENDFORM.                    " get_item
*&      Form  get_addr
      text
Get the address numbers for shipping point ,ship-to-party and
sold-to-party from VBFA,TVST tables
FORM get_addr_no .
To find out the addresses of sold-to-party, goto table VBPA select
the address number ADRNR
  SELECT SINGLE adrnr          "Address Number
            INTO wa_zpacklist-adrnrstp
            FROM vbpa
YATHAM6 Mod Begin - 04/15/2004
Get the address numbers for the Delivery instead of Sales order
         WHERE vbeln =  wa_zpacklist-vbelv
           WHERE vbeln =  wa_zpacklist-vbeln
YATHAM6 Mod End  - 04/15/2004
             AND parvw = c_parvw_stp.
To find out the addresses of ship-to-party, goto table VBPA select
the address number ADRNR
  SELECT SINGLE adrnr         "Address Number
            INTO wa_zpacklist-adrnrshp
            FROM vbpa
YATHAM6 Mod Begin - 04/15/2004
Get the address numbers for the Delivery instead of Sales order
         WHERE vbeln =  wa_zpacklist-vbelv
           WHERE vbeln =  wa_zpacklist-vbeln
YATHAM6 Mod End  - 04/15/2004
             AND parvw = c_parvw_shp.
To select the addresses for Shipping point find out the address *
number from TVST table .
  SELECT SINGLE adrnr         "Address Number
           INTO wa_zpacklist-adrnr
           FROM tvst
          WHERE vstel = wa_zpacklist-vstel.
ENDFORM.                    " get_addr
*&      Form  set_print_param
Set the print paramters for the smartform
FORM set_print_param  CHANGING v_control_param  TYPE ssfctrlop
                              v_composer_param TYPE ssfcompop
                              v_recipient      TYPE  swotobjid
                              v_sender         TYPE  swotobjid
                              v_retcode        TYPE sy-subrc.
  DATA: v_itcpo     TYPE itcpo.
  DATA: v_repid     TYPE sy-repid.
  DATA: v_device    TYPE tddevice.
  v_repid = sy-repid.
  CALL FUNCTION 'WFMC_PREPARE_SMART_FORM'
    EXPORTING
      pi_nast       = nast
      pi_repid      = v_repid
    IMPORTING
      pe_returncode = v_retcode
      pe_itcpo      = v_itcpo
      pe_device     = v_device
      pe_recipient  = v_recipient
      pe_sender     = v_sender.
  IF v_retcode = 0.
    MOVE-CORRESPONDING v_itcpo TO v_composer_param.
    v_control_param-device      = v_device.
    v_control_param-no_dialog   = c_X.
    v_control_param-preview     = v_screen.
    v_control_param-getotf      = v_itcpo-tdgetotf.
    v_control_param-langu       = nast-spras.
  ENDIF.
ENDFORM.                    " set_print_param
*&      Form  protocol_update
      text
Error Handling
FORM protocol_update .
  CHECK v_screen = 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  get_previous_del_qty
      text
-->  p1        text
<--  p2        text
FORM get_previous_del_qty using f_so
                                f_so_item
                                f_del
                                f_del_item
                                f_so_qty.
  data: begin of i_vbfa_tab occurs 0,
          vbeln like vbfa-vbeln,
          posnn like vbfa-posnn,
        end of i_vbfa_tab.
  data: fv_lfimg like lips-lfimg.
  select vbeln posnn into table i_vbfa_tab from vbfa
                     where vbelv   eq f_so
                       and posnv   eq f_so_item
                       and vbtyp_n eq 'J'.
  loop at i_vbfa_tab.
    if i_vbfa_tab-vbeln ne f_del.
      clear fv_lfimg.
      select single lfimg into fv_lfimg
                          from lips
                          where vbeln eq i_vbfa_tab-vbeln
                            and posnr eq i_vbfa_tab-posnn.
      f_so_qty = f_so_qty - fv_lfimg.
    endif.
  endloop.
ENDFORM.                    " get_previous_del_qty

Similar Messages

  • Problem onStandard Smartform for Picking list

    Hi Experts..
    I want to know is there any standard SMARTFORM for PICKING LIST?
    and also let me know PrintProgram name also.....

    Hi,
    Check the below link.. It contains a document.. Go trough it.
    Point 3.1.4
    [http://help.sap.com/bp_bblibrary/470/documentation/J16_BB_ConfigGuide_EN_US.doc]
    Edited by: Lokesh Tarey on Jul 15, 2010 2:03 PM

  • 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

  • Create Smart form for Pick list

    Hi,
    How do i start for creating a smart form for pick list.
    Regards
    Ajay

    hi
    refer this
    http://www.****************/Tutorials/Smartforms/PO/page1.htm
    Edited by: Swetha on Jul 10, 2008 6:15 PM

  • Printer for Pick List

    Hi,
    Just want to know if there's a way I can set a certain printer for Pick List for a certain Distribution Channel.
    if useful.
        points will re rewarded.
    else.
      do nothing
    endif.
    Thanks.

    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.
    Also, u can try this.
    You can print the pick list from the Sales Order by selecting Pick List as your default report. Everything works fine from there. I don't have to do anything else then the sales order to get the Pick List right. I only have to select which file I want to print.
    hope this works 4 u.
    cheers,
    Hema.

  • Output for picking list

    hai every body
    iam trying to configure the output type for picking list,i have done the condition technique and also maintained condition record.i have assigned that output type to the shipping point also but when i select the output  for picking from delivery it is showing in display mode,the system is not letting me to assign the output type in that screen.
    what is the problem i a have done pl tell the procedure if any body knows.
    thanks in adv,
    rajesh

    Hi Rajesh
    From Release 4.5A, the system does no longer display the actions for SD picking in the implementation guide.
    If you want to use the picking list according to the "old" procedure,  you can maintain the list as follows:
    o  Carry out Transaction V/38 to maintain the output types.
    o  Carry out Transaction OVLT to assign the picking list types to the
         shipping points.
    o  Carry out Transaction V/53 to assign the picking lists to own
         forms and programs.
    Picking Output Type is determined in transaction v/23. Though You can have one per shipping point unfortunately. If more flexibility is needed, one can use delivery output or lean WM and transfer order output.
    Ensure that "Multiple issuing" check box in v/34 is switched off for the corresponding output type.
    Reward if useful to u

  • Configuring printer for pick list

    Hi All,
    please let me know how and where do we configure the printer for a pick list.
    thanks in advance for your help.

    Hi Friend,
    The printer configration will be done not only for Pick list, it will be for PACK LIST, invoices, ORDER CONFIRMATIONS, DELIVERY NOTE,
    For any activity we need to configure the printer in Spool Administration via the transaction code
    SPAD.
    Please revert back if u need any further clarification,
    santosh

  • PM script for pick list

    Hi all,
    I need to change the standard Pick list script in PM module.
    Can any one shed some light on this?
    I know how to change form names to zform and work on it,but in PM I heard I have to go OID1? so do I need to create new record in OID1?
    Pls let me know id that the way to work in PM?
    Will appreciate ur help
    Thanks
    Haritha

    Hi
    Goto Tcode
    OID1
    enter Application area as Maintenance Orders (0)
    you will see all the PM scripts
    select the Pick List-2040
    you can see the FORM and PROGRAM
    you copy the Form PM_COMMON into ZFORM and do all changes required and keep the same ZFORM here and see the output
    No need of going to NACE tcode
    NACE is used mainly for SD and MM scripts/Smartforms.
    Reward points for useful Answers
    Regards
    Anji

  • EK00 - Output for picking list

    Hi, can anyone advise where we can assign picking list output 'EK00' to an output device?  My output is not proposing in the delivery order even though i've setup against the shipping point.  I am suspecting it's bcos of output device.
    Thanks
    Peter

    Hi,
    1. First assign your Output type EK00 to the shipping point(Enterprise Structure - Definition of Shipping point), also maintain the time and medium.
    2. Use TCode V/38, to maintain the condition type EK00, maintain the time,print parameters and transmission medium.
    Also assign the processing routines Prog: RVADEK1,Form Routine: ENTRY, Form:SD_PICK_SINGLE
    3. Mainatain the print parameters for shipping pt using TCOde VL01SHP.
    Regards
    Mahesh

  • Output determination for picking list

    Dear friends,
    Where to assign procedure of o/p determination of Picking list.Give me path. Which procedure shall i assign.Pls give me immidiate solution.

    Use transaction code NACE for using the o/p determination
    Then select V2 for shipping as you are creating o/p for delivery
    Create table, maintain access sequence, maintain output type and assign o/p to procedure. Then create the master record in VV21. In o/p you have std functionality to use EDI, email, Print, Fax, ALE
    if you are having problem using NACE transaction, use this flow:
    SPRO>Logistics Execution>Shipping>Basic Functions>Output Control>Outpur determination>maintain o/p determination for outbound deliveries.
    reward points if helpful
    Message was edited by:
            Comes Naturally

  • Z Out Put Type For Picking List In VL06

    Can I assign Z Out Put Type of picking list in VL06 . If yes ,  I request you to mention where and how I can assign  please .
    Thanks In Advance

    Dear Jaya,
    The picking list Z output type you can get in VL06 transaction through assigning the same output type in your shipping point detail screen.
    IMG path is SPRO-->Enterprise Structure -->Definition -->Logistics Execution -->Define, copy, delete, check shipping point. Here you select your shipping point then go in to the detail screen here you can assign your Z picking list output type under Print Picking list tab.
    Before that you need to do these configuration settings.
    1.You need to define the Z Output type
    SPRO>IMG>Logistics execution>Shipping>Basic shipping functions-->Output Control -->Output Determination -->Maintain Output Determination for Outbound Deliveries -->Maintain Condition Tables -->
    Maintain Output Types.
    2. Using TCode V/38, you have to maintain the Z condition type by clicking on new entries, maintained the time,print parameters and transmission medium.
    You need to assign the processing routines Prog: ,Form Routine:, and Form:
    3. You need to maintain the print parameters based on the shipping point for your Z output type.
    through transaction VP01SHP.
    I hope this will help you,
    Regards,
    Murali.

  • BAPI/Userexit for pick list - t code - CO27

    Hi All,
    Please some one help me in finding the BAPI / USEREXIT used in T code - CO27  (picking list) .
    I am trying to find out but could not succeed.
    Thanks,
    Vengal Rao.

    Hi.,
    Check this article ., [How to find BADI/User Exit for SAP transaction|http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/0041d4e6-1e43-2e10-0db4-9386abe98fe6?quicklink=index&overridelayout=true]
    also this wiki., http://wiki.sdn.sap.com/wiki/display/ABAP/TofindoutUserExit%27sandBADI%27sforAnyTransactioncode
    hope this helps u.,
    Thanks & Regards
    Kiran

  • Screen Shot for pick list

    Hi All,
      Can any one give me a sample screen shot as how a "Pick List" looks in sap and is it trig erred automatically when "Loading Start" button is checked in txn:vt03n.
    Rgds,
    Nagendra Prasad.J

    Hi
    http://www.gpspassion.com/upload/picklist.JPG
    http://www.gpspassion.com/upload/pick_2.jpg
    tcode 'Lt42' is for  collective processing, then release the pick list (F5) and lt25n will help you confirm it.
    HTH
    Shovon

  • Printing problem for picking list

    Hi friends,
    Whenever we print the picking list of material with batch number. the printing job will bring a extra page with basic form information . it's kind of wasting the paper since the extra page doen not contain any specific picking informations. This issue only happen to picking list with batch number applied material . The extra page won't be printed out once the material is not subjected to batch management.The form style should be script form.
    Please kindly advise if you have any suggestions.
    Thanks,
    LG

    Hi,
    Assuming printing job is batch job. Normally batch job executes a program (you assign program to the batch job when you configure it) while you create batch jobwhile it is running. If you want the system to check the particular information (take the information if the so and so prerequisits matches if not ignore kind of) during the program execution you can do it with the hlep of a deverloper.
    If you want to avoid unnecessary basic ifnormation it can very well be done with the layout changes in SAP script form and the program if necessary.  Make sure you dont need those information as some times it is like a legal information like we see in the company signatures which seems like basic information.

  • Table for pick list use only??

    Hi,
    my requirement is to use a table purely for the purposes of populating a drop list list for a prompt in a dashboard prompt - is this possible without setting the table up in the repository - as I do not want anyone to actually run reports against my data source??
    thanks,
    Robert.

    Robert,
    As mentioned above, the only place to bypass the RPD is with direct database requests. You cant use these to populate the dashboard prompt.
    The easiest way would be to expose the table in a new BMM, custom Presentation Cat with the same Table_Name.Column_Name as the other Presentation Cat fields you want the prompt to effect and go from there.
    AFAIK thats the only way.
    Cheers
    Alastair

Maybe you are looking for

  • Airport express won't extend network via ethernet but shows GREEN (HELP!!)

    I have the following routers setup up the same network and are working. 10.0.1.1 Airport Extreme (connected to hardline from IP) 10.0.1.2 Time Capsule 1 (extending network and providing internet connection to computer via ethernet) 10.0.1.3 Time Caps

  • Can you use a 1/4 headphone jack on a mac book pro?

    Hi, I have a pair of Audio Technica ATHM50RD Pro DJ Headphones. I was using them today with my 2010 Mac Book pro and the normal sized headphone jack broke off in my headphone jack port thingy. I have consequently done a lot of research and had decide

  • Database in Gigabytes - Optimized Replication - Assistance please

    Hi, I ran into a problem and have to find a solution. We have two Oracle database servers. say X and Y. Both are on separate machines. Y is a subset of X. Periodically, Y need to update itself with the changes/updation of X. Estimate of amount of dat

  • Mouse cannot open file with double click

    Hi all, Presently using latest iMac. my files or folders on the desktop does not open with 2 left clicks. But it does if from the dock. However It will open only when I right click and mouse over to 'open' from the pull down menu. What setting did i

  • DLT 4000 not recognised in Encore CS3

    Hi there, Currently attempting to build a nice quad core system, running Vista. The one issue I seem to have is that the DLT drive (Quantum 4000) is not found in Encore. In Device Manager, it comes up all okay..... I am now pulling my hair out for a