You are on page 1of 15

SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-s02.

SELECT-OPTIONS: s_pernr FOR gv_pa0167_sel-pernr,


s_stat2 FOR gv_pa0000_sel-stat2,
s_werks FOR gv_pa0001_sel-werks,
s_btrtl FOR gv_pa0001_sel-btrtl,
s_persg FOR gv_pa0001_sel-persg,
s_persk FOR gv_pa0001_sel-persk,
s_perid FOR gv_ssn_sel.
SELECTION-SCREEN END OF BLOCK b2.
* File path/name:
SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-s03.
PARAMETERS:
p_infl TYPE string DEFAULT 'c:\temp\fidelity_hw_inbound.txt'
LOWER CASE OBLIGATORY,
p_refl TYPE string DEFAULT 'c:\temp\fidelity_hw_ib_recycle.txt'
LOWER CASE OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b3.
* Processing options:
SELECTION-SCREEN BEGIN OF BLOCK b4 WITH FRAME TITLE text-s04.
PARAMETERS: p_proc
RADIOBUTTON GROUP a1 DEFAULT 'X',
"Process
p_test
RADIOBUTTON GROUP a1,
"Test Run
p_effdt LIKE sy-datum DEFAULT sy-datum,
"Effective date
p_stlog
AS CHECKBOX DEFAULT 'X'.
"Log option based on
emp status
SELECT-OPTIONS: s_stat2l FOR gv_pa0000_sel-stat2 DEFAULT '0'. "Log option based
on emp status
SELECTION-SCREEN ULINE.
* Option to override BEGIN DATE on record w/ date below:
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN POSITION 1.
PARAMETERS: p_bgover AS CHECKBOX.
"Over ride begin date
check
SELECTION-SCREEN COMMENT 3(26) text-s05.
SELECTION-SCREEN POSITION 33.
PARAMETERS: p_begda LIKE sy-datum DEFAULT sy-datum.
"Begin date to Over ri
de
SELECTION-SCREEN END OF LINE.
PARAMETERS: p_endda LIKE sy-datum OBLIGATORY.

"End date

*Skip creating BDC data for records where we cannot find SSN:
*PARAMETERS: p_dne AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK b4.
************************************************************************
*-- AT SELECTION-SCREEN OUTPUT
*
************************************************************************
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF screen-group1 = 'NE'.
screen-input = '0'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
************************************************************************
* Initialization

************************************************************************
INITIALIZATION.
*populate the end date override with the current year end date
CONCATENATE sy-datum(4) '1231' INTO p_endda.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_infl.
PERFORM get_filename CHANGING p_infl.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_refl.
PERFORM put_filename CHANGING p_refl.
************************************************************************
*
START-OF-SELECTION
************************************************************************
START-OF-SELECTION.
PERFORM upload TABLES gi_legacy
USING p_infl.
PERFORM file_validation.
IF p_proc = gc_x.
PERFORM process_file.
ENDIF.
END-OF-SELECTION.
IF p_proc = gc_x.
IF gi_session IS NOT INITIAL.
PERFORM write_session.
ENDIF.
ENDIF.
PERFORM log.
*&---------------------------------------------------------------------*
*&
Form GET_FILENAME
*&---------------------------------------------------------------------*
*
Upload the file in the given path
*----------------------------------------------------------------------*
FORM get_filename USING
p_p_file.
DATA: lt_ftable TYPE filetable,
lw_ftable LIKE LINE OF lt_ftable.
DATA: lv_rc TYPE i,
lv_title TYPE string.
lv_title = 'Open'(t01).
CALL METHOD cl_gui_frontend_services=>file_open_dialog
EXPORTING
window_title
= lv_title
default_extension
= 'txt'
initial_directory
= ''
CHANGING
file_table
= lt_ftable
rc
= lv_rc
EXCEPTIONS
file_open_dialog_failed = 1
cntl_error
= 2
error_no_gui
= 3
not_supported_by_gui
= 4
OTHERS
= 5.
READ TABLE lt_ftable INTO lw_ftable INDEX 1.

