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.