cancel
Showing results for 
Search instead for 
Did you mean: 

Problem in Expand when using Blocked ALV list

0 Kudos

Hi All,

I am using the Blocked list ALV to display two lists in a program. One among them is a hierarchial ALV. When i click on the Expand button of this ALV it terminates with the runtime error "GETWA_NOT_ASSIGNED".

I was able to use this functionality using similar code in a stand alone hierarchial ALV list in another program without any problem.

I have assigned the Expand Field name as follows in both programs:

wa_layout-expand_fieldname = 'EXPAND'

Any suggestions or help in this would be highly appreciated.

Thanks & Reagrds,

Praveen

Accepted Solutions (1)

Accepted Solutions (1)

former_member188685
Active Contributor
0 Kudos

1. do you have field(say EXPAND(1) ) in your header tab for expand of 1 char.

2. layout-expand_fieldname = 'EXPAND'. "the same you should mention here

3. need to build the fieldcat for that field also,

Regards

vijay

former_member188685
Active Contributor
0 Kudos

Forgot to mention while building the fieldcat you need to mention fieldcat-TECH = 'X' for that EXPAND field.

Regards

vijay

Answers (3)

Answers (3)

hymavathi_oruganti
Active Contributor
0 Kudos

make sure , the field name u r giving is a art of either structure or table

Former Member
0 Kudos

Hai Praveen

Check the following Code

&----


*& Report ZALV_BLOCKLIST *

*& *

&----


*& *

*& *

&----


REPORT ZALV_BLOCKLIST NO STANDARD PAGE HEADING

LINE-SIZE 150

LINE-COUNT 60(4)

MESSAGE-ID Z00.

*..Type Definitions for ALV Report

TYPE-POOLS SLIS.

*..Includes

*for ICONs

*INCLUDE <ICON>.

----


  • Table/Structure declarations. *

----


TABLES: MARA,

MARC,

T134.

----


  • Internal Tables declaration *

----


*..To store Basic Report fields

DATA:BEGIN OF IT_MARA OCCURS 0,

MATNR LIKE MARA-MATNR,

MTART LIKE MARA-MTART,

MATKL LIKE MARA-MATKL,

MEINS LIKE MARA-MEINS,

NTGEW LIKE MARA-NTGEW,

END OF IT_MARA.

*DATA:BEGIN OF IT_MATKL OCCURS 0,

  • MATKL LIKE T023-MATKL,

  • WGBEZ LIKE T023-WGBEZ,

  • END OF IT_MATKL.

DATA:BEGIN OF IT_MARC OCCURS 0,

WERKS LIKE MARC-WERKS,

LADGR LIKE MARC-LADGR,

MTVFP LIKE MARC-MTVFP,

DISPR LIKE MARC-DISPR,

DISMM LIKE MARC-DISMM,

DISPO LIKE MARC-DISPO,

END OF IT_MARC.

----


  • ALV Type declaration *

----


DATA:V_NO_DATA TYPE C.

----


  • ALV Type declaration *

----


DATA:V_REPID TYPE SYREPID.

DATA: IT_FIELDCATALOG_MARA TYPE SLIS_T_FIELDCAT_ALV,

WA_FIELDCATALOG_MARA TYPE SLIS_FIELDCAT_ALV,

IT_FIELDCATALOG_MARC TYPE SLIS_T_FIELDCAT_ALV,

WA_FIELDCATALOG_MARC TYPE SLIS_FIELDCAT_ALV,

IT_FIELDCATALOG_MATKL TYPE SLIS_T_FIELDCAT_ALV,

WA_FIELDCATALOG_MATKL TYPE SLIS_FIELDCAT_ALV,

WA_LAYOUT TYPE SLIS_LAYOUT_ALV,

IT_EVENTS TYPE SLIS_T_EVENT,

WA_EVENTS TYPE SLIS_ALV_EVENT,

WA_KEYINFO TYPE SLIS_KEYINFO_ALV.

----


  • Selection Screen. *

----


SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-H01.

SELECT-OPTIONS: S_MATNR FOR MARA-MATNR ,

S_MTART FOR MARA-MTART .

SELECTION-SCREEN END OF BLOCK B1.

----


  • Event:Initialization *

----


INITIALIZATION.

*Report Name

V_REPID = SY-REPID.

----


  • AT Selection Screen. *

----


AT SELECTION-SCREEN.

----


  • Event: Start-of-Selection *

----


START-OF-SELECTION.

PERFORM FETCH_DATA.

----


  • Event: End-of-Selection *

----


END-OF-SELECTION.

IF V_NO_DATA = ''.

MESSAGE I010 WITH 'NO DATA TO DISPLAY ! '.

EXIT.

ELSE.

PERFORM FILL_FIELDCAT_MARA.

  • PERFORM FILL_FIELDCAT_MAKT.

PERFORM FILL_FIELDCAT_MARC.

PERFORM FILL_LAYOUT.

PERFORM CALL_ALV_INIT.

PERFORM ADD_LISTS.

