NotesWhat is notes.io?

Notes brand slogan

Notes - notes.io

TYPES: BEGIN OF st_dms,
mark TYPE c,
edit_mark TYPE c,
sno TYPE zsgslcdt_sno,
dtype TYPE zdt_dms_type,
ddesc TYPE zdt_dms_desc,
ddate TYPE sy-datum,
zremark TYPE zdt_tsf_remarks,
dms_code TYPE zsgslcdt_slc_dms,
zstnd_dms TYPE zsgslcdt_tsf_stnd_dms,
zdms_range TYPE zsgtsftr_dms_typ-zdms_range,
file TYPE string,
END OF st_dms.

TYPES: BEGIN OF ty_zeta,
prognam TYPE repid,
bukrs TYPE bukrs,
werks TYPE werks_d,
mapid TYPE zdt_mapid,
sno TYPE lfnr3,
modules TYPE zdt_module,
param1 TYPE ttet_glparamvalue,
param2 TYPE ttet_glparamvalue,
param3 TYPE ttet_glparamvalue,
param4 TYPE ttet_glparamvalue,
param5 TYPE ttet_glparamvalue,
param6 TYPE ttet_glparamvalue,
param7 TYPE ttet_glparamvalue,
param8 TYPE ttet_glparamvalue,
param9 TYPE ttet_glparamvalue,
param10 TYPE ttet_glparamvalue,
param11 TYPE ttet_glparamvalue,
param12 TYPE ttet_glparamvalue,
param13 TYPE ttet_glparamvalue,
param14 TYPE ttet_glparamvalue,
param15 TYPE ttet_glparamvalue,
param16 TYPE ttet_glparamvalue,
param17 TYPE ttet_glparamvalue,
param18 TYPE ttet_glparamvalue,
param19 TYPE ttet_glparamvalue,
param20 TYPE ttet_glparamvalue,
END OF ty_zeta.



gt_dms_n TYPE TABLE OF st_dms,
gs_dms_n TYPE st_dms,
gs_dms_n1 TYPE st_dms,
ls_zsgtsftr_tsf_dms TYPE zsgtsftr_tsf_dms,
lv_file_path TYPE text255,
lv_size TYPE i,
gv_lrm_policy_status TYPE domname VALUE 'LRM_POLICY_STATUS',
gv_fm_edit_status TYPE domname VALUE 'FM_EDIT_STATUS',
gt_tab TYPE TABLE OF dd07v,
gwa_tab TYPE dd07v,
gv_live TYPE char5,
gv_expired TYPE char10,
gv_icfsi TYPE zsgtsfvndt_tsf_str,
gv_1229 TYPE skoart,
gv_1160 TYPE sbewart,
gv_03 TYPE zsgslcdt_lc_type,
gv_02 TYPE zsgtsfdt_dms_cat,
gv_10 TYPE zsgtsfdt_dms_cat,
gv_01 TYPE zsgtsfdt_dms_cat,
gv_04 TYPE zsgtsfdt_dms_cat,
gv_05 TYPE zsgtsfdt_dms_cat,
gv_06 TYPE zsgtsfdt_dms_cat,
gv_07 TYPE zsgtsfdt_dms_cat,
gv_08 TYPE zsgtsfdt_dms_cat,
gv_09 TYPE zsgtsfdt_dms_cat,
gv_12 TYPE zsgtsfdt_dms_cat,
gv_13 TYPE zsgtsfdt_dms_cat,
gv_30 TYPE zsgtsfdt_dms_cat,
gv_40 TYPE zsgtsfdt_dms_cat,
gv_51 TYPE zsgtsfdt_dms_cat,
gv_60 TYPE zsgtsfdt_dms_cat,
gv_50 TYPE zsgtsfdt_dms_cat,
gv_1 TYPE zdt_typ1,
gv_2 TYPE zdt_txn,
gv_3 TYPE zdt_class,
gv_4 TYPE saktiv,
gv_1215 TYPE zdt_flow,
gv_1119_n TYPE zdt_flow,
c_1917 TYPE zdt_flow,
c_1217 TYPE zdt_flow,
c_1210 TYPE zdt_flow,
c_1918 TYPE zdt_flow,
c_1216 TYPE zdt_flow,
c_1913 TYPE zdt_flow,
c_1903 TYPE zdt_flow,
gv_20_n(2) TYPE c,
c_t1(2) TYPE c,
c_t2(2) TYPE c,
gv_t3_n(2) TYPE c,
gv_c300(4) TYPE c,
gv_001(3) TYPE c,
gv_003(3) TYPE c,
gv_006(3) TYPE c,
gv_usd(3) TYPE c,
gv_sale(4) TYPE c,
gv_purchase(8) TYPE c,
gt_zeta TYPE TABLE OF ty_zeta,
gs_zeta TYPE ty_zeta,
gv_27b TYPE vvsart,
gv_27f TYPE vvsart,
gv_26c TYPE vvsart,
gv_22b TYPE vvsart,
gv_margin(6) TYPE c,
gv_pnl(3) TYPE c,
gv_dty(3) TYPE c,
gv_str(3) TYPE c,
gv_typea TYPE c LENGTH 20,
gv_typeb TYPE c LENGTH 20,
gv_yes(3) TYPE c,
gv_no(2) TYPE c,
wsapp TYPE dappl,
lv_mb TYPE p DECIMALS 2,
lv_kb TYPE p DECIMALS 2,
c_dms_c1_st TYPE cv_storage_cat,
c_file_title TYPE string,
c_000 TYPE doktl_d,
c_00 TYPE dokvr,
c_kb TYPE char5,
c_mb TYPE char5,
c_fr TYPE char5,
ls_documentdata TYPE bapi_doc_draw2,
ls_documentdatax TYPE bapi_doc_drawx2,
c_stcat TYPE cv_storage_cat,
lt_files TYPE TABLE OF bapi_doc_files2,
lw_files TYPE bapi_doc_files2,
lv_dctyp TYPE dokar,
lv_docnr TYPE doknr,
lv_docpr TYPE doktl_d,
lv_docvr TYPE dokvr,
ls_zsgtsftr_tsf_dms TYPE zsgtsftr_tsf_dms,
ls_zsgtsftr_dealdms TYPE zsgslctr_dealdms,
ls_zsgslctr_dealdms TYPE zsgslctr_dealdms,
gv_doc_upload TYPE c,

