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

Bapi Statistical Key Figure Uplaod Report

This document describes a report called ZFI_UPD_STAT_KEY_FIGURES that uploads statistical key figures. It contains forms for getting data from an Excel file, formatting the data, filling BAPI structures to update the key figures, and displaying the results. The report uploads statistical key figures by extracting data from an Excel file, calling BAPI functions to post the figures, and displaying the response in an ALV grid.

Uploaded by

Kabil Rocky
Copyright
© Attribution Non-Commercial (BY-NC)
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)
606 views7 pages

Bapi Statistical Key Figure Uplaod Report

This document describes a report called ZFI_UPD_STAT_KEY_FIGURES that uploads statistical key figures. It contains forms for getting data from an Excel file, formatting the data, filling BAPI structures to update the key figures, and displaying the results. The report uploads statistical key figures by extracting data from an Excel file, calling BAPI functions to post the figures, and displaying the response in an ALV grid.

Uploaded by

Kabil Rocky
Copyright
© Attribution Non-Commercial (BY-NC)
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 ZFI_UPD_STAT_KEY_FIGURES


*&---------------------------------------------------------------------*
*& Description : Statistical Key Figure Uplaod
*& Purpose
: Statistical Key Figure Uplaod
*& Project
: PAN -SAP Implementation
*& Created on : 30/10/2012
*& Author
: SPatil(savitha patil)
*& Object ID : RTR_U_907
*& Object Name : Statistical Key Figure Uplaod
*& Transport : ECDK904272 : Development Class - ZFI
*&--------------------------------------------------------------------*
*&--------------------------------------------------------------------*
*& Modification History
*&--------------------------------------------------------------------*
*& Defect ID:
*& Changed by/on:
*& Change Description:
*& Transport:
*&--------------------------------------------------------------------*
REPORT zfi_upd_stat_key_figures.
TYPE-POOLS:trucx.
TYPES:BEGIN OF gty_data,
pdate(10) TYPE c,
ddate(10) TYPE c,
text(50) TYPE c,
kokrs(4) TYPE c,
ekostl(10) TYPE c,
stagr(6) TYPE c,
mbgbtr(20) TYPE c,
END OF gty_data,
gty_t_data TYPE TABLE OF gty_data.
TYPES:BEGIN OF gty_message,
lnum
TYPE i,
pdate(10) TYPE c,
ddate(10) TYPE c,
text(200) TYPE c,
status(10) TYPE c,
docnum(10) TYPE c,
remark(220) TYPE c,
END OF gty_message,
gty_t_message TYPE TABLE OF gty_message.
DATA:gt_raw
gt_data
gw_data
gw_header
gv_docnum
gt_item
gw_item
gt_return
gw_return
gt_message
gw_message
gt_table
gr_layout
ayouts of the

TYPE truxs_t_text_data,
TYPE gty_t_data,
TYPE gty_data,
TYPE bapidochdrp,
TYPE bapidochdrp-doc_no,
TYPE TABLE OF bapiskfitm,
TYPE bapiskfitm,
TYPE TABLE OF bapiret2,
TYPE bapiret2,
TYPE gty_t_message,
TYPE gty_message,
TYPE REF TO cl_salv_table,
TYPE REF TO cl_salv_layout,
ALV grid

"Hold Factory method functions


"Allow the user to manage l

key TYPE salv_s_layout_key.


SELECTION-SCREEN BEGIN OF BLOCK blk WITH FRAME TITLE text-t01.
PARAMETERS: p_file TYPE rlgrap-filename.
SELECTION-SCREEN END OF BLOCK blk.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
*Get file Path
PERFORM f_file_path.
START-OF-SELECTION.
*Get data from file to internal tables
PERFORM f_get_data.
*In order to make the processing easier fill the header data
PERFORM f_format_data.
*Fill BAPI structure
PERFORM f_fill_bapi_structure_update.
END-OF-SELECTION.
*Display data
IF gt_message IS NOT INITIAL.
PERFORM f_display.
ENDIF.
*&---------------------------------------------------------------------*
*&
Form F_FILE_PATH
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM f_file_path .
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = syst-cprog
dynpro_number = syst-dynnr
field_name
= 'P_FILE'
IMPORTING
file_name
= p_file.
ENDFORM.
" F_FILE_PATH
*&---------------------------------------------------------------------*
*&
Form F_GET_DATA
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM f_get_data .
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
i_line_header
= 'X'
i_tab_raw_data
= gt_raw
i_filename
= p_file
TABLES
i_tab_converted_data = gt_data

EXCEPTIONS
conversion_failed
OTHERS

= 1
= 2.

