Hi,
Can you check my code. I've tried changing the data types of my internal table and my output is stll same when I press enter.
The output should be 2.00 3.00 5.00 7.00
Image may be NSFW.
Clik here to view.
Also if I enter 12345.00 the output should be 12,345.00.
Thank you so much for the help.
* ALV required data objects.
TYPE-POOLS: sdydo, icon, slis.
DATA: w_title TYPE lvc_title,
w_repid TYPE sy-repid,
w_comm TYPE slis_formname,
w_status TYPE slis_formname,
x_layout TYPE slis_layout_alv,
ls_events TYPE LINE OF slis_t_event,
t_events TYPE slis_t_event,
t_fieldcat TYPE slis_t_fieldcat_alv,
x_sort type LINE OF slis_t_sortinfo_alv,
t_sort TYPE slis_t_sortinfo_alv,
ls_heading TYPE slis_listheader,
t_heading TYPE slis_t_listheader,
ls_fieldcat TYPE slis_fieldcat_alv,
gs_variant LIKE disvariant,
gt_events TYPE slis_t_event,
gs_events TYPE slis_alv_event.
DATA:
wa_layout TYPE slis_layout_alv,
wa_events TYPE slis_alv_event,
wa_sort TYPE slis_sortinfo_alv.
TYPES: BEGIN OF t_header,
line01(555) TYPE c,
line02(555) TYPE c,
END OF t_header.
DATA: is_print TYPE slis_print_alv,
gset TYPE lvc_s_glay,
%runmode TYPE aqlimode.
data: it_sortcat type slis_sortinfo_alv occurs 1.
DATA: gw_header TYPE t_header.
" END OF ALV DATA
"========================================================================================================================
DATA: BEGIN OF it_data OCCURS 0,
docno LIKE zit_haul_line-docno,
line LIKE zit_haul_line-line,
eqpno LIKE zit_haul_line-eqpno,
rpt TYPE p DECIMALS 2, "LIKE zit_haul_line-rpt,
notrip TYPE p DECIMALS 2,
trc TYPE p DECIMALS 2,
escfee TYPE p DECIMALS 2,
tollfee TYPE p DECIMALS 2,
repr TYPE p DECIMALS 2,
others TYPE p DECIMALS 2,
tba TYPE p DECIMALS 2,
dik LIKE zit_haul_line-dik,
locorg LIKE zit_haul_line-locorg,
locdes LIKE zit_haul_line-locdes,
END OF it_data.
DATA: wa_data LIKE it_data.
DATA: it_modified TYPE STANDARD TABLE OF zit_haul_line WITH HEADER LINE.
DATA: wa_modified TYPE STANDARD TABLE OF zit_haul_line WITH HEADER LINE.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS: r_create RADIOBUTTON GROUP rad1 USER-COMMAND a DEFAULT 'X'.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME.
PARAMETERS: r_proj RADIOBUTTON GROUP rad2 MODIF ID A.
PARAMETERS: r_cost RADIOBUTTON GROUP rad2 MODIF ID A.
SELECTION-SCREEN END OF BLOCK b2.
PARAMETERS: r_post RADIOBUTTON GROUP rad1.
PARAMETERS: r_rev RADIOBUTTON GROUP rad1.
SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME.
PARAMETERS: p_docno LIKE mseg-belnr MODIF ID B,
p_post LIKE sy-datum MODIF ID B.
SELECTION-SCREEN END OF BLOCK b3.
SELECTION-SCREEN BEGIN OF BLOCK b4 WITH FRAME.
PARAMETERS: p_trand LIKE sy-datum,
p_cost LIKE csks-kostl,
p_proj TYPE string,
p_wbs TYPE string,
p_nwa TYPE string.
SELECTION-SCREEN END OF BLOCK b4.
SELECTION-SCREEN END OF BLOCK b1.
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF r_create = 'X'.
IF screen-group1 = 'A'.
screen-active = 1.
ENDIF.
ELSE.
IF screen-group1 = 'A'.
screen-active = 0.
ENDIF.
ENDIF.
IF r_post = 'X' OR r_rev = 'X'.
IF screen-group1 = 'B'.
screen-active = 1.
ENDIF.
ELSE.
IF screen-group1 = 'B'.
screen-active = 0.
ENDIF.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
START-OF-SELECTION.
PERFORM get_data.
PERFORM display_report.
FORM get_data.
it_data-line = '001'.
APPEND it_data.
it_data-line = '002'.
APPEND it_data.
it_data-line = '003'.
APPEND it_data.
it_data-line = '004'.
APPEND it_data.
it_data-line = '005'.
APPEND it_data.
it_data-line = '006'.
APPEND it_data.
it_data-line = '007'.
APPEND it_data.
it_data-line = '008'.
APPEND it_data.
it_data-line = '009'.
APPEND it_data.
it_data-line = '010'.
APPEND it_data.
ENDFORM.
"ALV DISPLAY ====================================================================================================================================
"&---------------------------------------------------------------------*
"& Form PF_WRITE_FIELDCAT
"&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form pf_write_fieldcat
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->FNAME text
* -->TNAME text
* -->TEXT text
* -->LEN text
*----------------------------------------------------------------------*
FORM pf_write_fieldcat USING fname
tname
text
len
edt.
* key
* sum.
ls_fieldcat-fieldname = fname.
ls_fieldcat-tabname = tname.
ls_fieldcat-seltext_l = text.
ls_fieldcat-outputlen = len.
* ls_fieldcat-key = key.
* ls_fieldcat-do_sum = sum.
ls_fieldcat-edit = edt.
IF len = '0'.
ls_fieldcat-outputlen = '1'.
ls_fieldcat-no_out = 'X'.
ENDIF.
APPEND ls_fieldcat TO t_fieldcat.
CLEAR ls_fieldcat.
* To set ENTER Event!
gs_events-name = 'CALLER_EXIT'.
gs_events-form = 'CALLER_EXIT'.
APPEND gs_events TO gt_events.
* To change the ALV Changed Protocoll
gs_events-name = 'DATA_CHANGED'.
gs_events-form = 'DATA_CHANGED'.
APPEND gs_events TO gt_events.
ENDFORM. " PF_WRITE_FIELDCAT
*&---------------------------------------------------------------------*
*& Form display_report
*&---------------------------------------------------------------------*
FORM display_report.
is_print-no_print_selinfos = 'X'.
is_print-no_print_listinfos = 'X'.
is_print-print_ctrl = 'X'.
PERFORM pf_write_fieldcat USING:
* 'DOCNO' 'IT_DATA' 'Line' ' ' '',
'LINE' 'IT_DATA' 'Line' ' ' '',
'EQPNO' 'IT_DATA' 'Equipment No.' ' ' 'X',
'RPT' 'IT_DATA' 'Rate per Trip' ' ' 'X',
'NOTRIP' 'IT_DATA' 'No of Trip' ' ' 'X',
'TRC' 'IT_DATA' 'Total Rental Charges' ' ' '',
'ESCFEE' 'IT_DATA' 'Escort Fee' ' ' 'X',
'TOLLFEE' 'IT_DATA' 'Toll Fee' ' ' 'X',
'REPR' 'IT_DATA' 'Representation' ' ' 'X',
'OTHERS' 'IT_DATA' 'Others' ' ' 'X',
'TBA' 'IT_DATA' 'Total Billable Amount' ' ' '',
'DIK' 'IT_DATA' 'Distance in KM' ' ' 'X',
'LOCORG' 'IT_DATA' 'Location Origin' ' ' 'X',
'LOCDES' 'IT_DATA' 'Location Destination' ' ' 'X'.
* Layout
x_layout-zebra = 'X'.
x_layout-no_keyfix = ' '.
x_layout-colwidth_optimize = 'X'.
* GUI Status
w_status = 'SET_PF_STATUS'.
w_repid = sy-repid.
* User commands
w_comm = 'USER_COMMAND'.
* gs_variant-variant = p_var1.
* gs_variant-handle = space.
* gs_variant-report = sy-repid.
gs_variant-report = sy-repid.
gs_variant-username = sy-uname.
gset-no_colwopt = 'X'.
* Displays the ALV grid
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
it_fieldcat = t_fieldcat
is_layout = x_layout
"it_sort = t_sort
it_sort = it_sortcat
* i_callback_pf_status_set = w_status
"i_callback_user_command = w_comm
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
* i_callback_html_top_of_page = 'TOP_OF_PAGE'
i_callback_top_of_page = 'TOP-OF-PAGE'
* i_callback_html_end_of_list = 'END-OF-PAGE'
is_variant = gs_variant
i_save = 'A'
is_print = is_print
it_events = gt_events
* i_grid_title = w_title
TABLES
t_outtab = IT_DATA
EXCEPTIONS
program_error = 1
OTHERS = 2.
ENDFORM. " display_report
FORM data_changed USING ir_data_changed TYPE REF TO cl_alv_changed_data_protocol.
DATA ls_modi TYPE lvc_s_modi.
DATA: ratepertrip LIKE zit_haul_line-rpt,
nooftrip LIKE zit_haul_line-notrip,
lv_value TYPE lvc_value ,
totalrent LIKE zit_haul_line-trc,
escortfee LIKE zit_haul_line-escfee,
tollfee LIKE zit_haul_line-tollfee,
represent LIKE zit_haul_line-repr,
others LIKE zit_haul_line-others,
lv_value1 TYPE lvc_value,
totalbill LIKE zit_haul_line-tba.
DATA: eqpno LIKE equi-equnr,
gv_equnr LIKE equi-equnr.
* Check each modification:
LOOP AT ir_data_changed->mt_mod_cells INTO ls_modi.
CASE ls_modi-fieldname.
WHEN 'EQPNO'.
CONDENSE ls_modi-value.
SELECT SINGLE equnr
INTO gv_equnr
FROM equi
WHERE equnr EQ ls_modi-value.
IF sy-subrc NE 0.
CALL METHOD ir_data_changed->add_protocol_entry
EXPORTING
i_msgid = '00'
i_msgty = 'E'
i_msgno = '398'
i_msgv1 = 'Equipment Number does not exist:'
i_msgv2 = ls_modi-value
i_msgv3 = ''
i_msgv4 = ''
i_fieldname = ls_modi-fieldname
i_row_id = ls_modi-row_id.
ENDIF.
ENDCASE.
CALL METHOD ir_data_changed->get_cell_value
EXPORTING i_row_id = ls_modi-row_id
i_fieldname = 'RPT'
IMPORTING e_value = ratepertrip.
CALL METHOD ir_data_changed->get_cell_value
EXPORTING i_row_id = ls_modi-row_id
i_fieldname = 'NOTRIP'
IMPORTING e_value = nooftrip.
CLEAR totalrent.
ls_modi-fieldname = 'TRC'.
IF ratepertrip = ''.
ratepertrip = 1.
ELSEIF nooftrip = ''.
nooftrip = 1.
ENDIF.
totalrent = ratepertrip * nooftrip.
CALL METHOD ir_data_changed->modify_cell
EXPORTING i_row_id = ls_modi-row_id
i_fieldname = ls_modi-fieldname
i_value = totalrent.
CALL METHOD ir_data_changed->get_cell_value
EXPORTING i_row_id = ls_modi-row_id
i_fieldname = 'ESCFEE'
IMPORTING e_value = escortfee.
CALL METHOD ir_data_changed->get_cell_value
EXPORTING i_row_id = ls_modi-row_id
i_fieldname = 'TOLLFEE'
IMPORTING e_value = tollfee.
CALL METHOD ir_data_changed->get_cell_value
EXPORTING i_row_id = ls_modi-row_id
i_fieldname = 'REPR'
IMPORTING e_value = represent.
CALL METHOD ir_data_changed->get_cell_value
EXPORTING i_row_id = ls_modi-row_id
i_fieldname = 'OTHERS'
IMPORTING e_value = others.
CLEAR totalbill.
ls_modi-fieldname = 'TBA'.
totalbill = escortfee + tollfee + represent + others.
totalbill = totalrent + totalbill.
CALL METHOD ir_data_changed->modify_cell
EXPORTING i_row_id = ls_modi-row_id
i_fieldname = ls_modi-fieldname
i_value = totalbill.
ENDLOOP.
ENDFORM. "data_changed
FORM caller_exit USING is_data TYPE slis_data_caller_exit.
* Switch to OO_ALV:
DATA: lr_alv TYPE REF TO cl_gui_alv_grid.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = lr_alv.
* Register ENTER as edit event:
CALL METHOD lr_alv->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_enter.
* pls. use MC_EVT_MODIFIED if leaving the cell should trigger the edit event!
ENDFORM. "CALLER_EXIT
*&---------------------------------------------------------------------*
*& Form TOP-OF-PAGE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM top-of-page.
*ALV Header declarations
DATA: t_header TYPE slis_t_listheader,
wa_header TYPE slis_listheader,
t_line LIKE wa_header-info,
ld_lines TYPE i,
ld_linesc(10) TYPE c.
DATA: text TYPE sdydo_text_element,
a_right TYPE REF TO cl_dd_area.
DATA: tran TYPE string,
send TYPE string,
wbs TYPE string,
nwa TYPE string.
text = 'Create Hauling Charges for Project'.
wa_header-typ = 'S'.
wa_header-info = text.
APPEND wa_header TO t_header.
CLEAR: wa_header.
gw_header-line01 = text.
CONCATENATE 'Transaction Date: ' p_trand INTO tran SEPARATED BY space.
text = tran.
wa_header-typ = 'S'.
wa_header-info = text.
APPEND wa_header TO t_header.
CLEAR: wa_header.
gw_header-line01 = text.
CONCATENATE 'Sender Cost Center: ' p_cost INTO send SEPARATED BY space.
text = send.
wa_header-typ = 'S'.
wa_header-info = text.
APPEND wa_header TO t_header.
CLEAR: wa_header.
gw_header-line01 = text.
CONCATENATE 'Receiver WBS: ' p_wbs INTO wbs SEPARATED BY space.
text = wbs.
wa_header-typ = 'S'.
wa_header-info = text.
APPEND wa_header TO t_header.
CLEAR: wa_header.
gw_header-line01 = text.
CONCATENATE 'Receiver Network and NWA: ' p_nwa INTO nwa SEPARATED BY space.
text = nwa.
wa_header-typ = 'S'.
wa_header-info = text.
APPEND wa_header TO t_header.
CLEAR: wa_header.
gw_header-line01 = text.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = t_header.
ENDFORM. "top-of-page
FORM pf_set_top_page_heading USING typ
key
info.
ls_heading-typ = typ.
ls_heading-key = key.
ls_heading-info = info.
APPEND ls_heading TO t_heading.
ENDFORM. " PF_SET_TOP_PAGE_HEADING
*&---------------------------------------------------------------------*
*& Form PF_SET_TOP_PAGE_EVENTS
*&---------------------------------------------------------------------*
FORM pf_set_top_page_events USING name
form.
ls_events-name = name.
ls_events-form = form.
APPEND ls_events TO t_events.
CLEAR ls_events.
ENDFORM. " PF_SET_TOP_PAGE_EVENTS
*&---------------------------------------------------------------------*
*& Form REUSE_ALV_GET_VARIANT
*&---------------------------------------------------------------------*
FORM reuse_alv_get_variant
USING value(iv_repid) TYPE sy-repid
value(iv_handle) TYPE slis_handl
CHANGING iv_variant TYPE disvariant-variant.
DATA: lv_exit(1) TYPE c,
ls_variant TYPE disvariant. " Structure for Variant
MOVE: iv_variant TO ls_variant-variant,
iv_handle TO ls_variant-handle,
iv_repid TO ls_variant-report.
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
is_variant = ls_variant
i_save = 'A'
IMPORTING
e_exit = lv_exit
es_variant = ls_variant
EXCEPTIONS
not_found = 1
program_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
IF lv_exit = space.
MOVE ls_variant-variant TO iv_variant.
ENDIF.
ENDFORM. " REUSE_ALV_GET_VARIANT "
FORM user_command USING w_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
CASE w_ucomm.
WHEN '&DATA_SAVE'.
* READ TABLE it_data INTO wa_data." INDEX rs_selfield-tabindex.
DELETE it_data WHERE eqpno IS INITIAL.
LOOP AT it_data INTO wa_data.
CONDENSE wa_data-eqpno.
MOVE-CORRESPONDING wa_data TO wa_modified.
APPEND wa_modified TO it_modified.
ENDLOOP.
MODIFY zit_haul_line FROM TABLE it_modified.
ENDCASE.
ENDFORM. "user_command