FIELD-SYMBOLS: <fs_dms_u> TYPE st_dms,

CONSTANTS: cs_down TYPE sy-ucomm VALUE 'DOWN',
c_back TYPE sy-ucomm VALUE 'BACK',
c_cancel TYPE sy-ucomm VALUE 'CANCEL',
c_exit TYPE sy-ucomm VALUE 'EXIT',


pbo
MODULE status_9035 OUTPUT.

* SET PF-STATUS 'xxxxxxxx'.
* SET TITLEBAR 'xxx'.

"Process
IF gt_dms_n IS INITIAL.
CLEAR: gt_dms_n.
PERFORM process_data_dms.
ENDIF.


ENDMODULE.

MODULE tc_dms_change_tc_attr OUTPUT.
DESCRIBE TABLE gt_dms_n LINES tc_dms-lines.
ENDMODULE.


MODULE tc_dms_get_lines OUTPUT.
g_tc_dms_lines = sy-loopc.
ENDMODULE.


MODULE tc_9035_screen OUTPUT.

IF gs_dms_n-dms_code IS INITIAL.
LOOP AT SCREEN.
screen-input = COND #( WHEN gs_dms_n-edit_mark = abap_false AND screen-name = 'DOWN' THEN 0
WHEN gs_dms_n-edit_mark = abap_false AND screen-name = 'EDIT' THEN 0 ELSE screen-input ).
MODIFY SCREEN .
ENDLOOP.
ELSE.
LOOP AT SCREEN.
screen-input = COND #( WHEN gs_dms_n-edit_mark = abap_true AND screen-group2 = 'FIL' THEN 1
WHEN gs_dms_n-edit_mark = abap_true AND screen-name = 'DOWN' THEN 0
WHEN gs_dms_n-edit_mark = abap_false AND screen-name = 'UPD' THEN 0
WHEN screen-group2 = 'INP' OR screen-group2 = 'FIL' THEN 0 ELSE screen-input ).

MODIFY SCREEN.
ENDLOOP.
ENDIF.


ENDMODULE.


pai :

MODULE tc_dms_modify INPUT.

MODIFY gt_dms_n
FROM gs_dms_n
INDEX tc_dms-current_line.

ENDMODULE.



MODULE tc_dms_mark INPUT.

DATA: g_tc_dms_wa2 LIKE LINE OF gt_dms_n.

IF tc_dms-line_sel_mode = 1
AND gs_dms_n-mark = 'X'.

LOOP AT gt_dms_n INTO g_tc_dms_wa2
WHERE mark = 'X'.
g_tc_dms_wa2-mark = ''.
MODIFY gt_dms_n
FROM g_tc_dms_wa2
TRANSPORTING mark.
ENDLOOP.

ENDIF.

MODIFY gt_dms_n
FROM gs_dms_n
INDEX tc_dms-current_line
TRANSPORTING mark.

ENDMODULE.


MODULE tc_dms_user_command INPUT.

