0% found this document useful (0 votes)
31 views7 pages

Zovp Upload Send Document

Uploaded by

selim
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
31 views7 pages

Zovp Upload Send Document

Uploaded by

selim
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 7

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

*& Report ZOVP_UPLOAD_SEND_DOCUMENT


*&---------------------------------------------------------------------*
*& OnVision Upload and Send Document
*&---------------------------------------------------------------------*
REPORT zovp_upload_send_document.

DATA : gt_itab TYPE TABLE OF zovs_upload_itab_str WITH HEADER LINE,

gt_user_fld TYPE TABLE OF zonvisiont_002 WITH HEADER LINE,


gt_master TYPE TABLE OF zonvisiont_003 WITH HEADER LINE,
gt_tables TYPE TABLE OF zonvisiont_004 WITH HEADER LINE,
go_ov_tools TYPE REF TO zovcl_tools,
gt_bin_data TYPE TABLE OF zonvisiont_005 WITH HEADER LINE,
BEGIN OF lt_split OCCURS 0,
line(255),
END OF lt_split,

go_exception TYPE REF TO zcx_onvision_check_any_error,


gv_error TYPE string,
gv_credit TYPE i.

CONSTANTS : gc_result_success LIKE gt_itab-result VALUE 'success'.

" ALV Definitions..


INCLUDE zovi_upload_send_document_alv.

START-OF-SELECTION.
PERFORM get_data.
PERFORM process_data.
PERFORM get_remaining_credit.

END-OF-SELECTION.
PERFORM initialization.
PERFORM show_alv.

*&---------------------------------------------------------------------*
*& Form get_Data
*&---------------------------------------------------------------------*
FORM get_data.

CLEAR : gt_itab,gt_itab[],gt_user_fld[],
gt_master[],gt_tables[].

" Select data


SELECT * FROM zonvisiont_001
INTO CORRESPONDING FIELDS OF TABLE gt_itab.
CHECK sy-subrc EQ 0.
" Get user fields mapping..
SELECT * FROM zonvisiont_002 INTO TABLE gt_user_fld.
SORT gt_user_fld BY documenttype.

" Get document data


SELECT * FROM zonvisiont_003 INTO TABLE gt_master
FOR ALL ENTRIES IN gt_itab
WHERE sap_guid = gt_itab-sap_guid
AND uuid = gt_itab-uuid.
SELECT * FROM zonvisiont_004 INTO TABLE gt_tables
FOR ALL ENTRIES IN gt_itab
WHERE sap_guid = gt_itab-sap_guid
AND uuid = gt_itab-uuid.
SORT gt_master BY uuid fieldname.
SORT gt_tables BY uuid.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form show_alv
*&---------------------------------------------------------------------*
FORM show_alv.
DATA : lv_n2 TYPE numc2,
lv_field(40).

PERFORM alv_lsa TABLES alv_fieldcat


USING : 'MARK' 'NO_OUT' 'X'.
* 'EBELN' 'HOTSPOT' 'X',
* 'EBELP' 'HOTSPOT' 'X',
* 'BANFN' 'HOTSPOT' 'X',
* 'BNFPO' 'HOTSPOT' 'X'.

LOOP AT gt_user_fld.
lv_n2 = sy-tabix.
CONCATENATE 'USERFLD' lv_n2 INTO lv_field.
LOOP AT alv_fieldcat WHERE fieldname = lv_field.
alv_fieldcat-seltext_s =
alv_fieldcat-seltext_m =
alv_fieldcat-reptext_ddic =
alv_fieldcat-seltext_l = gt_user_fld-fieldname.
MODIFY alv_fieldcat.
ENDLOOP.
ENDLOOP.
DO 20 TIMES.
ADD 1 TO lv_n2.
CONCATENATE 'USERFLD' lv_n2 INTO lv_field.
DELETE alv_fieldcat WHERE fieldname = lv_field.
IF sy-subrc NE 0.
EXIT.
ENDIF.
ENDDO.

PERFORM alv_set_event USING :slis_ev_user_command,


