Hiding fields with zeros or blanks in ALV using factory classes
Hi all,
I am using Factory Method for displaying ALV.
And I want to hide all the fields with Zeros or Blanks.
Any help wud be rewarded.
Thanks
Preeti
Hi,
Below is the code used to hide a particular field ,here it is MANDT.This code is put after the factory method.
data: lr_columns type ref to cl_salv_columns.
lr_columns = gr_table->get_columns( ).
lr_columns->set_optimize( abap_true ).
data: lr_column type ref to cl_salv_column.
try.
lr_column = lr_columns->get_column( 'MANDT' ).
lr_column->set_technical( if_salv_c_bool_sap=>true ).
catch cx_salv_not_found.
endtry.
Thanks.
Similar Messages
-
Coloring an single field of an ALV using factory method
how can we color just a single field in ALV using factory method.
Hello Regi you may want to check this sample code, basically what you need is to use the lvc_s_colo structure and the set_color method of the class cl_salv_column_table.
METHOD set_colors.
*.....Color for COLUMN.....
DATA: lo_cols_tab TYPE REF TO cl_salv_columns_table,
lo_col_tab TYPE REF TO cl_salv_column_table.
DATA: ls_color TYPE lvc_s_colo. " Colors strucutre
* get Columns object
lo_cols_tab = co_alv->get_columns( ).
INCLUDE <color>.
* Get ERDAT column & set the yellow Color fot it
TRY.
lo_col_tab ?= lo_cols_tab->get_column( 'ERDAT' ).
ls_color-col = col_total.
lo_col_tab->set_color( ls_color ).
CATCH cx_salv_not_found.
ENDTRY.
*.......Color for Specific Cell & Rows.................
* Applying color on the 3rd Row and Column AUART
* Applying color on the Entire 5th Row
DATA: lt_s_color TYPE lvc_t_scol,
ls_s_color TYPE lvc_s_scol,
la_vbak LIKE LINE OF ct_vbak,
l_count TYPE i.
LOOP AT ct_vbak INTO la_vbak.
l_count = l_count + 1.
CASE l_count.
* Apply RED color to the AUART Cell of the 3rd Column
WHEN 3.
ls_s_color-fname = 'AUART'.
ls_s_color-color-col = col_negative.
ls_s_color-color-int = 0.
ls_s_color-color-inv = 0.
APPEND ls_s_color TO lt_s_color.
CLEAR ls_s_color.
* Apply GREEN color to the entire row # 5
* For entire row, we don't pass the Fieldname
WHEN 5.
ls_s_color-color-col = col_positive.
ls_s_color-color-int = 0.
ls_s_color-color-inv = 0.
APPEND ls_s_color TO lt_s_color.
CLEAR ls_s_color.
ENDCASE.
* Modify that data back to the output table
la_vbak-t_color = lt_s_color.
MODIFY ct_vbak FROM la_vbak.
CLEAR la_vbak.
CLEAR lt_s_color.
ENDLOOP.
* We will set this COLOR table field name of the internal table to
* COLUMNS tab reference for the specific colors
TRY.
lo_cols_tab->set_color_column( 'T_COLOR' ).
CATCH cx_salv_data_error. "#EC NO_HANDLER
ENDTRY.
ENDMETHOD. "set_colors -
ALV using ABAP Classes and Objects
Hi All,
I am trying to print the values in my internal table using ALV, using ABAP classes and objects. Here the title for columns are picked based on the title specified in the data element. I want to set the title of my columns by my own. how to achieve this ?. Please provide me a sample code if possible.
thanks & regards,
Navneeth.KHello Navneeth
The following sample report shows how to build and modify a fieldcatalog (routine <b>BUILD_FIELDCATALOG_KNB1</b>).
*& Report ZUS_SDN_ALVGRID_EVENTS
REPORT zus_sdn_alvgrid_events.
DATA:
gd_okcode TYPE ui_func,
gt_fcat TYPE lvc_t_fcat,
go_docking TYPE REF TO cl_gui_docking_container,
go_grid1 TYPE REF TO cl_gui_alv_grid.
DATA:
gt_knb1 TYPE STANDARD TABLE OF knb1.
PARAMETERS:
p_bukrs TYPE bukrs DEFAULT '2000' OBLIGATORY.
* CLASS lcl_eventhandler DEFINITION
CLASS lcl_eventhandler DEFINITION.
PUBLIC SECTION.
CLASS-METHODS:
handle_hotspot_click FOR EVENT hotspot_click OF cl_gui_alv_grid
IMPORTING
e_row_id
e_column_id
es_row_no
sender.
ENDCLASS. "lcl_eventhandler DEFINITION
* CLASS lcl_eventhandler IMPLEMENTATION
CLASS lcl_eventhandler IMPLEMENTATION.
METHOD handle_hotspot_click.
* define local data
DATA:
ls_knb1 TYPE knb1,
ls_col_id TYPE lvc_s_col.
READ TABLE gt_knb1 INTO ls_knb1 INDEX e_row_id-index.
CHECK ( ls_knb1-kunnr IS NOT INITIAL ).
CASE e_column_id-fieldname.
WHEN 'KUNNR'.
SET PARAMETER ID 'KUN' FIELD ls_knb1-kunnr.
SET PARAMETER ID 'BUK' FIELD ls_knb1-bukrs.
CALL TRANSACTION 'XD03' AND SKIP FIRST SCREEN.
WHEN 'ERNAM'.
* SET PARAMETER ID 'USR' FIELD ls_knb1-ernam.
* NOTE: no parameter id available, yet simply show the priciple
CALL TRANSACTION 'SU01' AND SKIP FIRST SCREEN.
WHEN OTHERS.
* do nothing
ENDCASE.
* Set active cell to field BUKRS otherwise the focus is still on
* field KUNNR which will always raise event HOTSPOT_CLICK
ls_col_id-fieldname = 'BUKRS'.
CALL METHOD go_grid1->set_current_cell_via_id
EXPORTING
is_row_id = e_row_id
is_column_id = ls_col_id.
ENDMETHOD. "handle_hotspot_click
ENDCLASS. "lcl_eventhandler IMPLEMENTATION
START-OF-SELECTION.
SELECT * FROM knb1 INTO TABLE gt_knb1
WHERE bukrs = p_bukrs.
* Create docking container
CREATE OBJECT go_docking
EXPORTING
parent = cl_gui_container=>screen0
ratio = 90
EXCEPTIONS
OTHERS = 6.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* Create ALV grid
CREATE OBJECT go_grid1
EXPORTING
i_parent = go_docking
EXCEPTIONS
OTHERS = 5.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* Set event handler
SET HANDLER:
lcl_eventhandler=>handle_hotspot_click FOR go_grid1.
* Build fieldcatalog and set hotspot for field KUNNR
PERFORM build_fieldcatalog_knb1.
* Display data
CALL METHOD go_grid1->set_table_for_first_display
CHANGING
it_outtab = gt_knb1
it_fieldcatalog = gt_fcat
EXCEPTIONS
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.
* Link the docking container to the target dynpro
CALL METHOD go_docking->link
EXPORTING
repid = syst-repid
dynnr = '0100'
* CONTAINER =
EXCEPTIONS
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.
* ok-code field = GD_OKCODE
CALL SCREEN '0100'.
END-OF-SELECTION.
*& Module STATUS_0100 OUTPUT
* text
MODULE status_0100 OUTPUT.
SET PF-STATUS 'STATUS_0100'.
* SET TITLEBAR 'xxx'.
ENDMODULE. " STATUS_0100 OUTPUT
*& Module USER_COMMAND_0100 INPUT
* text
MODULE user_command_0100 INPUT.
CASE gd_okcode.
WHEN 'BACK' OR
'END' OR
'CANC'.
SET SCREEN 0. LEAVE SCREEN.
WHEN OTHERS.
ENDCASE.
CLEAR: gd_okcode.
ENDMODULE. " USER_COMMAND_0100 INPUT
*& Form BUILD_FIELDCATALOG_KNB1
* text
* --> p1 text
* <-- p2 text
FORM build_fieldcatalog_knb1 .
* define local data
DATA:
ls_fcat TYPE lvc_s_fcat.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
* I_BUFFER_ACTIVE =
i_structure_name = 'KNB1'
* I_CLIENT_NEVER_DISPLAY = 'X'
* I_BYPASSING_BUFFER =
* I_INTERNAL_TABNAME =
CHANGING
ct_fieldcat = gt_fcat
EXCEPTIONS
inconsistent_interface = 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.
LOOP AT gt_fcat INTO ls_fcat
WHERE ( fieldname = 'KUNNR' OR
fieldname = 'ERNAM' ).
ls_fcat-hotspot = abap_true.
ls_fcat-scrtext_s = '<short text>'. " short text of column
ls_fcat-scrtext_m = '<medium text>'. " medium text of column
ls_fcat-scrtext_l = '<long text>'. " longtext text of column
ls_fcat-tooltip = '...'. " ALV control: Tool tip for column header
ls_fcat-coltext = '...'. " ALV control: Column heading
MODIFY gt_fcat FROM ls_fcat.
ENDLOOP.
ENDFORM. " BUILD_FIELDCATALOG_KNB1
Regards
Uwe -
Hi,
I have a form built in ADOBE LC Designer ES. The form has multiple pages. I have some fields with the same name and distributed across subforms. Is there a way I can hide the fields using the common name or do I have to refernece each and every field to hide it?
Thanks,
NakulIs the condition for hiding the fields the same in every case, i.e. a checkbox being checked? If it is, you could put the same script in each field:
if (checkbox1.rawValue == 1){
this.presence = "hidden";
You would still have to either paste the script into each field or make it a function that gets referenced in each field, but at least it would be a copy - paste rather than having to type out the path to each field. -
Show NUMC Type Field with Zeros in SE16
Hi.
Is there any way to show a field of numc type (length 9) with zeros when is shown in SE16???Hi
I am not clear with your question?
Just check the table entries in VBAP
fields VBELN which is of CHAR 10 and
POSNR which of NUMC 6
For both the fields the leading zeros are displayed in SE16
just check it.
so what's your question?
Reward points if useful
Regards
Anji -
Padding character fields with zeros
Hello,
I need to add zeros to the end of character fields TYPE C. I know i can use the conversion routines but that only works for numeric fields.
ThanksThanks for all the replies.
STRLEN will give me the lenght of the field but i need the offset of the last chararcter.
Your post gave me an idea though. I'm doing the following and it's working.
value = 'Thank You '.
tmp = '00000000000000'.
FIND REGEX `\w[ [:space:] ][ [:space:] ]` IN value MATCH OFFSET moff.
IF SY-SUBRC = 0.
OVERLAY value+moff WITH tmp.
ENDIF.
The find looks for the last alphanumeric char and 2 spaces after it meaning the last alphanumeric char in the string.
Thanks to all, i will reward as fairly as possible. -
Hiding Fields with the same name
I have multiple fields across a form with the same name
TxtName#1
TxtName#2
TxtName#3..... TxtName#24
They are all share the same name because they should all have the same data.
I want to be able to hide some of these fields, based on the number entered in another field TxtQty.
for example if TxtQty=2 then
TxtName#3-TxtName#24 will be hidden and only TxtName#1 and TxtName#2 will be visible.
Can anyone please help?
Thanks!The easiest way is to rename TxtName #1 and #2 to "TxtName2", and use the following custom Validate script for each:
// Copy this field's value to the TxtName fields
getField("TxtName").value = event.value;
You can then hide all of the TxtName fields with:
getField("TxtName").display = display.hidden; -
How to add a new button in an ALV using factory method
im using factory method to creat an ALV
The reason why I'm doing this is because I want the ALV and the selection screen in the same screen like exemplified here http://help-abap.blogspot.com/2008/10/dispaly-alv-report-output-in-same.html
CALL METHOD cl_salv_table=>factory
EXPORTING
list_display = if_salv_c_bool_sap=>false
r_container = lo_cont
container_name = 'DOCK_CONT'
IMPORTING
r_salv_table = lo_alv
CHANGING
t_table = me->t_data.
The above code already uses every parameter that method as to offer.
Is it possible to add extra buttons to an ALV using that method?Hi Ann,
The reason you are not able to see any of the new columns as a option to select in your web service block is because when you have published that block, they were not present. Add these two new objects in your block and publish it again. You will be prompted for duplication content. Select the highlighted block for duplicate and now you can see the new added objects in the filter option. Update and this will overwrite your published block. Please note, web services do appear to behave weirdly when used with dashboards so I request you to please try it in a separate test report first.
Hope that helps.
Regards,
Tanisha -
Editable ALV Using SALV Class.
Hi Experts,
I need to make ALV Editable using SALV Class only.
Thanks in Advance
Regards,
Ankit.
Moderator message: please do some research before asking.
Edited by: Thomas Zloch on Feb 25, 2011 1:47 PMHi Aniket,
This is a restriction and not provided in SALV class.
Please have look at the earlier posts in SCN .
Thanks. -
How to deal with the rule that do not use "object" class to declear a class
I run my flex project in sonar. And there is a rule "Do not use Object class ".
I just want to know how to deal with this problem.
I mean, when I try to write a base class, I don't know which kind of class will be transfered in by reference, which type I can declear instead of "object"?Check out this example:
The moment I put in the code >> box1.addItem("hello"); << and run the application, the BusNameListener is fired. Hope this makes sense.
import java.awt.*;
import javax.swing.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class JFrameExample {
private JComboBox box1;
public JFrameExample() {
box1 = new JComboBox();
box1 .setMinimumSize(new Dimension(300, 24));
box1 .setPreferredSize(new Dimension(300, 24));
box1.addActionListener(new BusNameListener());
box1.addItem("hello");
JFrame f = new JFrame("This is a test");
f.setSize(400, 150);
Container content = f.getContentPane();
// content.setBackground(Color.white);
content.setLayout(new FlowLayout());
content.add(box1);
f.setVisible(true);
class BusNameListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
JComboBox cb = (JComboBox) e.getSource();
String item = (String) cb.getSelectedItem();
if (item != null) {
JOptionPane.showInputDialog(null,
"Specify...", "File Import",
JOptionPane.OK_CANCEL_OPTION);
} -
Suppressing summarized fields with zero value
I have a report with many many fields. I do not want to display the field if the value is zero. Instead of me going to each field, right-clicking, going to common tab, clicking on suppress and inserting the conditional formula {summarized.fieldname}=0 for each field, is there a quicker way to do this? Perhaps globally?
Thanks in advance,
Zack H.Select all your summary fields, right mouse click, select format objects, click on the number tab, click the customize button, then on the number tab check 'Suppress if Zero'
-
Sub Total Text in an ALV using FACTORY Method
Hi Gurus,
My requirement is simple, but I couldn't find any answers under SDN or any other forums. Some of you may ask me to check for the SCN posts, but I almost checked everything.
My requirement is - When I get the Sub-total in my ALV, it should print a text other than the field which has got sub-total value.
My ALV Schema:
Field1 | Field2 | Field 3 |
____ |______ |______ |
| | |
| | |
Tot. Qty | 1000.00|
I have sorted and added the subtotal = 'X' for the field which I need the Subtotal. Added Aggregations to Field3. But where and how to the field 'Tot. Qty', so that it should appear at the Sub-Total Level.
Please guide me if I've missed any of the forums. Again my requirement is to print the Field Name.
Regards,
-Wahid Hussain Syed.Hi,
You can view this thread for example Display constant text in intermediate results column of SALV as it says that this is a limitation in SALV that "The output of totals and subtotals is handled solely by ALV. You can neither pass the results to your application nor manipulate them in any way.". But you can see a work around done for this problem, to be frank that I have not done that and I am only providing this link for your reference. -
I NEVER USED OOPS CONCEPT.BUT I GOT A TASK ON ALV REPORT USING class CL_GUI_ALV_GRID, call method SET_TABLE_FOR_FIRST_DISPLAY for ALV . I HAD PASSED THE VALUES FROM INTERNAL TABLE AND GOT OUTPUT IN ALV.
The problem is When i save an layout(default setting button ).
iam unable to get the output for all fields.
if u want i will send screenshots to ur mail
THANKS IN ADVANCE.ok fine,
In the output (alv grid) there is an icon for layout settings.
if i want to save layout (as DEFAULT SETTING) i am missing some fields in output
EX:
mat no | batch | proces order | time | date |
when i save layout (as DEFAULT SETTING) i am missing some fields in output
mat no | batch |
the rest of the field were not displayed.
if u are not clear just ask me. i will send some more examples. -
I need to pad these fields with zero after the substring. How do I do that?
Current items is:
drvLocCode
=
case
when
Substring(EecLocation,
1, 2)
=
'28'
and
len(EecLocation)
= 5
then
Substring(EecLocation,
3, 3)
when
Substring(EecLocation,
1, 2)
=
'28'
and
len(EecLocation)
= 6
then
Substring(EecLocation,
3, 4)
when
Substring(EecLocation,
1, 1)
=
'P'
and
len(EecLocation)
= 6
then
Substring(EecLocation,
2, 5)
endHere's a simple example:
SELECT LEFT('myString'+REPLICATE('0',10),10)
We're literally adding 10 0s to the end of the string, and then taking the 10 left most characters.
So, for your example:
drvLocCode = LEFT(case when Substring(EecLocation, 1, 2) = '28' and len(EecLocation) = 5 then Substring(EecLocation, 3, 3)
when Substring(EecLocation, 1, 2) = '28' and len(EecLocation) = 6 then Substring(EecLocation, 3, 4)
when Substring(EecLocation, 1, 1) = 'P' and len(EecLocation) = 6 then Substring(EecLocation, 2, 5) end+REPLICATE('0',10),10) -
How to show records with zero on dashboard
hi expert,
if I have a dimension table product,
a fact table
if in the db, there are records with zero values of product A.
if the logical column for the fact is SUM(...).
how to show records with zero values on dashboard.
Use the outer join?
or other method?
I dont wanna use outer join because it makes the PRD be so complicatedhi,
Pull all the columns to criteria ,it will show NULL for a product
To get zero,on the fact column use IFNULL(fact_col,0)
which will look like this
http://a.imageshack.us/img180/6616/ifnull.jpg
thanks,
saichand.v
Maybe you are looking for
-
HT4914 Can more than one icloud account share the same itunes match account?
I have itunes match on my ipad, iphone and two pc's, my wife has her own itunes account on her iphone and her laptop. Is it possible for her to share my itunes match account so that I only have to worry about one itunes library?
-
After ios 7 problems with cloud
Iphone keep asking me to agree with I cloud terms and conditions but I can not find where it is and how i agree on ios7 I press to go to terms and conditions they send me to Icloud account but there is no terms to agree there What i need to do to st
-
Thunderbird updated now calender gone how do I get it back with all my info that was in it?
Thunderbird updated to 24.1.0 I think now my calender has gone along with all my info how do I get it back???? I need access to my calender urgently !!
-
A seriously sick site and getting sicker by the minute!
On top of the usual ridiculously slow response of these forums I have a new problem. Yesterday I could not see my handle (sabre150) anywhere on the site. All I could see was a six digit number displayed instead of my handle. I could see most other pe
-
URGENT EDL errors, deadling coming up
My friend is having a problem importing an EDL from Canopus Edius into FCP. She is in the bush and does not have access to reliable internet. Please help. THANKS. HEre is her message below Hi, I've been trying to export an EDL from edius 4.52 to Fina