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

Similar Messages

  • Smart form for cutting list---Urgent

    Hi Experts,
    I have to create a smart form for cutting list in PP module.
    Selection criteria are:
    1.) select all orders(AFKO-AUFNR) wiht AFVU-USR00 = 'CUT' where AFVU-AUFPL = AFKO-AUFPL
    2.) Group according to material no.(AFKO-PLNBEZ)
    Form fields are as follows:
    Name : MARC-MATGR
    Cut & Process date: AFVV-FSAVD where AFVV-AUFPL=AFKO0AUFPL
    Ref Packing date:   AFVU-USR00= ASSY_GAL of th superior order(AFKO-MAUFNR,where AFVU-                             AUFPL   = AFKO-AUFPL)
    Order :  AFKO-AUFNR
    Sales Order: AFPO-KDAUF of superior order(AFKO-MAUFNR,where AFVU-AUFPL   = AFKO-AUFPL)
    Item Number :
    Qty: AFVV-MGVRG where AFVU-USR00='CUT' & AFVU--AUFPL = AFKO-AUFPL
    & co many other fields form AFKO table.
    I am bit confused what will be the fields & tabels i have to declare in Form interface & Global parameters.
    What will be the internal table for the table which display data.
    In the main page i have to show 10 colums i dont no how to define table for those 10 columns
    As per the requirement can anywone please tell me in detail to solve these problems. like which r te tables i have to use in interface parameters & which wil be in global paramenters.
    Which itab i will use to create the table in main window
    & how i can declare 10 columns in that table.
    Regards,
    Nik

    hi nikil.
            I use to follow this procedure.
    1) Based on the select criteria.fetch values in to differnet itab's from differnet tables.
    2) then try to put the selected rows based on condition into a single internal table.
    3)u can send that final internal table from program and u have to use that internal table in form interrface.
    4)design the smartforms and call the fields accordingly from the final inetrnal table .
    5)u should be good in using select query ,read table statement etc.
    check this with other and take a decision.some of them use to write codes then and there before using the fields using progarm lines.
    but i am comfortable in my method.
    mani

  • Smart Form for invoice list?

    Hello,
    Has anyone experience with Smart Forms based on a invoice list (transaction VF23). I have been testing with the Smart Form for a single invoice (LB_BIL_INVOICE and program RLB_INVOICE) but get the impression that this cannot be used for the invoice list. My environment is a SAP R/3 Enterprise.
    Kind regards,
    Olaf Pohlmann

    HI,
    TRY F_INTITAR_SF.
    Regards,
    Gayathri

  • Creation of Smart Forms for PDF

    Hi All,
    I am new to SFP. So, please tell me how to create Smart Forms for PDF.
    I already have an SAP standard form of Customer Invoice in this format (SFP) and I need to change the layout and add some additional fields in it as well.
    Please guide me through the process. Earliest reponse will be highly appreciated.
    Regards,
    Shabbar

    Hi,
    I take that you meant PDF Forms in SAP.
    Refer the following help links.
    http://help.sap.com/saphelp_nw04s/helpdata/en/dc/f1783fe3263042e10000000a114084/content.htm
    This PDF link (Has got many Pdf files)
    https://www.sdn.sap.com/irj/sdn/interactiveforms?rid=/webcontent/uuid/d1088b7e-0c01-0010-c78e-984c0537e3ec [original link is broken]
    Also check this Tech-ed 06 session at Amsterdam.
    http://www.sapteched.com/emea/edu_sessions/session.htm?sid=317
    Check this download from SDN.
    https://www.sdn.sap.com/irj/sdn/downloaditem?rid=/library/uuid/2dd3dbcd-0401-0010-55b8-b10808ff688e
    Is this you are looking for?
    Feel free to revert back.
    --Ragu

  • *configure the Picking list(PL) output type,a smart form for PL.

    Hello SIR,
    I want to configure the Picking list(PL) output type,a smart form for PL but there should be an output type to print*.
    i have assign the out type to shipping point in t.code ovlt .i have created picking list in t.code nact. i created sales order and delivery. i have check my picking list in ovl2n change mode picking out put is available in extra-picking output. i have checked my picking out put for smart form in systems-service-output control if i execute it show like no data to list. no spool request number has generated there.
    so were i have to check picking list preview for smart form . is spool request number is necessary.plz help me to view preview of picking list.or plz say the steps to configure this to preview.
    thanks,
    agilarasan

    Hi,
    Go to Nace .The application for Goods Issues is
    ME - Inventory Management -> select and click on output types ->select wa03 output type and click on processing routines here you can find the form name and the driver program name.So while printing select wa03 as the output type.
    <REMOVED BY MODERATOR - REQUEST OR OFFER POINTS ARE FORBIDDEN>
    Regards,
    Harini.S
    Edited by: Alvaro Tejada Galindo on Dec 23, 2008 3:46 PM

  • 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

  • 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

  • New Smart form for Tax calculation

    Dear Consultants,
    I am new for ABAP module, I want to create one smart form, for tax calculation. As per the attachment Most of the fields are standard, only the value I want to pick from Different Infotypes and RT table. please suggest how to create smart form.
    Thanks & Regards,
    Naresh

    Hi,
    create a executable program, pass the all values to Internal table.
    create the structure as same as internal table.(eg: ztable).
    create table type for this structure(eg: ytable)
    T-code: Smartforms.
    click the Form Interface tab, click table . click table
    in that declare the  variable (itab like ytable).
    click the form Painter,
    desgin the output structure.
    Select "Fieldlist on/FF''.
    drag and drop the fields
    Right  click on the main window create a Window -> right click on create window -> click table.ble
    add vertical lines to the table.
    Right click on the mainwindow->flowlogic->loop. enter the itab name.
    activate the smartforms. execute.
    copy the generated number.
    goto to abap editor program.
    Delcare:
    DATA : FM_NAME TYPE RS38L_FNAM.
    CONSTANTS C_FORMNAME TYPE TDSFNAME VALUE 'ZSMARTFORM4'. (smartforms name)
    CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
                     EXPORTING
                       formname                 = c_formname
    *                 VARIANT                  = ' '
    *                 DIRECT_CALL              = ' '
                    IMPORTING
                      FM_NAME                  = fm_name
    *               EXCEPTIONS
    goto to pattern paste the number and execute.
    comment the number and add fm_name.
    execute.
    Regards,
    Venkat.

  • Smart form for PR

    Hi,
    My users wants Print of PR...Though i told them that PR is an internal document and SAP doesn't provide and smart forms for PR..But they are not getting convinced and they arre requesting smart form for PR...
    Is there and user EXIT or BADI for this...
    Pl let me know..
    Utsav

    Hi Utsav ... most probably you need to go for a z-report development with your ABAPer, still try the following solution, if it works ...
    Click print button in the view of PR (t-code: me53n). Your PR must be arranged in spool list. Use T-code SP01,and enter the Date created,Created By and you will find your pr in the list according to the exact time you click the print button, choose it. Then click print. Make sure your printer is working well.

  • Smart Form  for cutomised Inovice, Functional spec

    Dear all,
    I need to give Functional specification for developing a smart form for Invoice. Tables are not as evident as we have in case of R/3. please give me general tips to give spec to abap consultant to fetch various fields.
    where used list of tables for a particular field is also not helping much. I need
    1) Bill to address
    2) sold to address
    3)condition data
    4) terms of payment
    5) reference date stuff
    Please suggest me a general way or logic bassed on which i can ask my abap consultant to develop the smartform and driver prog as well.
    Thnaks in advance,
    Regards,
    Kiran C

    Hi
    yes usually customers ask to adopt the same layout as they are already using. Usually I draw the layout on visio and assign a number for each field. In the spec I put the layout picture and and mention for which field where data will come from.
    For example:
    A. PO header:
    Field number | Description | Source
    1 | PO number | EKKO-EBELN
    2 | Vendor code | EKKO-LIFNR
    3 | Vendor name | LFA1-NAME1 * rule 1
    C. Rules:
    1 - select NAME1 from table LFA1 where LFA1-LIFNR = EKKO-LIFNR
    Hope this helps.
    Regards
    Eduardo Chagas

  • Replace Default "New" / "Edit" Forms for Custom List

    Having created a web page that is just simple HTML with JScript to bring it "to life" in SharePoint designer, how can I cause SharePoint 2010 to present this page for the "New" action? Or for the "Edit" action?
    This page is not associated with the Master Page/Content paradigm.  It is at WebSite/Lists/TheTargetList/TheTargetForm.aspx
    When I show the list properties tab for this list in Designer, and go to the "Forms" section (subtitled "Forms are used to display and edit data contained within this list"), and click the "New..." button at the right of
    that section's title bar and fill in the Title with the title of my file, I cannot add the file.  (The bread crumbs at the top say "Site > Lists and Libraries > ListName > ")
    Alternately, I go to the bottom of the tab's page, and select the link "Item" under Content Types (the choices being "Item" and "Folder").
    Then the bread crumbs say "Site > Lists and Libraries > ListName > Content Types > Item >"
    In the "Forms" section, I try to put the fully qualified name of the page I have created (my ..aspx file) in the "New Form:" or "Edit Form:" areas, after having clicked the "<click to enter text>" links.
    This lets me save that change, but destroys the web site's ability to show anything when I try to go to New or Edit — essentially "File not found."  The same if I provide only the file name,
    not fully qualified.
    So, if I have "Site/Lists/List/XYZ.aspx," and if that file is like:
    <html>
    <head>
    <script> . . . </script>
    </head>
    <body> . . . <br /> . . . </body>
    </html>
    How can I get this file to be opened as the "New" or "Edit" form for the list?

    Hi  BrianWren ,
    According to your  description, my understanding is that you want to present a web page as the New Form page.
    For achieving your demand, you need to create custom form using Visual Studio instead of SharePoint Designer.
    Here is a good blog you can have a look:
    http://blog.karstein-consulting.com/2010/12/29/walkthrough-create-custom-sharepoint-2010-list-form-for-deployment-in-a-visual-studio-2010-project/
    http://www.sharepointblogs.be/blogs/sebastian/archive/2011/02/08/change-the-standard-forms-of-a-list.aspx
    Best Regards,
    Eric
    Eric Tao
    TechNet Community Support

  • SAP Interactive Forms and SAP Smart Forms for Human Capital Management

    Hi gurus,
    pls help me understand what are SAP Interactive Forms by Adobe and SAP Smart Forms for Human Capital Management (HCM)?
    regds
    jack

    read here
    http://wiki.sdn.sap.com/wiki/display/ABAP/SAPInteractiveFormsbyAdobe#SAPInteractiveFormsbyAdobe-WhatarethedifferencesbetweenSmartFormsandAdobeForms%3F
    What are the differences between Smart Forms and Adobe Forms?
    For both of them, SAP dynamically creates a function module that must be called from an ABAP program to generate the form
    In Smart Forms, it is possible to add ABAP code during generation of the form, that is not possible with Adobe Forms
    It is possible to add javascript or FormCalc code in Adobe Forms, which is executed during the generation of the form
    Other differences are indicated in Note 1009567 Functional differences SAP Interactive Forms/Smart Forms
    Smart forms Vs PDF print forms - pros and cons, by Francois Gendebien, 2007/04/30
    Use smartforms compatible interfaces with PDF forms, by Francois Gendebien, 2007/03/16

  • Is it better to create ONE form, for 25 different forms?

    We have a Telco Application (in Forms 10g) which has about 200 Forms which are called from the main menu. Out of that 200 forms about *25* are "file upload" type forms (shown below).
    http://www.freeimagehosting.net/alg6q
    As you can see this is small form. The functionality is as follows:
    *(a.)* Select a text file (which has data in tabular format) from the client PC.
    When file is selected, it is also copied to a directory in the DB server machine. File Name will show the full path of the file in the client machine.
    *(b.)* When user presses Load button, form calls a stored packaged procedure. In that we create a EXTERNAL table mapped to the file in the db directory and read the contents to a temporary table in the DB.
    *(c.)* When user presses Process button, the temporary table is read and our Telco tables are updated using this data.
    *(d.)* You can view the error records and correct records discovered while processing, with the View File option. This will display 2 Oracle reports.
    *(e.)* You can delete the temporary table contents using the Delete Temporary option.
    This story goes like this: Our application is in Forms 10g. Now, we want to upgrade this application to 11g Forms. One problem we encountered was the FileUploader bean which we use in the above forms. This does not work in 11g. Solution was found in using WebUtil. Now, we have to modify all 25 Forms (obviously).
    Now here comes the real important part: Our Managers think that in the future also we might have to do upgrade to these 25 forms (due to future problems/upgrades with WebUtil and so on) and they want us to create ONE form for the 25 forms. So, in that ONE form,
    (a.) We have a list box at the top where uses selects which upload function he wants.
    (b.) Then, the file is selected (and transferred to the DB directory).
    (c.) Now when the users presses Load button, we have to execute the load packaged procedure for the selected load file option.
    (d.) When he presses Process button we have to run the program unit for the selected file upload function.
    (e.) When user presses the View File button, he has to show the correct records and invalid records (found after processing) in 2 reports. The reports differ from function to function.
    (f.) He can delete the records in the temporary table using Delete Temp button.
    Is this is good idea?? My initial study tells me that it is not a good idea since we have one form with too much functionality. What are pros and cons of this approach and what is the best solution??
    Edited by: user12240205 on Jun 25, 2012 1:16 AM

    So the forms are completely different, and yet you are asked to stuff them all together into one form? What sense would that make? That's like pulling forms which are using text_io together just because when text_io is changed you simply would need to edit one form. Well of course you would have to. On the other hand there is a pile of code necessary to seperate the parts you glued together in the first place plus the effort of pulling all those forms together plus the effort of adding stuff to one "part" of the form.
    Also think about version control: you'd create more frequent conflicts in putting those forms together when different developers edit different parts of the form. Conflicts causes work as developers are forced to merge more often plus developers can make errors when merging their changes. Also the log of your version control system becomes quite useless as it always will be the xyz form which is changed. If you would want to know what did change you would have to read the log messages carefully of each revission (given the fact that developers wrote them carefully) or do diffs between revisions instead of...looking at what files changed.
    And all that just because the only thing they have in common is that they are using webutil?!? Do your managers keep their Blue Socks and their Blue Cars in the same drawer because they are blue?
    If the issue here is that you need to edit many forms and this might cause errors then you should take a look at the JDAPI, because this would be the tool to do changes in forms in batch. The forms migration assistant can also be configured to change one built-in into another, and you wouldn't have to write one line of java code. But stuffing forms together because they use the same built-ins...I'd say no, but of course this is just my opinioin ;)
    btw.:
    When you say API, u mean a PLL, right???Not only, by API I meant Application programming interface; this might be a package in a library, a whole pll file, a database package, a java class, or a combination of all those.
    cheers

  • How do I create smart playlists for albums?

    Hi,
    I have a lot of albums and each album has their proper track listings meaning their proper track songs. I would like to create smart playlists for all my individual albums and for every individual album has a smart playlist with the proper track songs in the smart playlist for the album?
    1.) Would doing this be possible?
    2.) If so, how could I do this?
    I forgot to mention a lot of my albums are multiple CDs, and a lot also include bonus CDs.
    I don't know many tracks or CDs off the top of my head, but here are some album names as an example.
    Road Trips vol. 1 no. 1
    Road Trips vol. 1 no. 2
    Road Trips vol. 1 no. 3
    Road Trips vol. 1 no. 4
    And the list goes on.
    Thank you,

    An album in iTunes is a collection of tracks that have the same Album name and the same Artist or Album Artist. Older iPods only work with Artist. The iPod has menu listtings for Artists & Albums built in, so again no need to duplicate with playlists. Any tracks you put on an iPod will, if correctly tagged, show up in their relevant album, and in the artist listing, the genre listing, any playlists that you include, etc.
    For tips on organizing tracks in iTunes and on an iPod see the Grouping tracks into albums article. It needs some updated images, but the information is otherwise still relevant.
    tt2

  • 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

Maybe you are looking for

  • Terminal - how to find my external hard drive using unix commands

    just discovered terminal and using cd and ls commands, which are the only commands i know, i realized that i can't find my external hard drive. i thought it would be listed on my desktop, as it is in the OSX interface, but it isn't there. not that im

  • Ageing Analysis for ARE Documents - Clarification

    HI, 1.What is the Purpose if ageing analysis for ARE ? and when it will be helpful ? 2. When i click on the Document system is showing is ARE Status numbers, each one have its own purpose can any one guide me 3. how it is helful to the Enduser ? beca

  • Doesn't have XI adapter on Adapter Engine Monitor

    Hi Experts, I am doing File2File scenario with J2SE->XI->J2SE direction. So that I created a communication channel(CC) with XI type and Receiver role. It have no error, the status of message is always "Waiting". The sender and receiver file adapter o

  • Sorting question over state...

    Hi there, Anyone know where you amend the over state / hover of an option in a sorting question ??? Been looking in the object style manager but can't find it in there... Thanks in advance...

  • Excel charts are loading to fail every week

    Hi We are having several excel charts in our site, every week or every few days we are receiving below error Failed to download chart or image. Once we restart the excel services every thing starts working with out any error. We had this charts from