PERFORM DISPLAY_BLOCK_LIST.

ENDIF.

//////////////////////////////////////////////////////////////////////

*

  • FORM DEFINITIONS *

*

*//////////////////////////////////////////////////////////////////////

&----


*& Form FETCH_DATA

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM FETCH_DATA.

SELECT MATNR

MTART

MATKL

MEINS

NTGEW

INTO CORRESPONDING FIELDS OF TABLE IT_MARA

FROM MARA

WHERE MATNR IN S_MATNR

AND MTART IN S_MTART.

IF SY-SUBRC <> 0.

V_NO_DATA = ''.

ELSE.

V_NO_DATA = 'X'.

SELECT WERKS

LADGR

MTVFP

DISPR

DISMM

DISPO

INTO CORRESPONDING FIELDS OF TABLE IT_MARC

FROM MARC

WHERE MATNR IN S_MATNR.

ENDIF.

ENDFORM. " FETCH_DATA

*

&----


*& Form FILL_FIELDCAT_MARA

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM FILL_FIELDCAT_MARA.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

I_PROGRAM_NAME = V_REPID

  • I_INTERNAL_TABNAME =

I_STRUCTURE_NAME = 'IT_MARA'

  • I_CLIENT_NEVER_DISPLAY = 'X'

I_INCLNAME = V_REPID

  • I_BYPASSING_BUFFER =

  • I_BUFFER_ACTIVE =

CHANGING

CT_FIELDCAT = IT_FIELDCATALOG_MARA

EXCEPTIONS

INCONSISTENT_INTERFACE = 1

PROGRAM_ERROR = 2

OTHERS = 3

.

IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

LOOP AT IT_FIELDCATALOG_MARA INTO WA_FIELDCATALOG_MARA.

CASE WA_FIELDCATALOG_MARA-FIELDNAME.

WHEN 'MATNR'.

WA_FIELDCATALOG_MARA-COL_POS = '1'.

WA_FIELDCATALOG_MARA-OUTPUTLEN = '15'.

WA_FIELDCATALOG_MARA-SELTEXT_L = 'Material NO'.

WHEN 'MTART'.

WA_FIELDCATALOG_MARA-COL_POS = '2'.

WA_FIELDCATALOG_MARA-OUTPUTLEN = '15'.

WA_FIELDCATALOG_MARA-SELTEXT_L = 'Mat Type'.

WHEN 'MATKL'.

WA_FIELDCATALOG_MARA-COL_POS = '3'.

WA_FIELDCATALOG_MARA-OUTPUTLEN = '15'.

WA_FIELDCATALOG_MARA-SELTEXT_L = 'Mat Group'.

WHEN 'MEINS'.

WA_FIELDCATALOG_MARA-COL_POS = '4'.

WA_FIELDCATALOG_MARA-OUTPUTLEN = '15'.

WA_FIELDCATALOG_MARA-SELTEXT_L = 'Measure Unit'.

WHEN 'NTGEW'.

WA_FIELDCATALOG_MARA-COL_POS = '5'.

WA_FIELDCATALOG_MARA-OUTPUTLEN = '15'.

WA_FIELDCATALOG_MARA-SELTEXT_L = 'Net Wt'.

WA_FIELDCATALOG_MARA-DO_SUM = 'X'.

ENDCASE.

MODIFY IT_FIELDCATALOG_MARA FROM WA_FIELDCATALOG_MARA INDEX SY-TABIX.

ENDLOOP.

ENDFORM. " FILL_FIELDCAT_MARA

&----


*& Form FILL_FIELDCAT_MARC

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM FILL_FIELDCAT_MARC.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

I_PROGRAM_NAME = V_REPID

I_INTERNAL_TABNAME = 'IT_MARC'

  • I_STRUCTURE_NAME =

  • I_CLIENT_NEVER_DISPLAY = 'X'

I_INCLNAME = V_REPID

  • I_BYPASSING_BUFFER =

  • I_BUFFER_ACTIVE =

CHANGING

CT_FIELDCAT = IT_FIELDCATALOG_MARC

EXCEPTIONS

INCONSISTENT_INTERFACE = 1

PROGRAM_ERROR = 2

OTHERS = 3

.

IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

LOOP AT IT_FIELDCATALOG_MARC INTO WA_FIELDCATALOG_MARC.

CASE WA_FIELDCATALOG_MARC-FIELDNAME.

WHEN 'WERKS'.

WA_FIELDCATALOG_MARC-COL_POS = '1'.

WA_FIELDCATALOG_MARC-OUTPUTLEN = '15'.

WA_FIELDCATALOG_MARC-SELTEXT_L = 'PLANT NAME'.

WHEN 'LADGR'.

WA_FIELDCATALOG_MARC-COL_POS = '2'.

WA_FIELDCATALOG_MARC-OUTPUTLEN = '15'.

WA_FIELDCATALOG_MARC-SELTEXT_L = 'Loading Group'.

WHEN 'MTVFP'.

