Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Yorgpfcg

Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 10

*&---------------------------------------------------------------------*

*& Report YTESTPFCG


*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ytestpfcg NO STANDARD PAGE HEADING LINE-SIZE 255.
INCLUDE:<icon>.
************************************************************************
* User Selections
*
************************************************************************
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-b01.
*SELECTION-SCREEN BEGIN OF LINE.
*SELECTION-SCREEN COMMENT 01(30) FOR FIELD p_back.
*PARAMETERS: p_back AS CHECKBOX DEFAULT ' ' USER-COMMAND back.
PARAMETERS: filename LIKE rlgrap-filename DEFAULT
'C:\'.
PARAMETERS : del RADIOBUTTON GROUP act .
PARAMETERS : update RADIOBUTTON GROUP act DEFAULT 'X'.
*SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK blk1.
SELECTION-SCREEN BEGIN OF BLOCK blk2 WITH FRAME TITLE text-b02.
SELECTION-SCREEN END OF BLOCK blk2.
*PARAMETERS:
*p_land1 LIKE zlastrun-text1 NO-DISPLAY,
" Country k
*p_tzone LIKE zlastrun-text2 DEFAULT sy-zonlo NO-DISPLAY. " Time Zon
************************************************************************
* Data Declarations
*
************************************************************************
DATA: program_name LIKE sy-repid,
report_width TYPE p VALUE '132',
delimiter TYPE c VALUE 9,
buffer(1000),
hdr1(35),
bdc_opened,
ses_name LIKE apqi-groupid,
nodata VALUE '/' .
* BDC Data
DATA: BEGIN OF bdc_data OCCURS 0.
INCLUDE STRUCTURE bdcdata.
DATA: END OF bdc_data.
DATA: BEGIN OF itab OCCURS 0,
field1(8195),
END OF itab,

BEGIN OF file_itab OCCURS 0,


orglevel(12) TYPE c,
role LIKE agr_define-agr_name,
low(40) TYPE c,
high(40) TYPE c,
END OF file_itab,
BEGIN OF itab_org OCCURS 0,
counter(06) TYPE c,
varbl(40) TYPE c,
low(40) TYPE c,
high(40) TYPE c,
END OF itab_org,
s_auth_data LIKE pt1250 OCCURS 0 WITH HEADER LINE ,
s_org_level LIKE pt1252 OCCURS 0 WITH HEADER LINE.
* WORK VARIABLE
DATA: org LIKE file_itab-orglevel,
role LIKE file_itab-role,
w_cnt TYPE i,
cnt TYPE i,
counter(2) TYPE c,
total_records TYPE i,
hits TYPE i,
w_push(4) TYPE c,
w_scroll TYPE i,
w_var1(2) TYPE c,
w_var2(2) TYPE c,
w_var3 TYPE i,
do_update VALUE 'X',
gen.
DATA file_itab1 LIKE file_itab OCCURS 0 WITH HEADER LINE.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR filename.
* IF p_back = space.
* Get path for the data file.
PERFORM get_filename USING filename.
* ELSE.
*
PERFORM get_unix_filename USING filename.
* ENDIF.
START-OF-SELECTION.
PERFORM upload_file.
PERFORM populate_itab.
IF update EQ 'X'.
PERFORM get_auth.
ELSE.
PERFORM get_auth1.
ENDIF.
* PERFORM update.
*&---------------------------------------------------------------------*
*&
Form dynpro

*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->P_BDC_DATA text
*
-->P_0227 text
*
-->P_0228 text
*----------------------------------------------------------------------*
FORM dynpro TABLES p_bdc_data STRUCTURE bdc_data
"Insert correct name for <...>
USING
value(p_0227)
value(p_0228).
CLEAR p_bdc_data.
p_bdc_data-program = p_0227.
p_bdc_data-dynpro = p_0228.
p_bdc_data-dynbegin = 'X'.
APPEND p_bdc_data.
ENDFORM.
" DYNPRO
*&---------------------------------------------------------------------*
*&
Form bdc_field
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->P_BDC_DATA text
*
-->P_0884 text
*
-->P_0885 text
*----------------------------------------------------------------------*
FORM bdc_field TABLES p_bdc_data STRUCTURE bdc_data
"Insert correct name for <...>
USING
value(p_0234)
value(p_0235).
IF p_0235 <> nodata.
CLEAR p_bdc_data.
p_bdc_data-fnam = p_0234.
p_bdc_data-fval = p_0235.
APPEND p_bdc_data.
ENDIF.
ENDFORM.
" bdc_field
*&---------------------------------------------------------------------*
*&
Form INSERT_BDC
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->P_BDC_DATA text
*
-->P_0497 text
*----------------------------------------------------------------------*
FORM insert_bdc TABLES p_bdc_data STRUCTURE bdc_data
"Insert correct name for <...>
USING
value(p_0610).
CALL FUNCTION 'BDC_INSERT'
EXPORTING
tcode
= p_0610
TABLES
dynprotab
= p_bdc_data
EXCEPTIONS
internal_error = 1
not_open
= 2
queue_error
= 3
tcode_invalid
= 4