ok_code = sy-ucomm.
PERFORM user_ok_tc USING 'TC_DMS'
'GT_DMS'
'MARK'
CHANGING ok_code.
sy-ucomm = ok_code.

ENDMODULE.


MODULE user_command_9035 INPUT.


DATA: gv_count TYPE i,
lv_index1 TYPE i,
lv_index2 TYPE i,
lv_flag_dms_n TYPE c,
gv_ct_dms TYPE zsgtsfctdt_ct_dms.

CLEAR: gv_answer,gv_ct_dms. "to clear variables
CLEAR ok_code_save.
MOVE ok_code TO ok_code_save.
CLEAR ok_code.

CASE sy-ucomm.

WHEN cs_upd OR cs_down OR cs_edit.

"Upload/Download Document
CLEAR: gv_line.
GET CURSOR LINE gv_line.
CONDENSE gv_line.

tc_dms-current_line = tc_dms-top_line + gv_line - 1.
gv_line = tc_dms-current_line.
CONDENSE gv_line.

ASSIGN gt_dms_n[ gv_line ] TO <fs_dms_u>.

"To fetch Standard Document Number
IF <fs_dms_u>-zstnd_dms IS INITIAL.
SELECT SINGLE zstnd_dms
FROM zsgtsftr_tsf_dms
INTO <fs_dms_u>-zstnd_dms
WHERE ztsf_dms_code = <fs_dms_u>-dms_code.
ENDIF.

IF sy-subrc = 0.
IF sy-ucomm = cs_upd.
IF <fs_dms_u>-ddate IS NOT INITIAL AND <fs_dms_u>-dms_code IS INITIAL.
"Upload Document
c_dctyp = 'TRM' .
c_trm = 'TRM' .
c_stcat = 'DMS_C1_ST'.
c_00 = '00' .
c_000 = '000' .
c_fr = 'FR'.
c_001 = '01'.
PERFORM upload_document_dms.
EXIT. "To exit from condition
ENDIF.

"To upload edited record
IF <fs_dms_u>-ddate IS NOT INITIAL AND <fs_dms_u>-dms_code IS NOT INITIAL.
"To upload edited details
c_dctyp = 'TRM' .
c_trm = 'TRM' .
c_stcat = 'DMS_C1_ST'.
c_00 = '00' .
c_000 = '000' .
c_fr = 'FR'.
c_001 = '01'.
PERFORM edit_upload_document_dms.
ENDIF.
CLEAR: <fs_dms_u>-edit_mark.

ELSEIF sy-ucomm = cs_down.
"Download Document
c_dcprt = '000'.
c_dctyp = 'TRM'.
c_dcvrsn = '00'.
PERFORM download_document.

"For edit
ELSEIF sy-ucomm = cs_edit.
gv_ct_dms = <fs_dms_u>-dms_code.
<fs_dms_u>-edit_mark = SWITCH #( <fs_dms_u>-edit_mark WHEN abap_true THEN abap_false WHEN abap_false THEN abap_true ).
ENDIF.
ENDIF.

WHEN cs_addrow.

IF gt_dms_n IS NOT INITIAL.
DATA(lv_dms) = abap_true.
ENDIF.

IF gs_dms_n-dtype IS NOT INITIAL.
DESCRIBE TABLE gt_dms_n LINES DATA(lv_dms_lines1).

CLEAR: gv_count,lv_index1.
lv_index1 = lv_dms_lines1.

"Assign selected line to GT_DEP structure
ASSIGN gt_dms_n[ lv_index1 ] TO FIELD-SYMBOL(<fs_dms1>).
IF sy-subrc = 0.
gv_count = lv_dms_lines1 + 1.
ENDIF.

CLEAR gs_dms_n1.
gs_dms_n1-dtype = 'D99'.
gs_dms_n1-ddesc = 'Miscellaneous'.
gs_dms_n1-zdms_range = gv_count.
IF lv_dms = abap_true.
APPEND gs_dms_n1 TO gt_dms_n.
ENDIF.

ENDIF.

WHEN cs_deleterow.

LOOP AT gt_dms_n ASSIGNING FIELD-SYMBOL(<fs_dms_n>) WHERE mark = abap_true.
IF <fs_dms_n>-dtype = 'D99'.
DELETE gt_dms_n WHERE mark = abap_true.
ELSE.
MESSAGE e483(zsgtsfct_msg).
ENDIF.
ENDLOOP.

ENDCASE.

CLEAR sy-ucomm.

ENDMODULE.


MODULE user_command_9035_exit INPUT.

CASE sy-ucomm.
WHEN c_back OR c_exit OR c_cancel.
SET SCREEN 0.
ENDCASE.

ENDMODULE.