WA_FIELDCATALOG_MARC-COL_POS = '3'.

WA_FIELDCATALOG_MARC-OUTPUTLEN = '20'.

WA_FIELDCATALOG_MARC-SELTEXT_L = 'Checking group'.

WHEN 'DISPR'.

WA_FIELDCATALOG_MARC-COL_POS = '4'.

WA_FIELDCATALOG_MARC-OUTPUTLEN = '15'.

WA_FIELDCATALOG_MARC-SELTEXT_L = 'MRP PROFILE'.

WHEN 'DISMM'.

WA_FIELDCATALOG_MARC-COL_POS = '5'.

WA_FIELDCATALOG_MARC-OUTPUTLEN = '15'.

WA_FIELDCATALOG_MARC-SELTEXT_L = 'MRP TYPE'.

WHEN 'DISPO'.

WA_FIELDCATALOG_MARC-COL_POS = '6'.

WA_FIELDCATALOG_MARC-OUTPUTLEN = '15'.

WA_FIELDCATALOG_MARC-SELTEXT_L = 'MRP CONTROLLER'.

ENDCASE.

MODIFY IT_FIELDCATALOG_MARC FROM WA_FIELDCATALOG_MARC INDEX SY-TABIX.

ENDLOOP.

ENDFORM. " FILL_FIELDCAT_MARC

&----


*& Form FILL_FIELDCAT_MAKT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM FILL_FIELDCAT_MAKT.

ENDFORM. " FILL_FIELDCAT_MAKT

&----


*& Form CALL_ALV_INIT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM CALL_ALV_INIT.

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'

EXPORTING

I_CALLBACK_PROGRAM = V_REPID

  • I_CALLBACK_PF_STATUS_SET = ' '

  • I_CALLBACK_USER_COMMAND = ' '

  • IT_EXCLUDING =

.

ENDFORM. " CALL_ALV_INIT

&----


*& Form ADD_LISTS

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM ADD_LISTS.

*ADD IT_MARA TABLE TO THE OUTPUT

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'

EXPORTING

IS_LAYOUT = WA_LAYOUT

IT_FIELDCAT = IT_FIELDCATALOG_MARA

I_TABNAME = 'IT_MARA'

IT_EVENTS = IT_EVENTS

  • IT_SORT =

  • I_TEXT = ' '

TABLES

T_OUTTAB = IT_MARA

EXCEPTIONS

PROGRAM_ERROR = 1

MAXIMUM_OF_APPENDS_REACHED = 2

OTHERS = 3

.

IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

**ADD IT_MARC TABLE TO THE OUTPUT

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'

EXPORTING

IS_LAYOUT = WA_LAYOUT

IT_FIELDCAT = IT_FIELDCATALOG_MARC

I_TABNAME = 'IT_MARC'

IT_EVENTS = IT_EVENTS

  • IT_SORT =

  • I_TEXT = ' '

TABLES

T_OUTTAB = IT_MARC

  • EXCEPTIONS

  • PROGRAM_ERROR = 1

  • MAXIMUM_OF_APPENDS_REACHED = 2

  • OTHERS = 3

.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDFORM. " ADD_LISTS

&----


*& Form FILL_LAYOUT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM FILL_LAYOUT.

WA_LAYOUT-ZEBRA = 'X'.

WA_LAYOUT-TOTALS_TEXT = 'TOTAL'.

ENDFORM. " FILL_LAYOUT

&----


*& Form DISPLAY_BLOCK_LIST

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM DISPLAY_BLOCK_LIST.

  • WA_KEYINFO-HEADER01 = 'MATNR'.

  • WA_KEYINFO-ITEM01 = 'MATNR'.

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'

  • EXPORTING

  • I_INTERFACE_CHECK = ' '

  • IS_PRINT =

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

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

Thanks & regards

Sreenivasulu P

0 Kudos

I have tried all these but still not able to solve the problem.

Thanks & Regards,

Praveen

former_member188685
Active Contributor
0 Kudos

Hi Praveen,

check this code, if you still have the Problem..

<b>REPORT ztest_hier MESSAGE-ID zz.

TYPE-POOLS: slis.

*----------------------------------------------------------------------*
*Tables Declaration
*----------------------------------------------------------------------*
TABLES: vttk,
        vttp,
        vtts,
        likp,
        kna1,
        lips,
        vbak.

*----------------------------------------------------------------------*
*Parameters and Select-Options Declaration
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK block1 WITH FRAME TITLE text-001.
SELECTION-SCREEN PUSHBUTTON:/1(15)  s_ship USER-COMMAND ship,
                             52(25) s_detl USER-COMMAND detl.
SELECTION-SCREEN END OF BLOCK block1.

SELECTION-SCREEN BEGIN OF BLOCK block2 WITH FRAME TITLE text-004.
SELECT-OPTIONS: s_tknum FOR vttk-tknum,
                s_dplen FOR vttk-dplen,
                s_vsart FOR vttk-vsart,
                s_tplst FOR vttk-tplst,
                s_tdlnr FOR vttk-tdlnr,
                s_sold  FOR kna1-kunnr,
                s_kunnz FOR vtts-kunnz.