printing_invalid = 5
posting_invalid = 6
OTHERS
= 7.
IF sy-subrc <> 0.
WRITE:/ 'Error in inserting bdc data'.
ENDIF.
ENDFORM.
" INSERT_BDC
*&---------------------------------------------------------------------*
*&
Form close_bdc
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM close_bdc.
CALL FUNCTION 'BDC_CLOSE_GROUP'
EXCEPTIONS
not_open
= 1
queue_error = 2
OTHERS
= 3.
IF sy-subrc <> 0.
WRITE:/ 'Error in closing the BDC group'.
ENDIF.
ENDFORM.
" close_bdc
*&---------------------------------------------------------------------*
*&
Form upload_file
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM upload_file.
DATA: filename1 TYPE string.
filename1 = filename.
* IF p_back IS INITIAL.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename
filetype
TABLES
data_tab
EXCEPTIONS
file_open_error
file_read_error
no_batch
gui_refuse_filetransfer
invalid_type
no_authority
unknown_error
bad_data_format
header_not_allowed
separator_not_allowed
header_too_long

= filename1
= 'ASC'
= itab
=
=
=
=
=
=
=
=
=
=
=

1
2
3
4
5
6
7
8
9
10
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.
WRITE:/ icon_cancel AS ICON,
'Error in reading file' COLOR COL_NEGATIVE,30 filename
.
EXIT.
ELSE.
WRITE:/ icon_okay AS ICON, 'file read'.
ENDIF.
* ELSE.
*
OPEN DATASET filename FOR INPUT IN TEXT MODE ENCODING DEFAULT.
*
*
DO.
*
READ DATASET filename INTO itab.
*
IF sy-subrc NE 0.
*
EXIT.
*
ENDIF.
*
*
APPEND itab.
*
CLEAR itab.
*
ENDDO.
*
CLOSE DATASET filename.
*
*
* ENDIF.

ENDFORM.
" upload_file
*&---------------------------------------------------------------------*
*&
Form get_filename
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->P_FILENAME text
*----------------------------------------------------------------------*
FORM get_filename USING
p_filename.
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
def_path
= p_filename
mask
= ',*.*,*.*.'
mode
= 'S'
IMPORTING
filename
= p_filename
EXCEPTIONS
inv_winsys
= 1
no_batch
= 2
selection_cancel = 3
selection_error = 4
OTHERS
= 5.
IF sy-subrc <> 0.
EXIT.
ENDIF.

ENDFORM.
" get_filename
*&---------------------------------------------------------------------*
*&
Form get_unix_filename
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->P_FILENAME text
*----------------------------------------------------------------------*
FORM get_unix_filename USING
p_file.
DATA: t_path LIKE dxfields-longpath,
a_flag(1).
CALL FUNCTION 'F4_DXFILENAME_TOPRECURSION'
EXPORTING
i_location_flag = 'A'
i_server
= ' '
i_path
= '/usr/tmp/'
filemask
= '*.*'
fileoperation = 'R'
IMPORTING
o_path
= t_path
abend_flag
= a_flag.
IF sy-subrc <> 0.
ELSE.
p_file = t_path.
ENDIF.
ENDFORM.
" get_unix_filename
*&---------------------------------------------------------------------*
*&
Form init_bdc
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->P_SES_NAME text
*
-->P_SY_UNAME text
*----------------------------------------------------------------------*
FORM init_bdc USING
p_ses_name
p_sy_uname.
IF bdc_opened = space.
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
client = sy-mandt
group = p_ses_name
keep = 'X'
user = p_sy_uname.
bdc_opened = 'X'.
ENDIF.
ENDFORM.
" init_bdc
*&---------------------------------------------------------------------*
*&
Form populate_itab

