ALV report problem. empty catalog.
Hi everybody,
I'm having a lot of problems with the ALV displaying stuff, i can see no problems in the code but the alv doesnt display anything at all, the catalog is built but any data is displayed in the list, i even took the function call out of the perform and called REUSE_ALV_GRID_DISPLAY directly to avoid posting any parametres...but the list is still empty.
here i post the code, is really simple alv example. take info from it001, 002 and 006 and (try to )display that in a alv list.
If someone see something wrong i would really apreciate it.
Thanks in advance,
Ruben.
REPORT ZPRR3_12.
TYPE-POOLS
CONSTANTS: C_CHECK TYPE c VALUE 'X'.
DATA : v_rep_id TYPE sy-repid.
DATA: BEGIN OF t_employee OCCURS 0,
pernr TYPE persno,
begda TYPE begda,
endda TYPE endda,
bukrs TYPE bukrs,
werks TYPE persa,
persg TYPE persg,
persk TYPE persk,
orgeh TYPE orgeh,
plans TYPE plans,
stell TYPE stell,
nachn TYPE pad_nachn,
vorna TYPE pad_vorna,
gesch TYPE gesch,
gbdat TYPE gbdat,
pstlz TYPE pstlz_hr,
ort02 TYPE pad_ort02,
END OF t_employee.
" for alv functions.
TYPE-POOLS: slis, truxs.
DATA: gs_layout TYPE slis_layout_alv,
it_field TYPE slis_t_fieldcat_alv,
tt_fieldcat TYPE slis_fieldcat_alv.
TYPES: tt_fieldcat TYPE STANDARD TABLE OF slis_fieldcat_alv.
INITIALIZATION.
v_rep_id = sy-repid.
SELECTION-SCREEN BEGIN OF BLOCK parametres WITH FRAME TITLE text-001.
SELECT-OPTIONS: persnum FOR t_employee-pernr DEFAULT 000.
SELECT-OPTIONS: ccode FOR t_employee-bukrs DEFAULT 'ES01'.
SELECT-OPTIONS: date FOR sy-datum.
SELECTION-SCREEN END OF BLOCK parametres.
SELECTION-SCREEN BEGIN OF BLOCK options WITH FRAME TITLE text-002.
PARAMETERS:
op_alv TYPE c AS CHECKBOX,
op_excel TYPE c AS CHECKBOX.
SELECTION-SCREEN END OF BLOCK options.
INITIALIZATION.
"initialize select-options
op_alv = C_CHECK.
op_excel = ''.
START-OF-SELECTION.
PERFORM data_request.
END-OF-SELECTION.
IF op_excel EQ C_CHECK.
*PERFORM excel_save.
ENDIF.
IF op_alv EQ C_CHECK.
PERFORM display_alv.
ELSE.
PERFORM write_raw USING t_employee.
ENDIF.
FORMS
*& Form CHARGE_DATA
FORM data_request.
SELECT pa0001pernr pa0001begda pa0001endda pa0001bukrs pa0001~werks
pa0001persg pa0001persk pa0001orgeh pa0001plans pa0001~stell
pa0002nachn pa0002vorna pa0002gesch pa0002gbdat
pa0006pstlz pa0006ort02
INTO CORRESPONDING FIELDS OF t_employee
FROM pa0001 JOIN pa0002 ON pa0001pernr = pa0002pernr
JOIN pa0006 ON pa0002pernr = pa0006pernr
WHERE pa0001~pernr IN persnum AND
pa0001~bukrs IN ccode AND
pa0001~begda IN date.
ENDSELECT.
ENDFORM. " CHARGE_DATA
*& Form display_alv
FORM display_alv.
PERFORM build_header.
PERFORM build_layout.
write t_employee-pernr.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = 'g_repid'
is_layout = gs_layout
it_fieldcat = it_field
TABLES
t_outtab = t_employee
EXCEPTIONS
program_error = 1
OTHERS = 2
IF sy-subrc <> 0.
MESSAGE i799(cu) WITH 'Error creando el ALV'(008) 'Código'(009) sy-subrc.
ENDIF.
PERFORM call_alv using t_employee.
ENDFORM. "display_alv
*& Form build_HEADER
form build_header.
DATA: wa_field TYPE slis_fieldcat_alv. "work area for field catalog
wa_field-fieldname = 'pernr'. " name of field from internal table
wa_field-tabname = 't_employee'. " internal table name
wa_field-outputlen = 10. " output length on screen
wa_field-checkbox = c_check. " print as checkbox
wa_field-edit = c_check. " make field open for input
wa_field-seltext_l = text-006. " header information
APPEND wa_field TO it_field. " append field catalog internal table
CLEAR wa_field. " clear field catalog work area
wa_field-fieldname = 'begda'. " name of field from internal table
wa_field-tabname = 't_employee'. " internal table name
wa_field-outputlen = 12. " output length on screen
wa_field-seltext_l = text-003. " header information
APPEND wa_field TO it_field. " append field catalog internal table
CLEAR wa_field. " clear field catalog work area
wa_field-fieldname = 'endda'. " name of field from internal table
wa_field-tabname = 't_employee'. " internal table name
wa_field-outputlen = 12. " output length on screen
wa_field-seltext_l = text-004. " header information
APPEND wa_field TO it_field. " append field catalog internal table
CLEAR wa_field. " clear field catalog work area
wa_field-fieldname = 'bukrs'. " name of field from internal table
wa_field-tabname = 't_employee'. " internal table name
wa_field-outputlen = 12. " output length on screen
wa_field-seltext_l = text-005. " header information
APPEND wa_field TO it_field. " append field catalog internal table
CLEAR wa_field. " clear field catalog work area
wa_field-fieldname = 'werks'. " name of field from internal table
wa_field-tabname = 't_employee'. " internal table name
wa_field-outputlen = 12. " output length on screen
wa_field-seltext_l = text-007. " header information
APPEND wa_field TO it_field. " append field catalog internal table
CLEAR wa_field. " clear field catalog work area
wa_field-fieldname = 'persg'. " name of field from internal table
wa_field-tabname = 't_employee'. " internal table name
wa_field-outputlen = 12. " output length on screen
wa_field-seltext_l = text-008. " header information
APPEND wa_field TO it_field. " append field catalog internal table
CLEAR wa_field. " clear field catalog work area
wa_field-fieldname = 'persk'. " name of field from internal table
wa_field-tabname = 't_employee'. " internal table name
wa_field-outputlen = 12. " output length on screen
wa_field-seltext_l = text-009. " header information
APPEND wa_field TO it_field. " append field catalog internal table
CLEAR wa_field. " clear field catalog work area
wa_field-fieldname = 'orgeh'. " name of field from internal table
wa_field-tabname = 't_employee'. " internal table name
wa_field-outputlen = 12. " output length on screen
wa_field-seltext_l = text-010. " header information
APPEND wa_field TO it_field. " append field catalog internal table
CLEAR wa_field. " clear field catalog work area
wa_field-fieldname = 'plans'. " name of field from internal table
wa_field-tabname = 't_employee'. " internal table name
wa_field-outputlen = 12. " output length on screen
wa_field-seltext_l = text-011. " header information
APPEND wa_field TO it_field. " append field catalog internal table
CLEAR wa_field. " clear field catalog work area
wa_field-fieldname = 'stell'. " name of field from internal table
wa_field-tabname = 't_employee'. " internal table name
wa_field-outputlen = 12. " output length on screen
wa_field-seltext_l = text-012. " header information
APPEND wa_field TO it_field. " append field catalog internal table
CLEAR wa_field. " clear field catalog work area
wa_field-fieldname = 'nachn'. " name of field from internal table
wa_field-tabname = 't_employee'. " internal table name
wa_field-outputlen = 12. " output length on screen
wa_field-seltext_l = text-013. " header information
APPEND wa_field TO it_field. " append field catalog internal table
CLEAR wa_field. " clear field catalog work area
wa_field-fieldname = 'vorna'. " name of field from internal table
wa_field-tabname = 't_employee'. " internal table name
wa_field-outputlen = 12. " output length on screen
wa_field-seltext_l = text-014. " header information
APPEND wa_field TO it_field. " append field catalog internal table
CLEAR wa_field. " clear field catalog work area
wa_field-fieldname = 'gesch'. " name of field from internal table
wa_field-tabname = 't_employee'. " internal table name
wa_field-outputlen = 12. " output length on screen
wa_field-seltext_l = text-015. " header information
APPEND wa_field TO it_field. " append field catalog internal table
CLEAR wa_field. " clear field catalog work area
wa_field-fieldname = 'gbdat'. " name of field from internal table
wa_field-tabname = 't_employee'. " internal table name
wa_field-outputlen = 12. " output length on screen
wa_field-seltext_l = text-016. " header information
APPEND wa_field TO it_field. " append field catalog internal table
CLEAR wa_field. " clear field catalog work area
wa_field-fieldname = 'pstlz'. " name of field from internal table
wa_field-tabname = 't_employee'. " internal table name
wa_field-outputlen = 12. " output length on screen
wa_field-seltext_l = text-017. " header information
APPEND wa_field TO it_field. " append field catalog internal table
CLEAR wa_field. " clear field catalog work area
wa_field-fieldname = 'ort0z'. " name of field from internal table
wa_field-tabname = 't_employee'. " internal table name
wa_field-outputlen = 12. " output length on screen
wa_field-seltext_l = text-018. " header information
APPEND wa_field TO it_field. " append field catalog internal table
CLEAR wa_field. " clear field catalog work area
endform. " PREPARE_FIELD_CATALOG
*& Form build_layout
text
FORM build_layout.
gs_layout-colwidth_optimize = 'X'. "Optimizar ancho del listado
gs_layout-zebra = 'X'. "Mostrar líneas tipo cebra.
gs_layout-detail_popup = 'X'. "Mostrar opción de información detalle
ENDFORM. "build_layout
*& Form call_alv
text
-->ALV_EMPLOYEE text
*FORM call_alv using alv_employee LIKE t_employee.
ABAP List Viewer
**WRITE: alv_employee-pernr.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = 'g_repid'
is_layout = gs_layout
it_fieldcat = it_field[]
TABLES
t_outtab = alv_employee
EXCEPTIONS
program_error = 1
OTHERS = 2
IF sy-subrc <> 0.
MESSAGE i799(cu) WITH 'Error creando el ALV'(008) 'Código'(009) sy-subrc.
ENDIF.
*ENDFORM. "CALL_ALV
FORM write_raw USING p_ta_employee LIKE t_employee.
WRITE: p_ta_employee-pernr,p_ta_employee-begda,p_ta_employee-endda,p_ta_employee-bukrs,p_ta_employee-werks,p_ta_employee-persg,
p_ta_employee-persk,p_ta_employee-orgeh,p_ta_employee-plans,p_ta_employee-stell,p_ta_employee-nachn,p_ta_employee-vorna,
p_ta_employee-gesch,p_ta_employee-gbdat,p_ta_employee-pstlz,p_ta_employee-ort02.
ENDFORM. " WRITE_RAW
Hi,
Past the code in between code option <> so that every one can read it clearly.
1) Instead of using SELECT and ENDSELECT use below syntax,
SELECT pa0001~pernr
pa0001~begda
pa0001~endda
pa0001~bukrs
pa0001~werks
pa0001~persg
pa0001~persk
pa0001~orgeh
pa0001~plans
pa0001~stell
pa0002~nachn
pa0002~vorna
pa0002~gesch
pa0002~gbdat
pa0006~pstlz
pa0006~ort02
INTO CORRESPONDING FIELDS OF TABLE t_employee " use TABLE
FROM ( ( pa0001 inner JOIN pa0002 ON pa0001~pernr = pa0002~pernr )
INNER JOIN pa0006 ON pa0002~pernr = pa0006~pernr )
WHERE pa0001~pernr IN persnum AND
pa0001~bukrs IN ccode AND
pa0001~begda IN date.
2) In FM
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = v_rep_id "you were using 'g_repid' which is not at all declared
is_layout = gs_layout
it_fieldcat = it_field
TABLES
t_outtab = t_employee
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE i799(cu) WITH 'Error creando el ALV'(008) 'Código'(009) sy-subrc.
ENDIF.
3) Check wether the Table t_employee is consisting any data or not, by keeping a BREAK-POINT after the SELECT statement.
4) If possible while filling the field catalog fill ROW_POS and COL_POS, and always use capital letters when ever you give any value in single quotes.
wa_field-row_pos = '1'.
wa_field-col_pos = '1'.
wa_field-fieldname = 'PERNR'. " name of field from internal table
wa_field-tabname = 'T_EMPLOYEE'. " internal table name
wa_field-outputlen = 10. " output length on screen
wa_field-checkbox = c_check. " print as checkbox
wa_field-edit = c_check. " make field open for input
wa_field-seltext_l = text-006. " header information
APPEND wa_field TO it_field. " append field catalog internal table
CLEAR wa_field. " clear field catalog work area
Regards
Bala Krishna
Similar Messages
-
hi,
i have problem in ALV.
my requirement is in a ALV report if i double click on a row it has to take me to another transaction ( say for eg vf03).
how should i do it.
john.hi
good
try this report
MESSAGE-ID ZZ_9838 .
TYPE-POOLS: SLIS.
*type declaration for values from ekko
TYPES: BEGIN OF I_EKKO,
EBELN LIKE EKKO-EBELN,
AEDAT LIKE EKKO-AEDAT,
BUKRS LIKE EKKO-BUKRS,
BSART LIKE EKKO-BSART,
LIFNR LIKE EKKO-LIFNR,
END OF I_EKKO.
DATA: IT_EKKO TYPE STANDARD TABLE OF I_EKKO INITIAL SIZE 0,
WA_EKKO TYPE I_EKKO.
*type declaration for values from ekpo
TYPES: BEGIN OF I_EKPO,
EBELN LIKE EKPO-EBELN,
EBELP LIKE EKPO-EBELP,
MATNR LIKE EKPO-MATNR,
MENGE LIKE EKPO-MENGE,
MEINS LIKE EKPO-MEINS,
NETPR LIKE EKPO-NETPR,
END OF I_EKPO.
DATA: IT_EKPO TYPE STANDARD TABLE OF I_EKPO INITIAL SIZE 0,
WA_EKPO TYPE I_EKPO .
*variable for Report ID
DATA: V_REPID LIKE SY-REPID .
*declaration for fieldcatalog
DATA: I_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
DATA: IT_LISTHEADER TYPE SLIS_T_LISTHEADER.
declaration for events table where user comand or set PF status will
be defined
DATA: V_EVENTS TYPE SLIS_T_EVENT,
WA_EVENT TYPE SLIS_ALV_EVENT.
declartion for layout
DATA: ALV_LAYOUT TYPE SLIS_LAYOUT_ALV.
declaration for variant(type of display we want)
DATA: I_VARIANT TYPE DISVARIANT,
I_VARIANT1 TYPE DISVARIANT,
I_SAVE(1) TYPE C.
*PARAMETERS : p_var TYPE disvariant-variant.
*Title displayed when the alv list is displayed
DATA: I_TITLE_EKKO TYPE LVC_TITLE VALUE 'FIRST LIST DISPLAYED'.
DATA: I_TITLE_EKPO TYPE LVC_TITLE VALUE 'SECONDRY LIST DISPLAYED'.
INITIALIZATION.
V_REPID = SY-REPID.
PERFORM BUILD_FIELDCATLOG.
PERFORM EVENT_CALL.
PERFORM POPULATE_EVENT.
START-OF-SELECTION.
PERFORM DATA_RETRIEVAL.
PERFORM BUILD_LISTHEADER USING IT_LISTHEADER.
PERFORM DISPLAY_ALV_REPORT.
*& Form BUILD_FIELDCATLOG
Fieldcatalog has all the field details from ekko
FORM BUILD_FIELDCATLOG.
WA_FIELDCAT-TABNAME = 'IT_EKKO'.
WA_FIELDCAT-FIELDNAME = 'EBELN'.
WA_FIELDCAT-SELTEXT_M = 'PO NO.'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'IT_EKKO'.
WA_FIELDCAT-FIELDNAME = 'AEDAT'.
WA_FIELDCAT-SELTEXT_M = 'DATE.'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'IT_EKKO'.
WA_FIELDCAT-FIELDNAME = 'BUKRS'.
WA_FIELDCAT-SELTEXT_M = 'COMPANY CODE'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'IT_EKKO'.
WA_FIELDCAT-FIELDNAME = 'BUKRS'.
WA_FIELDCAT-SELTEXT_M = 'DOCMENT TYPE'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'IT_EKKO'.
WA_FIELDCAT-FIELDNAME = 'LIFNR'.
WA_FIELDCAT-NO_OUT = 'X'.
WA_FIELDCAT-SELTEXT_M = 'VENDOR CODE'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
ENDFORM. "BUILD_FIELDCATLOG
*& Form EVENT_CALL
we get all events - TOP OF PAGE or USER COMMAND in table v_events
FORM EVENT_CALL.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = V_EVENTS
EXCEPTIONS
LIST_TYPE_WRONG = 1
OTHERS = 2
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. "EVENT_CALL
*& Form POPULATE_EVENT
Events populated for TOP OF PAGE & USER COMAND
FORM POPULATE_EVENT.
READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'.
IF SY-SUBRC EQ 0.
WA_EVENT-FORM = 'TOP_OF_PAGE'.
MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =
WA_EVENT-FORM.
ENDIF.
READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'USER_COMMAND'.
IF SY-SUBRC EQ 0.
WA_EVENT-FORM = 'USER_COMMAND'.
MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =
WA_EVENT-NAME.
ENDIF.
ENDFORM. "POPULATE_EVENT
*& Form data_retrieval
retreiving values from the database table ekko
FORM DATA_RETRIEVAL.
SELECT EBELN AEDAT BUKRS BSART LIFNR FROM EKKO INTO TABLE IT_EKKO.
ENDFORM. "data_retrieval
*& Form bUild_listheader
text
-->I_LISTHEADEtext
FORM BUILD_LISTHEADER USING I_LISTHEADER TYPE SLIS_T_LISTHEADER.
DATA HLINE TYPE SLIS_LISTHEADER.
HLINE-INFO = 'this is my first alv pgm'.
HLINE-TYP = 'H'.
ENDFORM. "build_listheader
*& Form display_alv_report
text
FORM DISPLAY_ALV_REPORT.
V_REPID = SY-REPID.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = V_REPID
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'
I_GRID_TITLE = I_TITLE_EKKO
I_GRID_SETTINGS =
IS_LAYOUT = ALV_LAYOUT
IT_FIELDCAT = I_FIELDCAT[]
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
i_default = 'ZLAY1'
I_SAVE = 'A'
is_variant = i_variant
IT_EVENTS = V_EVENTS
TABLES
T_OUTTAB = IT_EKKO
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. "display_alv_report
*& Form TOP_OF_PAGE
text
FORM TOP_OF_PAGE.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = IT_LISTHEADER
i_logo =
I_END_OF_LIST_GRID =
ENDFORM. "TOP_OF_PAGE
*& Form USER_COMMAND
text
-->R_UCOMM text
-->, text
-->RS_SLEFIELDtext
FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
CASE R_UCOMM.
WHEN '&IC1'.
READ TABLE IT_EKKO INTO WA_EKKO INDEX RS_SELFIELD-TABINDEX.
PERFORM BUILD_FIELDCATLOG_EKPO.
PERFORM EVENT_CALL_EKPO.
PERFORM POPULATE_EVENT_EKPO.
PERFORM DATA_RETRIEVAL_EKPO.
PERFORM BUILD_LISTHEADER_EKPO USING IT_LISTHEADER.
PERFORM DISPLAY_ALV_EKPO.
ENDCASE.
ENDFORM. "user_command
*& Form BUILD_FIELDCATLOG_EKPO
text
FORM BUILD_FIELDCATLOG_EKPO.
WA_FIELDCAT-TABNAME = 'IT_EKPO'.
WA_FIELDCAT-FIELDNAME = 'EBELN'.
WA_FIELDCAT-SELTEXT_M = 'PO NO.'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'IT_EKPO'.
WA_FIELDCAT-FIELDNAME = 'EBELP'.
WA_FIELDCAT-SELTEXT_M = 'LINE NO'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'I_EKPO'.
WA_FIELDCAT-FIELDNAME = 'MATNR'.
WA_FIELDCAT-SELTEXT_M = 'MATERIAL NO.'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'I_EKPO'.
WA_FIELDCAT-FIELDNAME = 'MENGE'.
WA_FIELDCAT-SELTEXT_M = 'QUANTITY'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'I_EKPO'.
WA_FIELDCAT-FIELDNAME = 'MEINS'.
WA_FIELDCAT-SELTEXT_M = 'UOM'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'I_EKPO'.
WA_FIELDCAT-FIELDNAME = 'NETPR'.
WA_FIELDCAT-SELTEXT_M = 'PRICE'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
ENDFORM. "BUILD_FIELDCATLOG_EKPO
*& Form event_call_ekpo
we get all events - TOP OF PAGE or USER COMMAND in table v_events
FORM EVENT_CALL_EKPO.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = V_EVENTS
EXCEPTIONS
LIST_TYPE_WRONG = 1
OTHERS = 2
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. "event_call_ekpo
*& Form POPULATE_EVENT
Events populated for TOP OF PAGE & USER COMAND
FORM POPULATE_EVENT_EKPO.
READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'.
IF SY-SUBRC EQ 0.
WA_EVENT-FORM = 'TOP_OF_PAGE'.
MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =
WA_EVENT-FORM.
ENDIF.
ENDFORM. "POPULATE_EVENT
*& Form TOP_OF_PAGE
text
FORM F_TOP_OF_PAGE.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = IT_LISTHEADER
i_logo =
I_END_OF_LIST_GRID =
ENDFORM. "TOP_OF_PAGE
*& Form USER_COMMAND
text
-->R_UCOMM text
-->, text
-->RS_SLEFIELDtext
*retreiving values from the database table ekko
FORM DATA_RETRIEVAL_EKPO.
SELECT EBELN EBELP MATNR MENGE MEINS NETPR FROM EKPO INTO TABLE IT_EKPO.
ENDFORM.
FORM BUILD_LISTHEADER_EKPO USING I_LISTHEADER TYPE SLIS_T_LISTHEADER.
DATA: HLINE1 TYPE SLIS_LISTHEADER.
HLINE1-TYP = 'H'.
HLINE1-INFO = 'CHECKING PGM'.
ENDFORM.
FORM DISPLAY_ALV_EKPO.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = ' '
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = V_REPID
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = 'F_USER_COMMAND'
I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'
I_CALLBACK_HTML_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME =
I_BACKGROUND_ID = ' '
I_GRID_TITLE = I_TITLE_EKPO
I_GRID_SETTINGS =
IS_LAYOUT =
IT_FIELDCAT = I_FIELDCAT[]
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT =
I_SAVE = 'A'
IS_VARIANT =
IT_EVENTS = V_EVENTS
TABLES
T_OUTTAB = IT_EKPO
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM.
implement your logic in it and i hope this will definitely work.
thanks
mrutyun -
INTERACTIVE ALV REPORT problem
requirement is that when we click sales order in alv grid display,it should take to the screen of va03's displaying list .
Hi rahul
i have code for VL03N (Delivery ) jus see that and do for VA03
TYPE-POOLS:SLIS.
DATA:IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
WA_FIELD LIKE LINE OF IT_FIELDCAT.
DATA: BEGIN OF IT_LIKP OCCURS 0,
VBELN TYPE LIKP-VBELN,
END OF IT_LIKP.
WA_FIELD-FIELDNAME = 'VBELN'.
WA_FIELD-TABNAME = 'IT_LIKP'.
WA_FIELD-HOTSPOT = 'X'.
APPEND WA_FIELD TO IT_FIELDCAT.
SELECT VBELN FROM LIKP
UP TO 10 ROWS
INTO TABLE IT_LIKP.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
IT_FIELDCAT = IT_FIELDCAT
TABLES
T_OUTTAB = IT_LIKP
EXCEPTIONS
PROGRAM_ERROR = 1.
*& Form user_Command
* text
* -->UCOMM text
* -->SELFIELD text
FORM USER_COMMAND USING UCOMM TYPE SY-UCOMM
SELFIELD TYPE SLIS_SELFIELD.
CASE UCOMM.
WHEN '&IC1'.
IF SELFIELD-FIELDNAME = 'VBELN'.
SET PARAMETER ID 'VL' FIELD SELFIELD-VALUE.
CALL TRANSACTION 'VL03N' AND SKIP FIRST SCREEN.
ENDIF.
ENDCASE.
ENDFORM. "user_Command -
Hi Friends,
I have the following 2 problems in ALV report
1) Logo is not getting displayed in the report.
2) When i click on the Purchase order number in the report the interactive report is not working,i am not able to see report of First interactive level.
can you help it out friends.
Thanks and regards
Dinesh
REPORT YSDBALV1
tables: ekko , ekpo .
type-pools: slis .
Table for Display Header
data:i_header type slis_t_listheader with header line.
*Fieldcat Declaration
data:fieldcatalog type slis_T_fieldcat_alv WITH HEADER LINE.
*Table of Events
data:i_event type slis_t_event with header line .
For Layout
data:i_layout type slis_layout_alv .
data: text(30) .
*Internal Table Declaration
data: begin of it_final occurs 0 ,
ebeln like ekko-ebeln , "Purchasing Document No.
bedat like ekko-bedat , "Purchasing Document Date
matnr like ekpo-matnr , "Material No.
netwr like ekpo-netwr , "Net Order Value in PO Currancy
meins like ekpo-meins , "UOM
chk(1) ,
light(1) ,
change like ekpo-menge ,
end of it_final .
**select option Declaration
selection-screen begin of block block.
select-options: s_ebeln for ekko-ebeln .
selection-screen end of block block .
selection-screen begin of block block1 .
parameters:grid radiobutton group r .
parameters:list radiobutton group r .
selection-screen end of block block1 .
at selection screen
at selection-screen .
select single * from ekko where ebeln in s_ebeln .
if sy-subrc <> 0 .
message e000(8I) WITH 'No Data Exists' .
endif .
start-of-selection .
if grid = 'X' .
perform get_data .
perform event using i_event[] .
perform field using fieldcatalog[] .
perform layout using i_layout .
perform grid_display .
endif .
*& Form get_data
text
--> p1 text
<-- p2 text
form get_data .
*DATA Retrieval from tables
SELECT EKKO~EBELN
EKKO~BEDAT
EKPO~EBELP
EKPO~MATNR
EKPO~NETWR
EKPO~MEINS
EKPO~MENGE
EKPO~BPRME
INTO CORRESPONDING FIELDS OF table IT_FINAL
FROM EKKO INNER JOIN EKPO ON EKKOEBELN = EKPOEBELN
WHERE EKKO~EBELN IN S_EBELN.
APPEND IT_FINAL.
endform. " get_data
*Getting the Event for Top of Page display.
*& Form event
text
-->P_I_event[] text
form event using p_i_event type slis_t_event.
clear p_i_event .
refresh p_i_event .
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = p_i_event
EXCEPTIONS
LIST_TYPE_WRONG = 1
OTHERS = 2
read table p_i_event with key name = slis_ev_top_of_page into i_event.
if sy-subrc = 0.
move 'TOP_OF_PAGE_PO' to i_event-form.
modify p_i_event from i_event index sy-tabix transporting form.
endif.
clear i_event.
endform. " event
*Display Top-of Page Details and Logo
form top_of_page_po .
clear i_header .
refresh i_header .
write sy-datum to text.
i_header-typ = 'H'.
i_header-info = 'PURCHASE OREDER DETAILS'.
append i_header.
*Logo Display
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = i_header[]
I_LOGO = 'ENJOYSAPLOGO'.
endform .
*Field Catalog Append
*& Form field
text
-->P_fieldCATALOG[] text
form field using p_fieldcatalog type slis_t_fieldcat_alv.
clear fieldcatalog.
fieldcatalog-fieldname = 'EBELN'.
fieldcatalog-seltext_m = 'Purchase Order No'.
fieldcatalog-col_pos = 1.
append fieldcatalog .
clear fieldcatalog.
fieldcatalog-fieldname = 'BEDAT'.
fieldcatalog-seltext_m = 'PO Date'.
fieldcatalog-col_pos = 2.
append fieldcatalog .
clear fieldcatalog.
fieldcatalog-fieldname = 'MATNR'.
fieldcatalog-seltext_m = 'Material No'.
fieldcatalog-col_pos = 4.
fieldcatalog-outputlen = 20.
append fieldcatalog .
clear fieldcatalog.
fieldcatalog-fieldname = 'NETWR'.
fieldcatalog-seltext_m = 'Net Value '.
fieldcatalog-col_pos = 5.
fieldcatalog-outputlen = 20.
fieldcatalog-do_sum = 'X'.
append fieldcatalog .
clear fieldcatalog.
fieldcatalog-fieldname = 'MEINS'.
fieldcatalog-seltext_m = 'Units'.
fieldcatalog-col_pos = 6.
fieldcatalog-outputlen = 4.
append fieldcatalog .
clear fieldcatalog.
endform. " field
*& Form layout
text
form layout using p_i_layout TYPE SLIS_LAYOUT_ALV .
i_layout-zebra = 'X'.
i_layout-lights_fieldname = 'LIGHT'.
i_layout-lights_tabname = 'IT_FINAL'.
i_layout-box_fieldname = 'CHK'.
i_layout-box_tabname = 'IT_FINAL'.
i_layout-edit = ' '.
endform.
*To display Buttons in the MENU BAR if needed
FORM SET_PO_PF_STATUS USING P_I_EXTAB TYPE
SLIS_T_EXTAB.
SET PF-STATUS 'MENUPO'.
ENDFORM.
*Event for Interactive display of ALV report
form USER_COMMAND using r_ucomm like sy-ucomm
rs_selfield type slis_selfield .
if r_ucomm = '&IC1'.
READ TABLE IT_FINAL index rs_selfield-tabindex.
write:/ IT_FINAL-ebeln.
endif.
endform .
*Parameters of FM REUSE_ALV_GRID_DISPLAY
*& Form grid_display
text
--> p1 text
<-- p2 text
form grid_display .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_PF_STATUS_SET = 'SET_PO_PF_STATUS'
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
IS_LAYOUT = I_LAYOUT
IT_FIELDCAT = FIELDCATALOG[]
IT_EVENTS = I_EVENT[]
TABLES
t_outtab = IT_FINAL.
endform. " grid_display*& Report YSDBALV1
REPORT YSDBALV1.
tables: ekko , ekpo .
type-pools: slis .
Table for Display Header
data:i_header type slis_t_listheader with header line.
*Fieldcat Declaration
data:fieldcatalog type slis_T_fieldcat_alv WITH HEADER LINE.
*Table of Events
data:i_event type slis_t_event with header line ,
wa_event type line of slis_t_event.
For Layout
data:i_layout type slis_layout_alv .
data: text(30) .
*Internal Table Declaration
data: begin of it_final occurs 0 ,
ebeln like ekko-ebeln , "Purchasing Document No.
bedat like ekko-bedat , "Purchasing Document Date
matnr like ekpo-matnr , "Material No.
netwr like ekpo-netwr , "Net Order Value in PO Currancy
meins like ekpo-meins , "UOM
chk(1) ,
light(1) ,
change like ekpo-menge ,
end of it_final .
**select option Declaration
selection-screen begin of block block.
select-options: s_ebeln for ekko-ebeln .
selection-screen end of block block .
selection-screen begin of block block1 .
parameters:grid radiobutton group r .
parameters:list radiobutton group r .
selection-screen end of block block1 .
at selection screen
at selection-screen .
select single * from ekko where ebeln in s_ebeln .
if sy-subrc <> 0 .
message e000(8I) WITH 'No Data Exists' .
endif .
start-of-selection .
if grid = 'X' .
perform get_data .
perform event using i_event[] .
perform field using fieldcatalog[] .
perform layout using i_layout .
perform grid_display .
endif .
*& Form get_data
text
--> p1 text
<-- p2 text
form get_data .
*DATA Retrieval from tables
SELECT EKKO~EBELN
EKKO~BEDAT
EKPO~EBELP
EKPO~MATNR
EKPO~NETWR
EKPO~MEINS
EKPO~MENGE
EKPO~BPRME
INTO CORRESPONDING FIELDS OF table IT_FINAL
FROM EKKO INNER JOIN EKPO ON EKKOEBELN = EKPOEBELN
WHERE EKKO~EBELN IN S_EBELN.
APPEND IT_FINAL.
endform. " get_data
*Getting the Event for Top of Page display.
*& Form event
text
-->P_I_event[] text
form event using p_i_event type slis_t_event.
clear p_i_event .
refresh p_i_event .
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = p_i_event.
EXCEPTIONS
LIST_TYPE_WRONG = 1
OTHERS = 2.
read table p_i_event with key name = slis_ev_top_of_page into wa_event.
if sy-subrc = 0.
move 'TOP_OF_PAGE_PO' to i_event-form.
modify p_i_event from i_event index sy-tabix transporting form.
endif.
clear i_event.
endform. " event
*Display Top-of Page Details and Logo
form top_of_page_po .
clear i_header .
refresh i_header .
write sy-datum to text.
i_header-typ = 'H'.
i_header-info = 'PURCHASE OREDER DETAILS'.
append i_header.
*Logo Display
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = i_header[]
I_LOGO = 'ENJOYSAP_LOGO'.
endform .
*Field Catalog Append
*& Form field
text
-->P_fieldCATALOG[] text
form field using p_fieldcatalog type slis_t_fieldcat_alv.
clear fieldcatalog.
fieldcatalog-fieldname = 'EBELN'.
fieldcatalog-seltext_m = 'Purchase Order No'.
fieldcatalog-col_pos = 1.
append fieldcatalog .
clear fieldcatalog.
fieldcatalog-fieldname = 'BEDAT'.
fieldcatalog-seltext_m = 'PO Date'.
fieldcatalog-col_pos = 2.
append fieldcatalog .
clear fieldcatalog.
fieldcatalog-fieldname = 'MATNR'.
fieldcatalog-seltext_m = 'Material No'.
fieldcatalog-col_pos = 4.
fieldcatalog-outputlen = 20.
append fieldcatalog .
clear fieldcatalog.
fieldcatalog-fieldname = 'NETWR'.
fieldcatalog-seltext_m = 'Net Value '.
fieldcatalog-col_pos = 5.
fieldcatalog-outputlen = 20.
fieldcatalog-do_sum = 'X'.
append fieldcatalog .
clear fieldcatalog.
fieldcatalog-fieldname = 'MEINS'.
fieldcatalog-seltext_m = 'Units'.
fieldcatalog-col_pos = 6.
fieldcatalog-outputlen = 4.
append fieldcatalog .
clear fieldcatalog.
endform. " field
*& Form layout
text
form layout using p_i_layout TYPE SLIS_LAYOUT_ALV .
i_layout-zebra = 'X'.
i_layout-lights_fieldname = 'LIGHT'.
i_layout-lights_tabname = 'IT_FINAL'.
i_layout-box_fieldname = 'CHK'.
i_layout-box_tabname = 'IT_FINAL'.
i_layout-edit = ' '.
endform.
*To display Buttons in the MENU BAR if needed
FORM SET_PO_PF_STATUS USING P_I_EXTAB TYPE
SLIS_T_EXTAB.
SET PF-STATUS 'MENUPO'.
ENDFORM.
*Event for Interactive display of ALV report
form USER_COMMAND using r_ucomm like sy-ucomm
rs_selfield type slis_selfield .
if r_ucomm = '&IC1'.
READ TABLE IT_FINAL index rs_selfield-tabindex.
set parameter id 'VL1' field it_final-ebeln.
call transaction 'ME23N'.
endif.
endform .
*Parameters of FM REUSE_ALV_GRID_DISPLAY
*& Form grid_display
text
--> p1 text
<-- p2 text
form grid_display .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_PF_STATUS_SET = 'SET_PO_PF_STATUS'
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
IS_LAYOUT = I_LAYOUT
IT_FIELDCAT = FIELDCATALOG[]
IT_EVENTS = I_EVENT[]
TABLES
t_outtab = IT_FINAL.
endform. " grid_display
Regards,
Rusidar S. -
Problem with Page Break In ALV Report
Hi
I have got a problem in my ALV report. I have a checkbox in the user input screen where users decide whether they want a page break or not in the print preview (or print) page. Now i also have the option to have layout name in the input screen. so If i leave the layout box empty the check or not check of page break works fine. but if use a save layout name in the layout box the add check box doesn't work anymore. If i have a layout name in the layout box it doesn't matter whether i have checked for page break or not it does the same thing.(in one report it always puts the page breaked)
Any ideas where to look for the error?
here is the code for the page break. Opt5 is the check box.
perform build_sort tables pt_sort changing ls_sort.
ls_sort-fieldname = 'PERNR'.
ls_sort-subtot = 'X'.
IF OPT5 = 'X'.
ls_sort-GROUP = '*'.
ENDIF.
append ls_sort to pt_sort.
ls_sort-subtot = ' '.
ls_sort-GROUP = ''.Never mind it was acting like the page break was not working because the layout was saved with the page break on/OFF.
-
Hi Experts,
I am having problem while taking print out of Alv report format. In that report, 1 column contains Unit Values.
Eg. Unit value - 'LE' , AFTER USING CONVERSION EXIT LOGIC it is converted into 'AU' which is finally displayed in the Alv -Report display format.
while taking Print-out of that report , that field Unit Value 'AU' is Shown in this format "****'.
Please give me your Valuable Suggestions.
Thanks and Regards
BalaNarasimman Mwhile defining filed catalog define the data type also
clear l_fieldcat.
l_fieldcat-fieldname = 'MEINS'.
l_fieldcat-datatype = 'UNIT'.
l_fieldcat-no_out = ' '.
l_fieldcat-do_sum = 'X'.
l_fieldcat-seltext_l = 'UOM'.
append l_fieldcat to p_fieldtab.
may be it would help.
anya -
Hi
I have this ALV Report when I run and change the layout (add/remove column and add column for sorting) it works fine but when i come back i get the change columns but it doesn't save the sorting options that i made.
Here is my Code
*& Report ZAKTIME *
*& AKABIR 02/06/2007 New Report for Cluster B2 *
REPORT ZAKTIME no standard page heading message-id zw line-size 255.
* Dictionary tables/structures
tables: pa0007, PA0002.
DATA: IT_T549Q TYPE T549Q OCCURS 0 WITH HEADER LINE,
IT_ZL TYPE PC2BF OCCURS 0 WITH HEADER LINE,
IT_PT TYPE PDCPT OCCURS 0 WITH HEADER LINE,
IT_ALP TYPE PC20E OCCURS 0 WITH HEADER LINE,
IT_C1 TYPE PC25X OCCURS 0 WITH HEADER LINE,
IT_PSP TYPE PC2BA OCCURS 0 WITH HEADER LINE.
* Global ALV Data Declarations
type-pools slis.
DATA: BEGIN OF tgetbuff occurs 0,
x(10),
END OF tgetbuff.
include rpcxB200.
INCLUDE RPTBAL01.
* infotypes: 0001. "Org. Zuordnung
Data: TempHours LIKE PC2BF-BEGUZ,
even type i value 0.
data: begin of hd,
struc like dd03l-tabname,
end of hd.
DATA: BEGIN OF REC OCCURS 0,
PERNR LIKE PERNR-PERNR,
SSN Like pa0002-perid,
NAME(25),
TYPE(1),
WRKS LIKE PC2BA-TPROG,
DATE(10),
STIME(8),
ETIME(8),
HOURS LIKE PC2BF-BEGUZ,
PNUMB LIKE PC20E-PRAKN,
PID LIKE PC20E-PRAKZ,
UNIT LIKE PC20E-ANZHL,
VALU LIKE PC20E-BWGRL,
AMOUNT LIKE PC20E-BETRG,
XPAYID LIKE PC20E-AUFKZ,
CCNTR LIKE PC25X-KOSTL,
CCODE LIKE PC25X-BUKRS,
AUFNR LIKE PC25X-AUFNR,
KTEXT LIKE CAUFV-KTEXT,
LGART LIKE PC2BF-LGART,
LGTXT LIKE T512T-LGTXT,
STER LIKE PDCPT-BTERM,
ETER LIKE PDCPT-ETERM.
DATA: END OF REC.
data:
begin of x_sortinfo_alv occurs 0,
spos like alvdynp-sortpos,
fieldname type slis_fieldname,
tabname type slis_fieldname,
up like alvdynp-sortup,
down like alvdynp-sortdown,
group like alvdynp-grouplevel,
subtot like alvdynp-subtotals,
comp(1) type c,
expa(1) type c,
obligatory(1) type c,
end of x_sortinfo_alv,
v_variant like disvariant,
v_repid like sy-repid,
v_save(1) type c,
lv_sortseq type i,
s_title(20), "Maximum selection field description 20 bytes.
fieldcat type slis_t_fieldcat_alv,
ls_line type slis_listheader,
gd_layout type slis_layout_alv,
gt_sort type slis_t_sortinfo_alv,
ls_sort type slis_sortinfo_alv,
events type slis_t_event,
list_top_of_page type slis_t_listheader,
top_of_page type slis_formname value 'TOP_OF_PAGE',
v_exit(1) type c.
constants:
alv_slis_formname type slis_formname value 'ALV_USER_COMMAND',
c_yes like space value 'X',
c_no like space value space.
DATA: BEGIN OF E_NAME,
NACHN LIKE PA0002-NACHN,
VORNA LIKE PA0002-VORNA.
DATA: END OF E_NAME.
* define selection screen
selection-screen begin of block elmo with frame title text-001.
selection-screen begin of line.
selection-screen comment 1(22) text-005.
select-options opt4 for pa0007-schkz.
selection-screen end of line.
parameters: debg_lst as checkbox default 'X'.
selection-screen end of block elmo.
selection-screen begin of block blk2 with frame title text-002.
PARAMETERS: p_vari like disvariant-variant.
selection-screen end of block blk2.
* Form Initialization
initialization.
clear: REC.
refresh: REC.
v_repid = sy-repid.
v_save = 'A'.
clear v_variant.
v_variant-report = v_repid.
* Get default variant
alv_variant = v_variant.
call function 'REUSE_ALV_VARIANT_DEFAULT_GET'
exporting
i_save = v_save
changing
cs_variant = alv_variant
exceptions
not_found = 2.
if sy-subrc = 0.
p_vari = alv_variant-variant.
endif.
* At Selection-Screen event (value help)
at selection-screen on value-request for p_vari.
perform f4_for_variant.
* At Selection-Screen event (check input data)
at selection-screen on p_vari.
if p_vari <> space.
v_variant-report = v_repid.
v_variant-variant = p_vari.
call function 'REUSE_ALV_VARIANT_SELECT'
EXPORTING
i_dialog = c_no
it_default_fieldcat = field_tab[]
i_layout = gs_layout
CHANGING
cs_variant = v_variant.
if sy-subrc <> 0.
call function 'REUSE_ALV_VARIANT_SELECT'
EXPORTING
i_dialog = c_yes
it_default_fieldcat = field_tab[]
i_layout = gs_layout
CHANGING
cs_variant = v_variant.
endif.
endif.
* main logic
TOP-OF-PAGE.
START-OF-SELECTION.
GET PERNR.
RP-PROVIDE-FROM-LAST P0001 SPACE PNPBEGDA PNPENDDA.
* process the data according to the payroll area
IF PERNR-WERKS EQ P0001-WERKS AND PERNR-BTRTL EQ P0001-BTRTL
AND PERNR-KOSTL EQ P0001-KOSTL AND PERNR-BUKRS EQ P0001-BUKRS
AND PERNR-ABKRS EQ P0001-ABKRS AND PERNR-KOKRS EQ P0001-KOKRS.
PERFORM RETRIEVE_Time.
ENDIF.
END-OF-SELECTION.
Perform call_alv.
*======================================================================*
* forms *
*======================================================================*
FORM RETRIEVE_Time.
DATA: date_modified(10), V_STIME(8), V_ETIME(8).
DATA: Flag(1),
v_lgtxt like T512T-LGTXT,
v_ktext like caufv-ktext,
v_WRKS LIKE PC2BA-TPROG.
CALL FUNCTION 'HR_PAYROLL_PERIODS_GET'
EXPORTING
get_begda = PNPBEGDA
get_endda = PNPENDDA
TABLES
get_periods = it_t549q
EXCEPTIONS
no_period_found = 1
no_valid_permo = 2.
CHECK sy-subrc = 0.
LOOP AT it_t549q.
FLAG = 0.
CALL FUNCTION 'HR_TIME_RESULTS_GET'
EXPORTING
get_pernr = PERNR-PERNR
get_pabrj = it_t549q-pabrj
get_pabrp = it_t549q-pabrp
TABLES
GET_TBUFF = TGETBUFF
get_zl = it_zl
get_pt = it_PT
get_alp = it_ALP
get_c1 = it_C1
get_psp = it_psp
EXCEPTIONS
no_period_specified = 1
wrong_cluster_version = 2
no_read_authority = 3
cluster_archived = 4
technical_error = 5.
LOOP AT it_zl.
IF it_ZL-DATUM >= PNPBEGDA AND it_ZL-DATUM <= PNPENDDA.
* Include PSP Data if Exists.
LOOP AT IT_PSP.
IF it_psp-ZMODN IN OPT4 AND it_zl-DATUM EQ it_psp-DATUM.
MOVE it_psp-ZMODN TO REC-WRKS.
FLAG = 1.
Move:
Pernr-Pernr To REC-PERNR,
'Z' To REC-TYPE,
it_ZL-LGART TO REC-LGART,
it_ZL-ANZHL TO REC-HOURS.
perform get_ssn.
perform get_wage_type_text using REC-LGART v_lgtxt.
move v_lgtxt to REC-LGTXT.
CONCATENATE it_zl-DATUM+4(2) '/' it_zl-DATUM+6(2) '/' it_zl-DATUM(4) INTO date_modified.
IF it_ZL-BEGUZ <> ''.
CONCATENATE it_ZL-BEGUZ(2) ':' it_ZL-BEGUZ+2(2) ':' it_ZL-BEGUZ+4(2) INTO V_STIME.
ELSE.
V_STIME = ''.
ENDIF.
IF it_ZL-ENDUZ <> ''.
CONCATENATE it_ZL-ENDUZ(2) ':' it_ZL-ENDUZ+2(2) ':' it_ZL-ENDUZ+4(2) INTO V_ETIME.
ELSE.
V_ETIME = ''.
ENDIF.
Move:
date_modified To REC-DATE,
V_STIME To REC-STIME,
V_ETIME To REC-ETIME.
* Include ALP Data if Exists else include Blanks.
MOVE:
'' TO REC-UNIT,
'' TO REC-PNUMB,
'' TO REC-PID,
'' TO REC-VALU,
'' TO REC-AMOUNT,
'' TO REC-XPAYID.
IF it_ZL-ALZNR GT 0.
LOOP AT IT_ALP.
IF it_zl-ALZNR EQ it_ALP-ALZNR.
MOVE:
it_ALP-ANZHL TO REC-UNIT,
it_ALP-PRAKN TO REC-PNUMB,
it_ALP-PRAKZ TO REC-PID,
it_ALP-BWGRL TO REC-VALU,
it_ALP-BETRG TO REC-AMOUNT,
it_ALP-AUFKZ TO REC-XPAYID.
ENDIF.
ENDLOOP.
ENDIF.
* Include C1 Data if Exists Else Include Blanks.
MOVE:
'' TO REC-CCODE,
'' TO REC-CCNTR,
'' To REC-AUFNR,
'' TO REC-KTEXT.
IF it_ZL-C1ZNR GT 0.
LOOP AT IT_C1.
IF it_zl-C1ZNR EQ it_c1-C1ZNR.
MOVE:
it_C1-BUKRS TO REC-CCODE,
it_C1-KOSTL TO REC-CCNTR,
it_C1-AUFNR To REC-AUFNR.
perform get_service_order_text using REC-AUFNR v_ktext.
move v_ktext to rec-ktext.
ENDIF.
ENDLOOP.
ENDIF.
APPEND REC.
* ENDIF FOR the IF on IT_PSP
ENDIF.
ENDLOOP.
* ENDIF FOR the IF on Date Check
ENDIF.
* ENDLOOP ON IT_ZL
ENDLOOP.
LOOP AT it_pt.
IF it_PT-LDATE >= PNPBEGDA AND it_PT-LDATE <= PNPENDDA.
* Include PSP Data if Exists.
LOOP AT IT_PSP.
IF IT_PSP-ZMODN IN OPT4 AND it_pt-LDATE EQ it_psp-DATUM.
MOVE it_psp-ZMODN TO REC-WRKS.
FLAG = 1.
Move:
Pernr-Pernr To REC-PERNR,
'P' to REC-TYPE,
it_pt-BTERM TO REC-STER,
it_pt-ETERM TO REC-ETER.
perform get_ssn.
CONCATENATE it_pt-LDATE+4(2) '/' it_pt-LDATE+6(2) '/' it_pt-LDATE(4) INTO date_modified.
IF it_pt-BEGTM NE ''.
CONCATENATE it_pt-BEGTM(2) ':' it_pt-BEGTM+2(2) ':' it_pt-BEGTM+4(2) INTO V_STIME.
ELSE.
V_STIME = ''.
ENDIF.
IF it_pt-ENDTM NE ''.
CONCATENATE it_pt-ENDTM(2) ':' it_pt-ENDTM+2(2) ':' it_pt-ENDTM+4(2) INTO V_ETIME.
ELSE.
V_ETIME = ''.
ENDIF.
Move:
date_modified To REC-DATE,
V_STIME To REC-STIME,
V_ETIME To REC-ETIME.
TempHours = ''.
IF it_pt-BEGTM LT it_pt-ENDTM.
TempHours = it_pt-ENDTM(4) - it_pt-BEGTM(4).
TempHours = TempHours / 100.
ENDIF.
MOVE:
TempHours TO REC-HOURS,
'' TO REC-LGART,
'' TO REC-LGTXT,
'' TO REC-UNIT,
'' TO REC-PNUMB,
'' TO REC-PID,
'' TO REC-VALU,
'' TO REC-AMOUNT,
'' TO REC-XPAYID,
'' TO REC-CCODE,
'' TO REC-CCNTR,
'' TO REC-AUFNR,
'' TO REC-KTEXT.
APPEND REC.
ENDIF.
ENDLOOP.
ENDIF.
ENDLOOP.
IF FLAG = 0 AND debg_lst = 'X'.
Move:
Pernr-Pernr To REC-PERNR,
'' To REC-TYPE,
'' TO REC-DATE,
'' TO REC-STIME,
'' TO REC-ETIME,
'' TO REC-LGART,
'' TO REC-LGTXT,
'' TO REC-HOURS,
'' TO REC-UNIT,
'' TO REC-PNUMB,
'' TO REC-PID,
'' TO REC-VALU,
'' TO REC-AMOUNT,
'' TO REC-XPAYID,
'' TO REC-CCODE,
'' TO REC-CCNTR,
'' To REC-AUFNR,
'' To REC-KTEXT,
'' TO REC-STER,
'' TO REC-ETER.
perform get_ssn.
PERFORM LOAD_SHIFT using v_WRKS.
Move v_WRKS TO REC-WRKS.
IF REC-WRKS IN OPT4.
APPEND REC.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM. " RETRIEVE_PAYROLL
* CALL_ALV
form call_alv.
* v_repid = sy-repid.
perform build_field_catalog using field_tab[].
perform build_eventtab using events[].
perform comment_build using header_alv[].
perform build_sorttab using gt_sort[].
perform build_layout.
* v_variant-variant = '/TEST3'.
* Call ABAP List Viewer
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
it_fieldcat = field_tab[]
i_structure_name = 'REC'
i_callback_program = v_repid
is_variant = v_variant
it_events = events[]
it_sort = gt_sort[]
i_save = v_save
is_layout = gd_layout
tables
t_outtab = REC
exceptions
program_error = 1
others = 2.
endform.
* BUILD_FIELD_CATALOG
form build_field_catalog USING pt_fieldcat type
slis_t_fieldcat_alv.
clear: fieldcat, pt_fieldcat[]. refresh: fieldcat.
data: ls_fieldcat type slis_fieldcat_alv.
ls_fieldcat-tabname = 'REC'.
ls_fieldcat-edit = ' '.
ls_fieldcat-fieldname = 'PERNR'.
ls_fieldcat-ref_tabname = 'REC'.
ls_fieldcat-ref_fieldname = 'PERNR'.
ls_fieldcat-seltext_l = 'Employee #'.
ls_fieldcat-outputlen = 15.
ls_fieldcat-no_sum = 'X'. "Don't use field for totals
ls_fieldcat-datatype = 'NUMC'.
append ls_fieldcat to pt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'NAME'.
ls_fieldcat-ref_tabname = 'REC'.
ls_fieldcat-ref_fieldname = 'NAME'.
ls_fieldcat-seltext_l = 'Employee Name'.
append ls_fieldcat to pt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'TYPE'.
ls_fieldcat-ref_tabname = 'REC'.
ls_fieldcat-ref_fieldname = 'TYPE'.
ls_fieldcat-seltext_m = 'Type'.
ls_fieldcat-outputlen = 4.
append ls_fieldcat to pt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'DATE'.
ls_fieldcat-ref_tabname = 'REC'.
ls_fieldcat-ref_fieldname = 'DATE'.
ls_fieldcat-seltext_l = 'Date'.
append ls_fieldcat to pt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'WRKS'.
ls_fieldcat-ref_tabname = 'REC'.
ls_fieldcat-ref_fieldname = 'WRKS'.
ls_fieldcat-seltext_m = 'Daily Sch'.
ls_fieldcat-outputlen = 10.
append ls_fieldcat to pt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'STIME'.
ls_fieldcat-ref_tabname = 'REC'.
ls_fieldcat-ref_fieldname = 'STIME'.
ls_fieldcat-seltext_l = 'Start Time'.
append ls_fieldcat to pt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'ETIME'.
ls_fieldcat-ref_tabname = 'REC'.
ls_fieldcat-ref_fieldname = 'ETIME'.
ls_fieldcat-seltext_l = 'End Time'.
append ls_fieldcat to pt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'HOURS'.
ls_fieldcat-ref_tabname = 'REC'.
ls_fieldcat-ref_fieldname = 'HOURS'.
ls_fieldcat-seltext_s = 'Hours'.
ls_fieldcat-datatype = 'NUMC'.
append ls_fieldcat to pt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'PNUMB'.
ls_fieldcat-ref_tabname = 'REC'.
ls_fieldcat-ref_fieldname = 'PNUMB'.
ls_fieldcat-seltext_l = 'Premium #'.
ls_fieldcat-datatype = 'NUMC'.
append ls_fieldcat to pt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'PID'.
ls_fieldcat-ref_tabname = 'REC'.
ls_fieldcat-ref_fieldname = 'PID'.
ls_fieldcat-seltext_l = 'Premium Id'.
ls_fieldcat-datatype = 'NUMC'.
append ls_fieldcat to pt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'UNIT'.
ls_fieldcat-ref_tabname = 'REC'.
ls_fieldcat-ref_fieldname = 'UNIT'.
ls_fieldcat-seltext_s = 'Unit'.
ls_fieldcat-datatype = 'NUMC'.
append ls_fieldcat to pt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'VALU'.
ls_fieldcat-ref_tabname = 'REC'.
ls_fieldcat-ref_fieldname = 'VALU'.
ls_fieldcat-seltext_s = 'Valuation Basis'.
ls_fieldcat-datatype = 'NUMC'.
append ls_fieldcat to pt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'AMOUNT'.
ls_fieldcat-ref_tabname = 'REC'.
ls_fieldcat-ref_fieldname = 'AMOUNT'.
ls_fieldcat-seltext_s = 'Amount'.
ls_fieldcat-datatype = 'NUMC'.
append ls_fieldcat to pt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'XPAYID'.
ls_fieldcat-ref_tabname = 'REC'.
ls_fieldcat-ref_fieldname = 'XPAYID'.
ls_fieldcat-seltext_s = 'Extra Pay ID'.
append ls_fieldcat to pt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'CCNTR'.
ls_fieldcat-ref_tabname = 'REC'.
ls_fieldcat-ref_fieldname = 'CCNTR'.
ls_fieldcat-seltext_l = 'Cost Center'.
append ls_fieldcat to pt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'CCODE'.
ls_fieldcat-ref_tabname = 'REC'.
ls_fieldcat-ref_fieldname = 'CCODE'.
ls_fieldcat-seltext_l = 'Company Code'.
append ls_fieldcat to pt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'AUFNR'.
ls_fieldcat-ref_tabname = 'REC'.
ls_fieldcat-ref_fieldname = 'AUFNR'.
ls_fieldcat-seltext_l = 'Service Number'.
ls_fieldcat-datatype = 'NUMC'.
append ls_fieldcat to pt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'KTEXT'.
ls_fieldcat-ref_tabname = 'REC'.
ls_fieldcat-ref_fieldname = 'KTEXT'.
ls_fieldcat-seltext_l = 'Service Number Text'.
append ls_fieldcat to pt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'LGART'.
ls_fieldcat-ref_tabname = 'REC'.
ls_fieldcat-ref_fieldname = 'LGART'.
ls_fieldcat-seltext_l = 'Wage Type'.
append ls_fieldcat to pt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'LGTXT'.
ls_fieldcat-ref_tabname = 'REC'.
ls_fieldcat-ref_fieldname = 'LGTXT'.
ls_fieldcat-seltext_l = 'Wage Type Text'.
append ls_fieldcat to pt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'STER'.
ls_fieldcat-ref_tabname = 'REC'.
ls_fieldcat-ref_fieldname = 'STER'.
ls_fieldcat-seltext_l = 'Starting Terminal'.
append ls_fieldcat to pt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'ETER'.
ls_fieldcat-ref_tabname = 'REC'.
ls_fieldcat-ref_fieldname = 'ETER'.
ls_fieldcat-seltext_l = 'Ending Terminal'.
append ls_fieldcat to pt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-edit = ' '.
endform.
* BUILD_EVENTTAB
form build_eventtab using events type slis_t_event.
* Registration of events to happen during list display
data: tmp_event type slis_alv_event.
call function 'REUSE_ALV_EVENTS_GET'
exporting
i_list_type = 0
importing
et_events = events.
read table events with key name = slis_ev_top_of_page into tmp_event.
if sy-subrc = 0.
move top_of_page to tmp_event-form.
append tmp_event to events.
endif.
endform.
* COMMENT_BUILD
form comment_build using pt_top_of_page type slis_t_listheader.
data: v_head_string(255) value space, d1(2), m1(2), y1(2), d2(2), m2(2), y2(2).
clear: ls_line, pt_top_of_page.
ls_line-typ = 'H'.
data pnpfrom(10).
data pnpto(10).
data: print_date(10).
data: print_time(10).
d1 = PNPBEGDA+6(2). d2 = PNPENDDA+6(2).
m1 = PNPBEGDA+4(2). m2 = PNPENDDA+4(2).
y1 = PNPBEGDA+2(2). y2 = PNPENDDA+2(2).
concatenate m1 '/' d1 '/' y1 into pnpfrom.
concatenate m2 '/' d2 '/' y2 into pnpto.
d1 = sy-datum+6(2). d2 = sy-uzeit+2(2).
m1 = sy-datum+4(2). m2 = sy-uzeit+0(2).
y1 = sy-datum+2(2). y2 = sy-uzeit+4(2).
concatenate m1 '/' d1 '/' y1 into print_date.
concatenate m2 ':' d2 ':' y2 into print_time.
ls_line-info = sy-repid.
append ls_line to pt_top_of_page.
concatenate 'Printed by:' sy-uname 'on' print_date 'at' print_time
into ls_line-info separated by space.
append ls_line to pt_top_of_page.
ls_line-info = 'BGM INDUSTRIES, INC.'.
append ls_line to pt_top_of_page.
concatenate 'Supply Period:' pnpfrom 'to' pnpto
into ls_line-info separated by space.
append ls_line to pt_top_of_page.
endform.
* Build layout for ALV grid report
form build_layout.
gd_layout-no_input = 'X'.
gd_layout-colwidth_optimize = 'X'.
gd_layout-totals_text = 'Totals'(201).
gd_layout-info_fieldname = 'LINE_COLOR'.
endform. " BUILD_LAYOUT
* TOP_OF_PAGE
form top_of_page.
call function 'REUSE_ALV_COMMENTARY_WRITE'
exporting
i_logo = 'Z_BGLOGO'
it_list_commentary = header_alv.
endform.
*& Form build_sorttab
* Set up the sorting for the report.
form build_sorttab using pt_sort type slis_t_sortinfo_alv.
clear lv_sortseq.
perform build_sort tables pt_sort changing ls_sort.
ls_sort-fieldname = 'PERNR'.
ls_sort-subtot = 'X'.
append ls_sort to pt_sort.
ls_sort-subtot = ' '.
perform build_sort tables pt_sort changing ls_sort.
ls_sort-fieldname = 'NAME'.
ls_sort-subtot = 'X'.
append ls_sort to pt_sort.
ls_sort-subtot = ' '.
endform. " build_sorttab
* Use to add another sort field.
form build_sort
tables pt_sort
changing ls_sort structure x_sortinfo_alv.
clear ls_sort.
add 1 to lv_sortseq.
ls_sort-spos = lv_sortseq.
ls_sort-up = 'X'.
ls_sort-tabname = 'REC'.
endform. "build_sort
*} INSERT
*& Form GET_SSN & EMP Name
* text
FORM GET_SSN.
SELECT SINGLE * FROM PA0002 WHERE PERNR = PERNR-PERNR.
IF SY-SUBRC EQ 0.
MOVE: PA0002-PERNR TO REC-SSN,
PA0002-VORNA TO E_NAME-VORNA,
PA0002-NACHN TO E_NAME-NACHN.
CONDENSE E_NAME.
MOVE: E_NAME TO REC-NAME.
ENDIF.
ENDFORM. " GET_SSN
* Form GET_WAGE_TYPE_TEXT
form get_wage_type_text using rec-LGART p_v_lgtxt.
select single LGTXT from T512T into p_v_lgtxt
where LGART = rec-LGART.
endform. " GET_WAGE_TYPE_TEXT
* Form GET_SERVICE_ORDER_TEXT
form get_service_order_text using rec-AUFNR p_v_ktext.
select single ktext from caufv into p_v_ktext
where aufnr = rec-aufnr.
endform. " GET_SERVICE_ORDER_TEXT
*& Form LOAD_SHIFT
* text
FORM LOAD_SHIFT USING V_WRKS.
SELECT SINGLE * FROM PA0007 WHERE PERNR = REC-PERNR.
IF SY-SUBRC EQ 0.
MOVE: PA0007-SCHKZ TO V_WRKS.
ENDIF.
ENDFORM.
*& Form f4_for_variant
form f4_for_variant.
call function 'REUSE_ALV_VARIANT_F4'
EXPORTING
is_variant = v_variant
i_save = v_save
IMPORTING
e_exit = v_exit
es_variant = alv_variant
EXCEPTIONS
not_found = 2.
if sy-subrc = 2.
message id sy-msgid type 'S' number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
else.
if v_exit = space.
p_vari = alv_variant-variant.
endif.
endif.
endform. " f4_for_variant
Please help. I will reward Points for the right answers.
ThanksOk found the problem at last
ls_fieldcat-fieldname = 'PERNR'.
ls_fieldcat-ref_tabname = 'REC'.
ls_fieldcat-ref_fieldname = 'PERNR'.
ls_fieldcat-seltext_l = 'Employee #'.
ls_fieldcat-outputlen = 15.
ls_fieldcat-no_sum = 'X'. "Don't use field for totals
ls_fieldcat-datatype = 'NUMC'.
append ls_fieldcat to pt_fieldcat.
clear ls_fieldcat.
In my build catalog i was clearing every field using the
clear ls_fieldcat.
which was some how clearing the sortings...
SO commented them out and it works. -
OOP ALV report custom control performance problem
HI
how to write OOP ALV report without custom control.. Actually with custom control which taking long time... and time out happens for huge selection of data..
Regards
Roops.timeout is not an alv problem. If you try to display a "huge" amount of data, any display technology will fail. Even sap programs fail, their wise solution is to ask user to restrict data to be displayed. Or reduce database selection time, or display amount. Or propose the user to download data as a spool, or output to a file on server.
Otherwise, read some advices about how to handle timeout in [Note 25528 - Parameter rdisp/max_wprun_time|http://service.sap.com/sap/support/notes/25528].
About your question, if you still want to try, look at [example code with alv class cl_salv_table for simple display|http://help.sap.com/saphelp_nw2004s/helpdata/en/f9/1ab54099de3726e10000000a1550b0/frameset.htm] -
ALV Report performance & export problem
Hi,
We have developed an complex ALV report which accesses the data from FI Tables like BKPF, BSEG, BSAK etc., There are almost 100 lac records in BSEG and every day around 20000 records are getting added to that. Eventhough I have used specific search criteria, system is taking lot of time. Due to this I forced to run the report in background. In background also it is taking around 4 - 6 hours.
1) How can I improve the performance of the report. Especially to access data from huge database table like BSEG with lot of conditions. Any best practices
2) I want to have an option (at selection screen) to get the report directly saved in a Excel file at desired path.
Please help me.
Thanks in advance,
MallikHi Mallik,
Already i faced this problem before. At that time i follow some precuations:
1) Check the estimation cost for that report with the basis people.
2) The selection fields mentionedin the select statement and fields order in the internal; table should match with order of Data base fields order.
3) Define type statements and then refer internal table to that types.
4) Define secondary indexes in the where condition properly.
5) Add BINARY SEARCH to read table statement.
6) if possible attach package size n to the select statement.
7) Avoid nested loops and nested selects.
8) After populating the final internal table free all the internal tables.
9) check how much time taking for each select statemnt through SY05.
Hope this helps you. reply for queries.
Regards,
Kumar. -
Problem in alv report coumn header in the background while using salv
Hi all,
now i am working on alv report for this i have used salv i mean oops alv ,So here i am facing one issue while executing the report in background
the report column headers are not displaying properly as it is displaying in front end.
In the back ground it is always displaying column header as data element field label short text. i have written a code to pick the long text
but it is working fine if run the report in the frontend where as in the backgroiund it is always displaying short text but it is wrong.
here i am attaching the output screen shots in front end and background.Hi Satish,
I have tried this scenario with Reuse ALV grid 1st i found the same issue as u said in background job,
then i set in field catalog as,
wa_fcat-ddictxt = 'L'. Now its working fine. L stands for long text.
Before...
After...
For LVC u can try the below fields in fieldcatlog.
COLDDICTXT = 'L'.
SELDDICTXT = 'L' -
Importing problems in alv report (stored versions)
HI ALL, i have;
DATA gt_results TYPE sp_data_type OCCURS 0 WITH HEADER LINE .
FORM X .
EXPORT gt_results TO DATABASE sp_ver_dat ID INDXKEY.
ENDFORM .
FORM Y .
IMPORT gt_results FROM DATABASE sp_ver_dat ID INDXKEY.
ENDFORM .
I coded this for storing alv datas as a version . Suppose i executed "form x" in 2008. After 1 year later, i would like to see this 2008 record. But my internal table type (sp_data_type) was changed (This change is obligatory). In example new 2 fields were added and 1 field was deleted. In spite of this, i have an error when i am attempting to run "form y" because clustered data in database does not fit gt_results anymore.
How can i run such old stored versions of this alv report? How should i design this subroutines so there will be no problems even if internal table type frequently change in future..?
I am expecitng your suggestions..
Thanks..I think this is good solution for the versions which we will be created . Unfortunately there is no way to save (excute) old versions in which structure of internal table has changed many times. We have to handle them manually..
It means, we can save future but not past..
ISN'T IT?
Thanks all -
Hi all,
I have a Problem with the ALV report felated to FI Data. Where in the Selection screen I have two fields Commitment Item, Fund Center and Fiscal Year. When i am executing the report it is printing correctly.
The Problem is that when i give a commitment which is not related to the Fund Center It is displaying all the records.
That is nothing but it is displaying all the data where the data of the selection screen is not in the internal table.
instead i should display a message that the Commitment item is not related to Fund Center. and the ALV Should not print any values. How do i achieve this?
Please help me in solving the problem. Rewards will be awarded.
Message was edited by:
sravan varanasiHi,
Here is a small ex.
SELECT mtart mtbez FROM t134t
INTO CORRESPONDING FIELDS OF TABLE it_t134t
WHERE mtart IN so_mtart AND spras = 'EN'.
IF sy-subrc = 0.
*********PERFORM display
ELSE.
MESSAGE ID 'Selection error' TYPE 'E' NUMBER '0040'.
ENDIF.
Hope useful.
Regards
Harish. -
ALV report using the field catalog
which is the quickest way to generate an ALV report using the field catalog merge. without needing to build the field catalog manually .
is it easier to create a structure and passe it in the field catalog merge . if yes can i have an example plzzzzhI
Supports the creation of the field catalog for the ALV function modules
based either on a structure or table defined in the ABAP Data
Dictionary, or a program-internal table.
The program-internal table must either be in a TOP Include or its
Include must be specified explicitly in the interface.
The variant based on a program-internal table should only be used for
rapid prototyping since the following restrictions apply:
o Performance is affected since the code of the table definition must
always be read and interpreted at runtime.
o Dictionary references are only considered if the keywords LIKE or
INCLUDE STRUCTURE (not TYPE) are used.
If the field catalog contains more than 90 fields, the first 90 fields
are output in the list by default whereas the remaining fields are only
available in the field selection.
If the field catalog is passed with values, they are merged with the
'automatically' found information.
Below is an example ABAP program which will populate a simple internal table(it_ekpo) with data and
display it using the basic ALV grid functionality(including column total). The example details the main
sections of coding required to implement the ALV grid functionality:
Data declaration
Data retrieval
Build fieldcatalog
Build layout setup
*& Report ZDEMO_ALVGRID *
*& Example of a simple ALV Grid Report *
*& The basic requirement for this demo is to display a number of *
*& fields from the EKKO table. *
REPORT zdemo_alvgrid .
TABLES: ekko.
type-pools: slis. "ALV Declarations
*Data Declaration
TYPES: BEGIN OF t_ekko,
ebeln TYPE ekpo-ebeln,
ebelp TYPE ekpo-ebelp,
statu TYPE ekpo-statu,
aedat TYPE ekpo-aedat,
matnr TYPE ekpo-matnr,
menge TYPE ekpo-menge,
meins TYPE ekpo-meins,
netpr TYPE ekpo-netpr,
peinh TYPE ekpo-peinh,
END OF t_ekko.
DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
wa_ekko TYPE t_ekko.
*ALV data declarations
data: fieldcatalog type slis_t_fieldcat_alv with header line,
gd_tab_group type slis_t_sp_group_alv,
gd_layout type slis_layout_alv,
gd_repid like sy-repid.
*Start-of-selection.
START-OF-SELECTION.
perform data_retrieval.
perform build_fieldcatalog.
perform build_layout.
perform display_alv_report.
*& Form BUILD_FIELDCATALOG
* Build Fieldcatalog for ALV Report
form build_fieldcatalog.
* There are a number of ways to create a fieldcat.
* For the purpose of this example i will build the fieldcatalog manualy
* by populating the internal table fields individually and then
* appending the rows. This method can be the most time consuming but can
* also allow you more control of the final product.
* Beware though, you need to ensure that all fields required are
* populated. When using some of functionality available via ALV, such as
* total. You may need to provide more information than if you were
* simply displaying the result
* I.e. Field type may be required in-order for
* the 'TOTAL' function to work.
fieldcatalog-fieldname = 'EBELN'.
fieldcatalog-seltext_m = 'Purchase Order'.
fieldcatalog-col_pos = 0.
fieldcatalog-outputlen = 10.
fieldcatalog-emphasize = 'X'.
fieldcatalog-key = 'X'.
* fieldcatalog-do_sum = 'X'.
* fieldcatalog-no_zero = 'X'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'EBELP'.
fieldcatalog-seltext_m = 'PO Item'.
fieldcatalog-col_pos = 1.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'STATU'.
fieldcatalog-seltext_m = 'Status'.
fieldcatalog-col_pos = 2.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'AEDAT'.
fieldcatalog-seltext_m = 'Item change date'.
fieldcatalog-col_pos = 3.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'MATNR'.
fieldcatalog-seltext_m = 'Material Number'.
fieldcatalog-col_pos = 4.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'MENGE'.
fieldcatalog-seltext_m = 'PO quantity'.
fieldcatalog-col_pos = 5.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'MEINS'.
fieldcatalog-seltext_m = 'Order Unit'.
fieldcatalog-col_pos = 6.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'NETPR'.
fieldcatalog-seltext_m = 'Net Price'.
fieldcatalog-col_pos = 7.
fieldcatalog-outputlen = 15.
fieldcatalog-do_sum = 'X'. "Display column total
fieldcatalog-datatype = 'CURR'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'PEINH'.
fieldcatalog-seltext_m = 'Price Unit'.
fieldcatalog-col_pos = 8.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
endform. " BUILD_FIELDCATALOG
*& Form BUILD_LAYOUT
* Build layout for ALV grid report
form build_layout.
gd_layout-no_input = 'X'.
gd_layout-colwidth_optimize = 'X'.
gd_layout-totals_text = 'Totals'(201).
* gd_layout-totals_only = 'X'.
* gd_layout-f2code = 'DISP'. "Sets fcode for when double
* "click(press f2)
* gd_layout-zebra = 'X'.
* gd_layout-group_change_edit = 'X'.
* gd_layout-header_text = 'helllllo'.
endform. " BUILD_LAYOUT
*& Form DISPLAY_ALV_REPORT
* Display report using ALV grid
form display_alv_report.
gd_repid = sy-repid.
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
i_callback_program = gd_repid
* i_callback_top_of_page = 'TOP-OF-PAGE' "see FORM
* i_callback_user_command = 'USER_COMMAND'
* i_grid_title = outtext
is_layout = gd_layout
it_fieldcat = fieldcatalog[]
* it_special_groups = gd_tabgroup
* IT_EVENTS = GT_XEVENTS
i_save = 'X'
* is_variant = z_template
tables
t_outtab = it_ekko
exceptions
program_error = 1
others = 2.
if sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
endif.
endform. " DISPLAY_ALV_REPORT
*& Form DATA_RETRIEVAL
* Retrieve data form EKPO table and populate itab it_ekko
form data_retrieval.
select ebeln ebelp statu aedat matnr menge meins netpr peinh
up to 10 rows
from ekpo
into table it_ekko.
endform. " DATA_RETRIEVAL -
Hi friends,
i have created alv report .no problem of getting output . but i m getting question mark in the standard menu. it is displaying 10 question mark (sub menu has print preview etc), edit ,question marks(ABC Analysis) ,question marks (abap list viewer etc ), settings ,system , help.
i don't want these question marks. how to candle this.i haven't moved to test or production , but iwant to know in development why it is coming..
if any one knows please let me know.
thanks and regards,
kani.The Problem is with some GUI inconsistency.
to overcome there are 2 solutions.
1. You need to run a program Which i don't remember exactly.
2. Using the Status event.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = sy-repid
it_fieldcat = it_fieldcat
I_CALLBACK_PF_STATUS_SET = 'STATUS' "important
it_sort = it_sort
TABLES
t_outtab = it_data
EXCEPTIONS
program_error = 1.
form status using extab tyoe slis_t_extab.
"This status you can set using the program SAPLKKBL
" go to se41 transaction, enter the program name SAPLKKBL
"status as STANDARD , and click the Button Copy status
"Now in the popup for Option to enter your program name and
"press ok, then save and activate the status
"now come here and activate the code and test now..
set pf-status 'STANDARD' excluding extab.
endform. -
Problem in Print Out of ALV report
Dear All..
I am trying to take print out of an ALV report. there are 36 columns in my report. when i try to take print out, warning appears which says system cannot print the last 277 columns of report.
i have tried using different formats for printer like :
Format Description
X_PAPER ABAP/4 list: Default list formatting
X_SPOOLERR ABAP list: Spooler problem report
ZX_65_284 65 Rows and 285 Columns
X_65_255 ABAP/4 list: At least 65 rows with a maximum number of c
X_65_200 ABAP list: at least 65 lines with 200 columns (not for a
X_58_170 ABAP/4 list: At least 58 rows by 170 columns
X_65_132 ABAP list: At least 65 rows by 132 columns
X_90_120 ABAP list: At least 90 rows by 120 columns
X_44_120 ABAP/4 list: At least 44 rows by 120 columns
X_65_80 ABAP/4 list: At least 65 rows by 80 columns
but every time the same message appears even on A3 size paper..
i am using REUSE_ALV_GRID_DISPLAY to display ALV.
Please help to to take out prints(can be in condensed mode) so that all columns appear on the print out..HI sujeet,
Thanks for ur response. i had already checked the printer settings.. i think there is no problem with this. Can u Please suggest something else. thanks
Hiii jyojit..
Thanks for reply. I had already checked the said check box in spool admin. but the problem still exists. Please suggest something to get rid of the problem.
Maybe you are looking for
-
Merge two separate apple IDs?
I have just realised I have two apple IDs for two separate email addresses. Since one of these email accounts is no longer even active, can I merge the records of the one with that which I still use on a regular basis?
-
GCU trade in - no 10% bonus
I have had 3 trade ins recently where I did not receive my GCU 10% bonus or any of my reward zone points. I have been told my GCU has expired or been assured the 10% bonus does not apply. It is such a pain to do trade ins in store with employees who
-
What to write query to get know if a checkbox is checked
hello, I have created a checkbox with name Entertainment containing static values Movie,Play,music. Now i have to write query to check which value of checkbox is checked ,means play or movie or music. According to that i have to mail a particular lin
-
FPCJ Cash & Check Payment.
Hi Can any one tell me that in FPCJ we are using cash payment and check payment. It means can we make incoming and outgoing check payment through FPCJ. If, yes can we generate check print out in case of outgoing check payment. Thanks Ram.
-
What controls the icon size on the toolbars in Crystal 2008?
Is there any way to change the size of the icons on the toolbars in Crystal 2008 other than changing the screen resolution? I would like the icons to be larger without changing everything else that I work with.