PARAMETERS: p_code(4) NO-DISPLAY.
SELECTION-SCREEN END OF BLOCK block2.

*----------------------------------------------------------------------*
*Data Delcaration
*----------------------------------------------------------------------*
DATA: zreturn,
      lines    TYPE i,
      btotal   TYPE i,
      btime    TYPE i,
      bpercent TYPE i.

DATA: BEGIN OF i_ship OCCURS 0,
      tknum LIKE vttk-tknum,
      tdlnr LIKE vttk-tdlnr,
      kunnz LIKE vtts-kunnz,
      dpten LIKE vtts-dpten,
      upten LIKE vtts-upten,
      daten LIKE vtts-daten,
      uaten LIKE vtts-uaten,
      tsrfo LIKE vtts-tsrfo,
      END   OF i_ship.

DATA: BEGIN OF i_bol OCCURS 0,
      tknum   LIKE vttk-tknum,
      zbolnr  LIKE vttp-zbolnr,
      zzlvtts LIKE vttp-zzlvtts,
      kunnr   LIKE vbak-kunnr,
      END   OF i_bol.

DATA: BEGIN OF i_adrc OCCURS 0,
      kunnr LIKE kna1-kunnr,
      ort01 LIKE kna1-ort01,
      regio LIKE kna1-regio,
      END   OF i_adrc.

DATA: BEGIN OF i_output OCCURS 0,
      tdlnr  LIKE vttk-tdlnr,
      tknum  LIKE vttk-tknum,
      zbolnr LIKE vttp-zbolnr,
      kunnr  LIKE vbak-kunnr,
      rort01 LIKE kna1-ort01,
      rregio LIKE kna1-regio,
      kunnz  LIKE vtts-kunnz,
      zort01 LIKE kna1-ort01,
      zregio LIKE kna1-regio,
      dpten  LIKE vtts-dpten,
      upten  LIKE vtts-upten,
      daten  LIKE vtts-daten,
      uaten  LIKE vtts-uaten,
      diff   LIKE vtts-uaten,
      END   OF i_output.


DATA: g_repid LIKE sy-repid,
      box,
      expand(1),
      is_layout        TYPE slis_layout_alv,
      ls_fieldcat      TYPE slis_t_fieldcat_alv,
      is_fieldcat      TYPE slis_fieldcat_alv,
      g_tabname_header TYPE slis_tabname,
      g_tabname_item   TYPE slis_tabname,
      i_variant        LIKE disvariant,
      e_variant        LIKE disvariant,
      gs_keyinfo       TYPE slis_keyinfo_alv.

DATA: BEGIN OF i_head OCCURS 0,
      tdlnr LIKE vttk-tdlnr,
      tknum LIKE vttk-tknum.
DATA      expand(1).
DATA: END OF i_head.

DATA: BEGIN OF i_item OCCURS 0,
      tdlnr  LIKE vttk-tdlnr,
      tknum  LIKE vttk-tknum,
      zbolnr LIKE vttp-zbolnr,
      kunnr  LIKE vbak-kunnr,
      rort01 LIKE kna1-ort01,
      rregio LIKE kna1-regio,
      kunnz  LIKE vtts-kunnz,
      zort01 LIKE kna1-ort01,
      zregio LIKE kna1-regio,
      dpten  LIKE vtts-dpten,
      upten  LIKE vtts-upten,
      daten  LIKE vtts-daten,
      uaten  LIKE vtts-uaten,
      diff   LIKE vtts-uaten,
      col(3),
      END OF i_item.

DATA: x_item LIKE i_item OCCURS 0 WITH HEADER LINE.



INITIALIZATION.

  s_ship = text-002.
  s_detl = text-003.
  g_repid          = sy-repid.
  g_tabname_header = 'I_HEAD'.
  g_tabname_item   = 'I_ITEM'.

