Bapi Statistical Key Figure Uplaod Report
Bapi Statistical Key Figure Uplaod Report
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
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.
"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) ).
"#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
" F_CONVERT_DATES_TO_INT_FRMT