slis_ev_top_of_page ,
slis_ev_pf_status_set.
PERFORM call_alv_function USING 'GT_ITAB[]'
'ALV_FIELDCAT[]' 'ALV_LAYOUT' .
ENDFORM. " show_alv
*&---------------------------------------------------------------------*
*& Form initialization
*&---------------------------------------------------------------------*
FORM initialization.
alv_repid = sy-repid.
alv_layout-zebra = 'X' .
alv_layout-colwidth_optimize = 'X'.
alv_layout-box_fieldname = 'MARK' .
PERFORM initialization_alv USING TEXT-001 .
PERFORM alv_get_events USING 'ALV_EVENTS[]'.
PERFORM alv_fieldcat_merge USING 'ALV_FIELDCAT[]' 'GT_ITAB'
'ZOVS_UPLOAD_ITAB_STR'.

ENDFORM. " initialization


*---------------------------------------------------------------------*
* FORM NETPR_PF_STATUS_SET *
*---------------------------------------------------------------------*
FORM pf_status_set USING rt_extab TYPE slis_t_extab.
SET PF-STATUS 'MYGUI'.
ENDFORM. "pf_status_set
*&---------------------------------------------------------------------*
*& Form user_command
*&---------------------------------------------------------------------*
FORM user_command USING r_ucomm ls_selfield TYPE slis_selfield.
CASE r_ucomm.
WHEN 'UPLOAD'.
PERFORM upload.
WHEN 'GETDATA'.
PERFORM get_doc_data.

WHEN '&IC1'.
* READ TABLE gt_itab INDEX ls_selfield-tabindex.
* CASE ls_selfield-fieldname.
* WHEN 'EBELN' OR 'EBELP'.
* SET PARAMETER ID 'BES' FIELD gt_itab-ebeln.
* SET PARAMETER ID 'BSP' FIELD gt_itab-ebelp.
* CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
* WHEN 'BANFN' OR 'BNFPO'.
* SET PARAMETER ID 'BAN' FIELD gt_itab-banfn.
* SET PARAMETER ID 'BAP' FIELD gt_itab-bnfpo.
* CALL TRANSACTION 'ME53N' AND SKIP FIRST SCREEN.
* WHEN 'GIRMK'.
* PERFORM show_goods_receipts.
* WHEN OTHERS.
* ENDCASE.
ENDCASE.
ls_selfield-refresh = 'X'.
ls_selfield-col_stable = 'X'.
ls_selfield-row_stable = 'X'.

ENDFORM. "user_command
*&---------------------------------------------------------------------*
*& Form UPLOAD
*&---------------------------------------------------------------------*
FORM upload.
DATA : lv_filename TYPE string,
lv_filesize TYPE i,
lv_rc TYPE i,
lv_error TYPE string,

lt_datatab TYPE TABLE OF tdline WITH HEADER LINE,


lv_long_filename LIKE dbmsgora-filename,
lv_pure_filename LIKE sdbah-actid,
lv_pure_extension LIKE sdbad-funct,

lt_filetab TYPE filetable WITH HEADER LINE,


lv_xstring TYPE xstring.

cl_gui_frontend_services=>file_open_dialog(
EXPORTING window_title = 'Upload Document'
CHANGING file_table = lt_filetab[]
rc = lv_rc ).

CHECK lv_rc >= 0.


READ TABLE lt_filetab INDEX 1.
CHECK sy-subrc EQ 0.
lv_filename = lt_filetab.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = lv_filename
filetype = 'BIN'
IMPORTING
filelength = lv_filesize
TABLES
data_tab = lt_datatab
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.

ENDIF.

SPLIT lv_filename AT '\' INTO TABLE lt_split.


LOOP AT lt_split.
ENDLOOP.
lv_filename = lt_split-line.

CALL METHOD go_ov_tools->ov_extract_document


EXPORTING
i_file_name = lv_filename
i_doc_xstring = lv_xstring
i_doc_size = lv_filesize
i_doc_bin_data_tab = lt_datatab[]
* i_doc_type = 'INVOICE'
IMPORTING
e_error = lv_error.

IF lv_error IS INITIAL.