*----------------------------------------------------------------------*
*AT Selection Screen Output Event
*----------------------------------------------------------------------*
AT SELECTION-SCREEN OUTPUT.

  IF zreturn NE 'X'.
    CLEAR p_code.
  ENDIF.

  CASE p_code.
    WHEN space.
      CLEAR:     s_tknum, s_vsart, s_tplst, s_tdlnr, s_sold,
                 s_kunnz, s_dplen.
      REFRESH: s_tknum, s_vsart, s_tplst, s_tdlnr, s_sold,
               s_kunnz, s_dplen.
      LOOP AT SCREEN.
        IF screen-name CS 'S_TKNUM' OR screen-name CS 'S_VSART' OR
           screen-name CS 'S_DPLEN' OR screen-name CS 'S_TPLST' OR
           screen-name CS 'S_TDLNR' OR screen-name CS 'S_SOLD'  OR
           screen-name CS 'S_KUNNZ'.
          screen-input = '0'.
          screen-invisible = '1'.
          MODIFY SCREEN.
        ENDIF.
      ENDLOOP.
    WHEN 'SHIP'.
      CLEAR:   s_vsart, s_tplst, s_tdlnr, s_sold, s_kunnz, s_dplen.
      REFRESH: s_vsart, s_tplst, s_tdlnr, s_sold, s_kunnz, s_dplen.
      LOOP AT SCREEN.
        IF screen-name CS 'S_VSART' OR screen-name CS 'S_DPLEN' OR
           screen-name CS 'S_TPLST' OR screen-name CS 'S_TDLNR' OR
           screen-name CS 'S_SOLD'  OR screen-name CS 'S_KUNNZ'.
          screen-input = '0'.
          screen-invisible = '1'.
          MODIFY SCREEN.
        ENDIF.
      ENDLOOP.
      SET CURSOR FIELD 'S_TKNUM'.
    WHEN 'DETL'.
      CLEAR:   s_tknum.
      REFRESH: s_tknum.
      LOOP AT SCREEN.
        IF screen-name CS 'S_TKNUM'.
          screen-input = '0'.
          screen-invisible = '1'.
          MODIFY SCREEN.
        ENDIF.
      ENDLOOP.
      SET CURSOR FIELD 'S_DPLEN'.
  ENDCASE.

*----------------------------------------------------------------------*
*AT Selection Screen Event
*----------------------------------------------------------------------*
AT SELECTION-SCREEN.

  IF sy-ucomm EQ 'SHIP'  OR
     sy-ucomm EQ 'DETL'.
    p_code = sy-ucomm.
    zreturn = 'X'.
    EXIT.
  ENDIF.

  IF p_code IS INITIAL.
    MESSAGE e001.
  ENDIF.

*  CASE p_code.
*    WHEN 'SHIP'.
*      IF s_tknum[] IS INITIAL.
*        MESSAGE e002.
*      ENDIF.
*      SET CURSOR FIELD 'S_TKNUM'.
*    WHEN 'DETL'.
*      IF s_dplen[] IS INITIAL.
*        MESSAGE e003.
*      ENDIF.
*      SET CURSOR FIELD 'S_DPLEN'.
*  ENDCASE.