MODULE p_dmsfile_f4_help INPUT.

DATA: lt_file_tab2 TYPE filetable,
lv_rc2 TYPE i.

"FM to Open file dialog
CALL METHOD cl_gui_frontend_services=>file_open_dialog
EXPORTING
window_title = 'Select File For Uploading'
CHANGING
file_table = lt_file_tab2
rc = lv_rc2
EXCEPTIONS
file_open_dialog_failed = 1
cntl_error = 2
error_no_gui = 3
not_supported_by_gui = 4
OTHERS = 5.

IF sy-subrc = 0 .
ASSIGN lt_file_tab2[ 1 ] TO FIELD-SYMBOL(<fs_file_tab2>) .
IF sy-subrc = 0.
gs_dms_n-file = <fs_file_tab2>-filename.
ENDIF.
ENDIF.

ENDMODULE.


Performs pbo:

FORM process_data_dms.

"Fetching the DMS Dcoument data
SELECT a~zdms_type,
a~zdms_desc,
b~zddate,
b~zdms_code,
b~zstnd_dms,
b~zremark,
c~zsource_path
FROM zsgtsftr_dms_typ AS a
LEFT OUTER JOIN zsgslctr_dealdms AS b
ON b~zdms_cat = a~zdms_cat
AND b~zdms_type = a~zdms_type
AND b~zdeal_id = @gs_zsgslctr_dealid-zdeal_id
LEFT OUTER JOIN zsgtsftr_tsf_dms AS c
ON c~ztsf_dms_code = b~zdms_code
AND c~zstnd_dms = b~zstnd_dms
WHERE a~zdms_cat = @gv_40
ORDER BY a~zdms_type
INTO TABLE @DATA(lt_dms_n).

"updating DMS detail
gt_dms_n = CORRESPONDING #( lt_dms_n MAPPING dtype = zdms_type
ddesc = zdms_desc
ddate = zddate
file = zsource_path
zstnd_dms = zstnd_dms
dms_code = zdms_code ) .



ENDFORM.



Performs pai:

FORM upload_document_dms.

DATA: lv_file TYPE rlgrap-filename.

CLEAR: ls_zsgtsftr_tsf_dms,lw_files,ls_documentdata,
lv_dctyp,lv_docnr,lv_docpr,lv_docvr,gv_doc_upload,lt_files.

IF <fs_dms_u>-dtype NE 'D99'.

PERFORM get_dms_typ USING gv_40 <fs_dms_u>-dtype.

* "Fetching DMS Type, Object and Range
* SELECT SINGLE zdms_type,
* zdms_obj,
* zdms_range
* FROM zsgtsftr_dms_typ
* INTO @DATA(ls_dms)
* WHERE zdms_cat = gv_40
* AND zdms_type = @<fs_dms_u>-dtype.

ELSE.

PERFORM get_dms_typ USING gv_51 <fs_dms_u>-dtype.

* "Fetching DMS Type, Object and Range
* SELECT SINGLE zdms_type,
* zdms_obj,
* zdms_range
* FROM zsgtsftr_dms_typ
* INTO @ls_dms
* WHERE zdms_cat = gv_51
* AND zdms_type = @<fs_dms_u>-dtype.

ENDIF.

IF sy-subrc = 0.

"Perform to get Number
PERFORM get_number_range USING gs_dms-zdms_obj gs_dms-zdms_range
CHANGING ls_zsgtsftr_tsf_dms-ztsf_dms_code.

ls_zsgtsftr_tsf_dms-zsource_path = <fs_dms_u>-file.
"Splitting file and path
CALL FUNCTION 'SO_SPLIT_FILE_AND_PATH'
EXPORTING
full_name = ls_zsgtsftr_tsf_dms-zsource_path
IMPORTING
stripped_name = ls_zsgtsftr_tsf_dms-zdoc_name
file_path = lv_file_path.

SPLIT ls_zsgtsftr_tsf_dms-zdoc_name AT '.' INTO lv_dummy ls_zsgtsftr_tsf_dms-zdoc_extn.
TRANSLATE ls_zsgtsftr_tsf_dms-zdoc_extn TO UPPER CASE. "convert extension to upper case

PERFORM fetch_zeta_param USING gv_bukrs_zeta.

* SELECT param1
* FROM zgtcatr_param
* INTO TABLE @DATA(lt_param)
* WHERE prognam = 'ZSGTSFVNR_DEAL_TRD_INV'
* AND mapid = 'A'.

