ALV Grid - Resource Issue?
Morning All
I have a situation where I have a standard selection screen displaying an ALV grid. The user can then double click a line to see a drill down ALV. My error occurs if the user executes the program multiple times i.e. displaying the grid time and time again. Eventually the session does not display the grid and on a subsequent attempt the session either crashes or locks.
I am currently destroying the 2 containers used every time the user exits the relevant screens using call method gr_alvgrid-> free but to no avail.
Has anyone else had similar problems? I am on a 46B machine running on NT4 (yes I know I'm in the dark ages!)
Cheers
Ian
Hi,
Have you did something like that before creating event receiver?
IF cl_gui_alv_grid=>offline( ) IS INITIAL.
* Create the event reciever
IF o_eventreceiver IS INITIAL.
CREATE OBJECT o_eventreceiver.
ENDIF.
ENDIF.
In PAI of the screen,just try this.
module USER_COMMAND_9001 input.
CASE sy-ucomm.
WHEN 'EXIT' or 'CANC'.
perform f9600_free_objects:
using o_Alvgrid 'ALV' text-E02,
using o_Dockingcontainer 'DOCKING'
TEXT-E01.
* leave program.
LEAVE PROGRAM.
when 'BACK'.
perform f9600_free_objects:
using o_Alvgrid 'ALV' text-E02,
using o_Dockingcontainer 'DOCKING'
TEXT-E01.
set screen '0'.
leave screen.
* This leaves the program but you may need to re-call the
* transaction to go back to the original screen
when others.
ENDCASE.
endmodule. " USER_COMMAND_9001 INPUT
FORM f9600_free_objects USING pobject
value(ptype)
value(ptext).
DATA: l_objectalv TYPE REF TO cl_gui_alv_grid.
* Need to type the field symbol or it does not work
CASE ptype.
WHEN 'ALV'.
l_objectalv = pobject.
IF NOT ( l_objectalv IS INITIAL ).
CALL METHOD l_objectalv->free
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
OTHERS = 3.
CLEAR: pobject, l_objectalv.
PERFORM f9700_error_handle USING ptext.
ENDIF.
WHEN 'DOCKING'.
DATA: lobjectdock TYPE REF TO cl_gui_docking_container.
lobjectdock = pobject.
IF NOT ( lobjectdock IS INITIAL ).
CALL METHOD lobjectdock->free
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
OTHERS = 3.
CLEAR: pobject, lobjectdock.
PERFORM f9700_error_handle USING ptext.
ENDIF.
WHEN 'CONTAINER'.
DATA: lobjectcontainer TYPE REF TO cl_gui_container.
lobjectcontainer = pobject.
IF NOT ( lobjectcontainer IS INITIAL ).
CALL METHOD lobjectcontainer->free
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
OTHERS = 3.
CLEAR: pobject, lobjectcontainer.
PERFORM f9700_error_handle USING ptext.
ENDIF.
WHEN OTHERS.
sy-subrc = 1.
PERFORM f9700_error_handle USING
text-e04.
ENDCASE.
ENDFORM. " f9600_free_objects
FORM f9700_error_handle USING value(ptext).
IF sy-subrc NE 0.
* add your handling, for example
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
titel = text-e03
txt2 = sy-subrc
txt1 = ptext.
ENDIF.
ENDFORM. " f9700_error_handle
Message was edited by: Jayanthi Jayaraman
Similar Messages
-
ALV Grid - Alignment Issues in TOP OF PAGE.
Hi,
We have a requirement to right align text in the report header.
We are using REUSE ALV GRID DISPLAY, but using TOP-OF-PAGE event - the whole text is left aligned.
I tried using Class CL_DD_DOCUMENT which solved the alignment issue, but I am not able to see the header while printing/downloading to excel.
I want the header to be available while downloading/printing the list. Any suggestions?
Thanks in advance,
Harveen.Hi
The ALV download only the grid into the file, so not the data you're writing in TOP_OF_PAGE event.
If you need to do that, you should create an your own buttom to download the file.
Max -
ALV grid display issue from radio buttons
Hello,
I have a radio button group in a selection screen. On select of the first radio button, I display an ALV grid below the radio button group.
On selecting the next one, I want the grid to disappear which isn't happening currently.
Please help.
Thanks and Regards,
AbhijnanPlease check if this is what you needed or something else
DATA: obj TYPE REF TO cl_gui_alv_grid,
repid TYPE sy-repid,
entered TYPE c,
lv_structure TYPE tabname,
dock TYPE REF TO cl_gui_docking_container,
i_mara TYPE TABLE OF mara,
i_marc TYPE TABLE OF marc.
FIELD-SYMBOLS:<fs_tab> TYPE table.
PARAMETERS: p_matnr TYPE matnr.
PARAMETERS: p_mara RADIOBUTTON GROUP a USER-COMMAND abc.
PARAMETERS: p_marc RADIOBUTTON GROUP a.
AT SELECTION-SCREEN OUTPUT.
CHECK NOT p_matnr IS INITIAL.
IMPORT entered from memory id 'E'.
CHECK NOT entered IS INITIAL.
CHECK dock IS INITIAL.
repid = sy-repid.
CREATE OBJECT dock
EXPORTING
repid = repid
dynnr = sy-dynnr
ratio = 80
side = cl_gui_docking_container=>dock_at_bottom
name = 'DOCK_CONT'.
CHECK obj IS INITIAL.
CREATE OBJECT obj
EXPORTING
i_parent = dock.
IF p_mara = 'X'.
IMPORT i_mara FROM MEMORY ID 'IMARA'.
FREE MEMORY ID 'IMARA'.
lv_structure = 'MARA'.
ASSIGN i_mara TO <fs_tab>.
ELSE.
IMPORT i_marc FROM MEMORY ID 'IMARC'.
FREE MEMORY ID 'IMARC'.
lv_structure = 'MARC'.
ASSIGN i_marc TO <fs_tab>.
ENDIF.
CALL METHOD obj->set_table_for_first_display
EXPORTING
i_structure_name = lv_structure
CHANGING
it_outtab = <fs_tab>.
START-OF-SELECTION.
entered = 'X'.
EXPORT entered TO memory ID 'E'.
IF p_mara = 'X'.
SELECT * FROM mara UP TO 100 ROWS INTO TABLE i_mara
WHERE matnr = p_matnr.
EXPORT i_mara TO MEMORY ID 'IMARA'.
ELSE.
SELECT * FROM marc UP TO 100 ROWS INTO TABLE i_marc
WHERE matnr = p_matnr.
EXPORT i_marc TO MEMORY ID 'IMARC'.
ENDIF. -
ALV grid output issue to excel
Hi Experts
I have an ALV report which I want to Download to Excel( I am using excel 2003).
When I veiw the report it apperars ok. Their are around 90 columns in the Report
But when I export the alv I found that some columns are on the next line. Is there any way to resolve this issue
I want to export in excel without creating new rows of columns .
Thanks
VikrantHi,
please tell your abaper to move 90 fields to intenal table & have a look below code.
Here my internal table is i_downfinal.
DATA: FULLPATH TYPE STRING,
FILENAME TYPE STRING,
PATH TYPE STRING,
USER_ACTION TYPE I.
encoding TYPE ABAP_ENCODING.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG
EXPORTING
WINDOW_TITLE = 'File Download'
DEFAULT_FILE_NAME = 'C:\TEMP\zpmcs.xls'
WITH_ENCODING = 'X'
CHANGING
FILENAME = FILENAME
PATH = PATH
FULLPATH = FULLPATH
USER_ACTION = USER_ACTION
FILE_ENCODING = encoding
EXCEPTIONS
CNTL_ERROR = 1
ERROR_NO_GUI = 2
NOT_SUPPORTED_BY_GUI = 3
OTHERS = 4.
IF SY-SUBRC <> 0.
EXIT.
ENDIF.
IF USER_ACTION <> CL_GUI_FRONTEND_SERVICES=>ACTION_OK.
EXIT.
ENDIF.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
FILENAME = FULLPATH
FILETYPE = 'DAT'
TABLES
DATA_TAB = I_DOWNFINAL
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2
GUI_REFUSE_FILETRANSFER = 3
INVALID_TYPE = 4
NO_AUTHORITY = 5
UNKNOWN_ERROR = 6
HEADER_NOT_ALLOWED = 7
SEPARATOR_NOT_ALLOWED = 8
FILESIZE_NOT_ALLOWED = 9
HEADER_TOO_LONG = 10
DP_ERROR_CREATE = 11
DP_ERROR_SEND = 12
DP_ERROR_WRITE = 13
UNKNOWN_DP_ERROR = 14
ACCESS_DENIED = 15
DP_OUT_OF_MEMORY = 16
DISK_FULL = 17
DP_TIMEOUT = 18
FILE_NOT_FOUND = 19
DATAPROVIDER_EXCEPTION = 20
CONTROL_FLUSH_ERROR = 21
OTHERS = 22.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF. -
Hi,
I've to display a list in a Grid using FM'S, So that it should fullfill 3 requirements given below.
1)Positive values should be in green color and negative values should be in red color. Similarly how to maintain various columns in various colors.
2)For the first 2 values in the grid scroll bar shouldn't be enabled. That means we con't scroll through those 2 values.
3)How to calculate subtotals.
Thanks,
G Sandeepexample:
REPORT Z_ALV_CELL_COLOR.
Macro definition
DEFINE m_fieldcat.
add 1 to ls_fieldcat-col_pos.
ls_fieldcat-fieldname = &1.
ls_fieldcat-ref_tabname = &2.
append ls_fieldcat to lt_fieldcat.
END-OF-DEFINITION.
TYPE-POOLS: slis. " ALV Global types
SELECTION-SCREEN :
SKIP, BEGIN OF LINE,COMMENT 5(27) v_1 FOR FIELD p_max. "#EC NEEDED
PARAMETERS p_max(2) TYPE n DEFAULT '30' OBLIGATORY. "#EC *
SELECTION-SCREEN END OF LINE.
TYPES :
BEGIN OF ty_data,
vkorg TYPE vbak-vkorg, " Sales organization
kunnr TYPE vbak-kunnr, " Sold-to party
vbeln TYPE vbak-vbeln, " Sales document
netwr TYPE vbak-netwr, " Net Value of the Sales Order
END OF ty_data,
Data displayed
BEGIN OF ty_vbak,
vkorg TYPE vbak-vkorg, " Sales organization
kunnr TYPE vbak-kunnr, " Sold-to party
vbeln TYPE vbak-vbeln, " Sales document
netwr TYPE vbak-netwr, " Net Value of the Sales Order
tabcolor TYPE lvc_t_scol, " Cell Color
END OF ty_vbak.
DATA:
gt_data TYPE TABLE OF ty_data,
Data displayed
gt_vbak TYPE TABLE OF ty_vbak.
INITIALIZATION.
v_1 = 'Maximum of records to read'. "#EC NOTEXT
START-OF-SELECTION.
PERFORM f_read_data.
PERFORM f_fill_color.
PERFORM f_display_data.
Form f_read_data_vbak
FORM f_read_data.
SELECT * INTO CORRESPONDING FIELDS OF TABLE gt_data
FROM vbak UP TO p_max ROWS.
ENDFORM. " F_READ_DATA
Form f_fill_color
FORM f_fill_color.
DATA :
ls_data TYPE ty_data,
ls_vbak TYPE ty_vbak.
LOOP AT gt_data INTO ls_data.
CLEAR ls_vbak.
MOVE-CORRESPONDING ls_data TO ls_vbak.
PERFORM f_modify_color USING 'NETWR' CHANGING ls_vbak.
PERFORM f_modify_color USING 'VBELN' CHANGING ls_vbak.
Fill gt_vbak
APPEND ls_vbak TO gt_vbak.
ENDLOOP.
ENDFORM. " F_FILL_COLOR
Form F_modify_color
FORM f_modify_color USING u_fieldname TYPE lvc_fname
CHANGING us_vbak TYPE ty_vbak.
DATA :
l_rnd_value TYPE integer2,
ls_tabcolor TYPE lvc_s_scol.
Random value
CALL FUNCTION 'RANDOM_I2'
EXPORTING
rnd_min = 0
rnd_max = 3
IMPORTING
rnd_value = l_rnd_value.
CLEAR ls_tabcolor.
ls_tabcolor-fname = u_fieldname.
CASE l_rnd_value.
WHEN 0.
ls_tabcolor-color-col = 1. " Blue.
ls_tabcolor-color-int = 0.
ls_tabcolor-color-inv = 0.
WHEN 1.
ls_tabcolor-color-col = 3. " Yellow.
ls_tabcolor-color-int = 0.
ls_tabcolor-color-inv = 0.
WHEN 2.
ls_tabcolor-color-col = 5. " Green.
ls_tabcolor-color-int = 0.
ls_tabcolor-color-inv = 0.
WHEN 3.
ls_tabcolor-color-col = 6. " Red.
ls_tabcolor-color-int = 0.
ls_tabcolor-color-inv = 0.
ENDCASE.
INSERT ls_tabcolor INTO TABLE us_vbak-tabcolor.
ENDFORM. " F_MODIFY_COLOR
Form f_display_data
FORM f_display_data.
DATA:
ls_layout TYPE slis_layout_alv,
ls_fieldcat TYPE slis_fieldcat_alv,
lt_fieldcat TYPE slis_t_fieldcat_alv.
Build the field catalog
m_fieldcat 'VKORG' 'VBAK'.
m_fieldcat 'KUNNR' 'VBAK'.
m_fieldcat 'VBELN' 'VBAK'.
m_fieldcat 'NETWR' 'VBAK'.
Fill Layout
ls_layout-coltab_fieldname = 'TABCOLOR'.
Display the list
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
is_layout = ls_layout
it_fieldcat = lt_fieldcat
TABLES
t_outtab = gt_vbak.
ENDFORM. " F_DISPLAY_DATA -
Hi,
We are using REUSE_ALV_GRID_DISPLAY for diaplying grid . we want the totals to be displayed for some fields.
but for percentage fields we want to calculate the values. How do we do this?Hi Asharaghu,
FOR TOTAL:
there is a property of fieldcatalog, that is do_sum.
USE COED LIKE:
PERFORM fieldcat USING:
'1' 'KUNNR' 'I_MARD' 'CUSTOMER NO' ,
'2' 'DMBTR' 'I_MARD' 'CURRENCY' ,
FORM fieldcat USING value(p_0029)
value(p_0030)
value(p_0031)
value(p_0032)
wa_fieldcat-col_pos = p_0029.
wa_fieldcat-fieldname = p_0030.
wa_fieldcat-tabname = p_0031.
wa_fieldcat-reptext = p_0032.
wa_fieldcat-do_sum = 'X'.
APPEND wa_fieldcat TO i_fieldcat.
ENDFORM. " FIELDCAT
Then pass i_fieldcat through REUSE_ALV_GRID_DISPLAY.
in final output you will get the total of currency field.
Hope this can solve your problems.
Regards,
Tutun -
Hellow Experts,
i got the some code to genrate auto genrated column based on date my out put is as follow
StudentID Day00 Day01 Day02 ......Day31
178 20 30 40 50
My Code for genrate day is
LOOP AT gt_cols INTO gs_col.
TRY.
CONCATENATE 'DATE' gs_col-date INTO g_col. "Define Column name
gr_column ?= gr_columns->get_column( g_col ). "Get column
CONCATENATE 'Day' gs_col-date+6(2) INTO g_txt. "Define new label (Day01, .., Day31)
gr_column->set_long_text( g_txt ). "Set label long text
CATCH cx_salv_not_found. "#EC NO_HANDLER
ENDTRY.
* CATCH cx_salv_not_found. "#EC NO_HANDLER
* ENDTRY.
ENDLOOP.
My requirment is i dont need 'Day00' like follow
StudentID Day01 Day02 ......Day31
178 30 40 50
PLz help me and Ammend my above code to remove Day00.ThanksLOOP AT gt_cols INTO gs_col.
TRY.
IF gs_col-date+6(2) NE '00'. "Add this IF statement and see if it solves the problem
CONCATENATE 'DATE' gs_col-date INTO g_col. "Define Column name
gr_column ?= gr_columns->get_column( g_col ). "Get column
CONCATENATE 'Day' gs_col-date+6(2) INTO g_txt. "Define new label (Day01, .., Day31)
gr_column->set_long_text( g_txt ). "Set label long text
ENDIF.
CATCH cx_salv_not_found. "#EC NO_HANDLER
ENDTRY.
* CATCH cx_salv_not_found. "#EC NO_HANDLER
* ENDTRY.
ENDLOOP.
-- Aniruddha -
Hello!
I am using the FM 'REUSE_ALV_GRID_DISPLAY' to display a report we have written. The report displays sales orders and when the user double-clicks on a line they are taken in VA02. I put in a change to have the report refresh after the user came back from VA02. I put in the code p_selfield-refresh = 'X' in the user_command section. This was working before and now it is not refreshing. I'm wondering if this has to do with a default layout we added after these changes were put in. I've done some google searches and I can find object-oriented code but my report is not setup that way so hopefully there is a solution for me!
Thanks,
WendyIf you set refresh subfield (and row/col_stable subfields if sort fields are not changed), then you should update the internal table record in your user_command form. You need to reload the data from database, but there may be a delay between leaving VA02 and actual update of database, you may try to lock the sales order to insure update task release the lock. (DO/ENQUEUE_EVVBAKE with WAIT/ENDDO and when/if successful DEQUEUE_EVVBAKE, if not successful after some tries, put a warning/status message)
* init data
CLEAR: lv_error,
refresh lt_bdcmsg.
* Read record
READ TABLE gt_data INTO old_data
INDEX rs_selfield-tabindex.
CHECK sy-subrc EQ 0.
* Call VA02
SET PARAMETER ID 'AUN' FIELD old_data-vbeln.
CALL transaction 'VA02' AND SKIP FIRST SCREEN
MESSAGES into lt_bdcmsg.
* Call successful ?
LOOP AT lt_bdcmsgcoll INTO ls_bdcmsg WHERE msgtyp = 'E' OR msgtyp = 'S'.
MESSAGE message ID ls_bdcmsg-msgid TYPE ls_bdcmsg-msgtyp
NUMBER ls_bdcmsg-msgnr WITH ls_bdcmsg-msgv1. " 2 3 4
IF ls_bdcmsg-msgtyp EQ 'E'.
lv_error = 'X'.
EXIT.
ENDIF.
ENDLOOP.
CHECK lv_error IS INITIAL.
* Is update ended
DO 10 TIMES.
CALL FUNCTION 'ENQUEUE_EVVBAKE'
EXPORTING
vbeln = old_data-vbeln
_wait = 'X'
EXCEPTIONS
foreign_lock = 1
system_failure = 1
OTHERS = 1.
IF sy-subrc EQ 0.
CALL FUNCTION 'DEQUEUE_EVVBAKE'
EXPORTING
vbeln = old_data-vbeln
EXCEPTIONS
OTHERS = 0.
EXIT.
ENDIF.
ENDDO.
* Reload
new_data = old_data.
SELECT SINGLE * FROM vbak INTO CORRESPONDING FIELDS OF new_data
WHERE vbeln = l_sdata-vbeln. " more coding for other fields
* Update internal table
IF new_data NE old_data.
MODIFY gt_data FROM new_data.
rs_selfield-refresh = 'X'.
ENDIF.
Regards,
Raymond -
Hi all,
i am having one issue regarding ALV GRID.
my issue is after executin report O/P in grid format is ok,
but the same format i want to display when u click print preview or when u execute it in back ground,
it is displaying as same as ALV LIST,hi use the coding like this,
here i am calling hirarchial from list check this....
*& Report ZZZ00
REPORT ZPR_02.
TYPE-POOLS: SLIS.
TABLES:pa0002,pa0008.
data:begin of it_pa0002 occurs 0,
checkbox,
pernr like pa0002-pernr,
begda like pa0002-begda,
endda like pa0002-endda,
vorna like pa0002-vorna,
nachn like pa0002-nachn,
end of it_pa0002.
data:begin of it_pa00021 occurs 0,
pernr like pa0002-pernr,
begda like pa0002-begda,
endda like pa0002-endda,
vorna like pa0002-vorna,
nachn like pa0002-nachn,
expand TYPE xfeld value 'X',
end of it_pa00021.
data:begin of it_pa0008 occurs 0,
pernr like pa0008-pernr,
begda like pa0008-begda,
endda like pa0008-endda,
ANSAL like pa0008-ANSAL,
LGA01 like pa0008-LGA01,
BET01 LIKE PA0008-BET01,
end of it_pa0008.
DATA: IT_FIELD_CAT TYPE SLIS_T_FIELDCAT_ALV,
IT_FIELD_CAT1 TYPE SLIS_T_FIELDCAT_ALV,
IT_LAYOUT1 TYPE SLIS_LAYOUT_ALV,
WA_FIELD_CAT TYPE SLIS_FIELDCAT_ALV,
WA_FIELD_CAT1 TYPE SLIS_FIELDCAT_ALV,
IT_LAYOUT TYPE SLIS_LAYOUT_ALV,
IT_EVENTS TYPE SLIS_T_EVENT,
WA_EVENTS TYPE SLIS_ALV_EVENT,
IT_HEADER TYPE SLIS_T_LISTHEADER,
WA_HEADER TYPE SLIS_LISTHEADER,
wa_keyinfo TYPE slis_keyinfo_alv.
CONSTANTS:c VALUE 'X'.
SELECT-OPTIONS: S_pernr FOR pa0002-pernr.
START-OF-SELECTION.
SET PF-STATUS 'DATA' .
PERFORM GET_DATA.
PERFORM BUILD_FIELD_CAT.
PERFORM GET_EVENTS.
PERFORM DISPLAY_DATA.
*& Form get_data
text
FORM GET_DATA .
SELECT pernr
begda
endda
vorna
nachn
FROM pa0002
INTO CORRESPONDING FIELDS OF TABLE IT_pa0002
WHERE pernr IN S_pernr.
ENDFORM. " get_data
*& Form build_field_cat
text
FORM BUILD_FIELD_CAT .
wa_field_cat-tabname = 'PA0002'.
WA_FIELD_CAT-FIELDNAME = 'CHECKBOX'.
wa_field_cat-ref_tabname = 'IT_PA0002'.
WA_FIELD_CAT-REPTEXT_DDIC = 'Check Box'.
APPEND WA_FIELD_CAT TO IT_FIELD_CAT.
CLEAR WA_FIELD_CAT.
wa_field_cat-tabname = 'PA0002'.
WA_FIELD_CAT-FIELDNAME = 'PERNR'.
wa_field_cat-ref_tabname = 'IT_PA0002'.
WA_FIELD_CAT-REPTEXT_DDIC = 'Personnel no'.
APPEND WA_FIELD_CAT TO IT_FIELD_CAT.
CLEAR WA_FIELD_CAT.
wa_field_cat-tabname = 'PA0002'.
WA_FIELD_CAT-FIELDNAME = 'BEGDA'.
wa_field_cat-ref_tabname = 'IT_PA0002'.
WA_FIELD_CAT-REPTEXT_DDIC = 'Start date'.
APPEND WA_FIELD_CAT TO IT_FIELD_CAT.
CLEAR WA_FIELD_CAT.
wa_field_cat-tabname = 'PA0002'.
WA_FIELD_CAT-FIELDNAME = 'ENDDA'.
wa_field_cat-ref_tabname = 'IT_PA0002'.
WA_FIELD_CAT-REPTEXT_DDIC = 'End date'.
APPEND WA_FIELD_CAT TO IT_FIELD_CAT.
CLEAR WA_FIELD_CAT.
wa_field_cat-tabname = 'PA0002'.
WA_FIELD_CAT-FIELDNAME = 'VORNA'.
wa_field_cat-ref_tabname = 'IT_PA0002'.
WA_FIELD_CAT-REPTEXT_DDIC = 'First name'.
APPEND WA_FIELD_CAT TO IT_FIELD_CAT.
CLEAR WA_FIELD_CAT.
wa_field_cat-tabname = 'PA0002'.
WA_FIELD_CAT-FIELDNAME = 'NACHN'.
wa_field_cat-ref_tabname = 'IT_PA0002'.
WA_FIELD_CAT-REPTEXT_DDIC = 'Last name'.
APPEND WA_FIELD_CAT TO IT_FIELD_CAT.
CLEAR WA_FIELD_CAT.
wa_field_cat1-tabname = 'PA0002'.
WA_FIELD_CAT1-FIELDNAME = 'PERNR'.
wa_field_cat1-ref_tabname = 'IT_PA00021'.
WA_FIELD_CAT1-REPTEXT_DDIC = 'Personnel no'.
APPEND WA_FIELD_CAT1 TO IT_FIELD_CAT1.
CLEAR WA_FIELD_CAT1.
wa_field_cat1-tabname = 'PA0002'.
WA_FIELD_CAT1-FIELDNAME = 'BEGDA'.
wa_field_cat1-ref_tabname = 'IT_PA00021'.
WA_FIELD_CAT1-REPTEXT_DDIC = 'Start date'.
APPEND WA_FIELD_CAT1 TO IT_FIELD_CAT1.
CLEAR WA_FIELD_CAT1.
wa_field_cat1-tabname = 'PA0002'.
WA_FIELD_CAT1-FIELDNAME = 'ENDDA'.
wa_field_cat1-ref_tabname = 'IT_PA00021'.
WA_FIELD_CAT1-REPTEXT_DDIC = 'End date'.
APPEND WA_FIELD_CAT1 TO IT_FIELD_CAT1.
CLEAR WA_FIELD_CAT1.
wa_field_cat1-tabname = 'PA0002'.
WA_FIELD_CAT1-FIELDNAME = 'VORNA'.
wa_field_cat1-ref_tabname = 'IT_PA00021'.
WA_FIELD_CAT1-REPTEXT_DDIC = 'First name'.
APPEND WA_FIELD_CAT1 TO IT_FIELD_CAT1.
CLEAR WA_FIELD_CAT.
wa_field_cat1-tabname = 'PA0002'.
WA_FIELD_CAT1-FIELDNAME = 'NACHN'.
wa_field_cat1-ref_tabname = 'IT_PA00021'.
WA_FIELD_CAT1-REPTEXT_DDIC = 'Last name'.
APPEND WA_FIELD_CAT1 TO IT_FIELD_CAT1.
CLEAR WA_FIELD_CAT1.
wa_field_cat1-tabname = 'PA0008'.
wa_field_cat1-fieldname = 'PERNR'.
wa_field_cat-ref_tabname = 'IT_PA0008'.
wa_field_cat1-REPTEXT_DDIC = 'personnelno'.
APPEND wa_field_cat1 TO it_field_cat1.
CLEAR WA_FIELD_CAT1.
wa_field_cat1-tabname = 'PA0008'.
wa_field_cat1-fieldname = 'BEGDA'.
wa_field_cat-ref_tabname = 'IT_PA0008'.
wa_field_cat1-REPTEXT_DDIC = 'begindate'.
APPEND wa_field_cat1 TO it_field_cat1.
CLEAR WA_FIELD_CAT1.
wa_field_cat1-tabname = 'PA0008'.
wa_field_cat1-fieldname = 'ENDDA'.
wa_field_cat-ref_tabname = 'IT_PA0008'.
wa_field_cat1-REPTEXT_DDIC = 'enddate'.
APPEND wa_field_cat1 TO it_field_cat1.
CLEAR WA_FIELD_CAT1.
wa_field_cat1-tabname = 'PA0008'.
wa_field_cat1-fieldname = 'ANSAL'.
wa_field_cat-ref_tabname = 'IT_PA0008'.
wa_field_cat1-REPTEXT_DDIC = 'annualsalary'.
APPEND wa_field_cat1 TO it_field_cat1.
CLEAR WA_FIELD_CAT1.
wa_field_cat1-tabname = 'PA0008'.
wa_field_cat1-fieldname = 'LGA01'.
wa_field_cat-ref_tabname = 'IT_PA0008'.
wa_field_cat1-REPTEXT_DDIC = 'wagetype'.
APPEND wa_field_cat1 TO it_field_cat1.
CLEAR WA_FIELD_CAT1.
wa_field_cat1-tabname = 'PA0008'.
wa_field_cat1-fieldname = 'BET01'.
wa_field_cat-ref_tabname = 'IT_PA0008'.
wa_field_cat1-REPTEXT_DDIC = 'Amount'.
APPEND wa_field_cat1 TO it_field_cat1.
CLEAR WA_FIELD_CAT1.
ENDFORM. " build_field_cat
*& Form display_data
text
FORM DISPLAY_DATA .
it_layout-box_fieldname = 'CHECKBOX'.
it_layout-EDIT = 'X'.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_PF_STATUS_SET = 'PF_STATUS'
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
IT_FIELDCAT = IT_FIELD_CAT
IS_LAYOUT = IT_LAYOUT
IT_EVENTS = IT_EVENTS
TABLES
T_OUTTAB = IT_pa0002.
ENDFORM. " display_data
*& Form get_events
text
FORM GET_EVENTS .
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
IMPORTING
ET_EVENTS = IT_EVENTS .
READ TABLE IT_EVENTS INTO WA_EVENTS
WITH KEY NAME = SLIS_EV_TOP_OF_PAGE.
IF SY-SUBRC = 0.
WA_EVENTS-FORM = 'TOP_OF_PAGE'.
MODIFY IT_EVENTS FROM WA_EVENTS INDEX SY-TABIX.
ENDIF.
ENDFORM. " get_events
*& Form top_of_page
text
FORM TOP_OF_PAGE.
WA_HEADER-TYP = 'H'.
WA_HEADER-INFO = 'EMPLOYEE DATA'.
APPEND WA_HEADER TO IT_HEADER.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = IT_HEADER
ENDFORM. "top_of_page
*& Form GUI_SET
FORM GUI_SET USING RT_EXTAB TYPE SLIS_T_EXTAB .
SET PF-STATUS 'DATA' .
ENDFORM. "GUI_SET
*& Form USER_COMMAND
FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
R_SELFIELD TYPE SLIS_SELFIELD.
DATA:V_PERNR LIKE PA0002-PERNR.
CASE R_UCOMM.
WHEN 'DET'.
DATA: V_FLAG.
clear : v_flag.
LOOP AT IT_PA0002.
if it_PA0002-checkbox = 'X'.
v_flag = 'X'.
v_pernr = IT_PA0002-PERNR.
SELECT PERNR
BEGDA
ENDDA
VORNA
NACHN
FROM PA0002
INTO CORRESPONDING FIELDS OF TABLE IT_PA00021
WHERE PERNR = V_PERNR.
SORT IT_PA00021 BY PERNR.
DELETE ADJACENT DUPLICATES FROM IT_PA00021 COMPARING PERNR.
READ TABLE IT_PA00021 INDEX 1.
SELECT PERNR
BEGDA
ENDDA
ANSAL
LGA01
BET01
FROM PA0008
INTO TABLE IT_PA0008
FOR ALL ENTRIES IN IT_PA00021
WHERE PERNR = IT_PA00021-PERNR.
if not it_PA0008[] Is initial.
SORT IT_PA0008 BY PERNR.
delete adjacent duplicates from it_PA0008 comparing pernr.
READ TABLE IT_PA0008 INDEX 1.
endif.
endif.
enddo.
it_layout1-group_change_edit = c.
it_layout1-colwidth_optimize = c.
it_layout1-zebra = c.
it_layout1-detail_popup = c.
it_layout1-get_selinfos = c.
it_layout-expand_fieldname = 'EXPAND'.
wa_keyinfo-header01 = 'PERNR'.
wa_keyinfo-item01 = 'PERNR'.
IF NOT V_FLAG IS INITIAL.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
IS_LAYOUT = IT_LAYOUT1
IT_FIELDCAT = IT_FIELD_CAT1
I_TABNAME_HEADER = 'PA0002'
I_TABNAME_ITEM = 'PA0008'
IS_KEYINFO = wa_keyinfo
TABLES
T_OUTTAB_HEADER = IT_PA00021
T_OUTTAB_ITEM = IT_PA0008.
ENDIF.
CLEAR: IT_PA00021,IT_PA0002,IT_PA0008.
ENDLOOP.
WHEN 'BACK'.
EXIT.
ENDCASE.
ENDFORM. "USER_COMMAND
reward points if useful,
venkat. -
Issue with ALV grid print preview/spool
Hello everyone,
I am working on a report and I am having some issues with ALV grid. Currently in our DEV and QA environments the user can run the report, view the ALV grid, and print the grid without any issues.
However this isn't the case in the Prod environment. The user is able to run the report and view the grid without any issues. But when they click print preview or click print, the spool is incorrect. It shows the proper values from the grid, but the first field is reduced in length. Rather than showing a numeric field of length 10 it shows 99999999# or 99999999...
The programs are identical through every environment, including user parameters, formats, and spool settings. I have been told printing grids may have some issues, does anyone have any advice or dealt with this issue before?
I appreciate the help.
Thanks,
CI was waiting to hear from the functional team on the matter and no one has mentioned any more issues. I am assuming the problem is solved. I just noticed the thread was still un-answered and wanted to give an update.
Thank you for you help Vijay.
Regards
C -
Hi SAP Experts,
Currently I have ALV Grid table as below as example :
FIELD1
FIELD2
Account
Amount
1. Rev
1.Rev
Acct1
100.00
1. Rev
1.Rev
Acct2
50.00
Subtotal FIELD2 (1.Rev)
150.00
Subtotal FIELD1 (1.Rev)
150.00
2. Cost
2.1 Cost1
Acct3
100.00
2. Cost
2.1 Cost1
Acct4
75.00
Subtotal FIELD2 (2.1 Cost1)
175.00
2. Cost
2.2 Cost2
Acct5
25.00
Subtotal FIELD2 (2.2 Cost 2)
25.00
| Subtotal FIELD1 (2.Cost) | 200.00 |
I have 2 questions.
First, as you can see, I have 2 subtotal for 1.Rev eventhough 1.Rev actually only need one subtotal because there is no subgroup for 1.Rev. Is it possible to have only one subtotal for this 1.Rev but I still maintained 2 subtotal for 2.Cost because 2.Cost has subgroup?
My 2nd issue is I need to insert another row exactly below Subtotal FIELD1 (2.Cost) row like this:
Gross Margin
(Some formula)
This row does not come from any sub total. The problem is I can not just insert this column and put Gross Margin description in FIELD1 because I will have 3 row like below :
Gross Margin
(Formula)
Subtotal FIELD2 (blank)
(Formula) sub total
Subtotal FIELD1 (Gross Margin)
(Formula) sub total
Is there any way I can insert Gross Margin Row without creating new subtotal for it so it will only have one line in the ALV Grid table? Please help. Thank you.
Regards,
AbrahamHi Vijay.
I'm not posting this before I search everywhere and this is not the first time I post in this forum so I know what I should do before posting. If I miss something, maybe you can give me at least a hint whether it can be done or not.
This report that I am using is ALV Grid using REUSE_ALV_GRID_DISPLAY function module and not OOP using dialog module. I never said I need sample code because I only want to know is there a way to do that using ALV Grid which until now I will say that SAP ALV grid has this limitation where you can not insert row without including it in the subtotal.
So, I would be very thankful if someone can give me some clarity on this thing and Vijay, if you really don't know what is the answer, I really appreciate if you can hold your self from making that kind of reply. It does not need experienced ABAP Consultant to write such remarks. Thanks.
Regards,
Abraham -
Print Issue with Sorted ALV Grid
Hi Team,
I am using ALV display for my Program. Iam using REUSE_ALV_GRID_DISPLAY. Also i have a Sorting condition for my ALV grid. So iam filling the Sort table & passing it to the Function module. The data is displayed correctly with Sorting as required in the Output.
Now the issue is with: Print from this ALV. When we try to print the data, The requirement is that the Print should be same as how it is displayed in the ALV. "Grouped Columns"..... But now, the Print is that all the data is filled in all the columns. But user wants the Print also to appear same as it is shown in a Sorted ALV display.(With some similar column data missing in succeding sort columns until new entry starts)
Please suggest a solution to acheive the same.
Thanks & regards,
ChaitanyaLook at Q#19 in the note 1009650. Merging functionality is available only for ALV grid display.
Related Note: 447055
Work around would be to display the excel in the SAP window (Excel in Place) and print it from Excel. Read the following thread to make the necessary settings to make it work. Download Report exactly same as seems with Layout set !!
Edited by: Jeevan Sagar on Jan 19, 2012 12:38 AM -
could anybody advice, ALV GRID FM(field catalog issue)is getting short dump, but workig fine for ALV LIST.
PERFORM create_field_catalog USING:
'TRAFFIC_LIGHT' ' ' 15 'Status' 'Status' ' ',
'VKORG' ' ' 15 'Sales Org' 'Sales Org' ' ',
'VTWEG' ' ' 15 'Dist Channel' 'Dist Channel' ' ',
'KUNRG' ' ' 15 'Payer' 'Payer' ' ',
'PAYER' ' ' 15 'Payer Name' 'Payer Name' ' ',
'KUNAG' ' ' 15 'Ship-To' 'Ship-To' ' ',
'SHIPTO' ' ' 15 'Ship-To Name' 'Ship-To Name' ' ',
'SHIPTOPAR' ' ' 15 'Bill to Party' 'Bill To Party' ' ',
'KDGRP' ' ' 15 'Customer Grp' 'Customer Grp' ' ',
'ZCUSTPO' ' ' 15 'Customer PO' 'Customer PO' ' ',
'VBELN' ' ' 15 'Billing Doc' 'Billing Doc' ' ',
'FKDAT' ' ' 15 'Billing Date' 'Billing Date' ' ',
'FKART' ' ' 15 'Billing Type' 'Billing Type' ' ',
'ZOUTPUT' ' ' 15 'Output Type' 'Output Type' ' ',
'NETWR' ' ' 15 'Net Value' 'Net Value' 'X',
'KWERT' ' ' 15 'Total VAT' 'Total VAT' 'X',
'WAERK' ' ' 15 'Currency' 'Currency' ' ',
'XBLNR' ' ' 15 'Reference' 'Reference' ' ',
'DELNO' ' ' 15 'Delivery #' 'Delivery #' ' ',
'TLINE' ' ' 15 'Manifest #' 'Manifest #' ' ',
'ZBOL' ' ' 15 'Bill Of Ldng' 'Bill of Ldng' ' ',
'LIFEX' ' ' 15 'Ext Del #' 'Ext Del #' ' ',
'POSNR' ' ' 15 'Item' 'Item' ' ',
'MATNR' ' ' 18 'Material' 'Material' ' ',
'KDMAT' ' ' 15 'Cust Matl' 'Cust Matl' ' ',
'WERKS' ' ' 15 'Plant' 'Plant' ' ',
'ZZPLAT' ' ' 10 'Platform' 'Platform' ' ',
'ZZPRONUM' ' ' 10 'Program' 'Program' ' ',
'ZZPROCODE' ' ' 10 'Prod Code' 'Prod Code' ' ',
'FKIMG' ' ' 15 'Qty' 'Qty' ' ',
'VRKME' ' ' 15 'UoM' 'UoM' ' ',
'ARKTX' ' ' 15 'Description' 'Description' ' ',
'KBETR' ' ' 15 'Price' 'Price' ' ',
'VATRT' ' ' 15 'VAT Rate' 'VAT Rate' ' ',
'KWERT_D' ' ' 15 'Item VAT' 'Item VAT' 'X',
'NETWR_D' ' ' 15 'Item Net Value' 'Item Net Value' 'X',
'VGBEL' ' ' 15 'Ref Document' 'Ref Document' ' ',
'VGPOS' ' ' 13 'Ref Doc Line' 'Ref Doc Line' ' ' .
FORM create_field_catalog USING fieldname TYPE c
inttype TYPE c
outputlen TYPE i
coltext TYPE c
seltext TYPE c
do_sum TYPE c.
DATA: l_f_fieldcat TYPE slis_fieldcat_alv.
l_f_fieldcat-fieldname = fieldname.
l_f_fieldcat-inttype = inttype.
l_f_fieldcat-outputlen = outputlen.
l_f_fieldcat-seltext_m = coltext.
l_f_fieldcat-seltext_l = seltext.
l_f_fieldcat-reptext_ddic = coltext.
l_f_fieldcat-do_sum = do_sum.
APPEND l_f_fieldcat TO t_field_catalog.
CLEAR l_f_fieldcat.
ENDFORM. "CREATE_FIELD_CATALOG
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = v_repid
i_callback_user_command = 'F_USER_COMMAND'
i_grid_settings = f_grid_settings
is_layout = f_grid_layout
is_print = f_print_settings
i_background_id = 'BACK'
it_events = t_events[]
it_fieldcat = t_field_catalog
it_sort = t_sortcat[]
i_default = 'X'
i_save = 'A'
is_variant = f_variant
TABLES
t_outtab = t_output4
EXCEPTIONS
program_error = 1
OTHERS = 2.BEGIN OF t_output4 OCCURS 0,
traffic_light TYPE c,
vkorg LIKE vbrk-vkorg,
vtweg LIKE vbrk-vtweg,
kunrg LIKE vbrk-kunrg,
payer LIKE adrc-name1,
kunag LIKE vbrk-kunag,
shipto LIKE adrc-name1,
shiptopar LIKE likp-kunnr,
kdgrp LIKE vbrk-kdgrp,
zcustpo LIKE vbkd-bstkd,
vbeln LIKE vbrk-vbeln,
fkdat LIKE vbrk-fkdat,
fkart LIKE vbrk-fkart,
zoutput LIKE dnast-kschl,
netwr LIKE vbrk-netwr,
kwert LIKE konv-kwert,
waerk LIKE vbrk-waerk,
xblnr LIKE vbrk-xblnr,
delno LIKE likp-vbeln,
t_line LIKE tline-tdline,
zbol LIKE likp-bolnr,
lifex LIKE likp-lifex,
posnr LIKE vbrp-posnr,
matnr LIKE vbrp-matnr,
kdmat LIKE lips-kdmat,
werks LIKE vbrp-werks,
zzplat LIKE vbrp-zzplat,
zzpronum LIKE vbrp-zzpronum,
zzprocode LIKE a802-zzprocode,
fkimg LIKE vbrp-fkimg,
vrkme LIKE vbrp-vrkme,
arktx LIKE vbrp-arktx,
kbetr LIKE konv-kbetr,
vatrt TYPE p DECIMALS 1,
kwert_d LIKE konv-kwert,
netwr_d LIKE vbrp-netwr,
vgbel LIKE vbrp-vgbel,
vgpos LIKE vbrp-vgpos,
END OF t_output4, -
ALV GRID edit mode keyboard issue
Hi,
I have created a program that displays an ALV GRID.
From the Layout I said to edit in edit mode the ALV Grid.
In the menu toolbar I exclude the button 'cut - copy -paste and delete line'.
When I run the program I see that these buttons are not displayed --> OK.
BUT my problem is: if I use the keyboard then the ALV Grid manages these actions.
For instance. I select some lines and press the key DELETE on the keyboard --> the lines are removed and that is not that I expect because I removed this action from the toolbar.
For the cut - copy and paste it's the same.
Do you have a solution for me --> intercept an event or change the function keys or ....
I would like that the ALV Grid does not manage the keys delete, CRTL-C, CRTL-V in edit mode.
Thanks,
Stevie,Hi Steve
I was not aware of this. So, I recommend you to try this:
At the event <b>"before_user_command"</b> you can terminate the process by resetting the ALV user command.
<u><b>e.g.</b></u>
CASE e_ucomm .
WHEN '&INFO' .
CALL METHOD gr_alvgrid->set_user_command
EXPORTING i_ucomm = space.
ENDCASE .
This code within the event overrides the '&INFO' function and terminates its process. For cut and copy, you can find out ucomm values by putting a break point inside the event and tracing the value of <b>"i_ucomm"</b>.
For some relevant issues, you can inspect the tutorial <a href="https://www.sdn.sap.comhttp://www.sdn.sap.comhttp://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/documents/a1-8-4/an%20easy%20reference%20for%20alv%20grid%20control.pdf">"An Easy Reference For ALV Grid Control"</a>.
<i>As another thing, since you are a new SDN member, you are welcome and let me introduce you the SDN forums pointing system: You can assign points to posts you find helpful while solving your question. You can reward points by clicking the yellow star icon at header of each reply post. You can reward;
- one 10 points (solved)
- two 6 points (very helpful answer)
- many 2 points (helpful answer)</i>
Kind regards...
*--Serdar -
I am displaying the table in ALV Grid format. I have 4 fields in the table. The filter works for the first 3 fields, but doesnot work for the last field.
Please let me know what might be the issue.
Find the table declaration and the table population as in the below code
TYPES : BEGIN OF ty_message,
avm_nr TYPE avm_nr,
motiv TYPE motiv_nr,
text TYPE t100-text,
msg TYPE merep_orderstat,
END OF ty_message.
DATA: gt_message TYPE STANDARD TABLE OF ty_message,
gs_message TYPE ty_message.
gs_message-avm_nr = gs_upload-avm_nr.
gs_message-motiv = gs_upload-motiv.
gs_message-text = 'Order Successfully Changed'.
gs_message-msg = 'Success'.
APPEND gs_message TO gt_message.
CLEAR gs_message.
Regards,
SalilSince the field MSG refer to MEREP_ORDERSTAT which is CHAR10, it will convert the content to UpperCase.
So, try like:
gs_message-avm_nr = gs_upload-avm_nr.
gs_message-motiv = gs_upload-motiv.
gs_message-text = 'Order Successfully Changed'.
gs_message-msg = 'SUCCESS'.
APPEND gs_message TO gt_message.
CLEAR gs_message.
Regards,
Naimesh Patel
Maybe you are looking for
-
My ancient white Macbook's hard drive failed. The Genius Bar said to buy a new drive online and they'd install it for me. But they didn't say what to buy. Are their limitations i should be aware of? Brands to look for or avoid? Size? RPM? GB? R
-
Camera Raw Update for Nikon D610???
Am new to Photoshop CS6. Just got a new camera, the Nikon D610 and now see that Camera Raw does not support the 610. What do I do? Is there an update? Thank you.
-
Getting error msg: Session could not be started
Since the update of itunes and ios i get an error msg saying could not sync iphone because a session could not be started. Have an iphone 4
-
Generate testkey file from testpubkey.cer
I try to construct a sslsocket connection with our vendor.From them I get a testpubkey.cer file which issued by verisign. I find a sample from sun JSSE packege(SSLSocketClientWithClientAuth.java) Here is part of the code. try { SSLContext c
-
ITunes radio station is not available after two or three songs played
Why after create an station in itunes radio, after two or three songs played the messages is "station is not available"