*----------------------------------------------------------------------*
*Start-Of-Selection Event
*----------------------------------------------------------------------*
START-OF-SELECTION.

  CASE p_code.
    WHEN 'SHIP'.
      IF s_tknum[] IS INITIAL.
        MESSAGE e002.
        SET CURSOR FIELD 'S_TKNUM'.
      ELSE.
        PERFORM get_shipment_data.
      ENDIF.
    WHEN 'DETL'.
      IF s_dplen[] IS INITIAL.
        MESSAGE e003.
        SET CURSOR FIELD 'S_DPLEN'.
      ELSE.
        PERFORM get_ship_data.
      ENDIF.
  ENDCASE.

  is_layout-header_text      = 'HEADER'.
  is_layout-item_text        = 'ITEM'.
  is_layout-default_item     = ' '.
  is_layout-no_keyfix        = 'X'.
  is_layout-expand_fieldname = 'EXPAND'.
  is_layout-box_tabname      = g_tabname_item.
  is_layout-zebra            = 'X'.
  is_layout-info_fieldname   = 'COL'.

  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
       EXPORTING
            i_program_name         = g_repid
            i_internal_tabname     = g_tabname_header
            i_client_never_display = 'X'
            i_inclname             = g_repid
       CHANGING
            ct_fieldcat            = ls_fieldcat
       EXCEPTIONS
            inconsistent_interface = 1
            program_error          = 2
            OTHERS                 = 3.


  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
       EXPORTING
            i_program_name         = g_repid
            i_internal_tabname     = g_tabname_item
            i_client_never_display = 'X'
            i_inclname             = g_repid
       CHANGING
            ct_fieldcat            = ls_fieldcat
       EXCEPTIONS
            inconsistent_interface = 1
            program_error          = 2
            OTHERS                 = 3.

  is_fieldcat-tech = 'X'.
  MODIFY ls_fieldcat FROM is_fieldcat TRANSPORTING tech
                         WHERE tech = ' ' AND
                               ( fieldname = 'LIGHTS' OR
                                 fieldname = 'EXPAND' ).

  CLEAR is_fieldcat.
  READ TABLE ls_fieldcat INTO is_fieldcat
                        WITH KEY tabname   = 'I_HEAD'
                                 fieldname = 'TDLNR'.
  is_fieldcat-seltext_l = 'Forwarding Agent'.
  is_fieldcat-sp_group  = 'X'.
  is_fieldcat-ddictxt   = 'L'.
  is_fieldcat-col_pos   = '1'.
  MODIFY ls_fieldcat FROM is_fieldcat INDEX sy-tabix.

  CLEAR is_fieldcat.
  READ TABLE ls_fieldcat INTO is_fieldcat
                        WITH KEY tabname   = 'I_HEAD'
                                 fieldname = 'TKNUM'.
  is_fieldcat-seltext_l = 'Shipment'.
  is_fieldcat-sp_group  = 'X'.
  is_fieldcat-ddictxt   = 'L'.
  is_fieldcat-col_pos   = '2'.
  MODIFY ls_fieldcat FROM is_fieldcat INDEX sy-tabix.

  CLEAR is_fieldcat.
  READ TABLE ls_fieldcat INTO is_fieldcat
                        WITH KEY tabname   = 'I_ITEM'
                                 fieldname = 'TDLNR'.
  is_fieldcat-seltext_l = 'Forwarding Agent'.
  is_fieldcat-sp_group  = 'X'.
  is_fieldcat-ddictxt   = 'L'.
  is_fieldcat-no_out = 'X'.
  MODIFY ls_fieldcat FROM is_fieldcat INDEX sy-tabix.

  CLEAR is_fieldcat.
  READ TABLE ls_fieldcat INTO is_fieldcat
                        WITH KEY tabname   = 'I_ITEM'
                                 fieldname = 'TKNUM'.
  is_fieldcat-seltext_l = 'Shipment'.
  is_fieldcat-sp_group  = 'X'.
  is_fieldcat-ddictxt   = 'L'.
  is_fieldcat-no_out = 'X'.
  MODIFY ls_fieldcat FROM is_fieldcat INDEX sy-tabix.

  CLEAR is_fieldcat.
  READ TABLE ls_fieldcat INTO is_fieldcat
                        WITH KEY tabname   = 'I_ITEM'
                                 fieldname = 'ZBOLNR'.
  is_fieldcat-seltext_l = 'BOL'.
  is_fieldcat-sp_group  = 'X'.
  is_fieldcat-ddictxt   = 'L'.
  is_fieldcat-outputlen = 10.
  MODIFY ls_fieldcat FROM is_fieldcat INDEX sy-tabix.

  CLEAR is_fieldcat.
  READ TABLE ls_fieldcat INTO is_fieldcat
                        WITH KEY tabname   = 'I_ITEM'
                                 fieldname = 'KUNNR'.
  is_fieldcat-seltext_l = 'Sold To'.
  is_fieldcat-sp_group  = 'X'.
  is_fieldcat-ddictxt   = 'L'.
  is_fieldcat-outputlen = 10.
  MODIFY ls_fieldcat FROM is_fieldcat INDEX sy-tabix.

  CLEAR is_fieldcat.
  READ TABLE ls_fieldcat INTO is_fieldcat
                        WITH KEY tabname   = 'I_ITEM'
                                 fieldname = 'RORT01'.
  is_fieldcat-seltext_l = 'City'.
  is_fieldcat-sp_group  = 'X'.
  is_fieldcat-ddictxt   = 'L'.
  is_fieldcat-outputlen = 18.
  MODIFY ls_fieldcat FROM is_fieldcat INDEX sy-tabix.

  CLEAR is_fieldcat.
  READ TABLE ls_fieldcat INTO is_fieldcat
                        WITH KEY tabname   = 'I_ITEM'
                                 fieldname = 'RREGIO'.
  is_fieldcat-seltext_l = 'Region'.
  is_fieldcat-sp_group  = 'X'.
  is_fieldcat-ddictxt   = 'L'.
  is_fieldcat-outputlen = 5.
  MODIFY ls_fieldcat FROM is_fieldcat INDEX sy-tabix.

  CLEAR is_fieldcat.
  READ TABLE ls_fieldcat INTO is_fieldcat
                        WITH KEY tabname   = 'I_ITEM'
                                 fieldname = 'KUNNZ'.
  is_fieldcat-seltext_l = 'Ship To'.
  is_fieldcat-sp_group  = 'X'.
  is_fieldcat-ddictxt   = 'L'.
  is_fieldcat-outputlen = 10.
  MODIFY ls_fieldcat FROM is_fieldcat INDEX sy-tabix.

  CLEAR is_fieldcat.
  READ TABLE ls_fieldcat INTO is_fieldcat
                        WITH KEY tabname   = 'I_ITEM'
                                 fieldname = 'ZORT01'.
  is_fieldcat-seltext_l = 'City'.
  is_fieldcat-sp_group  = 'X'.
  is_fieldcat-ddictxt   = 'L'.
  is_fieldcat-outputlen = 18.
  MODIFY ls_fieldcat FROM is_fieldcat INDEX sy-tabix.

  CLEAR is_fieldcat.
  READ TABLE ls_fieldcat INTO is_fieldcat
                         WITH KEY tabname   = 'I_ITEM'
                                  fieldname = 'ZREGIO'.
  is_fieldcat-seltext_l = 'Region'.
  is_fieldcat-sp_group  = 'X'.
  is_fieldcat-ddictxt   = 'L'.
  is_fieldcat-outputlen = 5.
  MODIFY ls_fieldcat FROM is_fieldcat INDEX sy-tabix.

  CLEAR is_fieldcat.
  READ TABLE ls_fieldcat INTO is_fieldcat
                         WITH KEY tabname   = 'I_ITEM'
                                  fieldname = 'DPTEN'.
  is_fieldcat-seltext_l = 'Pld Date'.
  is_fieldcat-sp_group  = 'X'.
  is_fieldcat-ddictxt   = 'L'.
  MODIFY ls_fieldcat FROM is_fieldcat INDEX sy-tabix.

  CLEAR is_fieldcat.
  READ TABLE ls_fieldcat INTO is_fieldcat
                         WITH KEY tabname   = 'I_ITEM'
                                  fieldname = 'UPTEN'.
  is_fieldcat-seltext_l = 'Pld Time'.
  is_fieldcat-sp_group  = 'X'.
  is_fieldcat-ddictxt   = 'L'.
  MODIFY ls_fieldcat FROM is_fieldcat INDEX sy-tabix.

  CLEAR is_fieldcat.
  READ TABLE ls_fieldcat INTO is_fieldcat
                         WITH KEY tabname   = 'I_ITEM'
                                  fieldname = 'DATEN'.
  is_fieldcat-seltext_l = 'Act Date'.
  is_fieldcat-sp_group  = 'X'.
  is_fieldcat-ddictxt   = 'L'.
  MODIFY ls_fieldcat FROM is_fieldcat INDEX sy-tabix.

  CLEAR is_fieldcat.
  READ TABLE ls_fieldcat INTO is_fieldcat
                         WITH KEY tabname   = 'I_ITEM'
                                  fieldname = 'UATEN'.
  is_fieldcat-seltext_l = 'Act Time'.
  is_fieldcat-sp_group  = 'X'.
  is_fieldcat-ddictxt   = 'L'.
  MODIFY ls_fieldcat FROM is_fieldcat INDEX sy-tabix.

  CLEAR is_fieldcat.
  READ TABLE ls_fieldcat INTO is_fieldcat
                         WITH KEY tabname   = 'I_ITEM'
                                  fieldname = 'DIFF'.
  is_fieldcat-seltext_l = 'Diff'.
  is_fieldcat-sp_group  = 'X'.
  is_fieldcat-ddictxt   = 'L'.
  MODIFY ls_fieldcat FROM is_fieldcat INDEX sy-tabix.

  i_variant-report = sy-repid.
  i_variant-username = sy-uname.

  gs_keyinfo-header01 = 'TDLNR'.
  gs_keyinfo-header02 = 'TKNUM'.

  gs_keyinfo-item01   = 'TDLNR'.
  gs_keyinfo-item02   = 'TKNUM'.

  CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
       EXPORTING
            i_callback_program       = g_repid
            is_layout                = is_layout
            it_fieldcat              = ls_fieldcat[]
            i_tabname_header         = g_tabname_header
            i_tabname_item           = g_tabname_item
            i_callback_pf_status_set = 'LOCAL_PF_STATUS'
