Print program for large ALV Report

I have an ALV report that has around 20 columns of data which I would approximate that it will take 3 pages to display the data.
When I use the print button for this report, the layout is changed to the max possible columns 65x255 and yet many columns go missing in the hard copy.
It seems I need to write some separate logic to print this document. How can I handle this?
I am using CL_SALV_TABLE t o generate the report. I am already handling events ON_USER_COMMAND & TOP_OF_PAGE.
Thank you.

Hi,
  Because the standard format of ALV output setting is X_65_255, when you want to extend the column number, you have to choose other format type follow the steps below:
   1.ALV screen, press 'print.' button->properties->
   2.double click 'format  X_65_255'->
   3.In format field you can choose your setting with search help.
  In R/3 system, we have several format as default, we can also define our own format by t-code: spad.
   1.Spad->
   2.Full administration->
   3.Devices types->
   4.Click 'Display' of Format types->
   5.Now, you can find X_65_255 format type here, click modify button and create a new one.
   6.Input format type, 'L' format type for ABAP lists, fill Attribuetes... ...
   7.Spad->Full administration->Device types->Device Types-> choose the device type you alredy use and double click it
   8.Click 'formats' button in application bar
   9.Click 'Create' button in application bar.
  10.Add the format you just created.
  11.After above steps you added the format to your device type, double click the format you added.
  12.In the tab page of Formats we have to fill the following Actions:
                   a.Printer initialization
                   b.End of page
                   c.End of line.
       You can copy  the code of each action from other formats, they are exactly the same!
    You can find your own defined page format in the ALV print properity, now!
Best regards!