IF sy-subrc <> 0.
MESSAGE 'Failed to open file'(012) TYPE 'I'.
LEAVE LIST-PROCESSING.
ENDIF.
ENDFORM.
" F_GET_DATA
*&---------------------------------------------------------------------*
*&
Form F_FILL_BAPI_STRUCTURE_UPDATE
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM f_fill_bapi_structure_update .
DATA:lv_date TYPE sy-datum.
LOOP AT gt_data INTO gw_data.
AT NEW kokrs.
*Date conversions
PERFORM f_convert_dates_to_int_frmt.
MOVE:sy-uname
gw_data-kokrs
gw_data-ddate
gw_data-pdate
gw_data-text
gw_data-text

TO
TO
TO
TO
TO
TO

gw_header-username,
gw_header-co_area,
gw_header-docdate,
gw_header-postgdate,
gw_header-doc_hdr_tx,
gw_message-text.

*Convert date to external


lv_date = gw_data-pdate.
CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
EXPORTING
date_internal
= lv_date
IMPORTING
date_external
= gw_message-pdate
EXCEPTIONS
date_internal_is_invalid = 1
OTHERS
= 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
lv_date = gw_data-ddate.
CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
EXPORTING
date_internal
= lv_date
IMPORTING
date_external
= gw_message-ddate
EXCEPTIONS
date_internal_is_invalid = 1
OTHERS
= 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.

"Message

gw_message-lnum = sy-tabix + 1.
ENDAT.
MOVE:gw_data-ekostl TO gw_item-rec_cctr,
gw_data-stagr TO gw_item-statkeyfig,
gw_data-mbgbtr TO gw_item-stat_qty.
APPEND gw_item TO gt_item.
CLEAR gw_item.
AT END OF kokrs.
CALL FUNCTION 'BAPI_ACC_STAT_KEY_FIG_POST'
EXPORTING
doc_header
= gw_header
ignore_warnings = 'X'
IMPORTING
doc_no
= gv_docnum
TABLES
doc_items
= gt_item
return
= gt_return.
READ TABLE gt_return INTO gw_return
WITH KEY type = 'E'.
IF sy-subrc = 0.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
MOVE:'Error'(011) TO gw_message-status,
gw_return-message TO gw_message-remark.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
MOVE:'Success'(010) TO gw_message-status,
gw_return-message TO gw_message-remark,
gv_docnum TO gw_message-docnum.
IF gw_message-remark IS INITIAL.
CONCATENATE 'Document'(008) gv_docnum 'Posted Successfully'(009)
INTO gw_message-remark
SEPARATED BY space.
ENDIF.
ENDIF.
APPEND gw_message TO gt_message.
CLEAR:gw_message, gw_data, gv_docnum, gt_item, gw_return, gt_return.
ENDAT.
ENDLOOP.
ENDFORM.
" F_FILL_BAPI_STRUCTURE_UPDATE
*&---------------------------------------------------------------------*
*&
Form F_DISPLAY
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM f_display .
DATA: lv_functions TYPE REF TO cl_salv_functions_list.
TRY.

cl_salv_table=>factory(
IMPORTING
r_salv_table = gt_table
CHANGING
t_table
= gt_message ).
CATCH cx_salv_msg.
ENDTRY.
* activate ALV generic Functions
lv_functions = gt_table->get_functions( ).
lv_functions->set_all( abap_true ).
**Allow the user to manage layouts of the ALV grid
gr_layout = gt_table->get_layout( ).
key-report = sy-repid.
gr_layout->set_key( key ).
gr_layout->set_save_restriction( cl_salv_layout=>restrict_none ).
*Output Report Column labels
PERFORM f_field_labels.
*Display the table
gt_table->display( ).
ENDFORM.
" F_DISPLAY
*&---------------------------------------------------------------------*
*&
Form F_FIELD_LABELS
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM f_field_labels .
* Local constants for field names and descriptions
CONSTANTS:lc_pdate
TYPE lvc_fname VALUE 'PDATE',
lc_lnum
TYPE lvc_fname VALUE 'LNUM',
lc_ddate
TYPE lvc_fname VALUE 'DDATE',
lc_text
TYPE lvc_fname VALUE 'TEXT',
lc_status
TYPE lvc_fname VALUE 'STATUS',
lc_docnum
TYPE lvc_fname VALUE 'DOCNUM',
lc_remark
TYPE lvc_fname VALUE 'REMARK'.
DATA:lv_columns TYPE REF TO cl_salv_columns_table,
lv_column TYPE REF TO cl_salv_column_table.
lv_columns = gt_table->get_columns( ).
lv_columns->set_optimize( abap_true ).
TRY.
lv_column ?= lv_columns->get_column( lc_lnum ).
lv_column->set_long_text( 'Rec No in File'(001) ).
lv_column->set_medium_text( ' ' ).
lv_column->set_short_text( ' ' ).
CATCH cx_salv_not_found.
"#EC NO_HANDLER
ENDTRY.
TRY.
lv_column ?= lv_columns->get_column( lc_pdate ).
lv_column->set_long_text( 'Posting Date'(002) ).