*            i_callback_user_command  = 'USER_COMMAND'
            is_variant               = i_variant
            i_save                   = 'A'
            is_keyinfo               = gs_keyinfo
       TABLES
            t_outtab_header          = i_head
            t_outtab_item            = i_item
       EXCEPTIONS
            program_error            = 1
            OTHERS                   = 2.

*&---------------------------------------------------------------------*
*&      Form  GET_SHIPMENT_DATA
*&---------------------------------------------------------------------*

FORM local_pf_status USING extab TYPE slis_t_extab.

  SET PF-STATUS 'STANDARD' EXCLUDING  extab.

ENDFORM.                    " LOCAL_PF_STATUS


*&---------------------------------------------------------------------*
*&      Form  GET_SHIPMENT_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM get_shipment_data.

  CLEAR: i_ship, i_bol, lines.
  REFRESH: i_ship, i_bol.

  SELECT * INTO CORRESPONDING FIELDS OF TABLE i_ship
           FROM vttk AS a JOIN vtts AS b
             ON a~tknum EQ b~tknum
          WHERE a~tknum IN s_tknum.

  DESCRIBE TABLE i_ship LINES lines.
  IF lines IS INITIAL.
    EXIT.
  ELSE.
    SELECT DISTINCT tknum zzlvtts zbolnr
             INTO CORRESPONDING FIELDS OF TABLE i_bol
             FROM vttp
             FOR  ALL ENTRIES IN i_ship
            WHERE tknum   EQ i_ship-tknum
              AND zzlvtts EQ i_ship-tsrfo.
    LOOP AT i_bol.
      IF i_bol-tknum EQ i_bol-zbolnr(10).
        SELECT SINGLE vbeln INTO vttp-vbeln FROM vttp
                           WHERE tknum   EQ i_bol-tknum
                             AND zzlvtts EQ i_bol-zzlvtts.
        CLEAR i_bol-zbolnr.
        i_bol-zbolnr = vttp-vbeln.
        SELECT SINGLE vgbel INTO lips-vgbel FROM lips
                           WHERE vbeln EQ i_bol-zbolnr.
        IF sy-subrc EQ 0.
          SELECT SINGLE kunnr INTO i_bol-kunnr FROM vbak
                             WHERE vbeln EQ lips-vgbel.
          MODIFY i_bol TRANSPORTING kunnr.
        ENDIF.
      ELSE.
        i_bol-zbolnr = vttp-vbeln.
        SELECT SINGLE vgbel INTO lips-vgbel FROM lips
                           WHERE vbeln EQ i_bol-zbolnr.
        IF sy-subrc EQ 0.
          SELECT SINGLE kunnr INTO i_bol-kunnr FROM vbak
                             WHERE vbeln EQ lips-vgbel.
          MODIFY i_bol TRANSPORTING kunnr.
        ENDIF.
      ENDIF.
      CLEAR: lips, i_bol.
    ENDLOOP.
    SELECT * APPENDING CORRESPONDING FIELDS OF TABLE i_adrc
             FROM kna1
              FOR ALL ENTRIES IN i_ship
            WHERE kunnr EQ i_ship-kunnz.

    SELECT * APPENDING CORRESPONDING FIELDS OF TABLE i_adrc
             FROM kna1
              FOR ALL ENTRIES IN i_bol
            WHERE kunnr EQ i_bol-kunnr.
    CLEAR: i_ship, i_bol, i_adrc, i_output.
    REFRESH i_output.

    LOOP AT i_ship.
      READ TABLE i_bol WITH KEY tknum = i_ship-tknum
                                zzlvtts = i_ship-tsrfo.
      READ TABLE i_adrc WITH KEY kunnr = i_ship-kunnz.
      MOVE-CORRESPONDING: i_ship TO i_output.
      MOVE: i_bol-zbolnr  TO i_output-zbolnr,
            i_bol-kunnr   TO i_output-kunnr.
      MOVE: i_adrc-regio TO i_output-zregio,
            i_adrc-ort01 TO i_output-zort01.
      READ TABLE i_adrc WITH KEY kunnr = i_bol-kunnr.
      MOVE: i_adrc-regio TO i_output-rregio,
            i_adrc-ort01 TO i_output-rort01.
      APPEND i_output.
      CLEAR: i_ship, i_bol, i_adrc, i_output.
    ENDLOOP.
    SORT i_output BY tdlnr.

    CLEAR: btotal, btime, bpercent.

    LOOP AT i_output.

      AT NEW tknum.