Similar Messages

  • PROGRAM FOR INTERACTIVE ALV REPORT

    Hi frens,
      this is my 3rd query to this forum. the response of this forum is excellent.now my question is :
    whats the source code(or program) for Interactive ABAP List Viewer(ALV)  reports connecting KNA1 as basic list and VBAK, VBAP as the seconday lists...having the relation between KNA1 and VBAK with KUNNR and VBAK and VBAP with VBELN as key fields.

    Hi Prasad
    <u><b>For More alv report examples check these Tcodes <i>LIBS, BIBS</i> Here u can find more number of examples on alv reports of different kinds
    check this sample code for intercative alv report</b></u>
    TYPE-POOLS: SLIS.
    *type declaration for values from ekko
    TYPES: BEGIN OF I_EKKO,
           EBELN LIKE EKKO-EBELN,
           AEDAT LIKE EKKO-AEDAT,
           BUKRS LIKE EKKO-BUKRS,
           BSART LIKE EKKO-BSART,
           LIFNR LIKE EKKO-LIFNR,
           END OF I_EKKO.
    DATA: IT_EKKO TYPE STANDARD TABLE OF I_EKKO INITIAL SIZE 0,
          WA_EKKO TYPE I_EKKO.
    *type declaration for values from ekpo
    TYPES: BEGIN OF I_EKPO,
           EBELN LIKE EKPO-EBELN,
           EBELP LIKE EKPO-EBELP,
           MATNR LIKE EKPO-MATNR,
           MENGE LIKE EKPO-MENGE,
           MEINS LIKE EKPO-MEINS,
           NETPR LIKE EKPO-NETPR,
           END OF I_EKPO.
    DATA: IT_EKPO TYPE STANDARD TABLE OF I_EKPO INITIAL SIZE 0,
          WA_EKPO TYPE I_EKPO .
    *variable for Report ID
    DATA: V_REPID LIKE SY-REPID .
    *declaration for fieldcatalog
    DATA: I_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
          WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
    DATA: IT_LISTHEADER TYPE SLIS_T_LISTHEADER.
    * declaration for events table where user comand or set PF status will
    * be defined
    DATA: V_EVENTS TYPE SLIS_T_EVENT,
          WA_EVENT TYPE SLIS_ALV_EVENT.
    * declartion for layout
    DATA: ALV_LAYOUT TYPE SLIS_LAYOUT_ALV.
    * declaration for variant(type of display we want)
    DATA: I_VARIANT TYPE DISVARIANT,
          I_VARIANT1 TYPE DISVARIANT,
          I_SAVE(1) TYPE C.
    *PARAMETERS : p_var TYPE disvariant-variant.
    *Title displayed when the alv list is displayed
    DATA:  I_TITLE_EKKO TYPE LVC_TITLE VALUE 'FIRST LIST DISPLAYED'.
    DATA:  I_TITLE_EKPO TYPE LVC_TITLE VALUE 'SECONDRY LIST DISPLAYED'.
    INITIALIZATION.
      V_REPID = SY-REPID.
      PERFORM BUILD_FIELDCATLOG.
      PERFORM EVENT_CALL.
      PERFORM POPULATE_EVENT.
    START-OF-SELECTION.
      PERFORM DATA_RETRIEVAL.
      PERFORM BUILD_LISTHEADER USING IT_LISTHEADER.
      PERFORM DISPLAY_ALV_REPORT.
    *&      Form  BUILD_FIELDCATLOG
    *       Fieldcatalog has all the field details from ekko
    FORM BUILD_FIELDCATLOG.
      WA_FIELDCAT-TABNAME = 'IT_EKKO'.
      WA_FIELDCAT-FIELDNAME = 'EBELN'.
      WA_FIELDCAT-SELTEXT_M = 'PO NO.'.
      APPEND WA_FIELDCAT TO I_FIELDCAT.
      CLEAR WA_FIELDCAT.
      WA_FIELDCAT-TABNAME = 'IT_EKKO'.
      WA_FIELDCAT-FIELDNAME = 'AEDAT'.
      WA_FIELDCAT-SELTEXT_M = 'DATE.'.
      APPEND WA_FIELDCAT TO I_FIELDCAT.
      CLEAR WA_FIELDCAT.
      WA_FIELDCAT-TABNAME = 'IT_EKKO'.
      WA_FIELDCAT-FIELDNAME = 'BUKRS'.
      WA_FIELDCAT-SELTEXT_M = 'COMPANY CODE'.
      APPEND WA_FIELDCAT TO I_FIELDCAT.
      CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'IT_EKKO'.
      WA_FIELDCAT-FIELDNAME = 'BUKRS'.
      WA_FIELDCAT-SELTEXT_M = 'DOCMENT TYPE'.
      APPEND WA_FIELDCAT TO I_FIELDCAT.
      CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'IT_EKKO'.
      WA_FIELDCAT-FIELDNAME = 'LIFNR'.
      WA_FIELDCAT-NO_OUT    = 'X'.
      WA_FIELDCAT-SELTEXT_M = 'VENDOR CODE'.
      APPEND WA_FIELDCAT TO I_FIELDCAT.
      CLEAR WA_FIELDCAT.
    ENDFORM.                    "BUILD_FIELDCATLOG
    *&      Form  EVENT_CALL
    *   we get all events - TOP OF PAGE or USER COMMAND in table v_events
    FORM EVENT_CALL.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
       EXPORTING
         I_LIST_TYPE           = 0
       IMPORTING
         ET_EVENTS             = V_EVENTS
    *  EXCEPTIONS
    *    LIST_TYPE_WRONG       = 1
    *    OTHERS                = 2
      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.                    "EVENT_CALL
    *&      Form  POPULATE_EVENT
    *      Events populated for TOP OF PAGE & USER COMAND
    FORM POPULATE_EVENT.
      READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'.
      IF SY-SUBRC EQ 0.
        WA_EVENT-FORM = 'TOP_OF_PAGE'.
        MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =
    WA_EVENT-FORM.
      ENDIF.
      READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'USER_COMMAND'.
      IF SY-SUBRC EQ 0.
        WA_EVENT-FORM = 'USER_COMMAND'.
        MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =
    WA_EVENT-NAME.
      ENDIF.
    ENDFORM.                    "POPULATE_EVENT
    *&      Form  data_retrieval
    *   retreiving values from the database table ekko
    FORM DATA_RETRIEVAL.
      SELECT EBELN AEDAT BUKRS BSART LIFNR FROM EKKO INTO TABLE IT_EKKO.
    ENDFORM.                    "data_retrieval
    *&      Form  bUild_listheader
    *       text
    *      -->I_LISTHEADEtext
    FORM BUILD_LISTHEADER USING I_LISTHEADER TYPE SLIS_T_LISTHEADER.
      DATA HLINE TYPE SLIS_LISTHEADER.
      HLINE-INFO = 'this is my first alv pgm'.
      HLINE-TYP = 'H'.
    ENDFORM.                    "build_listheader
    *&      Form  display_alv_report
    *       text
    FORM DISPLAY_ALV_REPORT.
      V_REPID = SY-REPID.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
         I_CALLBACK_PROGRAM                = V_REPID
    *   I_CALLBACK_PF_STATUS_SET          = ' '
         I_CALLBACK_USER_COMMAND           = 'USER_COMMAND'
         I_CALLBACK_TOP_OF_PAGE            = 'TOP_OF_PAGE'
         I_GRID_TITLE                      = I_TITLE_EKKO
    *   I_GRID_SETTINGS                   =
    *   IS_LAYOUT                         = ALV_LAYOUT
         IT_FIELDCAT                       = I_FIELDCAT[]
    *   IT_EXCLUDING                      =
    *   IT_SPECIAL_GROUPS                 =
    *   IT_SORT                           =
    *   IT_FILTER                         =
    *   IS_SEL_HIDE                       =
    *     i_default                         = 'ZLAY1'
         I_SAVE                            = 'A'
    *     is_variant                        = i_variant
         IT_EVENTS                         = V_EVENTS
        TABLES
          T_OUTTAB                          = IT_EKKO
    * EXCEPTIONS
    *   PROGRAM_ERROR                     = 1
    *   OTHERS                            = 2
      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.                    "display_alv_report
    *&      Form  TOP_OF_PAGE
    *       text
    FORM TOP_OF_PAGE.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          IT_LIST_COMMENTARY       = IT_LISTHEADER
    *    i_logo                   =
    *    I_END_OF_LIST_GRID       =
    ENDFORM.                    "TOP_OF_PAGE
    *&      Form  USER_COMMAND
    *       text
    *      -->R_UCOMM    text
    *      -->,          text
    *      -->RS_SLEFIELDtext
    FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
    RS_SELFIELD TYPE SLIS_SELFIELD.
      CASE R_UCOMM.
        WHEN '&IC1'.
          READ TABLE IT_EKKO INTO WA_EKKO INDEX RS_SELFIELD-TABINDEX.
          PERFORM BUILD_FIELDCATLOG_EKPO.
          PERFORM EVENT_CALL_EKPO.
          PERFORM POPULATE_EVENT_EKPO.
          PERFORM DATA_RETRIEVAL_EKPO.
          PERFORM BUILD_LISTHEADER_EKPO USING IT_LISTHEADER.
          PERFORM DISPLAY_ALV_EKPO.
      ENDCASE.
    ENDFORM.                    "user_command
    *&      Form  BUILD_FIELDCATLOG_EKPO
    *       text
    FORM BUILD_FIELDCATLOG_EKPO.
      WA_FIELDCAT-TABNAME = 'IT_EKPO'.
      WA_FIELDCAT-FIELDNAME = 'EBELN'.
      WA_FIELDCAT-SELTEXT_M = 'PO NO.'.
      APPEND WA_FIELDCAT TO I_FIELDCAT.
      CLEAR WA_FIELDCAT.
      WA_FIELDCAT-TABNAME = 'IT_EKPO'.
      WA_FIELDCAT-FIELDNAME = 'EBELP'.
      WA_FIELDCAT-SELTEXT_M = 'LINE NO'.
      APPEND WA_FIELDCAT TO I_FIELDCAT.
      CLEAR WA_FIELDCAT.
      WA_FIELDCAT-TABNAME = 'I_EKPO'.
      WA_FIELDCAT-FIELDNAME = 'MATNR'.
      WA_FIELDCAT-SELTEXT_M = 'MATERIAL NO.'.
      APPEND WA_FIELDCAT TO I_FIELDCAT.
      CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'I_EKPO'.
      WA_FIELDCAT-FIELDNAME = 'MENGE'.
      WA_FIELDCAT-SELTEXT_M = 'QUANTITY'.
      APPEND WA_FIELDCAT TO I_FIELDCAT.
      CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'I_EKPO'.
      WA_FIELDCAT-FIELDNAME = 'MEINS'.
      WA_FIELDCAT-SELTEXT_M = 'UOM'.
      APPEND WA_FIELDCAT TO I_FIELDCAT.
      CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'I_EKPO'.
      WA_FIELDCAT-FIELDNAME = 'NETPR'.
      WA_FIELDCAT-SELTEXT_M = 'PRICE'.
      APPEND WA_FIELDCAT TO I_FIELDCAT.
      CLEAR WA_FIELDCAT.
    ENDFORM.                    "BUILD_FIELDCATLOG_EKPO
    *&      Form  event_call_ekpo
    *   we get all events - TOP OF PAGE or USER COMMAND in table v_events
    FORM EVENT_CALL_EKPO.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
       EXPORTING
         I_LIST_TYPE           = 0
       IMPORTING
         ET_EVENTS             = V_EVENTS
    * EXCEPTIONS
    *   LIST_TYPE_WRONG       = 1
    *   OTHERS                = 2
      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.                    "event_call_ekpo
    *&      Form  POPULATE_EVENT
    *        Events populated for TOP OF PAGE & USER COMAND
    FORM POPULATE_EVENT_EKPO.
      READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'.
      IF SY-SUBRC EQ 0.
        WA_EVENT-FORM = 'TOP_OF_PAGE'.
        MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =
    WA_EVENT-FORM.
      ENDIF.
      ENDFORM.                    "POPULATE_EVENT
    *&      Form  TOP_OF_PAGE
    *       text
    FORM F_TOP_OF_PAGE.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          IT_LIST_COMMENTARY       = IT_LISTHEADER
    *    i_logo                   =
    *    I_END_OF_LIST_GRID       =
    ENDFORM.                    "TOP_OF_PAGE
    *&      Form  USER_COMMAND
    *       text
    *      -->R_UCOMM    text
    *      -->,          text
    *      -->RS_SLEFIELDtext
    *retreiving values from the database table ekko
    FORM DATA_RETRIEVAL_EKPO.
    SELECT EBELN EBELP MATNR MENGE MEINS NETPR FROM EKPO INTO TABLE IT_EKPO.
    ENDFORM.
    FORM BUILD_LISTHEADER_EKPO USING I_LISTHEADER TYPE SLIS_T_LISTHEADER.
    DATA: HLINE1 TYPE SLIS_LISTHEADER.
    HLINE1-TYP = 'H'.
    HLINE1-INFO = 'CHECKING PGM'.
    ENDFORM.
    FORM DISPLAY_ALV_EKPO.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
    *   I_INTERFACE_CHECK                 = ' '
    *   I_BYPASSING_BUFFER                = ' '
    *   I_BUFFER_ACTIVE                   = ' '
       I_CALLBACK_PROGRAM                = V_REPID
    *   I_CALLBACK_PF_STATUS_SET          = ' '
    *   I_CALLBACK_USER_COMMAND           = 'F_USER_COMMAND'
       I_CALLBACK_TOP_OF_PAGE            = 'TOP_OF_PAGE'
    *   I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
    *   I_CALLBACK_HTML_END_OF_LIST       = ' '
    *   I_STRUCTURE_NAME                  =
    *   I_BACKGROUND_ID                   = ' '
       I_GRID_TITLE                      = I_TITLE_EKPO
    *   I_GRID_SETTINGS                   =
    *   IS_LAYOUT                         =
       IT_FIELDCAT                       = I_FIELDCAT[]
    *   IT_EXCLUDING                      =
    *   IT_SPECIAL_GROUPS                 =
    *   IT_SORT                           =
    *   IT_FILTER                         =
    *   IS_SEL_HIDE                       =
    *   I_DEFAULT                         =
       I_SAVE                            = 'A'
    *   IS_VARIANT                        =
       IT_EVENTS                         = V_EVENTS
      TABLES
        T_OUTTAB                          = IT_EKPO
    EXCEPTIONS
       PROGRAM_ERROR                     = 1
       OTHERS                            = 2
    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.
    Reward all helpfull answers
    Regards
    Pavan

  • Prerequisites for using ALV reports

    Hi,
    We have some of our standard transaction for instance LT23, which seems to have been programmed to be used and viewed with ALV layout. However, this is not the case, it just print using the old list layout.
    Are the prerequisites for running ALV report; if so I would like to know them. SAP GUI is 7.20 and the theme is SAP Signature.
    Any input is appreciated.
    Thanks.

    Hi
    If you want to use the GRID instead of LIST, yes I don't know if it's a good idea but you can do only that
    That means you need to change the function module  L_TO_LIST_DISPLAY, but the ALV is called in form CALL_ALV, so you can create an enhancement in order to call the GRID instead of LIST.
    The call should be the same, because the 2 functions (GRID and LIST) have the same interface, so instead of
    CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
         EXPORTING
              I_CALLBACK_PROGRAM       = SAV_SY_REPID
              I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'
    *         I_CALLBACK_USER_COMMAND  = ' '
    *         I_STRUCTURE_NAME         =
              IS_LAYOUT                = LAYOUT
              IT_FIELDCAT              = XFIELD
    *         IT_EXCLUDING             =
              IT_SPECIAL_GROUPS        = XSP_GROUP[]
    *         IT_SORT                  =
    *         IT_FILTER                =
    *         IS_SEL_HIDE              =
              I_DEFAULT                = 'X'
              I_SAVE                   = 'A'
              IS_VARIANT               = VARIANT
              IT_EVENTS                = XEVENT
    * >>>>>>>>>> begin of insertion HP_318150 >>>>>>>>>>
              i_buffer_active          = 'X'
    * <<<<<<<<<< end   of insertion HP_318150 <<<<<<<<<<
    *         IT_EVENT_EXIT            =
    *         IS_PRINT                 =
              I_SCREEN_START_COLUMN    = I_SCREEN_START_COLUMN
              I_SCREEN_START_LINE      = I_SCREEN_START_LINE
              I_SCREEN_END_COLUMN      = I_SCREEN_END_COLUMN
              I_SCREEN_END_LINE        = I_SCREEN_END_LINE
    *    IMPORTING
    *         E_EXIT_CAUSED_BY_CALLER  =
           TABLES
                T_OUTTAB                 = T_TO_LIST_PLUS
           EXCEPTIONS
                PROGRAM_ERROR            = 1
                OTHERS                   = 2.
      IF SY-SUBRC NE 0.
        MESSAGE E706(L1) WITH 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'.
    *   Interner Fehler ist aufgetreten (FB &)
      ENDIF.
    ....you can insert:
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
         EXPORTING
              I_CALLBACK_PROGRAM       = SAV_SY_REPID
              I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'
    *         I_CALLBACK_USER_COMMAND  = ' '
    *         I_STRUCTURE_NAME         =
              IS_LAYOUT                = LAYOUT
              IT_FIELDCAT              = XFIELD
    *         IT_EXCLUDING             =
              IT_SPECIAL_GROUPS        = XSP_GROUP[]
    *         IT_SORT                  =
    *         IT_FILTER                =
    *         IS_SEL_HIDE              =
              I_DEFAULT                = 'X'
              I_SAVE                   = 'A'
              IS_VARIANT               = VARIANT
              IT_EVENTS                = XEVENT
    * >>>>>>>>>> begin of insertion HP_318150 >>>>>>>>>>
              i_buffer_active          = 'X'
    * <<<<<<<<<< end   of insertion HP_318150 <<<<<<<<<<
    *         IT_EVENT_EXIT            =
    *         IS_PRINT                 =
              I_SCREEN_START_COLUMN    = I_SCREEN_START_COLUMN
              I_SCREEN_START_LINE      = I_SCREEN_START_LINE
              I_SCREEN_END_COLUMN      = I_SCREEN_END_COLUMN
              I_SCREEN_END_LINE        = I_SCREEN_END_LINE
    *    IMPORTING
    *         E_EXIT_CAUSED_BY_CALLER  =
           TABLES
                T_OUTTAB                 = T_TO_LIST_PLUS
           EXCEPTIONS
                PROGRAM_ERROR            = 1
                OTHERS                   = 2.
      IF SY-SUBRC NE 0.
        MESSAGE E706(L1) WITH 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'.
    *   Interner Fehler ist aufgetreten (FB &)
      ENDIF.
    Max

  • How to know print program for SAP Script

    Hi friends,
    how to know print program for SAP Script form name ?

    Hi ,
      You can use the following code changes in the layout & see..
    You have to create a program Z_BC460_EX4_HF for that..
    /:PERFORM GET_NAME IN PROGRAM Z_BC460_EX4_HF
    /:  USING &CUST&
    /:  CHANGING &NAME&
    /:ENDPERFORM.
    Dear &NAME&
    The ABAP routine could be defined as follows:
    IMPORTANT: The structure itcsy must be used for the parameters.
    REPORT Z_HENRIKF_SCRIPT_FORM .
      tables scustom.
      form get_name tables in_tab structure itcsy
                           out_tab structure itcsy.
      read table in_tab index 1.
      select single * from scustom
        where id = in_tab-value.
      if sy-subrc = 0.
        read table out_tab index 1.
        move scustom-name to out_tab-value.
        modify out_tab index sy-tabix.
      else.
        read table out_tab index 1.
        move 'No name' to out_tab-value.
        modify out_tab index sy-tabix.
      endif.
    You could also fill the ouput parameter table this way
       READ TABLE out_par WITH KEY 'NAME1'.
       out_par-value = l_name1.
       MODIFY out_par INDEX sy-tabix.
    endform.

  • How to write print program for smartforms

    Hi all
    I need to develop new smartform and its print program.
    But Im not experience in writing print program for smartform.
    Ive gone through the simple print program sample that use only one table as input and one table for output.
    But my smartforms require few tables for input and output.
    How should I define the Data?
    Can anyone guide me on how to write it.
    Thanks & Regards
    az

    Transaction code SMARTFORMS
    Create new smartforms call ZSMART
    2. Define looping process for internal table
    Pages and windows
    First Page -> Header Window (Cursor at First Page then click Edit -> Node -> Create)
    Here, you can specify your title and page numbering
    &SFSY-PAGE& (Page 1) of &SFSY-FORMPAGES(Z4.0)& (Total Page)
    Main windows -> TABLE -> DATA
    In the Loop section, tick Internal table and fill in
    ITAB1 (table in ABAP SMARTFORM calling function) INTO ITAB2
    3. Define table in smartforms
    Global settings :
    Form interface
    Variable name Type assignment Reference type
    ITAB1 TYPE Table Structure
    Global definitions
    Variable name Type assignment Reference type
    ITAB2 TYPE Table Structure
    4. To display the data in the form
    Make used of the Table Painter and declare the Line Type in Tabstrips Table
    e.g. HD_GEN for printing header details,
    IT_GEN for printing data details.
    You have to specify the Line Type in your Text elements in the Tabstrips Output options.
    Tick the New Line and specify the Line Type for outputting the data.
    Declare your output fields in Text elements
    Tabstrips - Output Options
    For different fonts use this Style : IDWTCERTSTYLE
    For Quantity or Amout you can used this variable &GS_ITAB-AMOUNT(12.2)&
    5. Calling SMARTFORMS from your ABAP program
    REPORT ZSMARTFORM.
    Calling SMARTFORMS from your ABAP program.
    Collecting all the table data in your program, and pass once to SMARTFORMS
    SMARTFORMS
    Declare your table type in :-
    Global Settings -> Form Interface
    Global Definintions -> Global Data
    Main Window -> Table -> DATA
    Written by : SAP Hints and Tips on Configuration and ABAP/4 Programming
    http://sapr3.tripod.com
    TABLES: MKPF.
    DATA: FM_NAME TYPE RS38L_FNAM.
    DATA: BEGIN OF INT_MKPF OCCURS 0.
    INCLUDE STRUCTURE MKPF.
    DATA: END OF INT_MKPF.
    SELECT-OPTIONS S_MBLNR FOR MKPF-MBLNR MEMORY ID 001.
    SELECT * FROM MKPF WHERE MBLNR IN S_MBLNR.
    MOVE-CORRESPONDING MKPF TO INT_MKPF.
    APPEND INT_MKPF.
    ENDSELECT.
    At the end of your program.
    Passing data to SMARTFORMS
    call function 'SSF_FUNCTION_MODULE_NAME'
    exporting
    formname = 'ZSMARTFORM'
    VARIANT = ' '
    DIRECT_CALL = ' '
    IMPORTING
    FM_NAME = FM_NAME
    EXCEPTIONS
    NO_FORM = 1
    NO_FUNCTION_MODULE = 2
    OTHERS = 3.
    if sy-subrc 0.
    WRITE: / 'ERROR 1'.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    endif.
    call function FM_NAME
    EXPORTING
    ARCHIVE_INDEX =
    ARCHIVE_INDEX_TAB =
    ARCHIVE_PARAMETERS =
    CONTROL_PARAMETERS =
    MAIL_APPL_OBJ =
    MAIL_RECIPIENT =
    MAIL_SENDER =
    OUTPUT_OPTIONS =
    USER_SETTINGS = 'X'
    IMPORTING
    DOCUMENT_OUTPUT_INFO =
    JOB_OUTPUT_INFO =
    JOB_OUTPUT_OPTIONS =
    TABLES
    GS_MKPF = INT_MKPF
    EXCEPTIONS
    FORMATTING_ERROR = 1
    INTERNAL_ERROR = 2
    SEND_ERROR = 3
    USER_CANCELED = 4
    OTHERS = 5.
    if sy-subrc 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    Reward points...

  • Needed  sample program for emailing the report output

    hi all,
    neede sample program for emailing the report output

    Hi,
    Please refer this program for sending e-mail with attachment.
    ***INCLUDE ZHZLPP_CLZSN_DAILY_MIS_PRINT .
    *&      Form  print
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM print .
      DATA:  wa_output_options     TYPE ssfcompop,
             wa_control_parameters TYPE ssfctrlop,
             t_otfdata             TYPE ssfcrescl,
             t_pdf_tab             TYPE TABLE OF tline WITH HEADER LINE.
      DATA: t_otf TYPE itcoo OCCURS 0 WITH HEADER LINE.
      DATA: w_filesize TYPE i.
      DATA: w_bin_filesize TYPE i.
      DATA: i_otf TYPE itcoo OCCURS 0 WITH HEADER LINE,
      i_tline TYPE TABLE OF tline WITH HEADER LINE,
      v_form_name TYPE rs38l_fnam,
      v_len_in LIKE sood-objlen,
      w_return TYPE ssfcrescl.
      DATA : l_mean  TYPE p DECIMALS 2,
             l_mean1 TYPE p DECIMALS 2,
             l_mean2 TYPE p DECIMALS 2,
             l_mean3 TYPE p DECIMALS 4,
             temp    TYPE p DECIMALS 2,
             v_header LIKE zmisdisp3-remark,
             disp_d_kwh_mt TYPE zmisdisp5,
             disp_m_kwh_mt TYPE zmisdisp5,
             disp_d_mt_mw  TYPE zmisdisp5,
             disp_m_mt_mw  TYPE zmisdisp5,
             l_bptarget(16) TYPE p DECIMALS 2,
             l_act_d(16)    TYPE p DECIMALS 2,
             l_act_c(16)    TYPE p DECIMALS 2,
             l_pow_gen      TYPE p DECIMALS 2,
             l_pow_gen_d    TYPE p DECIMALS 2,
             l_pow_gen_c    TYPE p DECIMALS 2,
             l_no_of_days   TYPE p,
             disp_bptarget  TYPE zmisdisp5,
             disp_act_d     TYPE zmisdisp5,
             disp_act_c     TYPE zmisdisp5,
             disp_d_kwh     TYPE zmisdisp5,
             disp_c_kwh     TYPE zmisdisp5,
             disp_d_mw      TYPE zmisdisp5,
             disp_c_mw      TYPE zmisdisp5,
             disp_pow_gen_d TYPE zmisdisp5,
             disp_pow_gen_c TYPE zmisdisp5,
             disp_pow_gen   TYPE zmisdisp5,
             disp_ftd_h1    TYPE zmisdisp5,
             disp_ftd_h2    TYPE zmisdisp5,
             disp_ftd_h3    TYPE zmisdisp5,
             disp_ftd_h4    TYPE zmisdisp5,
             disp_ftd_h5    TYPE zmisdisp5,
             disp_ftd_o1    TYPE zmisdisp5,
             disp_ftd_o2    TYPE zmisdisp5,
             disp_ftd_o4    TYPE zmisdisp5,
             disp_ftd_o5    TYPE zmisdisp5,
             disp_***_o1    TYPE zmisdisp5,
             disp_***_o2    TYPE zmisdisp5,
             disp_***_o4    TYPE zmisdisp5,
             disp_***_o5    TYPE zmisdisp5,
             disp_cath_d    TYPE zmisdisp5,
             disp_cath_c    TYPE zmisdisp5,
             disp_anode_d   TYPE zmisdisp5,
             disp_anode_c   TYPE zmisdisp5,
             l_rec_con_d_kwh(16) TYPE p DECIMALS 2,
             l_rec_con_c_kwh(16) TYPE p DECIMALS 2,
             l_rec_con_d_mw(16)  TYPE p DECIMALS 2,
             l_rec_con_c_mw(16)  TYPE p DECIMALS 2,
             tot_kah      TYPE p DECIMALS 2,
             avg_kah      TYPE p DECIMALS 2,
             disp_tot_kah TYPE zmisdisp5,
             disp_avg_kah TYPE zmisdisp5,
             v_ftd_h1 TYPE p DECIMALS 2,
             v_ftd_h2 TYPE p DECIMALS 2,
             v_ftd_h3 TYPE p DECIMALS 2,
             v_ftd_h4 TYPE p DECIMALS 2,
             v_ftd_h5 TYPE p DECIMALS 2,
             v_ftd_o1 TYPE p DECIMALS 2,
             v_ftd_o2 TYPE p DECIMALS 2,
             v_ftd_o4 TYPE p DECIMALS 2,
             v_ftd_o5 TYPE p DECIMALS 2,
             v_***_o1 TYPE p DECIMALS 2,
             v_***_o2 TYPE p DECIMALS 2,
             v_***_o4 TYPE p DECIMALS 2,
             v_***_o5 TYPE p DECIMALS 2,
             l_cdiff1 LIKE imrg-cdiff,
             l_cdiff2 LIKE imrg-cdiff,
             l_cdiff3 LIKE imrg-cdiff,
             l_cdiff4 LIKE imrg-cdiff,
             l_path   LIKE rlgrap-filename,
             l_flag.
      DATA :prod_disp TYPE TABLE OF zmisdisp1 WITH HEADER LINE,
            keyp_disp TYPE TABLE OF zmisdisp2 WITH HEADER LINE,
            keyp_dis1 TYPE TABLE OF zmisdisp2 WITH HEADER LINE,
            rmat_disp TYPE TABLE OF zmisdisp4 WITH HEADER LINE,
            rcur_disp TYPE TABLE OF zmisdisp6 WITH HEADER LINE,
            rhrs_disp TYPE TABLE OF zmisdisp4 WITH HEADER LINE,
            brkd_disp TYPE TABLE OF zmisdisp7 WITH HEADER LINE.
      DEFINE fill_kpp.
        clear l_flag.
        loop at it_mic_data where kurztext = &1.
          l_mean1 = it_mic_data-mittelwert.
          l_mean = it_mic_data-mean.
          if l_flag = ' '.
            move : &2                     to keyp_disp-desc,
                   l_mean1                to keyp_disp-ftd.
            if     it_mic_data-kurztext = 'Ingot Pb SHG Zinc'.
              l_mean2 = v_mean_pbshg.
              move   l_mean2                to keyp_disp-avg.
            elseif it_mic_data-kurztext = 'Ingot Cu SHG Zinc'.
              l_mean2 = v_mean_cushg.
              move   l_mean2                to keyp_disp-avg.
            elseif it_mic_data-kurztext = 'Ingot Cd SHG Zinc'.
              l_mean2 = v_mean_cdshg.
              move   l_mean2                to keyp_disp-avg.
            elseif it_mic_data-kurztext = 'Ingot Fe SHG Zinc'.
              l_mean2 = v_mean_feshg.
              move   l_mean2                to keyp_disp-avg.
            elseif it_mic_data-kurztext = 'Ingot Zn SHG Zinc'.
              l_mean2 = v_mean_znshg.
              move   l_mean2                to keyp_disp-avg.
            else.
              move   l_mean                 to keyp_disp-avg.
            endif.
            if     it_mic_data-masseinhsw = 'GLI'.
              move 'g/l'                  to keyp_disp-unit.
            elseif it_mic_data-masseinhsw = 'PPM'.
              move 'ppm'                  to keyp_disp-unit.
            elseif it_mic_data-masseinhsw = 'NO'.
              move 'no'                   to keyp_disp-unit.
            else.
              move it_mic_data-masseinhsw to keyp_disp-unit.
            endif.
            append  keyp_disp.
            clear keyp_disp.
            move 'X' to l_flag.
          else.
            move : l_mean1                to keyp_disp-ftd.
            append  keyp_disp.
            clear keyp_disp.
          endif.
        endloop.
        if sy-subrc is not initial.
          move &2 to keyp_disp-desc.
          append  keyp_disp.
          clear keyp_disp.
        endif.
      END-OF-DEFINITION.
      DEFINE fill_kp1.
        clear l_flag.
        loop at it_mic_data where kurztext = &1.
          l_mean1 = it_mic_data-mittelwert.
          l_mean = it_mic_data-mean.
          if l_flag = ' '.
            move : &2                     to keyp_dis1-desc,
                   l_mean1                to keyp_dis1-ftd.
            if     it_mic_data-kurztext = 'Ingot Pb SHG Zinc'.
              l_mean2 = v_mean_pbshg.
              move   l_mean2                to keyp_dis1-avg.
            elseif it_mic_data-kurztext = 'Ingot Cu SHG Zinc'.
              l_mean2 = v_mean_cushg.
              move   l_mean2                to keyp_dis1-avg.
            elseif it_mic_data-kurztext = 'Ingot Cd SHG Zinc'.
              l_mean2 = v_mean_cdshg.
              move   l_mean2                to keyp_dis1-avg.
            elseif it_mic_data-kurztext = 'Ingot Fe SHG Zinc'.
              l_mean2 = v_mean_feshg.
              move   l_mean2                to keyp_dis1-avg.
            elseif it_mic_data-kurztext = 'Ingot Zn SHG Zinc'.
              l_mean3 = v_mean_znshg.
              move   l_mean3                to keyp_dis1-avg.
              clear  l_mean3.
              l_mean3 = it_mic_data-mittelwert.
              move   l_mean3                to keyp_dis1-ftd.
            else.
              move   l_mean                 to keyp_dis1-avg.
            endif.
            if     it_mic_data-masseinhsw = 'GLI'.
              move 'g/l'                  to keyp_dis1-unit.
            elseif it_mic_data-masseinhsw = 'PPM'.
              move 'ppm'                  to keyp_dis1-unit.
            elseif it_mic_data-masseinhsw = 'NO'.
              move 'no'                   to keyp_dis1-unit.
            else.
              move it_mic_data-masseinhsw to keyp_dis1-unit.
            endif.
            append  keyp_dis1.
            clear keyp_dis1.
            move 'X' to l_flag.
          else.
            if it_mic_data-kurztext = 'Ingot Zn SHG Zinc'.
              clear  l_mean3.
              l_mean3 = it_mic_data-mittelwert.
              move   l_mean3                to keyp_dis1-ftd.
            else.
              move : l_mean1                to keyp_dis1-ftd.
            endif.
            append  keyp_dis1.
            clear keyp_dis1.
          endif.
        endloop.
        if sy-subrc is not initial.
          move &2 to keyp_dis1-desc.
          append  keyp_dis1.
          clear keyp_dis1.
        endif.
      END-OF-DEFINITION.
    *FIRST PAGE
    ********PLANT HEADER
      MOVE 'CLZS HYDRO I PLANT - DAILY PRODUCTION REPORT' TO v_header.
    ********Production figure
      LOOP AT it_disp1.
        prod_disp-desc        = it_disp1-desc.
        prod_disp-d_plnmg     = it_disp1-d_plnmg.
        prod_disp-d_menge     = it_disp1-d_menge.
        prod_disp-u_plnmg     = it_disp1-u_plnmg.
        prod_disp-u_menge     = it_disp1-u_menge.
        prod_disp-avg         = it_disp1-avg.
        prod_disp-ask_rate    = it_disp1-ask_rate.
        prod_disp-m_plnmg     = it_disp1-m_plnmg.
        prod_disp-y_plnmg     = it_disp1-y_plnmg.
        prod_disp-y_menge     = it_disp1-y_menge.
        prod_disp-y_variance  = it_disp1-y_variance.
        APPEND prod_disp.
      ENDLOOP.
    ********Key performance parameters
      MOVE 'ROASTER :' TO keyp_disp-desc.
      APPEND  keyp_disp.
      fill_kpp '% S/S IN 45 DEG'            '  S/S in Calcine'.
      MOVE 'LEACHING :' TO keyp_disp-desc.
      APPEND  keyp_disp.
      fill_kpp '% S/S IN  CAL'              '  S/S in Calcine'.
      fill_kpp '%water soluble Zn'          '  W/S Zn in Jarosite Cake'.
      fill_kpp '%total Zn in HBF'           '  T/Zn in Jarosite cake'.
      fill_kpp 'ZINC IN CT'                 '  Zn in Conditioning tank'.
      fill_kpp 'g/l zn in neutral overflow' '  Zn in Electrolyte Prod (gpl)'.
      fill_kpp 'PPM CU IN PS25'             '  Purified Solution Cu'.
      fill_kpp 'PPM CADMIUM IN PS25'        '  Purified Solution Cd'.
      fill_kpp 'PPM COBALT IN PS25'         '  Purified Solution Co'.
      MOVE 'CELLHOUSE :' TO keyp_disp-desc.
      APPEND  keyp_disp.
      fill_kpp 'g/l zinc in cell feed'      '  Cell Feed Zinc gpl'.
      fill_kpp 'GPL ACID IN CELL FEED'      '  Cell Feed acidity gpl'.
      fill_kpp 'g/l manganese in cell feed' '  Cell Feed Mn gpl'.
      LOOP AT t_imrg_add_disp.
        MOVE:  t_imrg_add_disp-desc    TO keyp_disp-desc,
               t_imrg_add_disp-d_value TO keyp_disp-ftd,
               t_imrg_add_disp-c_value TO temp,
               temp                    TO keyp_disp-avg.
        IF t_imrg_add_disp-units = 'NO'.
          MOVE:  'no'                    TO keyp_disp-unit.
        ELSE.
          MOVE:  t_imrg_add_disp-units   TO keyp_disp-unit.
        ENDIF.
        APPEND keyp_disp.CLEAR keyp_disp.
      ENDLOOP.
      fill_kp1 'Ingot Pb SHG Zinc'          '  Ingot Pb SHG Zinc'.
      fill_kp1 'Ingot Cu SHG Zinc'          '  Ingot Cu SHG Zinc'.
      fill_kp1 'Ingot Cd SHG Zinc'          '  Ingot Cd SHG Zinc'.
      fill_kp1 'Ingot Fe SHG Zinc'          '  Ingot Fe SHG Zinc'.
      fill_kp1 'Ingot Zn SHG Zinc'          '  Ingot Zn SHG Zinc'.
    ********Cellhouse power
      CATCH SYSTEM-EXCEPTIONS bcd_zerodivide = 1.
        v_m_kwh_mt = v_ind8_m / cathode_recipt.
        v_m_mt_mw  = cathode_recipt / ( v_ind8_m / 24000 ).
      ENDCATCH.
      MOVE : v_d_kwh_mt TO disp_d_kwh_mt,
             v_m_kwh_mt TO disp_m_kwh_mt,
             v_d_mt_mw  TO disp_d_mt_mw,
             v_m_mt_mw  TO disp_m_mt_mw.
    *SECOND PAGE
    ********Raw Material
      LOOP AT it_disp3.
        rmat_disp-desc    = it_disp3-desc.
        rmat_disp-opstk   = it_disp3-opstk.
        rmat_disp-d_recpt = it_disp3-d_recpt.
        rmat_disp-u_recpt = it_disp3-u_recpt.
        rmat_disp-d_cons  = it_disp3-d_cons.
        rmat_disp-u_cons  = it_disp3-u_cons.
        rmat_disp-clstk   = it_disp3-clstk.
        APPEND rmat_disp.
      ENDLOOP.
    ********Work in Progress
    ********Finished Goods
    ********power consumption
      l_no_of_days = v_mm_en_dt+6(2).
      CATCH SYSTEM-EXCEPTIONS bcd_zerodivide = 1.
        l_bptarget   = ( v_bp_nrms_p * v_gross_d ) / l_no_of_days.
        l_act_d      = v_ind6_d + v_ind2_d - ( v_ind3_d + ( v_ind4_d / 2 ) ) - v_ind5_d.
        l_act_c      = v_ind6_m + v_ind2_m - ( v_ind3_m + ( v_ind4_m / 2 ) ) - v_ind5_m.
        l_pow_gen    = ( v_ind2_d / 1000 ) / v_ind7_d.
      ENDCATCH.
      l_pow_gen_d  = v_ind2_d / 1000.
      l_pow_gen_c  = v_ind9_m / 1000.
      l_rec_con_d_kwh = v_ind8_d.
      l_rec_con_c_kwh = v_ind8_m.
      l_rec_con_d_mw  = v_ind8_d / 24000.
      l_rec_con_c_mw  = v_ind8_m / ( 24000 * v_days_pased ).
      LOOP AT t_disp_curr.
        rcur_disp-time    = t_disp_curr-time.
        rcur_disp-current = t_disp_curr-current.
        rcur_disp-kah     = t_disp_curr-kah.
        APPEND rcur_disp.
        AT LAST.
          SUM.
          tot_kah = t_disp_curr-kah.
        ENDAT.
      ENDLOOP.
      avg_kah = tot_kah / '24'.
    *********************running hrs
      LOOP AT it_disp6.
        rhrs_disp-desc    = it_disp6-desc.
        rhrs_disp-opstk   = it_disp6-d_runhrs.
        rhrs_disp-d_recpt = it_disp6-m_runhrs.
        APPEND rhrs_disp.
      ENDLOOP.
      rhrs_disp-desc    = 'Turbo Generator'.
      rhrs_disp-opstk   = v_turbod.
      rhrs_disp-d_recpt = v_turboc.
      INSERT rhrs_disp INDEX 2.
    **********************BREAK_DOWN & OIL
      CLEAR value.
      LOOP AT itab2.
        IF itab2-equnr = 'NMZ-EH01G001'.
          PERFORM s_conversion_h.
          v_ftd_h1 = v_ftd_h1 + value.
          CLEAR value.
        ENDIF.
        IF itab2-equnr = 'NMZ-EH01G002'.
          PERFORM s_conversion_h.
          v_ftd_h2 = v_ftd_h2 + value.
          CLEAR value.
        ENDIF.
        IF itab2-equnr = 'NMZ-EH01V003'.
          PERFORM s_conversion_h.
          v_ftd_h3 = v_ftd_h3 + value.
          CLEAR value.
        ENDIF.
        IF itab2-equnr = 'NMZ-EH01V001'.
          PERFORM s_conversion_h.
          v_ftd_h4 = v_ftd_h4 + value.
          CLEAR value.
        ENDIF.
        IF itab2-equnr = 'NMZ-EH01V002'.
          PERFORM s_conversion_h.
          v_ftd_h5 = v_ftd_h5 + value.
          CLEAR value.
        ENDIF.
      ENDLOOP.
      LOOP AT t_oil.
        AT END OF ind.
          SUM.
          IF t_oil-ind = 1.
            v_***_o1 = t_oil-cdiff * 1000.
          ELSEIF t_oil-ind = 2.
            v_***_o2 = t_oil-cdiff * 1000.
          ELSEIF t_oil-ind = 3.
            v_***_o4 = t_oil-cdiff * 1000.
          ELSEIF t_oil-ind = 4.
            v_***_o5 = t_oil-cdiff * 1000.
          ENDIF.
        ENDAT.
        IF t_oil-idate = p_repdt.
          IF t_oil-ind = 1.
            l_cdiff1 = l_cdiff1 + t_oil-cdiff.
          ELSEIF t_oil-ind = 2.
            l_cdiff2 = l_cdiff2 + t_oil-cdiff.
          ELSEIF t_oil-ind = 3.
            l_cdiff3 = l_cdiff3 + t_oil-cdiff.
          ELSEIF t_oil-ind = 4.
            l_cdiff4 = l_cdiff4 + t_oil-cdiff.
          ENDIF.
        ENDIF.
      ENDLOOP.
      v_ftd_o1 = l_cdiff1 * 1000.
      v_ftd_o2 = l_cdiff2 * 1000.
      v_ftd_o4 = l_cdiff3 * 1000.
      v_ftd_o5 = l_cdiff4 * 1000.
    *********Breakdown details----3rd page
      LOOP AT itab INTO wa.
        CALL FUNCTION 'FLTP_CHAR_CONVERSION'
          EXPORTING
            decim = 0
            expon = 0
            input = wa-auszt
            ivalu = 'X'
          IMPORTING
            flstr = wk_char_auszt.
        CONDENSE wk_char_auszt NO-GAPS.
        wk_flt_auszt = wk_char_auszt.
        wk_flt_auszt = wk_flt_auszt / 3600.
        duration = wk_flt_auszt.
        brkd_disp-eqdesc = wa-eqktx.
        brkd_disp-nodesc = wa-qmtxt.
        brkd_disp-hrs    = duration.
        APPEND brkd_disp.
      ENDLOOP.
      MOVE : v_ftd_h1 TO disp_ftd_h1,
             v_ftd_h2 TO disp_ftd_h2,
             v_ftd_h3 TO disp_ftd_h3,
             v_ftd_h4 TO disp_ftd_h4,
             v_ftd_h5 TO disp_ftd_h5,
             v_ftd_o1 TO disp_ftd_o1,
             v_ftd_o2 TO disp_ftd_o2,
             v_ftd_o4 TO disp_ftd_o4,
             v_ftd_o5 TO disp_ftd_o5,
             v_***_o1 TO disp_***_o1,
             v_***_o2 TO disp_***_o2,
             v_***_o4 TO disp_***_o4,
             v_***_o5 TO disp_***_o5,
             l_bptarget      TO disp_bptarget,
             l_act_d         TO disp_act_d,
             l_act_c         TO disp_act_c,
             l_rec_con_d_kwh TO disp_d_kwh,
             l_rec_con_c_kwh TO disp_c_kwh,
             l_rec_con_d_mw  TO disp_d_mw,
             l_rec_con_c_mw  TO disp_c_mw,
             tot_kah         TO disp_tot_kah,
             avg_kah         TO disp_avg_kah,
             l_pow_gen       TO disp_pow_gen,
             l_pow_gen_d     TO disp_pow_gen_d,
             l_pow_gen_c     TO disp_pow_gen_c,
             v_cath_d        TO disp_cath_d,
             v_cath_c        TO disp_cath_c,
             v_anode_d       TO disp_anode_d,
             v_anode_c       TO disp_anode_c.
      wa_output_options-tdimmed = 'X'.
      wa_control_parameters-device = 'PRINTER'.
      wa_control_parameters-preview = 'X'.
      IF rb3 = 'X'.
        wa_control_parameters-getotf  = 'X'.
        wa_control_parameters-no_dialog = 'X'.
      ENDIF.
      CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
        EXPORTING
          formname           = 'ZHZLPP_CLZSN_DAILY_MIS'
        IMPORTING
          fm_name            = v_form_name
        EXCEPTIONS
          no_form            = 1
          no_function_module = 2
          OTHERS             = 3.
      IF sy-subrc <> 0.
      ENDIF.
      CALL FUNCTION v_form_name
        EXPORTING
          control_parameters         = wa_control_parameters
          output_options             = wa_output_options
          user_settings              = 'X'
          header                     = v_header
          date                       = p_repdt
          l_bptarget                 = disp_bptarget
          l_act_d                    = disp_act_d
          l_act_c                    = disp_act_c
          disp_d_kwh                 = disp_d_kwh
          disp_c_kwh                 = disp_c_kwh
          disp_d_mw                  = disp_d_mw
          disp_c_mw                  = disp_c_mw
          disp_tot_kah               = disp_tot_kah
          disp_avg_kah               = disp_avg_kah
          disp_d_kwh_mt              = disp_d_kwh_mt
          disp_m_kwh_mt              = disp_m_kwh_mt
          disp_d_mt_mw               = disp_d_mt_mw
          disp_m_mt_mw               = disp_m_mt_mw
          disp_pow_gen               = disp_pow_gen
          disp_pow_gen_d             = disp_pow_gen_d
          disp_pow_gen_c             = disp_pow_gen_c
          disp_ftd_h1                = disp_ftd_h1
          disp_ftd_h2                = disp_ftd_h2
          disp_ftd_h3                = disp_ftd_h3
          disp_ftd_h4                = disp_ftd_h4
          disp_ftd_h5                = disp_ftd_h5
          disp_ftd_o1                = disp_ftd_o1
          disp_ftd_o2                = disp_ftd_o2
          disp_ftd_o4                = disp_ftd_o4
          disp_ftd_o5                = disp_ftd_o5
          disp_***_o1                = disp_***_o1
          disp_***_o2                = disp_***_o2
          disp_***_o4                = disp_***_o4
          disp_***_o5                = disp_***_o5
          disp_cath_d                = disp_cath_d
          disp_cath_c                = disp_cath_c
          disp_anode_d               = disp_anode_d
          disp_anode_c               = disp_anode_c
      IMPORTING
        job_output_info              = w_return           " .    
        TABLES
          prod_tab                   = prod_disp
          keyp_tab                   = keyp_disp
          remk_tab                   = it_remarks
          rmat_tab                   = rmat_disp
          rwip_tab                   = it_disp4
          rfng_tab                   = it_disp_fg
          rcur_tab                   = rcur_disp
          rhrs_tab                   = rhrs_disp
          brkd_tab                   = brkd_disp
          keyp_tab1                  = keyp_dis1
        EXCEPTIONS
          formatting_error           = 1
          internal_error             = 2
          send_error                 = 3
          user_canceled              = 4
          OTHERS                     = 5
      IF sy-subrc <> 0.
        MESSAGE 'Error in printing form' TYPE 'I'.
      ENDIF.
    ********Downloading in pdf format.
      IF rb3 = 'X'.
        IF l_usract <> 9.
          MOVE fullpath TO l_path.
          i_otf[] = w_return-otfdata[].
          CALL FUNCTION 'CONVERT_OTF'                   "
            EXPORTING
              format                = 'PDF'
              max_linewidth         = 132
            IMPORTING
              bin_filesize          = v_len_in
            TABLES
              otf                   = i_otf
              lines                 = i_tline
            EXCEPTIONS
              err_max_linewidth     = 1
              err_format            = 2
              err_conv_not_possible = 3
              OTHERS                = 4.
          IF sy-subrc <> 0.
          ENDIF.
          CALL FUNCTION 'WS_DOWNLOAD'
            EXPORTING
              bin_filesize            = v_len_in
              filename                = l_path
              filetype                = 'BIN'
            IMPORTING
              filelength              = w_filesize
            TABLES
              data_tab                = i_tline
            EXCEPTIONS
              file_open_error         = 1
              file_write_error        = 2
              invalid_filesize        = 3
              invalid_type            = 4
              no_batch                = 5
              unknown_error           = 6
              invalid_table_width     = 7
              gui_refuse_filetransfer = 8
              customer_error          = 9
              OTHERS                  = 10.
          IF sy-subrc = 0.
            MESSAGE 'File downloaded successfully' TYPE 'S'.
          ENDIF.
        ENDIF.
      ENDIF.
      IF sy-batch = 'X'.               " SENDING MAILS IF SCHEDULED IN BACKGROUND
        DATA: formname           TYPE tdsfname,
              fm_name            TYPE rs38l_fnam,
              control_parameters TYPE ssfctrlop,
              output_options     TYPE ssfcompop,
              job_output_info    TYPE ssfcrescl,
              otf_data           TYPE tsfotf.
        DATA: otf                TYPE TABLE OF itcoo WITH HEADER LINE,
              doctab_archive     TYPE TABLE OF docs WITH HEADER LINE,
              lines              TYPE TABLE OF tline WITH HEADER LINE,
              bin_filesize       TYPE i.
        CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
          EXPORTING
            formname           = 'ZHZLPP_CLZSN_DAILY_MIS'
          IMPORTING
            fm_name            = v_form_name
          EXCEPTIONS
            no_form            = 1
            no_function_module = 2
            OTHERS             = 3.
        IF sy-subrc <> 0.
        ENDIF.
        control_parameters-no_dialog = 'X'.
        control_parameters-getotf    = 'X'.
        CALL FUNCTION v_form_name
          EXPORTING
            control_parameters = control_parameters
            header             = v_header
            date               = p_repdt
            l_bptarget         = disp_bptarget
            l_act_d            = disp_act_d
            l_act_c            = disp_act_c
            disp_d_kwh         = disp_d_kwh
            disp_c_kwh         = disp_c_kwh
            disp_d_mw          = disp_d_mw
            disp_c_mw          = disp_c_mw
            disp_tot_kah       = disp_tot_kah
            disp_avg_kah       = disp_avg_kah
            disp_d_kwh_mt      = disp_d_kwh_mt
            disp_m_kwh_mt      = disp_m_kwh_mt
            disp_d_mt_mw       = disp_d_mt_mw
            disp_m_mt_mw       = disp_m_mt_mw
            disp_pow_gen       = disp_pow_gen
            disp_pow_gen_d     = disp_pow_gen_d
            disp_pow_gen_c     = disp_pow_gen_c
            disp_ftd_h1        = disp_ftd_h1
            disp_ftd_h2        = disp_ftd_h2
            disp_ftd_h3        = disp_ftd_h3
            disp_ftd_h4        = disp_ftd_h4
            disp_ftd_h5        = disp_ftd_h5
            disp_ftd_o1        = disp_ftd_o1
            disp_ftd_o2        = disp_ftd_o2
            disp_ftd_o4        = disp_ftd_o4
            disp_ftd_o5        = disp_ftd_o5
            disp_***_o1        = disp_***_o1
            disp_***_o2        = disp_***_o2
            disp_***_o4        = disp_***_o4
            disp_***_o5        = disp_***_o5
            disp_cath_d        = disp_cath_d
            disp_cath_c        = disp_cath_c
            disp_anode_d       = disp_anode_d
            disp_anode_c       = disp_anode_c
          IMPORTING
            job_output_info    = job_output_info
          TABLES
            prod_tab           = prod_disp
            keyp_tab           = keyp_disp
            remk_tab           = it_remarks
            rmat_tab           = rmat_disp
            rwip_tab           = it_disp4
            rfng_tab           = it_disp_fg
            rcur_tab           = rcur_disp
            rhrs_tab           = rhrs_disp
            brkd_tab           = brkd_disp
            keyp_tab1          = keyp_dis1
          EXCEPTIONS
            formatting_error   = 1
            internal_error     = 2
            send_error         = 3
            user_canceled      = 4
            OTHERS             = 5.
        IF sy-subrc = 0.
          otf_data = job_output_info-otfdata[].
          CALL FUNCTION 'CONVERT_OTF_2_PDF'
            IMPORTING
              bin_filesize           = bin_filesize
            TABLES
              otf                    = otf_data[]
              doctab_archive         = doctab_archive[]
              lines                  = lines[]
            EXCEPTIONS
              err_conv_not_possible  = 1
              err_otf_mc_noendmarker = 2
              OTHERS                 = 3.
          IF sy-subrc = 0.
            SUBMIT rsconn01 with mode = 'INT' AND RETURN.
    *                                    ----<<distrubution list>>----
            PERFORM mail_users TABLES lines USING 'MIS-HY1A' v_header.   " Donot put more than 8 email-ids
            PERFORM mail_users TABLES lines USING 'MIS-HY1B' v_header.   " in a distribution list
            PERFORM mail_users TABLES lines USING 'MIS-HY1C' v_header.
            PERFORM mail_users TABLES lines USING 'MIS-HY1D' v_header.
            PERFORM mail_users TABLES lines USING 'MIS-HY1E' v_header.
            PERFORM mail_users TABLES lines USING 'MIS-HY1F' v_header.
            PERFORM mail_users TABLES lines USING 'MIS-HY1G' v_header.
            PERFORM mail_users TABLES lines USING 'MIS-HY1H' v_header.
            PERFORM mail_users TABLES lines USING 'MIS-HY1I' v_header.
            PERFORM mail_users TABLES lines USING 'MIS-HY1J' v_header.
          ENDIF.
        ENDIF.
      ENDIF.
    ENDFORM.                    " print
    *&      Form  get_download_path
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM get_download_path .
      CALL FUNCTION 'GUI_FILE_SAVE_DIALOG'
        EXPORTING
          window_title      = 'Download as pdf file'
          default_extension = 'pdf'
        IMPORTING
          fullpath          = fullpath
          user_action       = l_usract.
      IF l_usract = '9'.
        STOP.
      ENDIF.
    ENDFORM.                    " get_download_path
    *&      Form  mail_users
    *       text
    *      -->P_LINES  text
    *      -->P_2153   text
    *      -->P_V_HEADER  text
    FORM mail_users  TABLES   p_lines STRUCTURE tline
                     USING    p_dist_list
                              p_v_header.
      CONSTANTS: c_raw TYPE so_obj_tp VALUE 'RAW',
                 c_pdf TYPE so_obj_tp VALUE 'PDF',
                 c_255 TYPE i VALUE 255,
                 c_134 TYPE i VALUE 134,
                 c_x   TYPE c VALUE 'X'.
      DATA: document_data LIKE sodocchgi1 ,
            tab_lines     TYPE i,
            contents_txt  TYPE TABLE OF solisti1 WITH HEADER LINE,
            contents_bin  TYPE TABLE OF solisti1 WITH HEADER LINE,
            packing_list  TYPE TABLE OF sopcklsti1 WITH HEADER LINE,
            object_header TYPE TABLE OF solisti1 WITH HEADER LINE,
            receivers     TYPE TABLE OF somlreci1 WITH HEADER LINE,
            l_str(255) ,
            v1 TYPE i,
            v2 TYPE i,
            v3 TYPE i.
      document_data-obj_name  = 'EMAIL'.
      document_data-obj_descr = p_v_header.  " SUBJECT LINE
      CONCATENATE 'Please find the attached SAP generated Daily Production Report for the day'
                  p_repdt+6(2)
                  p_repdt+4(2)
                  '.' p_repdt+0(4)
             INTO contents_txt.
      APPEND      contents_txt.
      CLEAR       contents_txt.
      APPEND      contents_txt.
      APPEND      contents_txt.
      DESCRIBE TABLE contents_txt LINES tab_lines.
      READ TABLE     contents_txt INDEX tab_lines.
      document_data-doc_size  = ( tab_lines - 1 ) * 255 + STRLEN( contents_txt ).
      document_data-doc_size  = tab_lines .
      CLEAR packing_list-transf_bin.
      packing_list-head_start = 1.
      packing_list-head_num   = 0.
      packing_list-body_start = 1.
      packing_list-body_num   = tab_lines.
      packing_list-doc_type   = c_raw.
      packing_list-doc_size   = document_data-doc_size.
      APPEND packing_list.
      LOOP AT p_lines.
        CLEAR l_str.
        l_str+0(2)   = p_lines-tdformat.
        l_str+2(132) = p_lines-tdline.
        v2 = v1 + c_134.
        IF v2 LE c_255.
          contents_bin-line+v1(c_134) = l_str. v1 = v2.
        ELSE.
          v3 = v2 - c_255.
          v2 = c_255 - v1.
          IF NOT v2 IS INITIAL.
            contents_bin-line+v1(v2) = l_str+0(v2).
          ENDIF.
          APPEND contents_bin.
          CLEAR  contents_bin.
          v1 = v3.
          v3 = 134 - v1.
          IF NOT v1 IS INITIAL.
            contents_bin-line+0(v1) = l_str+v3(v1).
          ENDIF.
        ENDIF.
      ENDLOOP.
      APPEND contents_bin.
      CLEAR  contents_bin.
      DESCRIBE TABLE contents_bin LINES tab_lines.
      READ     TABLE contents_bin INDEX tab_lines.
      CONCATENATE 'Hy-I Report'
                  p_repdt+6(2)
                  p_repdt+4(2)
                  '.' p_repdt+0(4)
                  '.pdf'
             INTO object_header.
      APPEND object_header.
      packing_list-transf_bin = c_x.
      packing_list-head_start = 1.
      packing_list-head_num   = 1.
      packing_list-body_start = 1.
      packing_list-body_num   = tab_lines.
      packing_list-doc_type   = c_pdf.
      packing_list-obj_name   = 'text1'.
      packing_list-obj_descr  = 'Production report'.
      packing_list-doc_size   = tab_lines * 255 + STRLEN( contents_bin ).
      APPEND packing_list.
      receivers-receiver      = p_dist_list.
      receivers-rec_type      = 'C'.
      APPEND receivers.
      CLEAR  receivers.
      CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
        EXPORTING
          document_data              = document_data
          put_in_outbox              = ' '
          SENDER_ADDRESS             = 'CZPPPLG'
          SENDER_ADDRESS_TYPE        = 'B'
          commit_work                = 'X'
        TABLES
          packing_list               = packing_list
          object_header              = object_header
          contents_bin               = contents_bin
          contents_txt               = contents_txt
          receivers                  = receivers
        EXCEPTIONS
          too_many_receivers         = 1
          document_not_sent          = 2
          document_type_not_exist    = 3
          operation_no_authorization = 4
          parameter_error            = 5
          x_error                    = 6
          enqueue_error              = 7
          OTHERS                     = 8.
      IF sy-subrc = 0.
        WAIT UP TO 2 SECONDS.
        SUBMIT rsconn01 with mode = 'INT' AND RETURN.
      ENDIF.
    ENDFORM.                    " mail_users

  • Need standrad program for vendor aging report

    Hi
      Need standrad program for vendor aging report.
    Please reply me only standrad programs.
    Point are sure.
    Regards,
    kumar

    Hi Pankaj
       sorry to say that this is not my required program.
    I need vendor aging report like s_alr_87012178 tc leads to customer aging report.
    Thanks for your effort.
    points are awarded.
    Regards,
    kumar

  • Standard print program for fi invoice smartform printing

    Hi friend,
    Is there any standard print program available for printing FI related invoice .
    I want print program for printing smartforms.
    I want to know any method for searching the standard print program for printing smartform in Fi module.
    Thanks & Regards,
    Sathish

    Hi,
    FI related Forms will be configure in SPRO.
    Goto SPRO and FI related applivcation.
    There you will find the related forms and programs.

  • Ho to find script and the related print program for print preview of PO

    Hi All,
    We are getting some text output on the print preview of a purchase order.
    How can we determine the driver script and the corresponding print program for this.
    Can you please guide on this.
    Thanks in advance.
    Regards,
    Sanjeet

    U Can check Driver program and form related to that program table is TNAPPR
    Goto NACE t.code
    Selct Application ---> click on output types
    then u wil get one window there select proper output type and
    double click on  processing  routines u wil get form name and related driver program name also
    Plz try this....
    Edited by: Upender Verma on Feb 9, 2009 1:33 PM
    Edited by: Upender Verma on Feb 9, 2009 1:37 PM

  • Print program for PO

    Hi..
    I'm trying to find the print program for MEDRUCK(Purchase Order). In NACE I found a program called 'SAPFM06P' for print output medium.. But it is a subroutine pool.. How to execute this program?
    Regards,
    Nithy

    Yes, the printing program is called by the form
    ENTRY_NEU in 'SAPFM06P'

  • Print program for delivery output printing

    Hi,
    I need help with creating a custom smart form and print program for outbound delivery.
    1. i want to know how to select data in my print program ? i mean how to i get the delivery number when the output type is executed.
    2. What parameters are to be passed so that delivery opens as soon as the output type is processed.
    Thank you.
    Usha

    Details of output triggered can be obtained from nast. By default structure nast is populated with the values when the print program is being processed. Field OBJKY is used for the delivery number; Application : V2
    It could be enough to pass an internal table with item level details and an header structure. This more or less is dependent on the output desired.
    Rgds,
    Karthik

  • Print program for the smartform for selecting the output type (email/fax)

    Hi All,
    Requirement :I have to create a print program for the smartform where the output type may be print out,email or fax ,so i need to put the condition for selecting the output type (like printout,email,fax).
    can any body please let me know how  to put the condition for selecting the desired  output type ?
    Thanks in advance
    Rahul

    Hi
    It is not the output type that has to be changed
    it is the MEDIUM which you have to change and configure
    for printout medium is 1
    for FAX medium is 2
    for MAIL it is 7.
    so instead of printout change the medium to 2 or 7 for the same output type and attach to the same driver program and smartform/form.
    Reward points for useful Answers
    Regards
    Anji

  • How to find standard print programs for ADOBE forms

    Hi All,
    My question is how to find the standard SAP print program for a SAP provided ADOBE form. For example - how to find what is the satndard SAP provided print program for the ADOBE form for payment advice 'F110_AVIS_INT'.
    As by default in the transaction F110 (where the payment advice form configuration is done), a SAP Script form is attached and the print program assigned is an SAP Script (as it contains call to function module like open_form, write_form... ) program and not an ADOBE print program.

    Hi Renu,
    I have gone through the link provided by you but it only shows a list of standard PDF forms.
    My question was how to find the standard SAP provided print program (or driver program which contains the data fetch logic and passing of the data to the interface of the ADOBE form) for these SAP provided ADOBE form.
    If SAP has provided standard ADOBE form then definitely they would also have provided the standard print program too ?
    @Srihari,
    The path system --> Status --> program SAPLFPUIFB is the standard program for the SFP transaction and not for the payment advice form F110_AVIS_INT.
    It will be same for all the ADOBE forms if we check in System --> Status --> Program.

  • Contents of a custom print program for a custom smartform

    Hi...
    Can you please tell me if we are writing a custom print program from scratch for a custom smartform for which there is no standard form available what are all the things that need to be coded in the print program..
    My doubts on this are if we are configuring this form for output types of PO purchase order for mediums 1,2, 5 and 6 does any extra coding need to be done in the print program that is related to these mediums or is it just a configuration issue..
    Apart from data retrieval part and call the function modules to send the data to smartforms what are the other things that we need to code in a custom smartform..  Anything that we need to code related to printing issues..
    It would be great if someone can post a custom print program for any output type valid for mediums 1, 2, 5 and 6.
    Also my last doubt is do we need to do anything in SE11 in designing a smartform and in what context do we need it...
    Thanks and appreciate your help... Surely will reward for all the helpful answers..
    Thanks again..
    Kanthi..

    Hi,
    yes you need to create your own print program. You need to catch printing information and to send data to your smartforms.
    To send data to your smartforms you need to use structure describe in the data dictionnary.
    This is a peace of code for sending information to a smartform that will be print used an external program (Esker)
      DATA: it_data       LIKE TABLE OF zssf_bl WITH HEADER LINE,
            w_formname TYPE tdsfname ,
            w_fm_name  TYPE rs38l_fnam ,
            is_output  TYPE ssfcompop ,
            is_control TYPE ssfctrlop ,
            is_job_out TYPE ssfcresop .
    *  Récupère le nom du module fonction.
      MOVE 'Z_BL_STT' TO w_formname.
      CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
        EXPORTING
          formname                 = w_formname
        IMPORTING
          fm_name                  = w_fm_name
        EXCEPTIONS
          OTHERS                   = 3.
    * Prépare les paramètres d'impression.
      is_output-xsfcmode   = 'X'.
      is_output-xsf        = 'X'.
      is_output-xsfoutmode = 'S'.
      is_output-xsfoutdev  = 'DOCL'.
      is_output-xsfformat  = 'X'.
      is_output-tdnoprev   = 'X'.
      is_output-tdnoprint  = ' '.
      is_output-tddest     = 'DOCL'.
      is_output-tdprinter  = 'PLAIN'.
      is_output-tdnewid    = 'X'.
      is_output-tdimmed    = 'X'.
      is_output-tddelete   = 'X'.
      is_control-no_dialog = 'X'.
      is_control-preview   = ' '.
      is_control-no_open   = 'X'.
      is_control-no_close  = ' '.
    * Prepare le formulaire
      CALL FUNCTION 'SSF_OPEN'
        EXPORTING
          user_settings      = ' '
          output_options     = is_output
          control_parameters = is_control
        IMPORTING
          job_output_options = is_job_out
        EXCEPTIONS
          OTHERS             = 5.
    * Appels du formulaire.
      CALL FUNCTION w_fm_name
        EXPORTING
          control_parameters = is_control
          output_options     = is_output
          is_bl              = zbl_soustrait
        TABLES
          it_data            = it_data
        EXCEPTIONS
          OTHERS             = 5.
    You need to catch information from the NAST table maybe
    Rgd
    Frédéric

  • SAPscript print program for multiple pages

    Hello friends,
    How to write SAPscript print program for multiple pages? please help me.
    Thanks and regards,
    Shivanand.

    I believe you have posted this question in the wrong forum.  There is an ABAP Forms Printing Forum.

Maybe you are looking for

  • Binary String to numerical binary array

    Hello, I initially created binary strings from numerical numbers using the "%03b" command on the 'Format into String' block. I then concatenated the various strings into one string that is now composed of 16bits. However, I need to convert this strin

  • ODBC fails but only from ASP page (12154)

    I have a working Win2k/MDAC 2.6 box, that can connect perfectly to an Oracle 8.1.7 on another machine. I can TNS ping this host, I set up an ODBC DSN and I can connect from the Oracle ODBC Test program. I wrote a simple script (see below) to test the

  • Mavericks Won't Respond After Extended Sleep

    hello i have 9/2013 27" iMac with 7-port hub and 2-tb western digital disk attached (both usb 3) running OS X 10.9. more often than not my iMac after being in sleep for several hours will freeze at login screen rendering logging back in to my session

  • Can´t burn cd

    Can somebody help me?  Cannot burn cd from itunes on a windows (sorry) XP system. Import works fine

  • My apple is sign is disabled?

    IMHO apple I'd is disabled, I have been on hold for 20 Min. Any suggestions?