*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM populate_itab.
LOOP AT itab.
SPLIT itab AT cl_abap_char_utilities=>horizontal_tab
INTO file_itab-orglevel
file_itab-role
file_itab-low
file_itab-high.
TRANSLATE file_itab-orglevel TO UPPER CASE.
APPEND file_itab.
ENDLOOP.
SORT file_itab BY orglevel low.
ENDFORM.
" populate_itab
*&---------------------------------------------------------------------*
*&
Form GET_ORG_DATA
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->P_0640 text
*----------------------------------------------------------------------*
FORM get_org_data USING
value(p_0640).
SELECT counter varbl low high INTO TABLE itab_org
FROM agr_1252
WHERE agr_name EQ file_itab-role.
SORT itab_org BY counter varbl low.
ENDFORM.
" GET_ORG_DATA
*&---------------------------------------------------------------------*
*&
Form get_auth
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM get_auth.
LOOP AT file_itab.
AT NEW role.
CALL FUNCTION 'PRGN_1250_READ_AUTH_DATA'
EXPORTING
activity_group
= file_itab-role
TABLES
auth_data
= s_auth_data
EXCEPTIONS
no_data_available = 1

OTHERS
= 2.
IF sy-subrc <> 0.
IF sy-msgid IS INITIAL.
MESSAGE i000(zenh) WITH 'No data available'.
ELSE.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDIF.

CALL FUNCTION 'PRGN_1252_READ_ORG_LEVELS'


EXPORTING
activity_group
= file_itab-role
TABLES
org_levels
= s_org_level
EXCEPTIONS
no_data_available = 1
OTHERS
= 2.
IF sy-subrc <> 0.
IF sy-msgid IS INITIAL.
MESSAGE i000(zenh) WITH 'No data available'.
ELSE.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDIF.
ENDAT.
s_org_level-varbl = file_itab-orglevel.
s_org_level-low = file_itab-low.
s_org_level-high = file_itab-high.
APPEND s_org_level.
AT END OF role.
PERFORM save_org.
ENDAT.
ENDLOOP.

ENDFORM.
" get_auth
*&---------------------------------------------------------------------*
*&
Form save_org
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM save_org.
CALL FUNCTION 'PRGN_1252_SAVE_ORG_LEVELS'
EXPORTING
activity_group = file_itab-role
TABLES

org_levels

= s_org_level.

IF sy-subrc EQ 0.
CALL FUNCTION 'PRGN_1250_SAVE_AUTH_DATA'
EXPORTING
activity_group = file_itab-role
TABLES
auth_data
= s_auth_data.
ENDIF.
PERFORM db_update_database(saplsuprn).
IF gen EQ 0.
MESSAGE s777(zr).
ENDIF.
ENDFORM.
" save_org
*&---------------------------------------------------------------------*
*&
Form get_auth1
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM get_auth1.
DATA: var1 TYPE string,
var2 TYPE string.
*
var3(40) type c,
*
var4(40) type c.
*
*data: end of struct.
LOOP AT file_itab.
AT NEW role.
CALL FUNCTION 'PRGN_1250_READ_AUTH_DATA'
EXPORTING
activity_group
= file_itab-role
TABLES
auth_data
= s_auth_data
EXCEPTIONS
no_data_available = 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.

CALL FUNCTION 'PRGN_1252_READ_ORG_LEVELS'


EXPORTING
activity_group
= file_itab-role
TABLES
org_levels
= s_org_level
EXCEPTIONS
no_data_available = 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.
ENDAT.
SORT s_org_level BY varbl low.
LOOP AT s_org_level WHERE varbl EQ file_itab-orglevel.
var1 = s_org_level-low.
var2 = s_org_level-high.
IF s_org_level-low = file_itab-low AND s_org_level-high EQ
file_itab-high.
DELETE s_org_level.
ENDIF.
*clear: var1,
*
var2.
ENDLOOP.
AT END OF role.
PERFORM save_org.
ENDAT.
ENDLOOP.
ENDFORM.

"get_auth1

You might also like