IF sy-subrc = 0.
p_p_file = lw_ftable-filename.
ENDIF.
ENDFORM.
" GET_FILENAME
*&---------------------------------------------------------------------*
*&
Form PUT_FILENAME
*&---------------------------------------------------------------------*
*
Download the file in the given path
*----------------------------------------------------------------------*
FORM put_filename CHANGING
p_p_refl TYPE string.
DATA: lv_file_name TYPE string,
lv_file_path TYPE string,
lv_title
TYPE string.
lv_title = 'Save'(t02).
CALL METHOD cl_gui_frontend_services=>file_save_dialog
EXPORTING
window_title
= lv_title
initial_directory
= ''
prompt_on_overwrite = gc_x
default_extension
= 'txt'
default_file_name
= '.txt'
CHANGING
filename
= lv_file_name
path
= lv_file_path
fullpath
= p_p_refl
EXCEPTIONS
cntl_error
= 1
error_no_gui
= 2
not_supported_by_gui = 3
OTHERS
= 4.
ENDFORM.
" DOWNLOAD_PATH
*&---------------------------------------------------------------------*
*&
Form UPLOAD
*&---------------------------------------------------------------------*
*
Call Function module "GUI_UPLOAD" to upload the data
*----------------------------------------------------------------------*
FORM upload TABLES file STRUCTURE gw_legacy
USING
p_p_path TYPE string.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename
= p_p_path
TABLES
data_tab
= file
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.
PERFORM error_log USING sy-msgty
sy-msgv1
sy-msgv2
sy-msgv3
sy-msgv4.
ENDIF.
ENDFORM.
" UPLOAD

"#EC NEEDED

*&---------------------------------------------------------------------*
*&
Form FILE_VALIDATION
*&---------------------------------------------------------------------*
*
Validate the file for total count and sum of the amount
*----------------------------------------------------------------------*
FORM file_validation .
DATA : lv_rec_count TYPE i,
lv_d_f10
TYPE p0236-cramo,
lv_ssn TYPE sy-msgv1.
DESCRIBE TABLE gi_legacy LINES gv_legacy_lines.
*Read header record
CLEAR gw_legacy.
READ TABLE gi_legacy INTO gw_legacy INDEX 1.
IF sy-subrc = 0.
CLEAR gw_h.
SPLIT gw_legacy-value AT gc_pipe INTO gw_h-f1
gw_h-f2
gw_h-f3
gw_h-f4
gw_h-f5
gw_h-f6.
IF gw_h-f1 <> gc_h.
PERFORM error_log USING 'E'
'Header Record Not Found'(e02)
space
space
space.
ENDIF.
ELSE.
PERFORM error_log USING 'E'
'Header Record Not Found'(e02)
space
space
space.
ENDIF.
*Read Trailer record
CLEAR gw_legacy.
READ TABLE gi_legacy INTO gw_legacy INDEX gv_legacy_lines.
IF sy-subrc = 0.
CLEAR gw_t.
SPLIT gw_legacy-value AT gc_pipe INTO gw_t-f1
gw_t-f2
gw_t-f3

gw_t-f4
gw_t-f5
gw_t-f6
gw_t-f7
gw_t-f8
gw_t-f9.
IF gw_t-f1 <> gc_t.
PERFORM error_log USING 'E'
'Trailer Record Not Found'(e03)
space
space
space.
ENDIF.
ELSE.
PERFORM error_log USING 'E'
'Trailer Record Not Found'(e03)
space
space
space.
ENDIF.
*Read Detail records
LOOP AT gi_legacy INTO gw_legacy.
IF gw_legacy-value+0(1) <> gc_h AND
gw_legacy-value+0(1) <> gc_t.
CLEAR gw_d.
SPLIT gw_legacy-value AT gc_pipe INTO gw_d-f1
gw_d-f2
gw_d-f3
gw_d-f4
gw_d-f5
gw_d-f6
gw_d-f7
gw_d-f8
gw_d-f9
gw_d-f10
gw_d-f11
gw_d-f12
gw_d-f13
gw_d-f14
gw_d-f15
gw_d-f16.
lv_d_f10 = lv_d_f10 + gw_d-f10.
APPEND gw_d TO gi_d.
ENDIF.
ENDLOOP.
gv_t_f4 = gw_t-f4.
*Check for Summed amount in trailer record
IF gv_t_f4 <> lv_d_f10.
PERFORM error_log USING 'E'
'Summed Amount Mismatch'(e04)
space
space
space.
ENDIF.
*Check total count in trailer record.
DESCRIBE TABLE gi_d LINES lv_rec_count.
gv_t_f2 = gw_t-f2.
IF gv_t_f2 <> lv_rec_count.
PERFORM error_log USING 'E'

