Wednesday, August 6, 2025

Print Multiple Smartform from Driver Program

 REPORT ZPRIMT_MUL_SMARTFORMS.


DATA :  FM_NAME  TYPE RS38L_FNAM,
        CONTROL_PARAMETERS  TYPE  SSFCTRLOP,
        OUTPUT_OPTIONS  TYPE SSFCOMPOP,
        JOB_OUTPUT_INFO TYPE  SSFCRESCL.

types : begin of tp_itab,
        name(50),
        date(8),
        amt(15),
        end of tp_itab.

data : gt_itab type STANDARD TABLE OF tp_itab,
       gs_itab type tp_itab,
       gv_cnt type i,
       gv_cnt2 type i.


DATA : GV_FILE  TYPE STRING,
       GV_FLAG  TYPE FLAG,
       GV_FLAG1 TYPE FLAG.



SELECTION-SCREEN begin of BLOCK b1 WITH FRAME TITLE text-001.
 PARAMETERS : IP_NAME  TYPE CHAR100,
              IP_CDATE  TYPE  SYDATUM,
              IP_AMT  TYPE  PC207-BETRG.
SELECTION-SCREEN skip.
PARAMETERS : P_FILE    TYPE IBIPPARMS-PATH OBLIGATORY.
SELECTION-SCREEN end of BLOCK b1.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.

*  PERFORM get_file_path CHANGING filename.
  CALL FUNCTION 'F4_FILENAME'
*    EXPORTING
*      PROGRAM_NAME  = SYST-CPROG
*      DYNPRO_NUMBER = SYST-DYNNR
*      FIELD_NAME    = ''
    IMPORTING
      FILE_NAME = P_FILE.


START-OF-SELECTION.

 if P_FILE is NOT INITIAL.

   GV_FILE = P_FILE.
  CLEAR : GT_ITAB[].

  CALL FUNCTION 'GUI_UPLOAD'
    EXPORTING
      FILENAME                = GV_FILE
      FILETYPE                = 'ASC'
      HAS_FIELD_SEPARATOR     = 'X'
*     HEADER_LENGTH           = 0
*     READ_BY_LINE            = 'X'
*     DAT_MODE                = ' '
*     CODEPAGE                = ' '
*     IGNORE_CERR             = ABAP_TRUE
*     REPLACEMENT             = '#'
*     CHECK_BOM               = ' '
*     VIRUS_SCAN_PROFILE      =
*     NO_AUTH_CHECK           = ' '
*  IMPORTING
*     FILELENGTH              =
*     HEADER                  =
    TABLES
      DATA_TAB                = GT_ITAB[]
*  CHANGING
*     ISSCANPERFORMED         = ' '
    EXCEPTIONS
      FILE_OPEN_ERROR         = 1
      FILE_READ_ERROR         = 2
      NO_BATCH                = 3
      GUI_REFUSE_FILETRANSFER = 4
      INVALID_TYPE            = 5
      NO_AUTHORITY            = 6
      UNKNOWN_ERROR           = 7
      BAD_DATA_FORMAT         = 8
      HEADER_NOT_ALLOWED      = 9
      SEPARATOR_NOT_ALLOWED   = 10
      HEADER_TOO_LONG         = 11
      UNKNOWN_DP_ERROR        = 12
      ACCESS_DENIED           = 13
      DP_OUT_OF_MEMORY        = 14
      DISK_FULL               = 15
      DP_TIMEOUT              = 16
      OTHERS                  = 17.
  IF SY-SUBRC <> 0.
* Implement suitable error handling here
  ENDIF.


 ENDIF.

    CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
      EXPORTING
        FORMNAME                 = 'ZCHEQUE_PRINT1'
*       VARIANT                  = ' '
*       DIRECT_CALL              = ' '
     IMPORTING
       FM_NAME                  = FM_NAME
     EXCEPTIONS
       NO_FORM                  = 1
       NO_FUNCTION_MODULE       = 2
       OTHERS                   = 3
              .
    IF SY-SUBRC <> 0.
* Implement suitable error handling here
    ENDIF.

    describe table gt_itab lines gv_cnt.


  IF FM_NAME IS NOT INITIAL.

    loop at gt_itab into gs_itab.

    if gv_cnt ne 1.

    gv_cnt2 = sy-tabix .
    case gv_cnt2.
    when '1'.
    control_parameters-no_open   = space.
    control_parameters-no_close  = 'X'.
    when gv_cnt .
    control_parameters-no_open   = 'X'.
    control_parameters-no_close  = space.
    when others.
    control_parameters-no_open   = 'X'.
    control_parameters-no_close  = 'X'.
    endcase.

    endif.

    CONTROL_PARAMETERS-PREVIEW    = 'X'.
*    CONTROL_PARAMETERS-GETOTF    = 'X'.   "to get otf data

    CONTROL_PARAMETERS-NO_DIALOG  = 'X'.
    OUTPUT_OPTIONS-TDDEST         = 'LP01'.

    ip_name   = gs_itab-NAME.
    IP_CDATE  = gs_itab-DATE.
    CONDENSE gs_itab-AMT.
    IP_AMT = gs_itab-AMT.

  CALL FUNCTION FM_NAME             "'/1BCDWB/SF00000259'
   EXPORTING
*     ARCHIVE_INDEX              =
*     ARCHIVE_INDEX_TAB          =
*     ARCHIVE_PARAMETERS         =
     CONTROL_PARAMETERS         = CONTROL_PARAMETERS
*     MAIL_APPL_OBJ              =
*     MAIL_RECIPIENT             =
*     MAIL_SENDER                =
     OUTPUT_OPTIONS             = OUTPUT_OPTIONS
     USER_SETTINGS              = 'X'
     IP_NAME                    = IP_NAME
     IP_CDATE                   = IP_CDATE
     IP_AMOUNT                  = IP_AMT
*   IMPORTING
*     DOCUMENT_OUTPUT_INFO       =
*     JOB_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.
* Implement suitable error handling here
  ENDIF.

*   CALL FUNCTION 'HR_IT_DISPLAY_WITH_PDF'
**    EXPORTING
**      IV_PDF          =
*    TABLES
*      OTF_TABLE       = JOB_OUTPUT_INFO-OTFDATA.

    endloop.

  ENDIF.
END-OF-SELECTION.

No comments:

Post a Comment