Reset Cleared Documents(FBRA) & Reverse Document (FB08) using Function Module
Input:
Code:
*&---------------------------------------------------------------------*
*& Report ZFI_RESET_REVERSE_CLR_DOC
*&---------------------------------------------------------------------*
*& Program : ZFI_RESET_REVERSE_CLR_DOC
*& Author : ??
*& Created on : ??
*& Requested By : ??
*& Project : ??
*& Transport-No : ??
*& Description : Bapi For Cleared Documents Reset and Reversal
*& T-Code : ??
*&---------------------------------------------------------------------*
REPORT zfi_reset_reverse_clr_doc.
INCLUDE zfi_reset_reverse_clr_doc_top.
INCLUDE zfi_reset_reverse_clr_doc_sel.
INCLUDE zfi_reset_reverse_clr_doc_f01.
START-OF-SELECTION.
*** File Upload
PERFORM get_file_data.
*** Bapi Calling
IF p_check NE abap_true.
PERFORM doc_reset_reverse.
ENDIF.
*** Display Data
PERFORM display_data.
*&---------------------------------------------------------------------*
*& Include ZFI_RESET_REVERSE_CLR_DOC_TOP
*&---------------------------------------------------------------------*
TABLES: sscrfields.
TABLES: bkpf,
rfdt,
t100.
TYPES: BEGIN OF ty_str,
sno TYPE i,
belnr TYPE augbl,
gjahr TYPE gjahr,
rev_res TYPE stgrd,
budat TYPE budat,
END OF ty_str.
DATA: lt_str TYPE TABLE OF ty_str,
ls_str TYPE ty_str.
TYPES: BEGIN OF ty_error,
sno TYPE i,
type TYPE char10,
belnr TYPE augbl,
msg TYPE string,
END OF ty_error.
DATA: lt_error TYPE TABLE OF ty_error,
ls_error TYPE ty_error.
DATA:i_tab_raw_data TYPE truxs_t_text_data,
i_filename LIKE rlgrap-filename.
DATA:e_xstor TYPE c,
ev_reverse_needed_text1 TYPE string,
ev_reverse_needed_text2 TYPE string,
ev_reverse_needed_text3 TYPE string.
DATA:it_accnt TYPE TABLE OF rf05r_acct,
wa_accnt TYPE rf05r_acct.
DATA:e_budat LIKE bkpf-budat,
e_monat LIKE bkpf-monat,
e_xsofo.
DATA: h_excel TYPE ole2_object, " Excel object
h_mapl TYPE ole2_object, " list of workbooks
h_map TYPE ole2_object, " workbook
h_zl TYPE ole2_object, " cell
h_f TYPE ole2_object, " font
h TYPE i.
DATA: msg LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE,
txt(100) TYPE c.
*Declarations for ALV List.
DATA: gt_outtab TYPE STANDARD TABLE OF bdcmsgcoll, " Output Table
gs_outtab TYPE bdcmsgcoll. " Output Table Strc.
DATA :
gt_fieldcat TYPE slis_t_fieldcat_alv, " ALV Field Catalog Table
gs_layout TYPE slis_layout_alv, " ALV Layout Structure
gt_events TYPE slis_t_event, " ALV Events Table
gv_repid LIKE sy-repid, " Report Id
gc_outtab TYPE slis_tabname VALUE 'GT_OUTTAB'. "Outtable con
gv_repid = sy-repid.
*&---------------------------------------------------------------------*
*& Include ZFI_RESET_REVERSE_CLR_DOC_SEL
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
PARAMETERS : p_file TYPE rlgrap-filename OBLIGATORY,
p_check AS CHECKBOX DEFAULT 'X'.
PARAMETERS : p_rb1 RADIOBUTTON GROUP rb1,
p_rb2 RADIOBUTTON GROUP rb1.
SELECTION-SCREEN END OF BLOCK b1.
INITIALIZATION.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE TEXT-002.
SELECTION-SCREEN PUSHBUTTON 1(60) cmdgen USER-COMMAND a_gen VISIBLE LENGTH 20.
SELECTION-SCREEN END OF BLOCK b2.
CALL FUNCTION 'ICON_CREATE'
EXPORTING
name = icon_xxl
text = 'Generate Template'
info = 'Generate Excel File Template'
IMPORTING
result = cmdgen
EXCEPTIONS
OTHERS = 0.
AT SELECTION-SCREEN.
CASE sscrfields.
WHEN 'A_GEN'.
PERFORM generate_template.
ENDCASE.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file .
*** File Upload
PERFORM file_upload.
*&---------------------------------------------------------------------*
*& Include ZFI_RESET_REVERSE_CLR_DOC_F01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form file_upload
*&---------------------------------------------------------------------*
FORM file_upload .
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = syst-cprog
dynpro_number = syst-dynnr
field_name = 'P_FILE'
IMPORTING
file_name = p_file.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form get_file_data
*&---------------------------------------------------------------------*
FORM get_file_data .
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
i_line_header = 'X'
i_tab_raw_data = i_tab_raw_data
i_filename = p_file
TABLES
i_tab_converted_data = lt_str.
IF lt_str IS INITIAL.
MESSAGE 'No data uploaded' TYPE 'E'.
ENDIF.
IF p_check = abap_true.
LOOP AT lt_str INTO ls_str.
SELECT belnr,
stblg
FROM bkpf
INTO TABLE @DATA(lt_bkpf)
FOR ALL ENTRIES IN @lt_str
WHERE bukrs EQ '****'
AND belnr EQ @lt_str-belnr
AND gjahr EQ @ls_str-gjahr.
READ TABLE lt_bkpf INTO DATA(ls_bkpf) WITH KEY belnr = ls_str-belnr.
IF ls_bkpf-stblg IS NOT INITIAL.
ls_error-sno = ls_str-sno.
ls_error-type = icon_red_light.
ls_error-belnr = ls_str-belnr.
ls_error-msg = |This is not a Clearing Document|.
APPEND: ls_error TO lt_error.
CLEAR: ls_error.
ELSE.
SELECT *
FROM bseg
INTO TABLE @DATA(lt_bseg)
FOR ALL ENTRIES IN @lt_str
WHERE bukrs EQ '****'
AND gjahr EQ @ls_str-gjahr
AND augbl EQ @lt_str-belnr.
IF lt_bseg IS NOT INITIAL.
ls_error-sno = ls_str-sno.
ls_error-type = icon_red_light.
ls_error-belnr = ls_str-belnr.
ls_error-msg = |This is not a Clearing Document|.
APPEND: ls_error TO lt_error.
CLEAR: ls_error.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form doc_reset_reverse
*&---------------------------------------------------------------------*
FORM doc_reset_reverse .
IF p_rb1 = 'X'.
LOOP AT lt_str INTO ls_str.
CALL FUNCTION 'CALL_FBRA'
EXPORTING
i_bukrs = '****' " Company Code
i_augbl = ls_str-belnr
i_gjahr = ls_str-gjahr
i_xerlk = 'X'
i_stodt = ls_str-budat
i_update = 'S'
i_mode = 'N'
IMPORTING
e_xstor = e_xstor
ev_reverse_needed_text1 = ev_reverse_needed_text1
ev_reverse_needed_text2 = ev_reverse_needed_text2
ev_reverse_needed_text3 = ev_reverse_needed_text3
TABLES
t_accnt = it_accnt
EXCEPTIONS
not_possible = 1
OTHERS = 2.
IF sy-subrc = 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = abap_true.
WAIT UP TO 2 SECONDS.
ls_error-sno = ls_str-sno.
ls_error-type = icon_green_light.
ls_error-belnr = ls_str-belnr.
ls_error-msg = |Clearing { ls_str-belnr } Reset | .
APPEND: ls_error TO lt_error.
CLEAR: ls_error.
ELSE.
ls_error-sno = ls_str-sno.
ls_error-type = icon_red_light.
ls_error-belnr = ls_str-belnr.
ls_error-msg = |Document { ls_str-belnr } **** { ls_str-gjahr } is not a clearing document |.
APPEND: ls_error TO lt_error.
CLEAR:ls_error.
ENDIF.
ENDLOOP.
ELSEIF p_rb2 = 'X'.
LOOP AT lt_str INTO ls_str.
CALL FUNCTION 'CALL_FBRA'
EXPORTING
i_bukrs = '****' " Company Code
i_augbl = ls_str-belnr
i_gjahr = ls_str-gjahr
i_xerlk = 'X'
i_stodt = ls_str-budat
i_update = 'S'
i_mode = 'N'
IMPORTING
e_xstor = e_xstor
ev_reverse_needed_text1 = ev_reverse_needed_text1
ev_reverse_needed_text2 = ev_reverse_needed_text2
ev_reverse_needed_text3 = ev_reverse_needed_text3
TABLES
t_accnt = it_accnt
EXCEPTIONS
not_possible = 1
OTHERS = 2.
IF sy-subrc = 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = abap_true.
ls_error-sno = ls_str-sno.
ls_error-type = icon_green_light.
ls_error-belnr = ls_str-belnr.
ls_error-msg = |Clearing { ls_str-belnr } Reset | .
APPEND: ls_error TO lt_error.
CLEAR: ls_error.
CALL FUNCTION 'CALL_FB08'
EXPORTING
i_bukrs = '****' " Company Code
i_belnr = ls_str-belnr
i_gjahr = ls_str-gjahr
i_stgrd = ls_str-rev_res
i_budat = ls_str-budat
i_update = 'A'
i_mode = 'N'
IMPORTING
e_budat = e_budat
e_monat = e_monat
e_xsofo = e_xsofo
EXCEPTIONS
not_possible = 1
OTHERS = 2.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = abap_true.
IF ls_str IS NOT INITIAL.
SELECT SINGLE stblg
FROM bkpf
INTO @DATA(gv_stblg)
WHERE bukrs EQ '****' " Company Code
AND belnr EQ @ls_str-belnr
AND gjahr EQ @ls_str-gjahr.
ENDIF.
IF sy-subrc = 0.
ls_error-sno = ls_str-sno.
ls_error-type = icon_green_light.
* ls_error-belnr = ls_str-belnr.
ls_error-belnr = gv_stblg.
ls_error-msg = |Document { gv_stblg } was posted in company code ****|.
APPEND: ls_error TO lt_error.
CLEAR: ls_error.
ENDIF.
ELSE.
ls_error-sno = ls_str-sno.
ls_error-type = icon_red_light.
ls_error-belnr = ls_str-belnr.
ls_error-msg = |Document { ls_str-belnr } **** { ls_str-gjahr } is not a clearing document |.
APPEND: ls_error TO lt_error.
CLEAR:ls_error.
ENDIF.
ENDLOOP.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form display_data
*&---------------------------------------------------------------------*
FORM display_data .
TYPE-POOLS:slis.
DATA:ls_fieldcat TYPE slis_fieldcat_alv,
ls_layout TYPE slis_layout_alv.
DATA:lt_fieldcat TYPE slis_t_fieldcat_alv.
DATA:lv_program TYPE sy-repid.
IF lt_error IS NOT INITIAL.
APPEND VALUE #( fieldname = 'SNO'
col_pos = 1
ref_tabname = 'LT_ERROR'
seltext_m = 'Serial No.' ) TO lt_fieldcat.
APPEND VALUE #( fieldname = 'TYPE'
col_pos = 2
ref_tabname = 'LT_ERROR'
seltext_m = 'Status' ) TO lt_fieldcat.
APPEND VALUE #( fieldname = 'BELNR'
col_pos = 3
ref_tabname = 'LT_ERROR'
seltext_m = 'Document No' ) TO lt_fieldcat.
APPEND VALUE #( fieldname = 'MSG'
col_pos = 4
ref_tabname = 'LT_ERROR'
seltext_m = 'Message' ) TO lt_fieldcat.
CLEAR ls_layout.
ls_layout-colwidth_optimize = 'X'.
ls_layout-zebra = 'X'.
lv_program = sy-repid.
* display the final display
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = lv_program
is_layout = ls_layout
it_fieldcat = lt_fieldcat
TABLES
t_outtab = lt_error
EXCEPTIONS
program_error = 1
OTHERS = 2.
ELSE.
MESSAGE 'No errors found' TYPE 'I'.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form generate_template
*&---------------------------------------------------------------------*
FORM generate_template .
* start Excel
CREATE OBJECT h_excel 'EXCEL.APPLICATION'.
SET PROPERTY OF h_excel 'Visible' = 1.
* get list of workbooks, initially empty
CALL METHOD OF
h_excel
'Workbooks' = h_mapl.
*** Error handle File
PERFORM err_hdl.
* add a new workbook
CALL METHOD OF
h_mapl
'Add' = h_map.
*** Error handle File
PERFORM err_hdl.
PERFORM fill_cell USING: 1 1 0 'Sno',
1 2 0 'Document No',
1 3 0 'Year',
1 4 0 'Reversal Reason',
1 5 0 'Posting Date'.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form err_hdl
*&---------------------------------------------------------------------*
FORM err_hdl .
IF sy-subrc <> 0.
CALL METHOD OF
h_excel
'QUIT'.
FREE OBJECT h_excel.
h_excel-handle = -1.
MESSAGE: 'Failed to generate template.' TYPE 'E'.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form fill_cell
*&---------------------------------------------------------------------*
FORM fill_cell USING i j bold val.
CALL METHOD OF
h_excel
'Cells' = h_zl
EXPORTING
#1 = i
#2 = j.
PERFORM err_hdl.
SET PROPERTY OF h_zl 'Value' = val .
PERFORM err_hdl.
GET PROPERTY OF h_zl 'Font' = h_f.
PERFORM err_hdl.
SET PROPERTY OF h_f 'Bold' = bold .
PERFORM err_hdl.
ENDFORM.
Template:
Comments
Post a Comment