'Total Count Mismatch'(e05)


space
space
space.
ENDIF.
IF gi_d[] IS NOT INITIAL.
SELECT pernr
endda
begda
perid
FROM pa0002 INTO TABLE gi_p0002
FOR ALL ENTRIES IN gi_d
WHERE perid = gi_d-f2 AND
begda <= p_effdt AND
endda >= p_effdt.
IF sy-subrc = 0.
SELECT pernr
stat2
FROM pa0000 INTO TABLE gi_p0000
FOR ALL ENTRIES IN gi_p0002
WHERE pernr = gi_p0002-pernr AND
begda <= p_effdt AND
endda >= p_effdt.
SELECT pernr
werks
persg
persk
btrtl
FROM pa0001 INTO TABLE gi_p0001
FOR ALL ENTRIES IN gi_p0002
WHERE pernr = gi_p0002-pernr AND
begda <= p_effdt AND
endda >= p_effdt.
ENDIF.
ENDIF.
LOOP AT gi_d INTO gw_d.
CLEAR: gw_p0002,
lv_ssn,
gw_session,
gw_exclusion.
READ TABLE gi_p0002 INTO gw_p0002
WITH KEY perid = gw_d-f2.
IF sy-subrc <> 0.
CLEAR lv_ssn.
lv_ssn = gw_d-f2.
PERFORM error_log USING 'E'
'SSN ID Invalid,'(e06)
'PERNR not available for'(e07)
lv_ssn
space.
ELSE.
IF NOT gw_p0002-perid IN s_perid.
gw_exclusion-ssn = gw_p0002-perid.
gw_exclusion-pernr = gw_p0002-pernr.
gw_exclusion-msg = 'Exclusion in Selection Screen (SSN)'.
APPEND gw_exclusion TO gi_exclusion.
CLEAR gw_exclusion.

ENDIF.
IF p_stlog = 'X'.
CLEAR: gw_p0000,
gw_stlog.
READ TABLE gi_p0000 INTO gw_p0000
WITH KEY pernr = gw_p0002-pernr.
IF sy-subrc = 0 AND gw_p0000-stat2 IN s_stat2l.
gw_stlog-pernr = gw_p0000-pernr.
APPEND gw_stlog TO gi_stlog.
ENDIF.
ENDIF.
CLEAR gw_p0001.
READ TABLE gi_p0001 INTO gw_p0001
WITH KEY pernr = gw_p0002-pernr.
IF sy-subrc = 0.
IF NOT gw_p0001-werks IN s_werks.
gw_exclusion-ssn = gw_p0002-perid.
gw_exclusion-pernr = gw_p0002-pernr.
gw_exclusion-msg = 'Exclusion in Selection Screen (Personnel Area)'.
APPEND gw_exclusion TO gi_exclusion.
CLEAR gw_exclusion.
ENDIF.
IF NOT gw_p0001-persg IN s_persg.
gw_exclusion-ssn = gw_p0002-perid.
gw_exclusion-pernr = gw_p0002-pernr.
gw_exclusion-msg = 'Exclusion in Selection Screen (Employee Group)'.
APPEND gw_exclusion TO gi_exclusion.
CLEAR gw_exclusion.
ENDIF.
IF NOT gw_p0001-persk IN s_persk.
gw_exclusion-ssn = gw_p0002-perid.
gw_exclusion-pernr = gw_p0002-pernr.
gw_exclusion-msg = 'Exclusion in Selection Screen (Employee Subgroup)'
.
APPEND gw_exclusion TO gi_exclusion.
CLEAR gw_exclusion.
ENDIF.
IF NOT gw_p0001-btrtl IN s_btrtl.
gw_exclusion-ssn = gw_p0002-perid.
gw_exclusion-pernr = gw_p0002-pernr.
gw_exclusion-msg = 'Exclusion in Selection Screen (Personnel Subarea)'
.
APPEND gw_exclusion TO gi_exclusion.
CLEAR gw_exclusion.
ENDIF.
IF NOT gw_p0001-pernr IN s_pernr.
gw_exclusion-ssn = gw_p0002-perid.
gw_exclusion-pernr = gw_p0002-pernr.
gw_exclusion-msg = 'Exclusion in Selection Screen (Personnel number)'.
APPEND gw_exclusion TO gi_exclusion.
CLEAR gw_exclusion.
ENDIF.
ENDIF.
CLEAR: gw_p0000.
READ TABLE gi_p0000 INTO gw_p0000
WITH KEY pernr = gw_p0002-pernr.
IF sy-subrc = 0.
IF NOT gw_p0000-stat2 IN s_stat2.
gw_exclusion-ssn = gw_p0002-perid.

