Bank Project
Bank Project
STATUS=================================
*----------------------------------------------------------------------*
***INCLUDE ZT039_BANK_TASK_STATUSO01.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module STATUS OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE status OUTPUT.
SET PF-STATUS 'STATUS'.
SET TITLEBAR 'TITLE'.
CONSTANTS: cntl_true TYPE i VALUE 1,
DATA:
DATA: graphic_url(255),
graphic_refresh(1),
line(255) TYPE x,
END OF graphic_table.
**********************************************
l_graphic_conv TYPE i,
l_graphic_offs TYPE i.
EXPORTING
p_object = 'GRAPHICS'
p_id = 'BMAP'
BOOKING USER COMMAND
RECEIVING
p_bmp = l_graphic_xstr
EXCEPTIONS
not_found = 1
OTHERS = 2.
l_graphic_conv = graphic_size.
l_graphic_offs = 0.
graphic_table-line = l_graphic_xstr+l_graphic_offs(255).
APPEND graphic_table.
ENDWHILE.
graphic_table-line = l_graphic_xstr+l_graphic_offs(l_graphic_conv).
APPEND graphic_table.
EXPORTING
size = graphic_size
TABLES
data = graphic_table
CHANGING
url = graphic_url
EXCEPTIONS
BOOKING USER COMMAND
dp_invalid_parameter = 1
dp_error_put_table = 2
dp_error_general = 3
OTHERS = 4 .
IF sy-subrc <> 0.
EXIT.
ENDIF.
EXPORTING
url = graphic_url
IMPORTING
RESULT = g_result.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module STATUS_9002 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE status_9002 OUTPUT.
SET PF-STATUS 'STATUS'.
* SET TITLEBAR 'xxx'.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module STATUS_9003 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE status_9003 OUTPUT.
SET PF-STATUS 'STATUS'.
* SET TITLEBAR 'xxx'.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module STATUS_9004 OUTPUT
*&---------------------------------------------------------------------*
*&
BOOKING USER COMMAND
*&---------------------------------------------------------------------*
MODULE status_9004 OUTPUT.
SET PF-STATUS 'STATUS'.
SELECT * FROM zt039_bank_info INTO TABLE gt_bank_info.
*-----------------------------CREATING FIELDCATLOG------------------------
-----
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
* I_BUFFER_ACTIVE =
i_structure_name = 'ZT039_BANK_INFO'
* I_CLIENT_NEVER_DISPLAY = 'X'
* I_BYPASSING_BUFFER =
* I_INTERNAL_TABNAME =
CHANGING
ct_fieldcat = lt_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
IF lo_obj IS INITIAL.
CREATE OBJECT lo_obj
EXPORTING
container_name = 'ALV_AREA'.
gs_layout-edit = 'X'.
ENDIF.
LOOP AT lt_fieldcat INTO wa_fieldcat.
IF wa_fieldcat-fieldname NE 'CUST_ID' AND wa_fieldcat-fieldname NE 'T_D
ATE'.
wa_fieldcat-edit = 'X'.
MODIFY lt_fieldcat FROM wa_fieldcat.
ELSE.
wa_fieldcat-edit = ' '.
MODIFY lt_fieldcat FROM wa_fieldcat.
ENDIF.
ENDLOOP.
CALL METHOD lo_grid->set_table_for_first_display
CHANGING
it_outtab = gt_bank_info
it_fieldcatalog = lt_fieldcat
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
BOOKING USER COMMAND
*-----------------------------CREATING FIELDCATLOG------------------------
-----
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
* I_BUFFER_ACTIVE =
i_structure_name = 'ZT039_BANK_INFO'
* I_CLIENT_NEVER_DISPLAY = 'X'
* I_BYPASSING_BUFFER =
* I_INTERNAL_TABNAME =
CHANGING
ct_fieldcat = lt_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
IF lo_obj IS INITIAL.
CREATE OBJECT lo_obj
EXPORTING
container_name = 'ALV_AREA'.
gs_layout-edit = 'X'.
ENDIF.
LOOP AT lt_fieldcat INTO wa_fieldcat.
IF wa_fieldcat-fieldname NE 'CUST_ID' AND wa_fieldcat-fieldname NE 'T_D
ATE'.
wa_fieldcat-edit = ''.
MODIFY lt_fieldcat FROM wa_fieldcat.
* ELSE.
* wa_fieldcat-edit = 'X'.
* MODIFY lt_fieldcat FROM wa_fieldcat.
BOOKING USER COMMAND
ENDIF.
ENDLOOP.
CALL METHOD lo_grid->set_table_for_first_display
CHANGING
it_outtab = gt_bank_info
it_fieldcatalog = lt_fieldcat
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
IF lo_grid->is_ready_for_input( ) EQ 0.
CALL METHOD lo_grid->set_ready_for_input
EXPORTING
i_ready_for_input = 1.
ENDIF.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module STATUS_9006 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE status_9006 OUTPUT.
SET PF-STATUS 'STATUS'.
* SET TITLEBAR 'xxx'.
SELECT * FROM zt039_bank_info INTO TABLE gt_bank_info.
*-----------------------------CREATING FIELDCATLOG------------------------
-----
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
* I_BUFFER_ACTIVE =
i_structure_name = 'ZT039_BANK_INFO'
* I_CLIENT_NEVER_DISPLAY = 'X'
* I_BYPASSING_BUFFER =
* I_INTERNAL_TABNAME =
CHANGING
ct_fieldcat = lt_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
IF lo_obj IS INITIAL.
CREATE OBJECT lo_obj
BOOKING USER COMMAND
EXPORTING
container_name = 'ALV_AREA'.
gs_layout-edit = 'X'.
ENDIF.
CALL METHOD lo_grid->set_table_for_first_display
CHANGING
it_outtab = gt_bank_info
it_fieldcatalog = lt_fieldcat
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
USER COMMAND=======================
*----------------------------------------------------------------------*
***INCLUDE ZT039_BANK_TASK_USER_COMMANI01.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module USER_COMMAND INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command INPUT.
CASE sy-ucomm.
WHEN 'FC1'.
CALL SCREEN '9002'.
WHEN 'FC2'.
CALL SCREEN '9003'.
WHEN 'FC3'.
CALL SCREEN '9004'.
WHEN 'FC4'.
CALL SCREEN '9005'.
WHEN 'FC5'.
CALL SCREEN '9006'.
WHEN 'BACK'.
CALL SCREEN '9001'.
WHEN 'EXIT'.
LEAVE PROGRAM.
BOOKING USER COMMAND
ENDCASE.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_9002 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_9002 INPUT.
CASE sy-ucomm.
WHEN 'SAVE'.
LOOP AT gt_bank INTO gs_bank1.
IF gs_bank-cust_id = gs_bank1-cust_id.
MESSAGE: 'ID ALREADY EXISTS' TYPE 'E'.
ENDIF.
ENDLOOP.
INSERT INTO zt039_bank VALUES gs_bank.
IF sy-subrc = 0.
MESSAGE: 'Account Created Successfully..' TYPE 'S'.
ENDIF.
WHEN 'FC2'.
CALL SCREEN '9003'.
WHEN 'FC3'.
CALL SCREEN '9004'.
WHEN 'FC4'.
CALL SCREEN '9005'.
WHEN 'FC5'.
CALL SCREEN '9006'.
WHEN 'BACK'.
CALL SCREEN '9001'.
WHEN 'EXIT'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_9003 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_9003 INPUT.
SELECT * FROM zt039_bank INTO TABLE gt_bank.
READ TABLE gt_bank INTO gs_bank WITH KEY cust_id = gs_bank-cust_id.
CASE sy-ucomm.
WHEN 'SAVE'.
LOOP AT gt_bank_info INTO gs_bank1_info.
IF gs_bank_info-cust_id = gs_bank1_info-cust_id.
IF gs_bank_info-trans_type = 'C'.
gs_bank-cust_balance = gs_bank_info-amount + gs_bank-
cust_balance.
ELSEIF gs_bank_info-trans_type = 'D'.
gs_bank-cust_balance = gs_bank_info-amount - gs_bank-
cust_balance.
ENDIF.
ENDIF.
INSERT INTO zt039_bank_info VALUES gs_bank_info.
INSERT INTO zt039_bank VALUES gs_bank.
ENDLOOP.
BOOKING USER COMMAND
WHEN 'FC1'.
CALL SCREEN '9002'.
WHEN 'FC3'.
CALL SCREEN '9004'.
WHEN 'FC4'.
CALL SCREEN '9005'.
WHEN 'FC5'.
CALL SCREEN '9006'.
WHEN 'BACK'.
CALL SCREEN '9001'.
WHEN 'EXIT'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_9004 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_9004 INPUT.
SELECT * FROM zt039_bank INTO TABLE gt_bank.
CALL METHOD lo_grid->get_current_cell
IMPORTING
e_row = e_row " Row on Grid
e_value = e_value " Value
e_col = e_col " Column on Grid
* es_row_id = " Row ID
es_col_id = es_col_id " Column ID
* es_row_no = " Numeric Row ID
.
CASE sy-ucomm.
WHEN 'SAVE'.
READ TABLE gt_bank_info INTO gs_bank_info INDEX e_row.
READ TABLE gt_bank INTO gs_bank WITH KEY cust_id = gs_bank_info-
cust_id.
IF es_col_id-fieldname = 'TRANS_TYPE'.
IF e_value = 'C'.
gs_bank-cust_balance = gs_bank-cust_balance + gs_bank_info-
amount.
UPDATE zt039_bank FROM gs_bank.
gs_bank_info-trans_type = e_value.
ELSEIF e_value = 'D'.
gs_bank-cust_balance = gs_bank-cust_balance - gs_bank_info-
amount.
UPDATE zt039_bank FROM gs_bank.
gs_bank_info-trans_type = e_value.
ENDIF.
ENDIF.
IF es_col_id-fieldname = 'AMOUNT'.
IF gs_bank_info-trans_type = 'C'.
IF e_value > gs_bank_info-amount.
gs_bank-cust_balance = gs_bank-cust_balance + ( e_value - gs_ba
nk_info-amount ).
ELSEIF e_value < gs_bank_info-amount.
gs_bank-cust_balance = gs_bank-cust_balance + ( gs_bank_info-
amount - e_value ).
ENDIF.
BOOKING USER COMMAND
ENDIF.
IF gs_bank_info-trans_type = 'D'.
IF e_value > gs_bank_info-amount.
gs_bank-cust_balance = gs_bank-cust_balance - ( e_value - gs_ba
nk_info-amount ).
ELSEIF e_value < gs_bank_info-amount.
gs_bank-cust_balance = gs_bank-cust_balance - ( gs_bank_info-
amount - e_value ).
ENDIF.
ENDIF.
ENDIF.
MODIFY gt_bank_info FROM gs_bank_info TRANSPORTING trans_type WHERE c
ust_id = gs_bank-cust_id.
MODIFY gt_bank FROM gs_bank TRANSPORTING cust_balance WHERE cust_id =
gs_bank-cust_id.
UPDATE zt039_bank FROM TABLE gt_bank.
WHEN 'FC1'.
CALL SCREEN '9002'.
WHEN 'FC2'.
CALL SCREEN '9003'.
WHEN 'FC4'.
CALL SCREEN '9005'.
WHEN 'FC5'.
CALL SCREEN '9006'.
WHEN 'BACK'.
CALL SCREEN '9001'.
WHEN 'EXIT'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_9005 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_9005 INPUT.
SELECT * FROM zt039_bank INTO TABLE gt_bank.
CALL METHOD lo_grid->get_selected_rows
IMPORTING
et_index_rows = row. " Indexes of Selected Rows
CASE sy-ucomm.
WHEN 'SAVE'.
LOOP AT row INTO rows.
READ TABLE gt_bank_info INTO gs_bank_info INDEX rows-index.
READ TABLE gt_bank INTO gs_bank WITH KEY cust_id = gs_bank_info-
cust_id.
IF gs_bank_info-trans_type = 'C'.
gs_bank-cust_balance = gs_bank-cust_balance - gs_bank_info-
amount.
ENDIF.
IF gs_bank_info-trans_type = 'D'.
gs_bank-cust_balance = gs_bank-cust_balance + gs_bank_info-
amount.
ENDIF.
MODIFY gt_bank FROM gs_bank TRANSPORTING cust_balance WHERE cust_id
= gs_bank-cust_id.
BOOKING USER COMMAND
F01==============================
*&---------------------------------------------------------------------*
*& Include ZT039_BANK_F01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form delete
*&---------------------------------------------------------------------*
*& text
BOOKING USER COMMAND
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM delete .
SELECT * FROM zt039_bank INTO TABLE gt_bank.
CALL METHOD lo_grid->get_selected_rows
IMPORTING
et_index_rows = row. " Indexes of Selected Rows
ENDFORM.
*&---------------------------------------------------------------------*
*& Form ALTER
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM alter .
SELECT * FROM zt039_bank INTO TABLE gt_bank.
CALL METHOD lo_grid->get_current_cell
IMPORTING
e_row = e_row " Row on Grid
e_value = e_value " Value
e_col = e_col " Column on Grid
* es_row_id = " Row ID
es_col_id = es_col_id " Column ID
* es_row_no = " Numeric Row ID
.
READ TABLE gt_bank_info INTO gs_bank_info INDEX e_row.
READ TABLE gt_bank INTO gs_bank WITH KEY cust_id = gs_bank_info-cust_id.
IF es_col_id-fieldname = 'TRANS_TYPE'.
IF e_value = 'C'.
gs_bank-cust_balance = gs_bank-cust_balance + gs_bank_info-amount.
UPDATE zt039_bank FROM gs_bank.
gs_bank_info-trans_type = e_value.
BOOKING USER COMMAND
TOP==========================
*&---------------------------------------------------------------------*
*& Include ZT039_BANK_TOP - Module Pool
ZT039_BANK_TASK
*&---------------------------------------------------------------------*
PROGRAM zt039_bank_task.