IF ls_zsgtsftr_tsf_dms-zdoc_extn IS NOT INITIAL.
wsapp = c_trm.
ASSIGN gt_zeta[ prognam = 'ZSGTSFVNR_DEAL_TRD_INV' mapid = 'A' param1 = ls_zsgtsftr_tsf_dms-zdoc_extn ] TO FIELD-SYMBOL(<fs_tvarvc>).
IF sy-subrc = 0.
ls_zsgtsftr_tsf_dms-zdoc_extn = <fs_tvarvc>-param1.
ENDIF.
TRANSLATE ls_zsgtsftr_tsf_dms-zdoc_extn TO UPPER CASE.
ELSE.
TRANSLATE ls_zsgtsftr_tsf_dms-zdoc_extn TO UPPER CASE.
wsapp = ls_zsgtsftr_tsf_dms-zdoc_extn.
ENDIF.

lv_file = <fs_dms_u>-file.
"Get File Info
CALL FUNCTION 'GUI_GET_FILE_INFO'
EXPORTING
fname = lv_file
IMPORTING
file_size = lv_size
EXCEPTIONS
fileinfo_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.

CLEAR: lv_kb,lv_mb.
TRY. lv_kb = lv_size / 1024. CATCH cx_sy_arithmetic_error. ENDTRY.
TRY. lv_mb = lv_kb / 1024. CATCH cx_sy_arithmetic_error. ENDTRY.

IF lv_mb < 1.
ls_zsgtsftr_tsf_dms-zfile_size = lv_kb.
ls_zsgtsftr_tsf_dms-zsize_byte = c_kb.
ELSE.
ls_zsgtsftr_tsf_dms-zfile_size = lv_mb.
ls_zsgtsftr_tsf_dms-zsize_byte = c_mb.
ENDIF.

CONDENSE ls_zsgtsftr_tsf_dms-zfile_size.
CONDENSE ls_zsgtsftr_tsf_dms-zsize_byte.

ls_documentdata-documenttype = c_dctyp.
ls_documentdata-documentversion = c_00.
ls_documentdata-documentpart = c_000.

IF ls_zsgtsftr_tsf_dms-zdoc_desc IS INITIAL.
ls_documentdata-description = ls_zsgtsftr_tsf_dms-zdoc_name.
ELSE.
ls_documentdata-description = ls_zsgtsftr_tsf_dms-zdoc_desc.
ENDIF.

ls_documentdata-username = sy-uname. "User name
ls_documentdata-statusextern = c_fr.
ls_documentdata-docfile1 = ls_zsgtsftr_tsf_dms-zsource_path.
ls_documentdata-laboratory = c_001.

"Added for testing

lw_files-documenttype = c_dctyp.
lw_files-documentpart = c_000.
lw_files-documentversion = c_00.
lw_files-wsapplication = wsapp.
lw_files-docpath = lv_file_path.
lw_files-docfile = ls_zsgtsftr_tsf_dms-zdoc_name.
lw_files-description = ls_zsgtsftr_tsf_dms-zdoc_desc.
lw_files-storagecategory = c_stcat.
APPEND lw_files TO lt_files.

"" Uploading the PDF Documents for the SLC data through CV01N tcode fucntionality
CALL FUNCTION 'BAPI_DOCUMENT_CREATE2'
EXPORTING
documentdata = ls_documentdata
IMPORTING
documenttype = lv_dctyp
documentnumber = lv_docnr
documentpart = lv_docpr
documentversion = lv_docvr
return = ls_ret
TABLES
documentfiles = lt_files.

IF ls_ret-type <> 'E'.
PERFORM commit.
ls_zsgtsftr_tsf_dms-zstnd_dms = lv_docnr.
ls_zsgtsftr_tsf_dms-created_by = sy-uname.
ls_zsgtsftr_tsf_dms-created_date = sy-datum.
ls_zsgtsftr_tsf_dms-created_time = sy-uzeit.

"Modifying DMS Custom Table
MODIFY zsgtsftr_tsf_dms FROM ls_zsgtsftr_tsf_dms.
COMMIT WORK AND WAIT.

* Updating the genearted DMs Code and to the DMS Mapping table
<fs_dms_u>-dms_code = ls_zsgtsftr_tsf_dms-ztsf_dms_code.
<fs_dms_u>-zstnd_dms = lv_docnr.

ls_zsgslctr_dealdms = VALUE #( zdms_cat = gv_40
zdms_type = <fs_dms_u>-dtype
zddate = <fs_dms_u>-ddate
zremark = <fs_dms_u>-zremark
zdeal_id = gs_zsgslctr_dealid-zdeal_id
zdms_code = ls_zsgtsftr_tsf_dms-ztsf_dms_code
zstnd_dms = ls_zsgtsftr_tsf_dms-zstnd_dms
zcreated_by = sy-uname
zcreated_date = sy-datum
zcreated_time = sy-uzeit ).