gw_exclusion-pernr = gw_p0002-pernr.
gw_exclusion-msg = 'Exclusion in Selection Screen (Employment Status)'
.
APPEND gw_exclusion TO gi_exclusion.
CLEAR gw_exclusion.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM.
" FILE_VALIDATION
*&---------------------------------------------------------------------*
*&
Form PROCESS_FILE
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM process_file .
DATA: lv_ssn TYPE sy-msgv1,
lv_recycle_lines TYPE i,
lv_index TYPE i VALUE 1,
lv_t_f2_re TYPE i,
lv_t_f4_re TYPE p0236-cramo,
lv_temp_f2_re TYPE char20,
lv_temp_f4_re TYPE char20,
lv_begda TYPE char10, "RP50G-BEGDA,
lv_endda TYPE char10.
IF gi_d[] IS NOT INITIAL.
*Include header file to recycle file
CLEAR: gw_legacy,
gw_recycle.
READ TABLE gi_legacy INTO gw_legacy INDEX 1.
IF sy-subrc = 0.
gw_recycle = gw_legacy.
APPEND gw_recycle TO gi_recycle.
CLEAR gw_recycle.
ENDIF.
*Create BDC Session
PERFORM open_group.
ENDIF.
LOOP AT gi_d INTO gw_d.
CLEAR: gw_p0002,
lv_ssn,
gw_session,
gw_exclusion.
READ TABLE gi_p0002 INTO gw_p0002
WITH KEY perid = gw_d-f2.
IF sy-subrc = 0.
READ TABLE gi_exclusion INTO gw_exclusion
WITH KEY pernr = gw_p0002-pernr.
IF sy-subrc = 0.
CONTINUE.
ENDIF.
IF p_bgover = gc_x.
lv_begda = p_begda.
ELSE.
lv_begda = gw_d-f8.
ENDIF.
lv_endda = p_endda.
PERFORM: date_user_format CHANGING lv_begda,

date_user_format CHANGING lv_endda.


PERFORM: currency_user_format CHANGING gw_d-f10.
*Append session internal table
gw_session-ssn = gw_d-f2.
gw_session-pernr = gw_p0002-pernr.
gw_session-begda = lv_begda.
gw_session-endda = lv_endda.
gw_session-tax = gw_d-f10.
APPEND gw_session TO gi_session.
CLEAR gw_session.
CLEAR gw_bdcdata.
REFRESH gi_bdcdata.
PERFORM bdc_dynpro
PERFORM bdc_field
PERFORM bdc_field
PERFORM bdc_field
PERFORM bdc_field
PERFORM bdc_field
PERFORM bdc_field
PERFORM bdc_field
PERFORM bdc_field
PERFORM bdc_dynpro
PERFORM bdc_field
PERFORM bdc_field
PERFORM bdc_field
PERFORM bdc_field
PERFORM bdc_field
PERFORM bdc_field
PERFORM bdc_field
PERFORM bdc_field
PERFORM bdc_dynpro
PERFORM bdc_field
PERFORM bdc_field
PERFORM bdc_field
PERFORM bdc_field
PERFORM bdc_field

USING 'SAPMP50A' '1000'.


