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

  • Alv report problem

    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

  • Problem in ALV report

    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.

  • Alv report Print out Problem

    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 M

    while 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

  • Problem Saving ALV Report

    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.
    Thanks

    Ok 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,
    Mallik

    Hi 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

  • Problems in ALV Report

    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 varanasi

    Hi,
    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 plzzzz

    hI
    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

  • Problem in alv report output

    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.