MESSAGE i015(zsgslc_msg) WITH ls_zsgtsftr_tsf_dms-ztsf_dms_code.
IF ls_zsgtsftr_tsf_dms-ztsf_dms_code IS NOT INITIAL.
gv_doc_upload = abap_true.
ENDIF.

"Modifying Custom Deal DMS table with file detail
MODIFY zsgslctr_dealdms FROM ls_zsgslctr_dealdms.
COMMIT WORK AND WAIT.

CLEAR: ls_zsgslctr_dealdms,ls_zsgtsftr_tsf_dms.

ELSE.
PERFORM rollback.
ENDIF.
ENDIF.


ENDFORM.


FORM get_dms_typ USING p_cat p_dtype.

"Fetching DMS Type, Object and Range
SELECT SINGLE zdms_type,
zdms_obj,
zdms_range
FROM zsgtsftr_dms_typ
INTO @gs_dms
WHERE zdms_cat = @p_cat
AND zdms_type = @p_dtype.

ENDFORM.


FORM get_dms_typ USING p_cat p_dtype.

"Fetching DMS Type, Object and Range
SELECT SINGLE zdms_type,
zdms_obj,
zdms_range
FROM zsgtsftr_dms_typ
INTO @gs_dms
WHERE zdms_cat = @p_cat
AND zdms_type = @p_dtype.

ENDFORM.




FORM get_number_range USING p_obj p_no CHANGING p_num.

"Getting next no in sequence
CALL FUNCTION 'NUMBER_GET_NEXT'
EXPORTING
nr_range_nr = p_no
object = p_obj
IMPORTING
number = p_num
EXCEPTIONS
interval_not_found = 1
number_range_not_intern = 2
object_not_found = 3
quantity_is_0 = 4
quantity_is_not_1 = 5
interval_overflow = 6
buffer_overflow = 7
OTHERS = 8.

IF sy-subrc <> 0.
MESSAGE s023(zsgtsfct_msg) . "text-046 TYPE c_s.
LEAVE LIST-PROCESSING.
ENDIF.

ENDFORM.






FORM get_domain_value USING p_domain.

CALL FUNCTION 'GET_DOMAIN_VALUES'
EXPORTING
domname = p_domain
TABLES
values_tab = gt_tab
EXCEPTIONS
no_values_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.

ENDFORM.



FORM rollback .

"Rollback BAPI
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.

ENDFORM.







FORM edit_upload_document_dms .

DATA: lv_file TYPE rlgrap-filename.

CLEAR:ls_zsgtsftr_tsf_dms,lw_files,ls_documentdata,
lv_dctyp,lv_docnr,lv_docpr,lv_docvr.

CLEAR:lt_files.

ls_zsgtsftr_tsf_dms-changed_date = <fs_dms_u>-ddate.
ls_zsgtsftr_tsf_dms-ztsf_dms_code = <fs_dms_u>-dms_code.
IF ls_zsgtsftr_tsf_dms-zstnd_dms IS INITIAL.
SELECT SINGLE zstnd_dms
FROM zsgtsftr_tsf_dms
INTO ls_zsgtsftr_tsf_dms-zstnd_dms
WHERE ztsf_dms_code = ls_zsgtsftr_tsf_dms-ztsf_dms_code.
ENDIF.
ls_zsgtsftr_tsf_dms-zsource_path = <fs_dms_u>-file.
CONDENSE: ls_zsgtsftr_tsf_dms-changed_date, ls_zsgtsftr_tsf_dms-ztsf_dms_code, ls_zsgtsftr_tsf_dms-zstnd_dms.

"Splitting file and path
CALL FUNCTION 'SO_SPLIT_FILE_AND_PATH'
EXPORTING
full_name = ls_zsgtsftr_tsf_dms-zsource_path
IMPORTING
stripped_name = ls_zsgtsftr_tsf_dms-zdoc_name
file_path = lv_file_path.

SPLIT ls_zsgtsftr_tsf_dms-zdoc_name AT '.' INTO lv_dummy ls_zsgtsftr_tsf_dms-zdoc_extn.
TRANSLATE ls_zsgtsftr_tsf_dms-zdoc_extn TO LOWER CASE.


PERFORM fetch_zeta_param USING gv_bukrs_zeta.

* SELECT param1
* FROM zgtcatr_param
* INTO TABLE @DATA(lt_param)
* WHERE prognam = 'ZSGTSFVNR_DEAL_TRD_INV'
** AND bukrs = @gv_bukrs
* AND mapid = 'A'.