USING 'BDC_OKCODE'
'=INS'.
USING 'RP50G-PERNR'
gw_p0002-pernr.
"'10119'.
USING 'BDC_CURSOR'
'RP50G-ENDDA'.
USING 'RP50G-TIMR6'
'X'.
USING 'RP50G-BEGDA'
lv_begda.
"'010111'.
USING 'RP50G-ENDDA'
lv_endda.
"'12319999'.
USING 'RP50G-CHOIC'
'236'.
USING 'RP50G-SUBTY'
'HLMS'.
USING 'MP023600' '2000'.
USING 'BDC_OKCODE'
'/00'.
USING 'P0236-BEGDA'
lv_begda.
"'01/01/2011'.
USING 'P0236-ENDDA'
lv_endda.
"'12/31/9999'.
USING 'BDC_CURSOR'
'P0236-BPLAN'.
USING 'P0236-BPLAN'
'HLMS'.
USING 'Q0236-EEPER'
'4'.
USING 'Q0236-CRDDT'
lv_begda.
"'01/01/2011'.
USING 'P0236-PERIO'
'4'.
USING 'MP023600' '2000'.
USING 'BDC_OKCODE'
'/00'.
USING 'P0236-BEGDA'
lv_begda.
"'01/01/2011'.
USING 'P0236-ENDDA'
lv_endda.
"'12/31/9999'.
USING 'P0236-BPLAN'
'HLMS'.
USING 'BDC_CURSOR'
'P0236-CRAMO'.

PERFORM bdc_field
PERFORM
PERFORM
PERFORM
PERFORM
PERFORM
PERFORM
PERFORM
PERFORM
PERFORM
PERFORM
PERFORM
PERFORM
PERFORM

USING 'Q0236-EEPER'
'4'.
bdc_field
USING 'Q0236-CRDDT'
lv_begda.
"'01/01/2011'.
bdc_field
USING 'P0236-PERIO'
'4'.
bdc_field
USING 'P0236-CRAMO'
gw_d-f10.
"'
12.34'.
bdc_dynpro
USING 'MP023600' '2000'.
bdc_field
USING 'BDC_OKCODE'
'=UPD'.
bdc_field
USING 'P0236-BEGDA'
lv_begda.
"'01/01/2011'.
bdc_field
USING 'P0236-ENDDA'
lv_endda.
"'12/31/9999'.
bdc_field
USING 'P0236-BPLAN'
'HLMS'.
bdc_field
USING 'BDC_CURSOR'
'P0236-CRAMO'.
bdc_field
USING 'Q0236-EEPER'
'4'.
bdc_field
USING 'Q0236-CRDDT'
lv_begda.
"'01/01/2011'.
bdc_field
USING 'P0236-PERIO'
'4'.
bdc_field
USING 'P0236-CRAMO'
gw_d-f10.
"'
12.34'.
bdc_transaction USING 'PA30'.

PERFORM
ELSE.
*Build recycle file
*Total count for recycle file
lv_t_f2_re = lv_t_f2_re + 1.
*Total sum for recycle file
lv_t_f4_re = lv_t_f4_re + gw_d-f10.
CLEAR gw_recycle.
CONCATENATE gw_d-f1 gw_d-f2 gw_d-f3 gw_d-f4 gw_d-f5
gw_d-f6 gw_d-f7 gw_d-f8 gw_d-f9 gw_d-f10
gw_d-f11 gw_d-f12 gw_d-f13 gw_d-f14 gw_d-f15
gw_d-f16
INTO gw_recycle-value
SEPARATED BY gc_pipe.
APPEND gw_recycle TO gi_recycle.
CLEAR gw_recycle.
ENDIF.
ENDLOOP.
*Populate trailer record to recycle file
lv_temp_f2_re = lv_t_f2_re.
lv_temp_f4_re = lv_t_f4_re.
CONDENSE: lv_temp_f2_re,
lv_temp_f4_re.
DESCRIBE TABLE gi_recycle LINES lv_recycle_lines.
IF lv_recycle_lines > 1.
CLEAR gw_recycle.
CONCATENATE gw_t-f1
lv_temp_f2_re
gw_t-f3
lv_temp_f4_re
gw_t-f5
gw_t-f6
gw_t-f7