*        WRITE:/ i_output-tdlnr, i_output-tknum.
        i_head-tdlnr = i_output-tdlnr.
        i_head-tknum = i_output-tknum.
        APPEND i_head.
      ENDAT.

      AT NEW tknum.
*        WRITE:/ i_output-tknum.
      ENDAT.

*      WRITE:/ i_output-zbolnr, i_output-kunnr, i_output-rort01,
*              i_output-rregio, i_output-kunnz, i_output-zort01,
*              i_output-zregio, i_output-dpten, i_output-upten,
*              i_output-daten,  i_output-uaten, i_output-diff.
      MOVE-CORRESPONDING i_output TO i_item.
      APPEND i_item.

      btotal = btotal + 1.
      IF i_output-diff IS INITIAL.
        btime = btime + 1.
      ENDIF.

*      AT END OF tknum.
**        ULINE.
*      ENDAT.

      AT END OF tknum.
        CLEAR i_output.
        bpercent = ( btime / btotal ) * 100.
        i_output-tdlnr = i_item-tdlnr.
        i_output-tknum = i_item-tknum.
        CLEAR i_item.
        i_item-tdlnr = i_output-tdlnr.
        i_item-tknum = i_output-tknum.
        i_item-zbolnr = 'Summary'.
        i_item-kunnr = btotal.
        i_item-rort01 = btime.
        i_item-rregio = bpercent.
        i_item-col    = 'C31'.
        APPEND i_item.
*        WRITE:/ i_output-tdlnr, text-005, btotal, btime, bpercent.
        CLEAR: btotal, btime, bpercent.
*        ULINE.
      ENDAT.

      CLEAR: i_output, i_item, i_head.
    ENDLOOP.

  ENDIF.

ENDFORM.                    " GET_SHIPMENT_DATA

*&---------------------------------------------------------------------*
*&      Form  GET_SHIP_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM get_ship_data.

  CLEAR: i_ship, i_bol, lines.
  REFRESH: i_ship, i_bol.

  SELECT * INTO CORRESPONDING FIELDS OF TABLE i_ship
           FROM vttk AS a JOIN vtts AS b
             ON a~tknum EQ b~tknum
          WHERE a~dplen IN s_dplen
            AND a~tdlnr IN s_tdlnr
            AND a~tplst IN s_tplst
            AND a~vsart IN s_vsart
            AND b~kunnz IN s_kunnz.

  DESCRIBE TABLE i_ship LINES lines.
  IF lines IS INITIAL.
    EXIT.
  ENDIF.

ENDFORM.                    " GET_SHIP_DATA</b>

Regards

vijay

Message was edited by: Vijay Babu Dudla