IF ls_zsgtsftr_tsf_dms-zdoc_extn IS NOT INITIAL.
wsapp = c_trm.
ASSIGN gt_zeta[ prognam = 'ZSGTSFVNR_DEAL_TRD_INV' mapid = 'A' param1 = ls_zsgtsftr_tsf_dms-zdoc_extn ] TO FIELD-SYMBOL(<fs_tvarvc>).
IF sy-subrc = 0.
ls_zsgtsftr_tsf_dms-zdoc_extn = <fs_tvarvc>-param1.
ENDIF.
TRANSLATE ls_zsgtsftr_tsf_dms-zdoc_extn TO UPPER CASE.
ELSE.
TRANSLATE ls_zsgtsftr_tsf_dms-zdoc_extn TO UPPER CASE.
wsapp = ls_zsgtsftr_tsf_dms-zdoc_extn.
ENDIF.

lv_file = <fs_dms_u>-file.
"Get File Info
CALL FUNCTION 'GUI_GET_FILE_INFO'
EXPORTING
fname = lv_file
IMPORTING
file_size = lv_size
EXCEPTIONS
fileinfo_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.

CLEAR: lv_kb,lv_mb.
TRY. lv_kb = lv_size / 1024. CATCH cx_sy_arithmetic_error. ENDTRY.
TRY. lv_mb = lv_kb / 1024. CATCH cx_sy_arithmetic_error. ENDTRY.

IF lv_mb < 1.
ls_zsgtsftr_tsf_dms-zfile_size = lv_kb.
ls_zsgtsftr_tsf_dms-zsize_byte = c_kb.
ELSE.
ls_zsgtsftr_tsf_dms-zfile_size = lv_mb.
ls_zsgtsftr_tsf_dms-zsize_byte = c_mb.
ENDIF.

CONDENSE ls_zsgtsftr_tsf_dms-zfile_size.
CONDENSE ls_zsgtsftr_tsf_dms-zsize_byte.

ls_documentdata-documenttype = c_dctyp.
ls_documentdata-documentversion = c_00.
ls_documentdata-documentpart = c_000.

"Indicator for Relevancy to Change
ls_documentdatax-documenttype = abap_true .
ls_documentdatax-documentversion = abap_true .
ls_documentdatax-documentpart = abap_true .

IF ls_zsgtsftr_tsf_dms-zdoc_desc IS INITIAL.
ls_documentdata-description = ls_zsgtsftr_tsf_dms-zdoc_name.
ELSE.
ls_documentdata-description = ls_zsgtsftr_tsf_dms-zdoc_desc.
ENDIF.

ls_documentdata-username = sy-uname. "User name
ls_documentdata-statusextern = c_fr.
ls_documentdata-docfile1 = ls_zsgtsftr_tsf_dms-zsource_path.
ls_documentdata-laboratory = c_001.

"Indicator for Relevancy to Change {
ls_documentdatax-username = abap_true . "User name
ls_documentdatax-statusextern = abap_true .
ls_documentdatax-docfile1 = abap_true .
ls_documentdatax-laboratory = abap_true . "}

lw_files-documenttype = c_dctyp.
lw_files-documentpart = c_000.
lw_files-documentversion = c_00.
lw_files-wsapplication = wsapp.
lw_files-docpath = lv_file_path.
lw_files-docfile = ls_zsgtsftr_tsf_dms-zdoc_name.
lw_files-description = ls_zsgtsftr_tsf_dms-zdoc_desc.
lw_files-storagecategory = c_stcat.
APPEND lw_files TO lt_files.

"" Uploading updated the Documents for the SLC data through CV02N tcode fucntionality
CALL FUNCTION 'BAPI_DOCUMENT_CHANGE2'
EXPORTING
documenttype = c_dctyp
documentnumber = ls_zsgtsftr_tsf_dms-zstnd_dms
documentpart = c_000
documentversion = c_00
documentdata = ls_documentdata
documentdatax = ls_documentdatax
IMPORTING
return = ls_ret
TABLES
documentfiles = lt_files.


IF ls_ret-type <> 'E' .
PERFORM commit.

ls_zsgtsftr_tsf_dms-created_by = sy-uname.
ls_zsgtsftr_tsf_dms-created_date = sy-datum.
ls_zsgtsftr_tsf_dms-created_time = sy-uzeit.
"Modifying DMS Custom Table
UPDATE zsgtsftr_tsf_dms
SET zdoc_name = ls_zsgtsftr_tsf_dms-zdoc_name
zdoc_extn = ls_zsgtsftr_tsf_dms-zdoc_extn
zsource_path = ls_zsgtsftr_tsf_dms-zsource_path
zfile_size = ls_zsgtsftr_tsf_dms-zfile_size
zsize_byte = ls_zsgtsftr_tsf_dms-zsize_byte
created_by = ls_zsgtsftr_tsf_dms-created_by
created_date = ls_zsgtsftr_tsf_dms-created_date
created_time = ls_zsgtsftr_tsf_dms-created_time
WHERE ztsf_dms_code = ls_zsgtsftr_tsf_dms-ztsf_dms_code AND zstnd_dms = ls_zsgtsftr_tsf_dms-zstnd_dms.
COMMIT WORK AND WAIT.

