To Display Calender in F4 help in ALV Output Display.
Hello Experts.
I have one requirement. I have an ALV output. In this one date field is editable. Here User wants F4 Help. I have provided the F4 help, F4 help is coming but for F4 help i want the Factory Calendar type display. Currently the F4 help is coming like a normal F4 help.
Thanks.
Swati.
hi Swati,
I hope you have checked standard program 'bcalv_edit_08'.
in this program, if the type of field we are taking in that perticuler column is 'DATS' then it should display the calender.
Regards,
Ani
Similar Messages
-
Help on ALV GRID display outputting format for 2 internal tables
Hi,
I have requirement in ALV GRID where I need to display the data from 2 internal tables. The first internal table has the content of Delivery due list data and second the internal table has the corresponding stock transfer data of the Delivery Due list. I have a checbox on my selection screen, when unchecked it should output the 1st internal table data, i.e for Delivery due list. When it is checked then it should output 1st Internal table data + 2nd internal table data of stock transfer. For example, 1 document delivery due list data and 2nd line for that document should show the stock transfer data. You can also check the transaction code VL10E for that will show a delivery due list...and for stock tranfer,you need to check with Purchase order in in the USer Role tabstrip. Pls suggest.
Regards,
MiraHi,
U can try out this code
REPORT zzz_test NO STANDARD PAGE HEADING
MESSAGE-ID zz.
The Data Declarations
INCLUDE zzm_test_alv_data.
The Selection Screen Definition
INCLUDE zzm_test_alv_selscrn.
The definition and implementation of the event reciever class
INCLUDE zzm_test_alv_class.
START-OF-SELECTION
START-OF-SELECTION.
PERFORM f1000_load_itabs.
END-OF-SELECTION
END-OF-SELECTION.
IF NOT cb_disp IS INITIAL.
CALL SCREEN 9001.
ENDIF.
Include for getting data
INCLUDE zzm_test_alv_forms.
Include for PAI and PBO of screen
INCLUDE zzm_test_alv_screen.
INCLUDE ZZM_TEST_ALV_DATA *
This include has all the data declaration defined
Author............: Judith Jessie Selvi
Creation Date.....: 28/03/2005
Table Declarations:
TABLES: mara,
makt.
Internal Tables:
The following structure type must be defined in the data dictionary
DATA: i_fieldcat TYPE lvc_t_fcat,
i_fieldcat1 TYPE lvc_t_fcat,
i_output1 TYPE STANDARD TABLE OF mara,
i_output2 TYPE STANDARD TABLE OF makt,
Work Areas:
w_output1 TYPE STANDARD TABLE OF mara,
w_output2 TYPE STANDARD TABLE OF makt.
Variable:
DATA: lv_repid LIKE sy-repid.
lv_repid = sy-repid.
INCLUDE ZZM_TEST_ALV_SELSCRN *
Author............: Judith Jessie Selvi
Creation Date.....: 28/03/2005
SELECTION-SCREEN BEGIN OF BLOCK b_main WITH FRAME TITLE text-001.
SELECTION-SCREEN SKIP 1.
PARAMETERS: cb_disp AS CHECKBOX.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN END OF BLOCK b_main.
INCLUDE ZZM_TEST_ALV_CLASS *
This include has all the data declaration defined for ALV
Author............: Judith Jessie Selvi
Creation Date.....: 28/03/2005
INCLUDE <icon>.
Predefine a local class for event handling to allow the
declaration of a reference variable before the class is defined.
DATA : o_alvgrid1 TYPE REF TO cl_gui_alv_grid ,
o_alvgrid2 TYPE REF TO cl_gui_alv_grid ,
cont_for_cognos1 TYPE scrfname VALUE 'BCALC_GRID_01_9100',
cont_for_cognos2 TYPE scrfname VALUE 'BCALC_GRID_01_9200',
custom_container1 TYPE REF TO cl_gui_custom_container,
custom_container2 TYPE REF TO cl_gui_custom_container,
Work Area
w_layout TYPE lvc_s_layo ,
w_variant TYPE disvariant.
Constants
CONSTANTS : c_lay(1) TYPE c VALUE 'A' . " All Layouts
CONSTANTS: BEGIN OF c_main_tab,
tab1 LIKE sy-ucomm VALUE 'MAIN_TAB_FC1', "
tab2 LIKE sy-ucomm VALUE 'MAIN_TAB_FC2', "
END OF c_main_tab.
INCLUDE ZZM_TEST_ALV_FORMS *
This Include has the various forms used in the program
Author............: Judith Jessie Selvi
Creation Date.....: 28/03/2005
*& Form f9001_build_field_cat
To Build Field Catalog
-->P_I_FIELDCAT text
-->P_0021 text
FORM f9001_build_field_cat TABLES p_fieldcat STRUCTURE lvc_s_fcat
USING value(p_structure).
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = p_structure
CHANGING
ct_fieldcat = p_fieldcat[]
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE i005 WITH 'Error in ALV field catalogue creation'.
" text-e05.
LEAVE LIST-PROCESSING.
ENDIF.
ENDFORM. " f9001_build_field_cat
*& Form f9000_objects_create
For creating Custom Containers
--> p1 text
<-- p2 text
FORM f9000_objects_create.
CREATE OBJECT custom_container1
EXPORTING
container_name = cont_for_cognos1
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5.
CREATE OBJECT custom_container2
EXPORTING
container_name = cont_for_cognos2
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5.
IF sy-subrc NE 0.
add your handling, for example
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
titel = lv_repid
txt2 = sy-subrc
txt1 = 'The control could not be created'(510).
ENDIF.
CREATE OBJECT o_alvgrid1
EXPORTING i_parent = custom_container1.
CREATE OBJECT o_alvgrid2
EXPORTING i_parent = custom_container2.
ENDFORM. " f9000_objects_create
*& Form f9003_layout
To define the layout
-->P_SY_TITLE text
-->P_0030 text
-->P_0031 text
-->P_0032 text
FORM f9003_layout USING value(ptitle)
value(pzebra)
value(pmode)
value(pwidth).
w_layout-grid_title = ptitle.
w_layout-zebra = pzebra.
w_layout-sel_mode = pmode.
w_layout-cwidth_opt = pwidth.
w_variant-report = sy-repid.
ENDFORM. " f9003_layout
*& Form f9006_error_handle
To handle event
-->P_PTEXT text
FORM f9006_error_handle USING value(ptext).
IF sy-subrc NE 0.
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
titel = text-e03 " Error Note
txt2 = sy-subrc
txt1 = ptext.
ENDIF.
ENDFORM. " f9006_error_handle
FORM EXIT_PROGRAM *
FORM exit_program.
CALL METHOD custom_container1->free.
CALL METHOD custom_container2->free.
CALL METHOD cl_gui_cfw=>flush.
IF sy-subrc NE 0.
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
titel = lv_repid
txt2 = sy-subrc
txt1 = 'Error in FLush'(500).
ENDIF.
ENDFORM.
*& Form f1000_load_itabs
Select from Database
--> p1 text
<-- p2 text
form f1000_load_itabs.
SELECT * FROM mara
INTO TABLE i_output1
UP TO 50 rows.
SELECT * FROM makt
INTO TABLE i_output2
UP TO 50 rows.
endform. " f1000_load_itabs
INCLUDE ZZM_TEST_ALV_SCREEN *
2/ Description / Include functions
This include contains PBO and PAI events for the screen of report
ZZZJJ_TEST_ALV
3/ Responsibility
Author............: Judith Jessie Selvi
Creation Date.....: 28/03/2005
DATA FOR TABSTRIP 'MAIN_TAB'
CONTROLS: main_tab TYPE TABSTRIP.
DATA: BEGIN OF i_main_tab,
subscreen LIKE sy-dynnr,
prog LIKE sy-repid VALUE
'ZZZ_TEST',
pressed_tab LIKE sy-ucomm VALUE c_main_tab-tab1,
END OF i_main_tab.
*& Module STATUS_9001 OUTPUT
text
MODULE status_9001 OUTPUT.
IF custom_container1 IS INITIAL.
SET PF-STATUS 'ZSTATUS'.
SET TITLEBAR 'ZTITLE'.
Creating Object
PERFORM f9000_objects_create.
Building the field catalog
PERFORM f9001_build_field_cat TABLES i_fieldcat
USING 'MARA'.
PERFORM f9001_build_field_cat TABLES i_fieldcat1
USING 'MAKT'.
Modifying the field catalog
PERFORM f9002_modify_field_cat TABLES i_fieldcat.
For Layout
PERFORM f9003_layout USING sy-title 'X' 'B' 'X'.
ENDIF.
ENDMODULE. " STATUS_9001 OUTPUT
*& Module MAIN_TAB_ACTIVE_TAB_SET OUTPUT
Call method to display in the output grid
MODULE main_tab_active_tab_set OUTPUT.
main_tab-activetab = i_main_tab-pressed_tab.
CASE i_main_tab-pressed_tab.
WHEN c_main_tab-tab1.
To display report
i_main_tab-subscreen = '9100'.
CALL METHOD o_alvgrid1->set_table_for_first_display
EXPORTING
is_variant = w_variant
i_save = c_lay
is_layout = w_layout
CHANGING
it_outtab = i_output1[]
it_fieldcatalog = i_fieldcat[]
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE i000 WITH text-e06."Error in ALV report display
LEAVE LIST-PROCESSING.
ENDIF.
WHEN c_main_tab-tab2.
To display report
i_main_tab-subscreen = '9200'.
CALL METHOD o_alvgrid2->set_table_for_first_display
EXPORTING
is_variant = w_variant
i_save = c_lay
is_layout = w_layout
CHANGING
it_outtab = i_output2[]
it_fieldcatalog = i_fieldcat1[]
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE i005 WITH text-e06."Error in ALV report display
LEAVE LIST-PROCESSING.
ENDIF.
WHEN OTHERS.
DO NOTHING
ENDCASE.
ENDMODULE. MAIN_TAB_ACTIVE_TAB_SET OUTPUT
*& Module MAIN_TAB_ACTIVE_TAB_GET INPUT
Check & Process the selected Tab
MODULE main_tab_active_tab_get INPUT.
CASE sy-ucomm.
WHEN c_main_tab-tab1.
i_main_tab-pressed_tab = c_main_tab-tab1.
WHEN c_main_tab-tab2.
i_main_tab-pressed_tab = c_main_tab-tab2.
WHEN OTHERS.
DO NOTHING
ENDCASE.
ENDMODULE. MAIN_TAB_ACTIVE_TAB_GET INPUT
*& Module USER_COMMAND_9001 INPUT
User Command
MODULE user_command_9001 INPUT.
CASE sy-ucomm.
WHEN 'BACK'.
PERFORM exit_program.
SET SCREEN '0'.
WHEN 'EXIT' OR 'CANC'.
PERFORM exit_program.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. USER_COMMAND_9000 INPUT
*& Module MAIN_TAB_ACTIVE_TAB_SET INPUT
Set sunscreen
MODULE main_tab_active_tab_set INPUT.
main_tab-activetab = i_main_tab-pressed_tab.
CASE i_main_tab-pressed_tab.
WHEN c_main_tab-tab1.
i_main_tab-subscreen = '9100'.
WHEN c_main_tab-tab2.
i_main_tab-subscreen = '9200'.
WHEN OTHERS.
DO NOTHING
ENDCASE.
ENDMODULE. MAIN_TAB_ACTIVE_TAB_SET INPUT
Thanks & Regards,
Judith. -
Strange behaviour in alv output display for a date column!
hi friends,
my alv output list display contains a column for budat (posting date), if this field has no value, then it displays a blank cell (space) in the output in my user login...but when the same report is run in another user login, even though the value of the column is null, it displays 00000000 (8 zeroes) rather than displaying a blank cell...i have set the field catalog property NO_ZERO = 'X'; is this property has anything to do with authorization to achieve its funcionality? am not sure...this is strange, as it is the same report, same field catalog that is being used..need some inputs on this
thanks in advance
SathishThere are 2 solutions for an adhoc solution you can change the field to a char10 field, this will solve your immediate problem of the 0 display. For a permanent solution you can check the user profile setting for the date for you as well as the concerned user.
Hope That Helps
Anirban M. -
HOW TO DISPLAY MY OWN PF STATUS IN ALV LIST DISPLAY
Hi All,
i am developing one program in this program i am displaying output by using alv list display. after displaying the out SAP predefined pf status is coming. here i need my own pf status. any body can send me the sample code ir modify my code if possible.
i am sending my code below.
report zmahi6.
type-pools : slis.
tables : zuser_secobjects.
data : it_secobjects like zuser_secobjects occurs 0 with header line.
data : i_field type slis_t_fieldcat_alv with header line.
data : w_field like line of i_field.
data : i_sort type slis_t_sortinfo_alv.
data : w_sort like line of i_sort.
data : it_filt1 type slis_t_filter_alv with header line.
data:
i_tabname type tabname,
i_repid like sy-repid,
is_lout type slis_layout_alv.
data : chk_box type slis_fieldname.
selection-screen: begin of block b1 with frame title text-t01.
parameters : p_appln type zuser_secobjects-appln.
parameters : p_user type usr02-bname, "zuser_secobjects-appln_user,
p_partnr type zuser_secobjects-appln_partner,
p_ptype type zuser_secobjects-partner_type default '02',
p_upostn type zuser_secobjects-user_position,
p_sdate like likp-erdat default sy-datum,
"type zuser_secobjects-start_date
p_edate(10) default '12/31/9999',
type zuser_secobjects-end_date,
p_revnum type zuser_secobjects-revnum,
p_cted type zuser_secobjects-created_by,
p_cdate type zuser_secobjects-creation_date,
p_ctime type zuser_secobjects-creation_time,
p_chnby type zuser_secobjects-changed_by,
p_cdate1 type zuser_secobjects-changed_date,
p_ctime1 type zuser_secobjects-changed_time.
selection-screen: end of block b1.
start-of-selection.
perform get_data.
check sy-subrc eq 0.
set pf-status 'ZMAHEE'.
perform prepare_fieldcatalog.
perform alv_list_display.
*& Form PREPARE_FIELDCATALOG
text
--> p1 text
<-- p2 text
form prepare_fieldcatalog.
clear: w_field,i_field.
refresh:i_field.
i_field-key = 'X'.
i_field-col_pos = 1.
i_field-ddictxt = 'S'.
i_field-seltext_s = '@11@'.
i_field-checkbox = 'X'.
i_field-input = 'X'.
i_field-fieldname = 'HEADER'.
i_field-outputlen = 0.
append i_field.
clear i_field.
w_field-fieldname = 'APPLN'.
w_field-tabname = 'IT_SECOBJECTS'.
w_field-seltext_l = text-m01.
w_field-outputlen = '10'.
w_field-col_pos = 1.
append w_field to i_field.
clear w_field.
w_field-fieldname = 'APPLN_USER'.
w_field-tabname = 'IT_SECOBJECTS'.
w_field-just = 'C'.
w_field-seltext_l = text-m02.
w_field-outputlen = '7'.
w_field-col_pos = 2.
append w_field to i_field.
clear w_field.
endform. " PREPARE_FIELDCATALOG
*form pf_status_set using rt_extab type slis_t_extab.
set pf-status '0001'.
*endform.
*& Form ALV_LIST_DISPLAY
text
--> p1 text
<-- p2 text
form alv_list_display.
call function 'REUSE_ALV_LIST_DISPLAY'
exporting
i_callback_program = i_repid
i_callback_pf_status_set = 'PF_STATUS_SET'
i_callback_user_comomand = 'USER_COMMAND'
is_layout = is_lout
it_fieldcat = i_field[]
it_sort = i_sort
it_events = it_evts[]
tables
t_outtab = it_secobjects.
endform. " ALV_LIST_DISPLAY
*& Form GET_DATA
text
--> p1 text
<-- p2 text
form get_data.
select * from zuser_secobjects
into table it_secobjects.
endform. " GET_DATA
thanks,
maheedhar.tFollow this steps.
I ahve done it once and hope wuld work for you as well.
Go to SE80. Open a a standard ABAP program - SAPLKKBL. diasplay object.
This program has many standard GUI status. Copy the one which suits you the best. May be any one standars status. Right click it and copy to your custom report. Now open your Z-Program in SE80. You will see the GUI status and when you open it you see the name of the status that you have copied from.
Now you can go and do any modifications in the screen.
Remember you have to use the same status in the program as well.
Please check this piece of code.
call the ABAP list viewer *
FORM list_display TABLES a_output.
pgm = disvariant-report = sy-repid.
disvariant-variant = variant.
call list viewer
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = pgm
i_callback_pf_status_set = 'SET_PF_STATUS'
it_fieldcat = fieldcat
is_variant = disvariant
is_layout = layout
is_print = print
i_save = 'A'
it_events = eventcat
it_sort = sortcat
i_callback_user_command = 'USER_COMMAND'
TABLES
t_outtab = a_output
EXCEPTIONS
program_error = 1
OTHERS = 2.
ENDFORM. "LIST_DISPLAY
FORM SET_PF_STATUS *
FORM set_pf_status USING extab TYPE slis_t_extab.
SET PF-STATUS 'STATUS1'.
ENDFORM. "set_pf_status
FORM USER_COMMAND *
FORM user_command USING ucomm LIKE sy-ucomm
selfield TYPE slis_selfield.
DATA t_difference TYPE i.
CASE ucomm.
WHEN 'ENT1'.<----Function code
D0 your processing.
ENDCASE.
selfield-refresh = 'X'.
ENDFORM. "user_command
HOpe this helps.
Shreekant -
hi experts,
I have the Batch field as an editable field in ALV list display. I want to Give an F4 for this Field. I have given the reference field and reference table as 'MCHA'. I am getting the F4 values also. But i want like an search help dialog box instead of a whole list of values as i get in VL02n when we f4 for batch in a modal kind of a box.Is there any way i could do it. I am Using Reuse_alv_list_display.Is there any way i could do it.
With thanks in advance,
Syed Ibrahim
Edited by: SYED_ibbu on Jun 21, 2011 11:26 AMHi.,
I think using search help exit at domain leven you can get that.,
also check vijay's reply in this thread: [Custom F4 in ALV|Assigning F4 help in REUSE_ALV_GRID_DISPLAY;
hope this helps u.,
Thanks & Regards,
Kiran -
Hi All,
I am displaying an ALV output using class. In the output list, i have added one push button 'ADD'. If user clicks on this button, new line should be available to enter the data. This is working fine.
Now i want to give an F4 help for a column for which values is to be generated in the program. I have an internal table with values which is to be displayed when user clicks on that column.
This is very urgent.
Pls. suggest me.
best regards,Hi,
Linking F4 Help to Fields
For the last section, we will deal with linking F4 help to fields. It is easy. As usual, define, implement and register the event onf4 at proper places in your code. For F4 help, you must register the fields whose F4 request will trigger the onf4 event. For this you must prepare a table of type LVC_T_F4 and register this table using the method register_f4_for_fields. While preparing table you must include a line for each field which will trigger F4 event. For each field in the structure;
Pass the fieldname to FIELDNAME
Set REGISTER to make the field registered,
Set GETBEFORE to provide field content transport before F4 in editable mode
Set CHNGEAFTER to make the data changed after F4 in editable mode.
Preparing table for the fields to be registered to trigger F4 event
DATA: lt_f4 TYPE lvc_t_f4 WITH HEADER LINE .
lt_f4-fieldname = 'PRICE'.
lt_f4-register = 'X' .
lt_f4-getbefore = 'X' .
APPEND lt_f4 .
CALL METHOD gr_alvgrid->register_f4_for_fields
EXPORTING
it_f4 = lt_f4[] .
A sample onf4 method implementation
METHOD handle_on_f1 .
PERFORM f4_help USING e_fieldname es_row_no .
er_event_data->m_event_handled = 'X' .
Again, we set the attribute er_event_data->m_event_handled to prevent further processing of standard F4 help.
Regards,
Ranjit Thakur.
<b>Please Mark The Helpful Answer.</b>
ENDMETHOD . -
Hello,
I have one query witl regards to ALV output. After entering data in the selection screnn my ALV output gets displayed and there is no issue with it. The ALV is in display mode and if i click on the change button the ALV becomes editable. So fat it is fine.
The area of concern is the initial ALV output even though it is in display mode looks as if it is editable ALV. On click of the change button, then the ALV is shown in display mode and it is easily identifiable.
The user feels the initial ALV output is confusing and that he is not able to recognize whether it is display/editbale ALV. How can we fix it so that client can identify it?
Also, how do we get all the standard ALV buttons that we get in SE38 output in webdynpro? Please help.
Regards,
VaishnaviHi,
init your ALV settings with:
DATA lr_alv_cfg TYPE ref to cl_salv_wd_config_table.
lo_INTERFACECONTROLLER = wd_this->wd_cpifc_alv_table( ).
lr_alv_cfg = lo_interfacecontroller->get_model( ).
lr_alv_cfg->IF_SALV_WD_TABLE_SETTINGS~SET_READ_ONLY( abap_true ).
If you click change button do this:
is_read_only = lr_alv_cfg->IF_SALV_WD_TABLE_SETTINGS~GET_READ_ONLY( ).
if lv_is_read_only = abap_true.
lr_alv_cfg->IF_SALV_WD_TABLE_SETTINGS~SET_READ_ONLY( abap_false ).
else.
lr_alv_cfg->IF_SALV_WD_TABLE_SETTINGS~SET_READ_ONLY( abap_true ).
endif. -
hi
i'm doing an ALV Report. In the output i'm double clicking on the Document field using user-command
it is taking me to a particular Transaction and my requirement is if i change any field for ex : Description
in that transaction and come back again to the output display the Changed Description should appear
when i refresh the Output.how to get it?
Regards1. create one icon on allication toolbar which is REFRESH icon, and give some function for it.
2. write the code like:
CASE SY_UCOMM.
when 'FCODE'.
refresh itab.
perform get_data.
perform_displaydata.
it is nothing but u need to put the same code which u used earlier to show the data in output gaian after clicking on function code.
Regards,
Rajesh. -
Error message was displaying when comes back from the final output display
Hi Experts,
I have developed one program and it works fine. But when i press F3 or BACK button from the final display one Error wa coming in a pop-up saying "Selection criterion "Posting Date" contains several selection lines".
I cant understand where the problem was. Can any one suggest where would be the problem. I am sending the code.
REPORT zfir0011_o2c_tax_gl_summary.
TYPE-POOLS slis.
TABLES: faglflexa.
Types Declaration.
TYPES: BEGIN OF x_faglflexa,
ryear TYPE gjahr,
bukrs TYPE bukrs,
belnr TYPE belnr_d, "Document Number
poper TYPE poper, "Posting Period
budat TYPE budat, "Posting Date
buzei TYPE buzei, "Document line item
racct TYPE racct, "G/L Account no.
END OF x_faglflexa,
ty_t_faglflexa TYPE STANDARD TABLE OF x_faglflexa.
TYPES: BEGIN OF x_bset,
belnr TYPE belnr_d,
buzei TYPE buzei,
mwskz TYPE mwskz, "Tax code
hkont TYPE hkont,
shkzg TYPE shkzg, "Debit/Credit Indicator
txjcd TYPE txjcd, "Tax Jurisdiction
h2ste TYPE h2ste, "Tax Amount
h2bas TYPE h2bas_bses, "Tax Amount
END OF x_bset,
ty_t_bset TYPE STANDARD TABLE OF x_bset.
TYPES: BEGIN OF x_skat,
spras TYPE spras,
ktopl TYPE ktopl,
saknr TYPE saknr,
text TYPE txt20_skat,
END OF x_skat,
ty_t_skat TYPE STANDARD TABLE OF x_skat.
TYPES: BEGIN OF x_custom,
geo_state TYPE char2,
geo_county TYPE char3,
country TYPE char2,
description TYPE char40,
END OF x_custom,
ty_t_custom TYPE STANDARD TABLE OF x_custom.
TYPES: BEGIN OF x_budat,
sign TYPE char_01,
option TYPE char2,
low TYPE budat,
high TYPE budat,
END OF x_budat,
ty_t_budat TYPE STANDARD TABLE OF x_budat.
TYPES: BEGIN OF x_txjcd,
geo_state TYPE char2,
geo_county TYPE char3,
END OF x_txjcd,
ty_t_txjcd TYPE STANDARD TABLE OF x_txjcd.
TYPES: BEGIN OF x_inter,
ryear TYPE gjahr,
bukrs TYPE bukrs,
txjcd TYPE txjcd, "Tax Jurisdiction
racct TYPE racct, "G/L Account no.
h2ste TYPE h2ste, "Tax Amount
poper TYPE poper, "Posting Period
belnr TYPE belnr_d, "Document Number
shkzg TYPE shkzg, "Debit/Credit Indicator
END OF x_inter,
ty_t_inter TYPE STANDARD TABLE OF x_inter.
TYPES: BEGIN OF x_final,
txjcd TYPE bset-txjcd, "Tax Jurisdiction
state TYPE char40, "State
curr_bal TYPE bset-h2ste, "Current Balance
per_chng TYPE bset-h2ste, "Period Change
pri_bala TYPE bset-h2ste, "Prior Balance
END OF x_final,
ty_t_final TYPE STANDARD TABLE OF x_final.
Column positions to pass to field catalog
CONSTANTS : c_pos_1 TYPE sy-cucol VALUE '1', " position of the columns
c_pos_2 TYPE sy-cucol VALUE '2',
c_pos_3 TYPE sy-cucol VALUE '3',
c_pos_4 TYPE sy-cucol VALUE '4',
c_pos_5 TYPE sy-cucol VALUE '5'.
*Field names for Field Catalog
CONSTANTS : c_h TYPE c VALUE 'H', "Header
c_s TYPE c VALUE 'S', "Sub heading
c_slash TYPE c VALUE '/', "Slash
c_colon TYPE c VALUE ':', "Column
c_top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE',"#EC NEEDED "Top-of-page
c_top_of_page_split TYPE slis_formname VALUE 'TOP_OF_PAGE_SPLIT', "Top-of-page centered
c_txjcd TYPE slis_fieldname VALUE 'TXJCD', "Tax Jurisdiction
c_region TYPE slis_fieldname VALUE 'STATE', "State
c_currb TYPE slis_fieldname VALUE 'CURR_BAL', "Current Balance
c_perch TYPE slis_fieldname VALUE 'PER_CHNG', "Period Change
c_prbal TYPE slis_fieldname VALUE 'PRI_BALA'. "Prior Balance
CONSTANTS : c_table_name TYPE slis_tabname VALUE 'IT_FINAL', "For Field Catalog
c_spras TYPE spras VALUE 'E', "Language
c_buzei TYPE c VALUE '1', "Line item in BSET
c_one(2) TYPE c VALUE '01',
c_zp TYPE bset-mwskz VALUE 'ZP', "Sales Tax Code
c_zr TYPE bset-mwskz VALUE 'ZR'. "Sales Tax Code
Variables Declaration.
DATA : v_current_year TYPE i, "Current year
v_poper TYPE poper, "Posting period
v_saknr TYPE saknr, "Account no. "#EC NEEDED
v_ktopl TYPE ktopl, "Chart of Accounts
v_konts TYPE saknr, "G/L Account Number
v_bukrs TYPE bukrs, "Company Code
v_sum_val TYPE h2ste, "#EC NEEDED "Tax Amount
v_sum_val1 TYPE h2ste, "Tax Amount
v_sum_val2 TYPE h2ste, "Tax Amount
v_sum_debit TYPE h2ste,
v_sum_credit TYPE h2ste,
v_sum_debit1 TYPE h2ste,
v_sum_credit1 TYPE h2ste,
v_h2ste TYPE string, "#EC NEEDED
v_desc TYPE char40, "G/L Acct. Description
v_title TYPE char40. "Title
Internal Tables Declaration.
DATA : it_faglflexa TYPE ty_t_faglflexa, "Internal table for G/L Line Items.
it_bset TYPE ty_t_bset, "Internal table for Tax Data Document Segment.
it_skat TYPE ty_t_skat, "Internal table for Chart of Accounts: Desc.
it_custom TYPE ty_t_custom, "Custom table for storing STATE Description.
it_txjcd TYPE ty_t_txjcd, "For storing Tax Jurisdiction codes.
it_inter TYPE ty_t_inter. "Intermediate table for storing data & Performing Calculations.
DATA : it_final TYPE ty_t_final. "#EC NEEDED
*Fieldcatalogue Internal Table Declaration
DATA : it_fieldcat TYPE slis_t_fieldcat_alv,
wa_fieldcat TYPE slis_fieldcat_alv,
it_alv_top_of_page TYPE slis_t_listheader,
wa_line TYPE slis_listheader.
*Field-symbols and Work Area Declarations
FIELD-SYMBOLS : <fs_faglflexa> TYPE x_faglflexa,
<fs_bset> TYPE x_bset.
DATA : wa_faglflexa TYPE x_faglflexa, "#EC NEEDED
wa_bset TYPE x_bset,
wa_skat TYPE x_skat,
wa_custom TYPE x_custom,
wa_txjcd TYPE x_txjcd,
wa_inter TYPE x_inter,
wa_final TYPE x_final. " #EC NEEDED
SELECTION-SCREEN
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS: p_bukrs TYPE faglflexa-rbukrs OBLIGATORY, " Company Code
p_gjahr TYPE faglflexa-gjahr OBLIGATORY. " Fiscal Year
SELECT-OPTIONS: s_budat FOR faglflexa-budat OBLIGATORY " Posting Date
NO-EXTENSION
NO INTERVALS.
PARAMETERS: p_racct TYPE faglflexa-racct OBLIGATORY. " G/L Accounts
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN VALIDATIONS.
*Company Code Validation.
AT SELECTION-SCREEN ON p_bukrs.
SELECT SINGLE bukrs INTO v_bukrs
FROM t001
WHERE bukrs = p_bukrs.
IF sy-subrc NE 0.
MESSAGE e071(zfinprjt).
ENDIF.
Fiscal Year Validation. It should not be more than Current.
AT SELECTION-SCREEN ON p_gjahr.
v_current_year = sy-datum+0(4).
IF p_gjahr > v_current_year.
MESSAGE e072(zfinprjt).
ENDIF.
*G/L Account Validation.
AT SELECTION-SCREEN ON p_racct.
SELECT SINGLE saknr INTO v_saknr
FROM skb1
WHERE saknr EQ p_racct
AND bukrs EQ p_bukrs.
IF sy-subrc EQ 0.
*Check the Chart of Accounts for that Company Code.
SELECT SINGLE ktopl FROM t001
INTO v_ktopl
WHERE bukrs = p_bukrs.
*Check that it is a Tax G/L Account for that Company Code and G/L Account.
SELECT SINGLE konts FROM t030k "#EC *
INTO v_konts
WHERE ktopl = v_ktopl
AND konts = v_saknr.
IF sy-subrc NE 0.
MESSAGE e073(zfinprjt).
ENDIF.
ELSE.
MESSAGE e073(zfinprjt).
ENDIF.
AT SELECTION-SCREEN ON s_budat.
DATA : v_year(4) TYPE c,
v_month(2) TYPE c,
v_date(2) TYPE c. "#EC NEEDED
*if date ne 01 converting date to '01'
READ TABLE s_budat.
IF s_budat-low+6(2) NE c_one.
v_year = s_budat-low.
v_month = s_budat-low+4(2).
v_date = s_budat-low+6(2).
s_budat-high = s_budat-low.
CLEAR s_budat-low.
CONCATENATE v_year c_one c_one INTO s_budat-low.
s_budat-sign = 'I'.
s_budat-option = 'BT'.
APPEND s_budat.
ENDIF.
START-OF-SELECTION.
PERFORM get_data USING p_bukrs "#EC *
p_gjahr "#EC *
s_budat[] "#EC *
p_racct CHANGING it_final. "#EC *
*Display report in ALV grid
IF it_final IS NOT INITIAL.
*Build Top of the page table.
PERFORM comment_build USING it_skat CHANGING it_alv_top_of_page.
*Build Field catalog table for ALV
PERFORM build_field_catalog CHANGING it_fieldcat.
*Display report
PERFORM display_alv USING it_final.
ELSE.
*No data found for the selection criteria/period.
MESSAGE i022(zfinprjt).
exit.
ENDIF.
*& Form GET_DATA
Retrieve data from Database tables
-->P_P_BUKRS text
-->P_P_GJAHR text
-->P_P_BUDAT text
-->P_P_RACCT text
<--P_IT_FINAL text
FORM get_data USING fp_bukrs TYPE bukrs "#EC *
fp_gjahr TYPE gjahr "#EC *
fp_budat TYPE ty_t_budat "#EC *
fp_racct TYPE racct "#EC *
CHANGING fp_it_final TYPE ty_t_final.
*selecting the Required data from FAGLFLEXA
SELECT ryear "Fiscal Year
rbukrs "Company Code
belnr "Document Number
poper "Posting Period
budat "Posting Date
buzei "Document line item
racct "G/L Account no.
INTO TABLE it_faglflexa
FROM faglflexa
WHERE rbukrs EQ p_bukrs "#EC *
AND gjahr EQ p_gjahr "#EC *
AND budat LE s_budat "#EC *
AND budat IN s_budat "#EC *
AND racct EQ p_racct. "#EC *
IF sy-subrc EQ 0.
SORT it_faglflexa.
ENDIF.
*selecting the Tax Jurisdiction, Tax amount from BSET
IF it_faglflexa IS NOT INITIAL.
SELECT belnr
buzei
mwskz
"hkont
shkzg "Debit/Credit Indicator
txjcd "Tax Jurisdicaiton
h2ste "Tax Amount
h2bas "Tax Amount1
INTO TABLE it_bset
FROM bset
FOR ALL ENTRIES IN it_faglflexa
WHERE belnr EQ it_faglflexa-belnr
AND gjahr EQ p_gjahr "it_faglflexa-ryear
AND buzei EQ c_buzei. "Line item
ENDIF.
IF sy-subrc EQ 0.
SORT it_bset BY txjcd ASCENDING.
SORT it_bset BY belnr ASCENDING.
ENDIF.
*Selecting the G/L Account Long Text from SKAT
IF it_faglflexa IS NOT INITIAL.
SELECT spras " Language key
ktopl " Chart of Accounts
saknr " G/L Account Number
txt20 " G/L Account Long Text
INTO TABLE it_skat
FROM skat
FOR ALL ENTRIES IN it_faglflexa
WHERE spras = c_spras
AND saknr = it_faglflexa-racct.
ENDIF.
IF sy-subrc EQ 0.
SORT it_skat.
ENDIF.
LOOP AT it_bset ASSIGNING <fs_bset>.
wa_txjcd-geo_state = <fs_bset>-txjcd+0(2).
wa_txjcd-geo_county = <fs_bset>-txjcd+2(3).
APPEND wa_txjcd TO it_txjcd.
CLEAR wa_txjcd.
ENDLOOP.
IF sy-subrc EQ 0.
SORT it_txjcd BY geo_state.
DELETE ADJACENT DUPLICATES FROM it_txjcd COMPARING geo_state geo_county.
ENDIF.
*Selecting the Description from Custom table
IF it_txjcd IS NOT INITIAL.
SELECT geo_state
geo_county
country
description
INTO TABLE it_custom
FROM ztfi_tgl_summary
FOR ALL ENTRIES IN it_txjcd
WHERE geo_state = it_txjcd-geo_state
AND geo_county = it_txjcd-geo_county.
ENDIF.
IF sy-subrc EQ 0.
SORT it_custom.
ENDIF.
LOOP AT it_faglflexa ASSIGNING <fs_faglflexa>.
MOVE-CORRESPONDING <fs_faglflexa> TO wa_inter. "#EC ENHOK
*Read Tax Jurisdiction and Tax Amount from BSET Table.
READ TABLE it_bset INTO wa_bset WITH KEY belnr = <fs_faglflexa>-belnr
BINARY SEARCH.
IF sy-subrc EQ 0.
wa_inter-shkzg = wa_bset-shkzg.
wa_inter-txjcd = wa_bset-txjcd.
ENDIF.
*If BSET-MWSKZ = ZP or ZR then pick H2BAS as Tax Amount.
IF wa_bset-mwskz = c_zp.
wa_inter-h2ste = wa_bset-h2bas.
ELSEIF wa_bset-mwskz = c_zr.
wa_inter-h2ste = wa_bset-h2bas.
ELSE.
wa_inter-h2ste = wa_bset-h2ste.
ENDIF.
*Check it is credit entry or debit entry ('H' or 'S').
IF wa_inter-shkzg EQ 'H'.
wa_inter-h2ste = wa_inter-h2ste * -1.
ENDIF.
APPEND wa_inter TO it_inter.
CLEAR: wa_inter, wa_bset.
ENDLOOP.
IF sy-subrc EQ 0.
SORT it_inter BY bukrs ryear txjcd ASCENDING.
DELETE it_inter WHERE txjcd EQ space.
DELETE ADJACENT DUPLICATES FROM it_inter COMPARING belnr.
ENDIF.
v_poper = s_budat-high+4(2).
LOOP AT it_inter INTO wa_inter.
*Read the Text maintained in the custom table based on the GEO_STATE = First two digits of TXJCD
*and GEO_COUNTY = Next three digits of TXJCD. If this is blank pick based on First two digits of TXJCD.
READ TABLE it_custom INTO wa_custom WITH KEY geo_state = wa_inter-txjcd+0(2)
geo_county = wa_inter-txjcd+2(3)
BINARY SEARCH.
IF sy-subrc NE 0.
READ TABLE it_custom INTO wa_custom WITH KEY geo_state = wa_bset-txjcd+0(2)
BINARY SEARCH.
ENDIF.
IF sy-subrc = 0.
wa_final-state = wa_custom-description.
ENDIF.
AT NEW txjcd.
CLEAR: v_sum_val, v_sum_val1, v_sum_val2.
ENDAT.
Period Change, if v_poper equal to present period(v_poper).
IF wa_inter-poper EQ v_poper.
IF wa_inter-shkzg EQ 'H'.
v_sum_debit = v_sum_debit + wa_inter-h2ste.
ELSE.
v_sum_credit = v_sum_credit + wa_inter-h2ste.
ENDIF.
Prior Balance, if v_poper is less than present period(v_poper).
ELSEIF wa_inter-poper LT v_poper.
IF wa_inter-shkzg EQ 'H'.
v_sum_debit1 = v_sum_debit1 + wa_inter-h2ste.
ELSE.
v_sum_credit1 = v_sum_credit1 + wa_inter-h2ste.
ENDIF.
ENDIF.
AT END OF txjcd.
wa_final-txjcd = wa_inter-txjcd.
IF sy-subrc EQ 0.
v_sum_val1 = v_sum_credit - v_sum_debit. "Temp Commented
ENDIF.
wa_final-per_chng = v_sum_val1. "Period change
IF sy-subrc EQ 0.
v_sum_val2 = v_sum_credit1 - v_sum_debit1. "Temp commented
ENDIF.
wa_final-pri_bala = v_sum_val2. "Prior Balance
wa_final-curr_bal = v_sum_val1 + v_sum_val2. "Current Balance
APPEND wa_final TO it_final. "#EC *
CLEAR: wa_inter,
wa_final,
v_sum_credit,
v_sum_credit1,
v_sum_debit,
v_sum_debit1.
ENDAT.
ENDLOOP.
ENDFORM. " GET_DATA
*& Form COMMENT_BUILD
ALV Top of Page
-->P_IT_SKAT text
<--P_IT_ALV_TOP_OF_PAGE text
FORM comment_build USING fp_it_skat TYPE ty_t_skat"#EC NEEDED
CHANGING fp_it_alv_top_of_page TYPE slis_t_listheader.
DATA: v_budat_low TYPE c LENGTH 10, "#EC NEEDED
v_budat_high TYPE c LENGTH 10, "#EC NEEDED
v_butxt TYPE butxt.
CLEAR wa_line.
*Report Title
CONCATENATE text-005 p_bukrs INTO v_title SEPARATED BY space.
wa_line-typ = c_h.
wa_line-key = ' '.
wa_line-info = v_title.
APPEND wa_line TO fp_it_alv_top_of_page.
CLEAR wa_line.
*Account Number
wa_line-typ = c_s.
wa_line-key = text-006.
wa_line-info = p_racct.
APPEND wa_line TO fp_it_alv_top_of_page.
CLEAR wa_line.
*G/L Account Description
READ TABLE it_skat INTO wa_skat WITH KEY ktopl = v_ktopl BINARY SEARCH."#EC *
IF sy-subrc EQ 0.
v_desc = wa_skat-text.
ENDIF.
wa_line-typ = c_s.
wa_line-key = text-007.
wa_line-info = v_desc.
APPEND wa_line TO fp_it_alv_top_of_page.
CLEAR wa_line.
*Fiscal Year from selection
IF NOT p_gjahr IS INITIAL.
wa_line-info = p_gjahr.
wa_line-typ = c_s.
wa_line-key = text-008. "Fiscal Year
APPEND wa_line TO fp_it_alv_top_of_page.
CLEAR wa_line.
ENDIF.
*Posting Date
CONCATENATE s_budat-high4(2) s_budat-high6(2) s_budat-high+0(4) INTO wa_line-info SEPARATED BY c_slash.
wa_line-typ = c_s.
wa_line-key = text-009. "Posting Date
APPEND wa_line TO fp_it_alv_top_of_page.
CLEAR wa_line.
*Company Code Description from selection
IF NOT p_bukrs IS INITIAL.
SELECT SINGLE butxt FROM t001
INTO v_butxt WHERE bukrs EQ p_bukrs.
IF sy-subrc EQ 0.
wa_line-info = v_butxt.
wa_line-typ = c_s.
wa_line-key = text-010. "Company Code Description
APPEND wa_line TO fp_it_alv_top_of_page.
CLEAR wa_line.
ENDIF.
ENDIF.
Printed Date
wa_line-typ = c_s.
wa_line-key = text-011. "Printed Date
CONCATENATE sy-datum+4(2)
sy-datum+6(2)
sy-datum(4) INTO wa_line-info SEPARATED BY c_slash. "todays date
APPEND wa_line TO fp_it_alv_top_of_page.
CLEAR: wa_line.
Printing Time
wa_line-typ = c_s.
wa_line-key = text-012. "Printing Time
wa_line-info = sy-uzeit.
CONCATENATE sy-uzeit(2)
sy-uzeit+2(2)
sy-uzeit+4(2) INTO wa_line-info SEPARATED BY c_colon. "current time
APPEND wa_line TO fp_it_alv_top_of_page.
CLEAR: wa_line.
ENDFORM. " COMMENT_BUILD
*& Form BUILD_FIELD_CATALOG
Fieldcatalogue
<--P_IT_FIELDCAT text
FORM build_field_catalog CHANGING fp_it_fieldcat TYPE slis_t_fieldcat_alv.
TAX JURISDICTION
wa_fieldcat-col_pos = c_pos_1.
wa_fieldcat-reptext_ddic = text-013. "TAX JURISDICTION
wa_fieldcat-fieldname = c_txjcd.
wa_fieldcat-tabname = c_table_name.
wa_fieldcat-outputlen = '15'.
APPEND wa_fieldcat TO fp_it_fieldcat.
CLEAR : wa_fieldcat.
STATE
wa_fieldcat-col_pos = c_pos_2.
wa_fieldcat-reptext_ddic = text-014. "STATE
wa_fieldcat-fieldname = c_region.
wa_fieldcat-tabname = c_table_name.
wa_fieldcat-outputlen = '40'.
APPEND wa_fieldcat TO fp_it_fieldcat.
CLEAR : wa_fieldcat.
CURRENT BALANCE
wa_fieldcat-col_pos = c_pos_3.
wa_fieldcat-reptext_ddic = text-015. "CURRENT BALANCE
wa_fieldcat-fieldname = c_currb.
wa_fieldcat-tabname = c_table_name.
wa_fieldcat-do_sum = 'X'.
wa_fieldcat-datatype = 'CURR'.
wa_fieldcat-outputlen = '17'.
APPEND wa_fieldcat TO fp_it_fieldcat.
CLEAR : wa_fieldcat.
PERIOD CHANGE
wa_fieldcat-col_pos = c_pos_4.
wa_fieldcat-reptext_ddic = text-016. "PERIOD CHANGE
wa_fieldcat-fieldname = c_perch.
wa_fieldcat-tabname = c_table_name.
wa_fieldcat-do_sum = 'X'.
wa_fieldcat-datatype = 'CURR'.
wa_fieldcat-outputlen = '17'.
APPEND wa_fieldcat TO fp_it_fieldcat.
CLEAR : wa_fieldcat.
PRIOR BALANCE
wa_fieldcat-col_pos = c_pos_5.
wa_fieldcat-reptext_ddic = text-017. "PRIOR BALANCE
wa_fieldcat-fieldname = c_prbal.
wa_fieldcat-tabname = c_table_name.
wa_fieldcat-do_sum = 'X'.
wa_fieldcat-datatype = 'CURR'.
wa_fieldcat-outputlen = '17'.
APPEND wa_fieldcat TO fp_it_fieldcat.
CLEAR : wa_fieldcat.
ENDFORM. " BUILD_FIELD_CATALOG
*& Form DISPLAY_ALV
ALV Grid Display
-->P_IT_FINAL text
FORM display_alv USING fp_it_final TYPE ty_t_final.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = ' '
I_BUFFER_ACTIVE = ' '
i_callback_program = sy-repid
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
i_callback_top_of_page = c_top_of_page
i_callback_html_top_of_page = c_top_of_page_split
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME =
I_BACKGROUND_ID = ' '
I_GRID_TITLE =
I_GRID_SETTINGS =
IS_LAYOUT =
it_fieldcat = it_fieldcat
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
i_save = 'A'
IS_VARIANT =
IT_EVENTS =
IT_EVENT_EXIT =
IS_PRINT =
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
I_HTML_HEIGHT_TOP = 0
I_HTML_HEIGHT_END = 0
IT_ALV_GRAPHICS =
IT_HYPERLINK =
IT_ADD_FIELDCAT =
IT_EXCEPT_QINFO =
IR_SALV_FULLSCREEN_ADAPTER =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = fp_it_final
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2
IF sy-subrc EQ 0. "#EC *
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " DISPLAY_ALV
*& Form top_of_page_split
Top of page for displaying the Text in Center
FORM top_of_page_split USING fp_top TYPE REF TO cl_dd_document."#EC *
TYPES: BEGIN OF ty_text,
text TYPE sdydo_text_element,
END OF ty_text.
TYPES: BEGIN OF ty_text1, "AAAAAAAA
text1 TYPE sdydo_text_element,
END OF ty_text1.
DATA: v_tab TYPE sdydo_text_table,
v_area TYPE REF TO cl_dd_area,
v_text TYPE sdydo_text_element,
v_text1 TYPE sdydo_text_element, "#EC NEEDED
v_tab1 TYPE sdydo_text_table.
DATA: it_text TYPE TABLE OF ty_text,
wa_text TYPE ty_text,
it_text1 TYPE TABLE OF ty_text1,
wa_text1 TYPE ty_text1.
DATA: v_title TYPE string,
v_accts_desc TYPE string,
v_year TYPE string,
v_comp_code TYPE string,
v_desc TYPE char40,
v_budat TYPE char10,
v_budat1 TYPE char10,
v_butxt TYPE butxt,
v_time TYPE char10,
v_comma TYPE c VALUE ','.
CALL METHOD fp_top->initialize_document.
CHECK sy-subrc EQ 0.
CALL METHOD fp_top->vertical_split
EXPORTING
split_area = fp_top
split_width = '31%'
IMPORTING
right_area = v_area.
IF sy-subrc EQ 0. "#EC NEEDED
*MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*G/L Account Description
READ TABLE it_skat INTO wa_skat WITH KEY ktopl = v_ktopl BINARY SEARCH.
IF sy-subrc EQ 0.
v_desc = wa_skat-text.
ENDIF.
*Company code Description
IF NOT p_bukrs IS INITIAL.
SELECT SINGLE butxt FROM t001
INTO v_butxt WHERE bukrs EQ p_bukrs.
ENDIF.
CONCATENATE text-005 p_bukrs INTO v_title SEPARATED BY space.
wa_text1-text1 = v_title.
APPEND wa_text1 TO it_text1.
v_tab1 = it_text1.
CALL METHOD v_area->add_text
EXPORTING
text_table = v_tab1
fix_lines = 'X'
sap_fontsize = cl_dd_document=>large
sap_emphasis = cl_dd_document=>strong. "AAAAAA
CHECK sy-subrc EQ 0.
CONCATENATE text-006 p_racct v_comma text-007 v_desc INTO v_accts_desc SEPARATED BY space.
CONCATENATE s_budat-high4(2) s_budat-high6(2) s_budat-high+0(4) INTO v_budat SEPARATED BY c_slash.
CONCATENATE text-008 p_gjahr v_comma text-009 v_budat INTO v_year SEPARATED BY space.
CONCATENATE text-010 v_butxt INTO v_comp_code SEPARATED BY space.
wa_text-text = v_title.
APPEND wa_text TO it_text.
wa_text-text = v_accts_desc.
APPEND wa_text TO it_text.
wa_text-text = v_year.
APPEND wa_text TO it_text.
wa_text-text = v_comp_code.
APPEND wa_text TO it_text.
v_tab = it_text.
CALL METHOD v_area->add_text
EXPORTING
text_table = v_tab
fix_lines = 'X'
sap_fontsize = cl_dd_document=>medium
sap_emphasis = cl_dd_document=>medium.
CHECK sy-subrc EQ 0.
CALL METHOD fp_top->new_line.
CHECK sy-subrc EQ 0.
CALL METHOD fp_top->new_line.
CHECK sy-subrc EQ 0.
CALL METHOD fp_top->new_line.
CHECK sy-subrc EQ 0.
CALL METHOD fp_top->add_gap
EXPORTING
width = 0.
CHECK sy-subrc EQ 0.
CONCATENATE sy-datum4(2) sy-datum6(2) sy-datum+0(4) INTO v_budat1 SEPARATED BY c_slash.
CALL METHOD fp_top->add_text
EXPORTING
text = text-011
sap_emphasis = 'STRONG'.
CHECK sy-subrc EQ 0.
CALL METHOD fp_top->add_gap
EXPORTING
width = 1.
CHECK sy-subrc EQ 0.
v_text = v_budat1.
CALL METHOD fp_top->add_text
EXPORTING
text = v_text.
sap_style = 'KEY'.
CHECK sy-subrc EQ 0.
CALL METHOD fp_top->new_line.
CHECK sy-subrc EQ 0.
CALL METHOD fp_top->add_text
EXPORTING
text = text-012
sap_emphasis = 'STRONG'.
CHECK sy-subrc EQ 0.
CALL METHOD fp_top->add_gap
EXPORTING
width = 1.
CHECK sy-subrc EQ 0.
CONCATENATE sy-uzeit(2)
sy-uzeit+2(2)
sy-uzeit+4(2) INTO v_time SEPARATED BY c_colon. "current time
v_text = v_time.
CALL METHOD fp_top->add_text
EXPORTING
text = v_text.
sap_style = 'KEY'.
CHECK sy-subrc EQ 0.
ENDFORM. "top_of_page_split
Thanks in Advance.
Regards,
RamanaProblem is with ur selection screen definition for s_budat
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS: p_bukrs TYPE faglflexa-rbukrs OBLIGATORY, " Company Code
p_gjahr TYPE faglflexa-gjahr OBLIGATORY. " Fiscal Year
SELECT-OPTIONS: s_budat FOR faglflexa-budat OBLIGATORY " Posting Date
NO-EXTENSION
NO INTERVALS.
PARAMETERS: p_racct TYPE faglflexa-racct OBLIGATORY. " G/L Accounts
SELECTION-SCREEN END OF BLOCK b1.
Here u r defining s_budat like parameter with NO-EXTENSION
NO INTERVALS. additions.
So that means it should contain only one record in it. As s_budat is nothing but a range table with headerline so this entry should be contained in the body as well as in the header.
But in AT SELECTION-SCREEN ON s_budat. u r again entering a 2nd record if date is not 01.
AT SELECTION-SCREEN ON s_budat.
DATA : v_year(4) TYPE c,
v_month(2) TYPE c,
v_date(2) TYPE c. "#EC NEEDED
*if date ne 01 converting date to '01'
READ TABLE s_budat.
IF s_budat-low+6(2) NE c_one. << Here u r checking the header not the body
v_year = s_budat-low.
v_month = s_budat-low+4(2).
v_date = s_budat-low+6(2).
s_budat-high = s_budat-low.
CLEAR s_budat-low.
CONCATENATE v_year c_one c_one INTO s_budat-low.
s_budat-sign = 'I'.
s_budat-option = 'BT'.
APPEND s_budat.
ENDIF.
Due to these 2 records it is giving u error. So to avoid the problem u should read the body of the table and then modify the record.
Read table s_budat index 1.
IF s_budat-low+6(2) NE c_one.* << Here u r checking the header not the body
v_year = s_budat-low.
v_month = s_budat-low+4(2).
v_date = s_budat-low+6(2).
s_budat-high = s_budat-low.
CLEAR s_budat-low.
CONCATENATE v_year c_one c_one INTO s_budat-low.
s_budat-sign = 'I'.
s_budat-option = 'BT'.
modify s_budat index sy-tabix.
Regards,
Joy. -
Problem in linking F4 help in alv grid display.
Hi,
I am linking F4 help in my program.My program gets activated properly but i am getting runtime error as : DYNPRO_NOT_FOUND and short text as
Dynpor existiert nicht.Please help me in removing this error.Below is the simple code in which i am getting the error for ur reference:
Thanks.
REPORT ZALVF4.
Global data definitions for ALV.......................................
DATA : alvgrid TYPE REF TO cl_gui_alv_grid,
custom_container TYPE REF TO cl_gui_custom_container,
fieldcatalog TYPE lvc_t_fcat.
table to contain fields that require f4...............................
DATA : lt_f4 TYPE lvc_t_f4 WITH HEADER LINE.
ok_code declaration...................................................
DATA : ok_code TYPE sy-ucomm.
Tables declaration....................................................
TABLES : zharry.
Types declaration.....................................................
TYPES : BEGIN OF ty_emp,
empid LIKE zharry-student,
empname LIKE zharry-sname,
END OF ty_emp.
Internal table declaration............................................
DATA : i_emp TYPE TABLE OF ty_emp.
Workarea declaration..................................................
DATA : wa_emp TYPE ty_emp.
Selection screen parameters...........................................
SELECT-OPTIONS : s_sno FOR zharry-student.
CLASS lcl_event_handler DEFINITION
CLASS lcl_event_handler DEFINITION.
PUBLIC SECTION.
METHODS :
handle_on_f1 FOR EVENT onf1 OF cl_gui_alv_grid
IMPORTING e_fieldname es_row_no er_event_data,
handle_on_f4 for event onf4 of cl_gui_alv_grid
importing e_fieldname es_row_no er_event_data
ENDCLASS.
CLASS lcl_event_handler IMPLEMENTATION
CLASS lcl_event_handler IMPLEMENTATION.
METHOD handle_on_f1.
custom f1 help for empid field.......................................
IF e_fieldname = 'STUDENT'.
CALL SCREEN 3001.
ENDIF.
to prevent processing of standard f1 help............................
er_event_data->m_event_handled = 'X'.
ENDMETHOD.
Method handle_on_f4.
standard f4 help will be invoked......................................
endmethod.
ENDCLASS.
start of selection....................................................
START-OF-SELECTION.
SELECT STUDENT SNAME FROM ZHARRY
INTO CORRESPONDING FIELDS OF TABLE i_emp
WHERE student IN s_sno.
CALL SCREEN 3000.
*& Module STATUS_3000 OUTPUT
text
MODULE status_3000 OUTPUT.
SET PF-STATUS 'ZTOOL'.
SET TITLEBAR 'ZTITLE'.
IF alvgrid IS INITIAL.
CREATE OBJECT custom_container
EXPORTING
container_name = 'ZCONTAINER'.
CREATE OBJECT alvgrid
EXPORTING
i_parent = custom_container.
PERFORM prepare_f4.
CALL METHOD alvgrid->register_f4_for_fields
EXPORTING
it_f4 = lt_f4[]
creating instance for event handler..................................
DATA : event_handler TYPE REF TO lcl_event_handler.
CREATE OBJECT event_handler.
SET HANDLER event_handler->handle_on_f1 FOR alvgrid.
SET HANDLER event_handler->handle_on_f4 FOR alvgrid.
preparing field catalog..............................................
PERFORM prepare_fieldcatalog CHANGING fieldcatalog.
CALL METHOD alvgrid->set_table_for_first_display
EXPORTING
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
I_CONSISTENCY_CHECK =
I_STRUCTURE_NAME =
IS_VARIANT =
I_SAVE =
I_DEFAULT = 'X'
IS_LAYOUT =
IS_PRINT =
IT_SPECIAL_GROUPS =
IT_TOOLBAR_EXCLUDING =
IT_HYPERLINK =
IT_ALV_GRAPHICS =
IT_EXCEPT_QINFO =
CHANGING
it_outtab = i_emp
it_fieldcatalog = fieldcatalog
IT_SORT =
IT_FILTER =
EXCEPTIONS
INVALID_PARAMETER_COMBINATION = 1
PROGRAM_ERROR = 2
TOO_MANY_LINES = 3
others = 4
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDIF.
ENDMODULE. " STATUS_3000 OUTPUT
preparing field catalog...............................................
FORM prepare_fieldcatalog CHANGING i_fieldcatalog TYPE lvc_t_fcat.
DATA : ls_fcat TYPE lvc_s_fcat.
ls_fcat-fieldname = 'STUDENT'.
ls_fcat-ref_table = 'ZHARRY'.
ls_fcat-coltext = 'STUDENT NO'.
APPEND ls_fcat TO i_fieldcatalog.
CLEAR ls_fcat.
ls_fcat-fieldname = 'SNAME'.
ls_fcat-ref_table = 'ZHARRY'.
ls_fcat-coltext = 'STUDENT NAME'.
APPEND ls_fcat TO i_fieldcatalog.
ENDFORM.
*& Module USER_COMMAND_3000 INPUT
text
MODULE user_command_3000 INPUT.
CASE ok_code.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
WHEN 'EXIT'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. " USER_COMMAND_3000 INPUT
*& Module USER_COMMAND_3001 INPUT
text
MODULE user_command_3001 INPUT.
CASE ok_code.
WHEN 'SAVE'.
LEAVE TO SCREEN 0.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE. " USER_COMMAND_3001 INPUT
*& Module STATUS_3001 OUTPUT
text
MODULE status_3001 OUTPUT.
SET PF-STATUS 'GUI'.
SET TITLEBAR 'TITLE'.
ENDMODULE. " STATUS_3001 OUTPUT
preparing fields to be registered for f4 help.........................
FORM prepare_f4.
lt_f4-fieldname = 'EMPNAME'.
lt_f4-register = 'X'.
lt_f4-getbefore = 'X'.
lt_f4-chngeafter = 'X'.
APPEND lt_f4.
ENDFORM.Hi,
I am linking F4 help in my program.My program gets activated properly but i am getting runtime error as : DYNPRO_NOT_FOUND and short text as
Dynpor existiert nicht.Please help me in removing this error.Below is the simple code in which i am getting the error for ur reference:
Thanks.
REPORT ZALVF4.
Global data definitions for ALV.......................................
DATA : alvgrid TYPE REF TO cl_gui_alv_grid,
custom_container TYPE REF TO cl_gui_custom_container,
fieldcatalog TYPE lvc_t_fcat.
table to contain fields that require f4...............................
DATA : lt_f4 TYPE lvc_t_f4 WITH HEADER LINE.
ok_code declaration...................................................
DATA : ok_code TYPE sy-ucomm.
Tables declaration....................................................
TABLES : zharry.
Types declaration.....................................................
TYPES : BEGIN OF ty_emp,
empid LIKE zharry-student,
empname LIKE zharry-sname,
END OF ty_emp.
Internal table declaration............................................
DATA : i_emp TYPE TABLE OF ty_emp.
Workarea declaration..................................................
DATA : wa_emp TYPE ty_emp.
Selection screen parameters...........................................
SELECT-OPTIONS : s_sno FOR zharry-student.
CLASS lcl_event_handler DEFINITION
CLASS lcl_event_handler DEFINITION.
PUBLIC SECTION.
METHODS :
handle_on_f1 FOR EVENT onf1 OF cl_gui_alv_grid
IMPORTING e_fieldname es_row_no er_event_data,
handle_on_f4 for event onf4 of cl_gui_alv_grid
importing e_fieldname es_row_no er_event_data
ENDCLASS.
CLASS lcl_event_handler IMPLEMENTATION
CLASS lcl_event_handler IMPLEMENTATION.
METHOD handle_on_f1.
custom f1 help for empid field.......................................
IF e_fieldname = 'STUDENT'.
CALL SCREEN 3001.
ENDIF.
to prevent processing of standard f1 help............................
er_event_data->m_event_handled = 'X'.
ENDMETHOD.
Method handle_on_f4.
standard f4 help will be invoked......................................
endmethod.
ENDCLASS.
start of selection....................................................
START-OF-SELECTION.
SELECT STUDENT SNAME FROM ZHARRY
INTO CORRESPONDING FIELDS OF TABLE i_emp
WHERE student IN s_sno.
CALL SCREEN 3000.
*& Module STATUS_3000 OUTPUT
text
MODULE status_3000 OUTPUT.
SET PF-STATUS 'ZTOOL'.
SET TITLEBAR 'ZTITLE'.
IF alvgrid IS INITIAL.
CREATE OBJECT custom_container
EXPORTING
container_name = 'ZCONTAINER'.
CREATE OBJECT alvgrid
EXPORTING
i_parent = custom_container.
PERFORM prepare_f4.
CALL METHOD alvgrid->register_f4_for_fields
EXPORTING
it_f4 = lt_f4[]
creating instance for event handler..................................
DATA : event_handler TYPE REF TO lcl_event_handler.
CREATE OBJECT event_handler.
SET HANDLER event_handler->handle_on_f1 FOR alvgrid.
SET HANDLER event_handler->handle_on_f4 FOR alvgrid.
preparing field catalog..............................................
PERFORM prepare_fieldcatalog CHANGING fieldcatalog.
CALL METHOD alvgrid->set_table_for_first_display
EXPORTING
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
I_CONSISTENCY_CHECK =
I_STRUCTURE_NAME =
IS_VARIANT =
I_SAVE =
I_DEFAULT = 'X'
IS_LAYOUT =
IS_PRINT =
IT_SPECIAL_GROUPS =
IT_TOOLBAR_EXCLUDING =
IT_HYPERLINK =
IT_ALV_GRAPHICS =
IT_EXCEPT_QINFO =
CHANGING
it_outtab = i_emp
it_fieldcatalog = fieldcatalog
IT_SORT =
IT_FILTER =
EXCEPTIONS
INVALID_PARAMETER_COMBINATION = 1
PROGRAM_ERROR = 2
TOO_MANY_LINES = 3
others = 4
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDIF.
ENDMODULE. " STATUS_3000 OUTPUT
preparing field catalog...............................................
FORM prepare_fieldcatalog CHANGING i_fieldcatalog TYPE lvc_t_fcat.
DATA : ls_fcat TYPE lvc_s_fcat.
ls_fcat-fieldname = 'STUDENT'.
ls_fcat-ref_table = 'ZHARRY'.
ls_fcat-coltext = 'STUDENT NO'.
APPEND ls_fcat TO i_fieldcatalog.
CLEAR ls_fcat.
ls_fcat-fieldname = 'SNAME'.
ls_fcat-ref_table = 'ZHARRY'.
ls_fcat-coltext = 'STUDENT NAME'.
APPEND ls_fcat TO i_fieldcatalog.
ENDFORM.
*& Module USER_COMMAND_3000 INPUT
text
MODULE user_command_3000 INPUT.
CASE ok_code.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
WHEN 'EXIT'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. " USER_COMMAND_3000 INPUT
*& Module USER_COMMAND_3001 INPUT
text
MODULE user_command_3001 INPUT.
CASE ok_code.
WHEN 'SAVE'.
LEAVE TO SCREEN 0.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE. " USER_COMMAND_3001 INPUT
*& Module STATUS_3001 OUTPUT
text
MODULE status_3001 OUTPUT.
SET PF-STATUS 'GUI'.
SET TITLEBAR 'TITLE'.
ENDMODULE. " STATUS_3001 OUTPUT
preparing fields to be registered for f4 help.........................
FORM prepare_f4.
lt_f4-fieldname = 'EMPNAME'.
lt_f4-register = 'X'.
lt_f4-getbefore = 'X'.
lt_f4-chngeafter = 'X'.
APPEND lt_f4.
ENDFORM. -
hi,
I need to allow F4 help to an alv field.
The alv is designed using cl_gui_alv_grid.
the reference values are in an internal table. how can i get these values for the help?
thanks,
Arindam.Hi,
Refer to this link..Re: F4 help for OO ALV Grid -
Hi ..
In a output list of alv few fields should have F4 help functionality. I am using REUSE_ALV_GRID_DISPLAY.
Please let me know how to get the functionality in grid display...
More helpful if any one can send me sample program for it ...
Please don't send BCALV* Programs ...
Rewards for sure !!!
Regards,
Varmahi
go to this
http://www.****************/Tutorials/ALV/Edit/F4.htm
regards
Snehi
Edited by: snehi chouhan on Jul 10, 2008 12:17 PM -
Hi,
I have a report with ALV .In the output success or error message gets displayed in a column based on certain conditions.The errors can be manually corrected.I
f the errors are corrected and 'Refresh' button is pressed in my output,the error message displayed in the output should disappear.
As of now,this happens if the report is run again but i want this to happen just by clicking of refresh button.i.e. the entire report should be run again with the existing inputs entered in selection screen.
If i try to call the same program using 'submit' spool gets created,but i want the output in the same page.
Can you please tell me how this can be achieved.
Regards,
S.SubasreeHi Subasree,
The following method call is used to refresh the data displayed within an ALV object grid:
CALL method gd_tree->REFRESH_TABLE_DISPLAY.
CALL METHOD gd_tree->set_table_for_first_display
EXPORTING
is_layout = gd_layout
CHANGING
it_fieldcatalog = gd_fieldcat
it_sort = it_sortcat
it_outtab = it_report.
CALL method gd_tree->REFRESH_TABLE_DISPLAY.
CALL METHOD cl_gui_cfw=>flush.
Hope this helps.
Reward if helpful.
Regards,
Sipra -
Align ALV Output Display to fit window resolution using cl_gui_custom_conta
hi,
my ALV Display is not fitting to the window screen for different resolutions.
big monitor the screen display is too small and small monitor its fitting.
I want to have DYNAMIC screen fit using cl_gui_custom_container...
is it possible??
ags.Thanks Pawan,
the link you provided had my exact solution.
this is a very rare feature to know i believe since most of the people havnt faced it i guess.
I will have to say the same thing as you said in the
"Thanks Pawan, that explains everything.. sometime I just overlook the things..Thnaks again!!"
ags. -
Display of only Tool bar in ALV without displaying the table
Hi Experts,
I defined a custom container and split it into 2 containers and used one for Top of page and the other for displaying the ALV.
Now I want to export the entire report to excel sheet. So is there any method for having the Tool bar set for the custom container without displaying the ALV??
I want to get the tool bar for custom container as we will have an option to download to excel sheet.Hi,
You could try creating an instance of the class 'CL_GUI_TOOLBAR' on the custom container.
And then call the method 'add_button' to add the export to Excel functionality.
Here is a sample code..
call method toolbar->add_button
exporting fcode = func code
icon = icon name
is_disabled = ' ' or 'X'
butn_type = '0'
quickinfo = quickinfo information.
Try it .............
Thanks,
Ketan
Maybe you are looking for
-
Hi, I installed my airport express software and configured my system to connect via airport to my DSL internet service using DHCP. I'm now connected to the internet wirelessly, but the airport setup assistant won't allow me to create a new network so
-
Compiling .as file to .swc
I'd like to compile a .as file to .swc so I can reference it directly, but I'm sure how to go about it in Flex. I'm using the new Flash Builder 4 Beta, but have a working copy of Flex Builder 3 as well so either is fine. Thanks, David
-
How to know that my cache is disttributed (i mean partitioned or replicated
How to know that my cache is distributed or replicated.. if it is not distributed then how can we make it as distributed(where do we need to change.) Thanks --Krishna..
-
Server in gdb hangs.....
When I was trying to debug a server with gdb by attaching to the pid, my client call times out. If I detach from gdb this works fine. This is the message i get in gdb warning: reading register r3: No data 0xc01f48b0 in selectsys () from /lib/libc.2 H
-
Any memory tuning to improve window 7 enterprise performance? Pls advice