gw_t-f8
gw_t-f9
INTO gw_recycle-value SEPARATED BY gc_pipe.
APPEND gw_recycle TO gi_recycle.
CLEAR: gw_recycle,
gv_recycle_flag.
PERFORM download_recycle.
ENDIF.
PERFORM close_group.
ENDFORM.
" PROCESS_FILE
*&---------------------------------------------------------------------*
*&
Form OPEN_GROUP
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM open_group .
DATA lv_user TYPE apqi-userid.
lv_user = sy-uname.
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
client
= sy-mandt
group
= p_group
holddate
= gv_hold
keep
= gv_keep
user
= lv_user
*
DATFM
= ' '
*
DCPFM
= ' '
EXCEPTIONS
client_invalid
= 1
destination_invalid = 2
group_invalid
= 3
group_is_locked
= 4
holddate_invalid
= 5
internal_error
= 6
queue_error
= 7
running
= 8
system_lock_error = 9
user_invalid
= 10
OTHERS
= 11.
IF sy-subrc <> 0.
CLEAR gw_error.
gw_error-msgty = sy-msgid.
gw_error-msgv1 = sy-msgv1.
gw_error-msgv2 = sy-msgv2.
gw_error-msgv3 = sy-msgv3.
gw_error-msgv4 = sy-msgv4.
APPEND gw_error TO gi_error.
CLEAR gw_error.
ELSE.
SKIP 1.
WRITE: 'Session Created -' COLOR 2 INVERSE.
WRITE: p_group COLOR 1 .
ENDIF.
ENDFORM.
" OPEN_GROUP
*----------------------------------------------------------------------*
*
Start new transaction according to parameters
*
*----------------------------------------------------------------------*
FORM bdc_transaction USING p_p_tcode TYPE tstc-tcode.

CALL FUNCTION 'BDC_INSERT'


EXPORTING
tcode
= p_p_tcode
TABLES
dynprotab = gi_bdcdata.
ENDFORM.
"BDC_TRANSACTION
*---------------------------------------------------------------------*
*
FORM CLOSE_GROUP
*
*---------------------------------------------------------------------*
* This form closes any opened BDC session.
*---------------------------------------------------------------------*
FORM close_group.
CALL FUNCTION 'BDC_CLOSE_GROUP'.
ENDFORM.
"close_group
*----------------------------------------------------------------------*
*
Start new screen
*
*----------------------------------------------------------------------*
FORM bdc_dynpro USING p_p_program TYPE bdcdata-program
p_p_dynpro TYPE bdcdata-dynpro.
CLEAR gw_bdcdata.
gw_bdcdata-program = p_p_program.
gw_bdcdata-dynpro = p_p_dynpro.
gw_bdcdata-dynbegin = 'X'.
APPEND gw_bdcdata TO gi_bdcdata.
CLEAR gw_bdcdata.
ENDFORM.
"BDC_DYNPRO
*----------------------------------------------------------------------*
*
Insert field
*
*----------------------------------------------------------------------*
FORM bdc_field USING p_p_fnam
p_p_fval.
CLEAR gw_bdcdata.
gw_bdcdata-fnam = p_p_fnam.
gw_bdcdata-fval = p_p_fval.
APPEND gw_bdcdata TO gi_bdcdata.
CLEAR gw_bdcdata.
ENDFORM.
"BDC_FIELD
*&---------------------------------------------------------------------*
*&
Form DATE_USER_FORMAT
*&---------------------------------------------------------------------*
*
Convert the date to user format
*----------------------------------------------------------------------*
FORM date_user_format CHANGING p_p_date.
DATA : lv_date TYPE string.
IF p_p_date IS NOT INITIAL.
lv_date = p_p_date.
CALL FUNCTION '/SAPDII/SPP05_CONVERT_DATE'
EXPORTING
if_date = lv_date
IMPORTING
ef_date = lv_date.
p_p_date = lv_date.
ENDIF.
ENDFORM.

" DATE_USER_FORMAT