* Updating the genearted DMs Code and SLC to the SLC DMS Mapping table
<fs_dms_u>-dms_code = ls_zsgtsftr_tsf_dms-ztsf_dms_code.
<fs_dms_u>-zstnd_dms = lv_docnr.
ls_zsgslctr_dealdms = VALUE #( zdms_cat = gv_40
zdms_type = <fs_dms_u>-dtype
zddate = <fs_dms_u>-ddate
zremark = <fs_dms_u>-zremark
zdeal_id = gs_zsgslctr_dealid-zdeal_id
zdms_code = ls_zsgtsftr_tsf_dms-ztsf_dms_code
zstnd_dms = ls_zsgtsftr_tsf_dms-zstnd_dms
zcreated_by = sy-uname
zcreated_date = sy-datum
zcreated_time = sy-uzeit ).

MESSAGE i015(zsgslc_msg) WITH ls_zsgtsftr_tsf_dms-ztsf_dms_code.


"Modifying Custom Deal DMS table with file detail
MODIFY zsgslctr_dealdms FROM ls_zsgslctr_dealdms.
COMMIT WORK AND WAIT.

CLEAR: ls_zsgslctr_dealdms,ls_zsgtsftr_tsf_dms.

ELSE.
PERFORM rollback.
ENDIF.


ENDFORM.


FORM commit.

"BAPI Commit
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.

ENDFORM.


FORM download_document .

gv_dms_code = COND #( WHEN gv_dmsflag = abap_true THEN <fs_dms_u>-zstnd_dms ).
gv_src_path = COND #( WHEN gv_dmsflag = abap_true THEN <fs_dms_u>-file ).

PERFORM get_upl_doc.

ENDFORM.



FORM get_upl_doc .

DATA : lv_return TYPE bapiret2.
CLEAR gt_documentfiles.
"Document Get
CALL FUNCTION 'BAPI_DOCUMENT_GETDETAIL2'
EXPORTING
documenttype = c_dctyp "c_dctyp
documentnumber = gv_dms_code
documentpart = c_dcprt
documentversion = c_dcvrsn
getdocdescriptions = abap_true
getdocfiles = abap_true
IMPORTING
return = lv_return
TABLES
documentfiles = gt_documentfiles.

IF gt_documentfiles IS INITIAL.
MESSAGE lv_return-message TYPE 'I'.
ELSE. " Get the document then display all document in ALV report.

CALL FUNCTION 'ZSGSLCFM_DMS_DOWNLOAD' ##COMPATIBLE
EXPORTING
gv_dms_code = gv_dms_code
documentpart = c_dcprt
documentversion = c_dcvrsn
TABLES
documentfiles = gt_documentfiles.

ENDIF.

ENDFORM.


















     
 
what is notes.io
 

Notes is a web-based application for online taking notes. You can take your notes and share with others people. If you like taking long notes, notes.io is designed for you. To date, over 8,000,000,000+ notes created and continuing...

With notes.io;

  • * You can take a note from anywhere and any device with internet connection.
  • * You can share the notes in social platforms (YouTube, Facebook, Twitter, instagram etc.).
  • * You can quickly share your contents without website, blog and e-mail.
  • * You don't need to create any Account to share a note. As you wish you can use quick, easy and best shortened notes with sms, websites, e-mail, or messaging services (WhatsApp, iMessage, Telegram, Signal).
  • * Notes.io has fabulous infrastructure design for a short link and allows you to share the note as an easy and understandable link.

Fast: Notes.io is built for speed and performance. You can take a notes quickly and browse your archive.

Easy: Notes.io doesn’t require installation. Just write and share note!

Short: Notes.io’s url just 8 character. You’ll get shorten link of your note when you want to share. (Ex: notes.io/q )

Free: Notes.io works for 14 years and has been free since the day it was started.


You immediately create your first note and start sharing with the ones you wish. If you want to contact us, you can use the following communication channels;


Email: [email protected]

Twitter: http://twitter.com/notesio

Instagram: http://instagram.com/notes.io

Facebook: http://facebook.com/notesio



Regards;
Notes.io Team

     
 
Shortened Note Link
 
 
Looding Image
 
     
 
Long File
 
 

For written notes was greater than 18KB Unable to shorten.

To be smaller than 18KB, please organize your notes, or sign in.