lv_column->set_medium_text( ' ' ).


lv_column->set_short_text( ' ' ).
CATCH cx_salv_not_found.
ENDTRY.

"#EC NO_HANDLER

TRY.
lv_column ?= lv_columns->get_column( lc_ddate ).
lv_column->set_long_text( 'Document Date'(003) ).
lv_column->set_medium_text( ' ' ).
lv_column->set_short_text( ' ' ).
CATCH cx_salv_not_found.
"#EC NO_HANDLER
ENDTRY.
TRY.
lv_column ?= lv_columns->get_column( lc_text ).
lv_column->set_long_text( 'Header Text'(004) ).
lv_column->set_medium_text( ' ' ).
lv_column->set_short_text( ' ' ).
CATCH cx_salv_not_found.
ENDTRY.

"#EC NO_HANDLER

TRY.
lv_column ?= lv_columns->get_column( lc_status ).
lv_column->set_long_text( 'Status'(005) ).
lv_column->set_medium_text( ' ' ).
lv_column->set_short_text( ' ' ).
CATCH cx_salv_not_found.
"#EC NO_HANDLER
ENDTRY.
TRY.
lv_column ?= lv_columns->get_column( lc_docnum ).
lv_column->set_long_text( 'Document Number'(006) ).
lv_column->set_medium_text( ' ' ).
lv_column->set_short_text( ' ' ).
CATCH cx_salv_not_found.
"#EC NO_HANDLER
ENDTRY.
TRY.
lv_column ?= lv_columns->get_column( lc_remark ).
lv_column->set_long_text( 'Remarks'(007) ).
lv_column->set_medium_text( ' ' ).
lv_column->set_short_text( ' ' ).
CATCH cx_salv_not_found.
"#EC NO_HANDLER
ENDTRY.
ENDFORM.
" F_FIELD_LABELS
*&---------------------------------------------------------------------*
*&
Form F_FORMAT_DATA
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM f_format_data .
DATA:lw_data TYPE gty_data,
lv_index TYPE sy-tabix.
LOOP AT gt_data INTO gw_data.
MOVE:sy-tabix TO lv_index.
*Convert ekostl to internal format

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'


EXPORTING
input = gw_data-ekostl
IMPORTING
output = gw_data-ekostl.
*If header data is initial then pass the previous header data to the current row
IF gw_data-pdate IS INITIAL
AND gw_data-ddate IS INITIAL
AND gw_data-text IS INITIAL
AND gw_data-kokrs IS INITIAL.
MOVE:lw_data-pdate TO gw_data-pdate,
lw_data-ddate TO gw_data-ddate,
lw_data-text TO gw_data-text,
lw_data-stagr TO gw_data-stagr,
lw_data-kokrs TO gw_data-kokrs.
ELSE.
*If header data is not initial then it is a new record
MOVE:gw_data-pdate TO lw_data-pdate,
gw_data-ddate TO lw_data-ddate,
gw_data-text TO lw_data-text,
gw_data-kokrs TO lw_data-kokrs,
gw_data-stagr TO lw_data-stagr.
ENDIF.
MODIFY gt_data FROM gw_data INDEX lv_index
TRANSPORTING pdate
ddate
text
kokrs
ekostl
stagr.
ENDLOOP.
ENDFORM.
" F_FORMAT_DATA
*&---------------------------------------------------------------------*
*&
Form F_CONVERT_DATES_TO_INT_FRMT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM f_convert_dates_to_int_frmt .
DATA:lv_date(10) TYPE c.
*Convert Document Date
CLEAR lv_date.
MOVE:gw_data-ddate TO lv_date.
CLEAR:gw_data-ddate.
CONCATENATE lv_date+4(4) lv_date+0(2) lv_date+2(2) INTO gw_data-ddate.
*Convert Posting Date
CLEAR lv_date.
MOVE:gw_data-pdate TO lv_date.
CLEAR:gw_data-pdate.
CONCATENATE lv_date+4(4) lv_date+0(2) lv_date+2(2) INTO gw_data-pdate.
ENDFORM.

" F_CONVERT_DATES_TO_INT_FRMT

You might also like