CLEAR : gt_itab.
MOVE-CORRESPONDING go_ov_tools->gs_system_info_data TO gt_itab.
gt_itab-statu = icon_led_green.
gt_itab-data_xstring = lv_xstring.
gt_itab-data_object = go_ov_tools.

APPEND LINES OF go_ov_tools->gt_data_master_tab TO gt_master.


APPEND LINES OF go_ov_tools->gt_data_table_tab TO gt_tables.
SORT gt_master BY uuid fieldname.
SORT gt_tables BY uuid.
PERFORM process_line USING gt_itab.
gt_itab-mark = abap_true.
APPEND gt_itab.
ENDIF.

PERFORM get_remaining_credit.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form PROCESS_DATA
*&---------------------------------------------------------------------*
FORM process_data.

IF go_ov_tools IS INITIAL.
TRY.
CREATE OBJECT go_ov_tools.
CATCH zcx_onvision_check_any_error INTO go_exception.
gv_error = go_exception->get_text( ).
MESSAGE gv_error TYPE 'E'.
ENDTRY.
ENDIF.

LOOP AT gt_itab.

gt_itab-data_object = go_ov_tools.

PERFORM process_line USING gt_itab.

MODIFY gt_itab.
ENDLOOP.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form GET_REMAINING_CREDIT
*&---------------------------------------------------------------------*
FORM get_remaining_credit.

gv_credit = go_ov_tools->ov_get_credit( ).

ENDFORM.
*&---------------------------------------------------------------------*
*& Form PROCESS_LINE
*&---------------------------------------------------------------------*
FORM process_line USING ps_itab TYPE zovs_upload_itab_str.

DATA : lv_n2 TYPE numc2,


lv_field(50).
FIELD-SYMBOLS : <f>.

CASE ps_itab-result.
WHEN gc_result_success.
ps_itab-statu = icon_led_green.
WHEN OTHERS.
ps_itab-statu = icon_led_red.
ENDCASE.

LOOP AT gt_user_fld.
lv_n2 = sy-tabix.
CONCATENATE 'PS_ITAB-USERFLD' lv_n2 INTO lv_field.
ASSIGN (lv_field) TO <f>.
CHECK sy-subrc EQ 0.
CHECK ps_itab-documenttype = gt_user_fld-documenttype.
READ TABLE gt_master WITH KEY uuid = ps_itab-uuid
fieldname = gt_user_fld-fieldname
BINARY SEARCH.
CHECK sy-subrc EQ 0.
<f> = gt_master-value.
ENDLOOP.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form GET_DOC_DATA
*&---------------------------------------------------------------------*
FORM get_doc_data.

DATA : lv_error TYPE string.

LOOP AT gt_itab WHERE mark = abap_true.


EXIT.
ENDLOOP.
IF sy-subrc NE 0.
MESSAGE i002(zonvision).
EXIT.
ENDIF.

LOOP AT gt_itab WHERE mark = abap_true.


CALL METHOD gt_itab-data_object->ov_get_document_byuuid
EXPORTING
i_uuid = gt_itab-uuid
i_file_name = gt_itab-doc_name
i_doc_size = gt_itab-doc_size
i_doc_type = gt_itab-documenttype
IMPORTING
e_error = lv_error.

IF lv_error IS INITIAL.
MOVE-CORRESPONDING gt_itab-data_object->gs_system_info_data
TO gt_itab.
gt_itab-statu = icon_led_green.
DELETE gt_master WHERE uuid = gt_itab-uuid.
DELETE gt_tables WHERE uuid = gt_itab-uuid.
APPEND LINES OF gt_itab-data_object->gt_data_master_tab
TO gt_master.
APPEND LINES OF gt_itab-data_object->gt_data_table_tab
TO gt_tables.
SORT gt_master BY uuid fieldname.
SORT gt_tables BY uuid.
PERFORM process_line USING gt_itab.
ELSE.
gt_itab-statu = icon_led_red.
gt_itab-message = lv_error.
ENDIF.

MODIFY gt_itab.

ENDLOOP.

ENDFORM.

You might also like