*&---------------------------------------------------------------------*
*&
Form CURRENCY_USER_FORMAT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM currency_user_format CHANGING p_p_amount.
DATA: lv_amount TYPE p0236-cramo,
lv_temp TYPE char20.
lv_amount = p_p_amount.
WRITE lv_amount TO lv_temp.
CONDENSE lv_temp.
p_p_amount = lv_temp.
ENDFORM.
" CURRENCY_USER_FORMAT
*&---------------------------------------------------------------------*
*&
Form ERROR_LOG
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM error_log USING p_p_msg_type TYPE sy-msgty
p_p_msgv1 TYPE sy-msgv1
p_p_msgv2 TYPE sy-msgv2
p_p_msgv3 TYPE sy-msgv3
p_p_msgv4 TYPE sy-msgv4.
CLEAR gw_error.
gw_error-msgty = p_p_msg_type.
gw_error-msgv1 = p_p_msgv1.
gw_error-msgv2 = p_p_msgv2.
gw_error-msgv3 = p_p_msgv3.
gw_error-msgv4 = p_p_msgv4.
APPEND gw_error TO gi_error.
CLEAR gw_error.
ENDFORM.
" ERROR_LOG
*&---------------------------------------------------------------------*
*&
Form WRITE_SESSION
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM write_session .
SKIP 2.
WRITE:/ 'Session Created for Below Record(s)' COLOR 2 INVERSE.
LOOP AT gi_session INTO gw_session.
WRITE:/ gw_session-ssn COLOR 1 INVERSE, 20 gw_session-pernr COLOR 1 INVERSE.
ENDLOOP.
ENDFORM.
" WRITE_SESSION
*&---------------------------------------------------------------------*
*&
Form LOG
*&---------------------------------------------------------------------*
*
Write log file
*----------------------------------------------------------------------*
FORM log .
DATA: lv_msg TYPE string.
SKIP 2.
IF gi_error[] IS NOT INITIAL.
WRITE:/ 'Error Record(s)' COLOR 2 INVERSE.
LOOP AT gi_error INTO gw_error.
CONCATENATE gw_error-msgv1

gw_error-msgv2
gw_error-msgv3
gw_error-msgv4
INTO lv_msg SEPARATED BY space.
CONDENSE lv_msg.
WRITE:/ lv_msg COLOR 1 INVERSE.
ENDLOOP.
IF gv_recycle_flag = gc_x.
SKIP 1.
WRITE: 'Recycle File Saved in -' COLOR 2 INVERSE.
WRITE: p_refl COLOR 1 INVERSE .
ENDIF.
ELSE.
WRITE:/ 'Records validated Successfully' COLOR 2 INVERSE.
ENDIF.
IF gi_stlog[] IS NOT INITIAL.
SKIP 1.
WRITE: 'EE in SELECTED STATUSES' COLOR 2 INVERSE.
LOOP AT gi_stlog INTO gw_stlog.
WRITE:/ gw_stlog-pernr.
ENDLOOP.
ENDIF.
IF gi_exclusion[] IS NOT INITIAL.
SKIP 1.
WRITE: 'List of Pernr Excluded' COLOR 2 INVERSE.
LOOP AT gi_exclusion INTO gw_exclusion.
WRITE:/ gw_exclusion-ssn, gw_exclusion-pernr, gw_exclusion-msg.
ENDLOOP.
ENDIF.
ENDFORM.
" LOG
*&---------------------------------------------------------------------*
*&
Form DOWNLOAD_RECYCLE
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM download_recycle .
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename
= p_refl
TABLES
data_tab
= gi_recycle
EXCEPTIONS
file_write_error
= 1
no_batch
= 2
gui_refuse_filetransfer = 3
invalid_type
= 4
no_authority
= 5
unknown_error
= 6
header_not_allowed
= 7
separator_not_allowed = 8
filesize_not_allowed
= 9
header_too_long
= 10
dp_error_create
= 11
dp_error_send
= 12
dp_error_write
= 13
unknown_dp_error
= 14
access_denied
= 15
dp_out_of_memory
= 16

disk_full
dp_timeout
file_not_found
dataprovider_exception
control_flush_error
OTHERS
IF sy-subrc = 0.
gv_recycle_flag = gc_x.
ENDIF.
ENDFORM.
"

=
=
=
=
=
=

17
18
19
20
21
22.

DOWNLOAD_RECYCLE

You might also like