Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

ALV report - User Command

Former Member
0 Likes
1,320

Hi,

I am doing a alv report using user command, It is going to dump. It is giving me the error "Field symbol has not yet been assigned". Below is my code.

&----


*& Report ZTEST07

*&

&----


*&

*&

&----


REPORT ZTEST07 NO STANDARD PAGE HEADING LINE-SIZE 650

.

TYPE-POOLS : SLIS.

TABLES : BSEG.

TYPES : BEGIN OF I_BSEG,

BELNR LIKE BSEG-BELNR,

BUKRS LIKE BSEG-BUKRS,

GJAHR LIKE BSEG-GJAHR,

END OF I_BSEG.

  • Internal table for bseg first primary alv report.

DATA : IT_BSEG TYPE STANDARD TABLE OF I_BSEG INITIAL SIZE 0,

WA_BSEG TYPE I_BSEG.

TYPES : BEGIN OF I_BSEG1,

BELNR LIKE BSEG-BELNR,

DMBTR LIKE BSEG-DMBTR,

END OF I_BSEG1.

DATA : IT_BSEG1 TYPE STANDARD TABLE OF I_BSEG1 INITIAL SIZE 0,

WA_BSEG1 TYPE I_BSEG1.

*variable for report Id.

DATA : V_REPID LIKE SY-REPID.

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 command or set pf status will

*be defined.

DATA : V_EVENTS TYPE SLIS_T_EVENT,

WA_EVENT TYPE SLIS_ALV_EVENT.

*declaration 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.

  • Title displayed when the alv list is displayed

DATA : I_TITLE_BSEG1 TYPE LVC_TITLE VALUE 'First List Displayed'.

DATA : I_TITLE_BSEG2 TYPE LVC_TITLE VALUE 'Second 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

&----


  • text

----


FORM BUILD_FIELDCATLOG.

WA_FIELDCAT-TABNAME = 'it_bseg'.

WA_FIELDCAT-FIELDNAME = 'belnr'.

WA_FIELDCAT-SELTEXT_M = 'Doc Number'.

APPEND WA_FIELDCAT TO I_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'it_bseg'.

WA_FIELDCAT-FIELDNAME = 'bukrs'.

WA_FIELDCAT-SELTEXT_M = 'Company Code'.

APPEND WA_FIELDCAT TO I_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'it_bseg'.

WA_FIELDCAT-FIELDNAME = 'gjahr'.

WA_FIELDCAT-SELTEXT_M = 'Fiscal Year'.

APPEND WA_FIELDCAT TO I_FIELDCAT.

CLEAR WA_FIELDCAT.

ENDFORM. "build_fieldcatlog

&----


*& Form event_call

&----


  • text

----


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

&----


  • text

----


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

&----


  • text

----


FORM DATA_RETRIEVAL.

SELECT BELNR BUKRS GJAHR UP TO 10 ROWS FROM BSEG INTO TABLE IT_BSEG.

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 PRG'.

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_USER_COMMAND = 'USER_COMMAND'

I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'

I_GRID_TITLE = I_TITLE_BSEG1

IT_FIELDCAT = I_FIELDCAT[]

I_SAVE = 'A'

IT_EVENTS = V_EVENTS

TABLES

T_OUTTAB = IT_BSEG

  • 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 =

  • I_ALV_FORM =

.

ENDFORM. "TOP_OF_PAGE

&----


*& Form USER_COMMAND

&----


  • text

----


  • -->R_UCOMM text

----


FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM RS_SELFIELD TYPE SLIS_SELFIELD.

CASE R_UCOMM.

WHEN '&IC1'.

READ TABLE IT_BSEG INTO WA_BSEG INDEX RS_SELFIELD-TABINDEX.

PERFORM BUILD_FIELDCATLOG_BSEG1.

PERFORM EVENT_CALL_BSEG1.

PERFORM POPULATE_EVENT_BSEG1.

PERFORM DATA_RETRIEVAL_BSEG1.

PERFORM BUILD_LISTHEADER_BSEG1 USING IT_LISTHEADER.

PERFORM DISPLAY_ALV_BSEG1.

ENDCASE.

ENDFORM. "USER_COMMAND

&----


*& Form BUILD_FIELDCATLOG_BSEG1

&----


  • text

----


FORM BUILD_FIELDCATLOG_BSEG1.

WA_FIELDCAT-TABNAME = 'it_bseg1'.

WA_FIELDCAT-FIELDNAME = 'belnr'.

WA_FIELDCAT-SELTEXT_M = 'Doc Number'.

APPEND WA_FIELDCAT TO I_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'it_bseg1'.

WA_FIELDCAT-FIELDNAME = 'belnr'.

WA_FIELDCAT-SELTEXT_M = 'Doc Number'.

APPEND WA_FIELDCAT TO I_FIELDCAT.

CLEAR WA_FIELDCAT.

ENDFORM. "BUILD_FIELDCATLOG_BSEG1

&----


*& Form EVENT_CALL_BSEG1

&----


  • text

----


FORM EVENT_CALL_BSEG1.

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_BSEG1

&----


*& Form POPULATE_EVENT_BSEG1

&----


  • text

----


FORM POPULATE_EVENT_BSEG1.

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_BSEG1

&----


*& Form F_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 =

  • I_ALV_FORM =

.

ENDFORM. "F_TOP_OF_PAGE

&----


*& Form DATA_RETRIEVAL_BSEG1

&----


  • text

----


FORM DATA_RETRIEVAL_BSEG1.

SELECT BELNR DMBTR FROM BSEG INTO TABLE IT_BSEG1.

ENDFORM. "DATA_RETRIEVAL_BSEG1

&----


*& Form BUILD_LISTHEADER_BSEG1

&----


  • text

----


  • -->I_LISTHEADEtext

----


FORM BUILD_LISTHEADER_BSEG1 USING I_LISTHEADER TYPE SLIS_T_LISTHEADER.

DATA : HLINE1 TYPE SLIS_LISTHEADER.

HLINE1-TYP = 'H'.

HLINE1-INFO = 'CHECKING PRG'.

ENDFORM. "BUILD_LISTHEADER_BSEG1

&----


*& Form DISPLAY_ALV_BSEG1

&----


  • text

----


FORM DISPLAY_ALV_BSEG1.

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 = ' '

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_BSEG2

  • I_GRID_SETTINGS =

  • IS_LAYOUT =

IT_FIELDCAT = I_FIELDCAT[]

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

  • IT_SORT =

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_DEFAULT = 'X'

I_SAVE = 'A'

  • IS_VARIANT =

IT_EVENTS = V_EVENTS

  • IT_EVENT_EXIT =

  • IS_PRINT =

  • IS_REPREP_ID =

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • I_HTML_HEIGHT_TOP = 0

  • I_HTML_HEIGHT_END = 0

  • IT_ALV_GRAPHICS =

  • IT_HYPERLINK =

  • IT_ADD_FIELDCAT =

  • IT_EXCEPT_QINFO =

  • IR_SALV_FULLSCREEN_ADAPTER =

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

TABLES

T_OUTTAB = IT_BSEG1

  • 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_BSEG1

Please help me out.

Thanks,

Pavan.

11 REPLIES 11
Read only

Former Member
0 Likes
1,217

hi Pavan

Change the Bolded ones in to caps and give a try

<b>WA_FIELDCAT-TABNAME = 'IT_BSEG'.

WA_FIELDCAT-FIELDNAME = 'BELNR'.</b>

<b>WA_FIELDCAT-SELTEXT_M = 'DOC NUMBER'.</b>

APPEND WA_FIELDCAT TO I_FIELDCAT.

CLEAR WA_FIELDCAT.

<b>WA_FIELDCAT-TABNAME = 'IT_BSEG'.

WA_FIELDCAT-FIELDNAME = 'BUKRS'.</b>

<b>WA_FIELDCAT-SELTEXT_M = 'COMPANY CODE'.</b>

APPEND WA_FIELDCAT TO I_FIELDCAT.

CLEAR WA_FIELDCAT.

<b>WA_FIELDCAT-TABNAME = 'IT_BSEG'.

WA_FIELDCAT-FIELDNAME = 'GJAHR'.</b>

<b>WA_FIELDCAT-SELTEXT_M = 'FISCAL YEAR'.</b>

APPEND WA_FIELDCAT TO I_FIELDCAT.

CLEAR WA_FIELDCAT.

Regards,

Santosh

Read only

RichHeilman
Developer Advocate
Developer Advocate
0 Likes
1,217

When building your field catalog, please make sure to use upper case values for TABNAME and FIELDNAME.




<b>*WA_FIELDCAT-TABNAME = 'it_bseg1'.
*WA_FIELDCAT-FIELDNAME = 'belnr'.
WA_FIELDCAT-TABNAME = 'IT_BSEG1'.
WA_FIELDCAT-FIELDNAME = 'BELNR'.</b>
WA_FIELDCAT-SELTEXT_M = 'Doc Number'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.

Regards,

Rich Heilman

Read only

Former Member
0 Likes
1,217

Hi Pavan,

I have executed your program it is

working fine, but i think there is no data

in the server u r working

But check once build fieldcatalog_bseg1.

you are declaring in caps and giving it without caps.

check it once,

Regards,

Laxmi.

Message was edited by: Laxmi

Read only

0 Likes
1,217

If i change the FORM like so, i am now getting data.

No need to push the TABNAME, but the FIELDNAMEs must be capitalized.



form build_fieldcatlog.
<b>*  wa_fieldcat-tabname = 'it_bseg'.
  wa_fieldcat-fieldname = 'BELNR'.</b>
  wa_fieldcat-seltext_m = 'Doc Number'.
  append wa_fieldcat to i_fieldcat.
  clear wa_fieldcat.

<b>*  wa_fieldcat-tabname = 'it_bseg'.
  wa_fieldcat-fieldname = 'BUKRS'.</b>
  wa_fieldcat-seltext_m = 'Company Code'.
  append wa_fieldcat to i_fieldcat.
  clear wa_fieldcat.

<b>*  wa_fieldcat-tabname = 'it_bseg'.
  wa_fieldcat-fieldname = 'GJAHR'.</b>
  wa_fieldcat-seltext_m = 'Fiscal Year'.
  append wa_fieldcat to i_fieldcat.
  clear wa_fieldcat.

endform. "build_fieldcatlog


Regards,

Rich Heilman

Read only

Former Member
0 Likes
1,217

HI PAVAN,

WA_FIELDCAT-TABNAME = 'it_bseg'.

WA_FIELDCAT-FIELDNAME = <b>'BELNR'</b>.

WA_FIELDCAT-SELTEXT_M = 'Doc Number'.

APPEND WA_FIELDCAT TO I_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'it_bseg'.

WA_FIELDCAT-FIELDNAME = <b>'BUKRS'</b>.

WA_FIELDCAT-SELTEXT_M = 'Company Code'.

APPEND WA_FIELDCAT TO I_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'it_bseg'.

WA_FIELDCAT-FIELDNAME = <b>'GJAHR'</b>.

WA_FIELDCAT-SELTEXT_M = 'Fiscal Year'.

APPEND WA_FIELDCAT TO I_FIELDCAT.

CLEAR WA_FIELDCAT.

Read only

Former Member
0 Likes
1,217

Hi All,

Thanks for your early response and works very fine.

Please let me know how to keep hot spot in this program, because I need the amount for that particular document number, whereas is in my program it is giving all.

Please help me out.

Thanks,

Pavan.

Read only

Former Member
0 Likes
1,217

Hi pavan,

here is a good sample code in the link,heck it once:

http://www.sap-basis-abap.com/sapab033.htm

reward if it helps.

regards,

keerthi.

Read only

Former Member
0 Likes
1,217

Hi,

Can anyone tell me how to add the hot spot in the above code.

Thanks,

Pavan.

Read only

0 Likes
1,217

In the field catalog for the field

WA_FIELDCAT-HOTSPOT = 'X'.

You need to activate the events to handle the event.

Regards

Ravi

Read only

0 Likes
1,217

Hi pavan,

report  ztest_alv_check     message-id zz           .

type-pools: slis.
data: x_fieldcat type slis_fieldcat_alv,
      it_fieldcat type slis_t_fieldcat_alv,
      l_layout type slis_layout_alv,
      x_events type slis_alv_event,
      it_events type slis_t_event.

data: begin of itab occurs 0,
      vbeln like vbak-vbeln,
      posnr like vbap-posnr,
      chk(1),
     end of itab.

select vbeln
       posnr
       from vbap
       up to 20 rows
       into table itab.

x_fieldcat-fieldname = 'CHK'.
x_fieldcat-tabname = 'ITAB'.
x_fieldcat-col_pos = 1.
x_fieldcat-input = 'X'.
x_fieldcat-edit = 'X'.
x_fieldcat-checkbox = 'X'.
append x_fieldcat to it_fieldcat.
clear x_fieldcat.

x_fieldcat-fieldname = 'VBELN'.
x_fieldcat-seltext_l = 'VBELN'.
<b>x_fieldcat-hotspot = 'X'.</b>
x_fieldcat-tabname = 'ITAB'.
x_fieldcat-col_pos = 2.
append x_fieldcat to it_fieldcat.
clear x_fieldcat.

x_fieldcat-fieldname = 'POSNR'.
x_fieldcat-seltext_l = 'POSNR'.
x_fieldcat-tabname = 'ITAB'.
x_fieldcat-col_pos = 3.
append x_fieldcat to it_fieldcat.
clear x_fieldcat.


call function 'REUSE_ALV_GRID_DISPLAY'
  exporting
    i_callback_program       = sy-repid
    is_layout                = l_layout
<b>    i_callback_pf_status_set = 'STATUS'
    i_callback_user_command  = 'USER_COMMAND'</b>
    it_fieldcat              = it_fieldcat
  tables
    t_outtab                 = itab
  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.

<b>form status using p_extab type slis_t_extab.
*- Pf status
  set pf-status 'STATUS'. "enable F2 key ,give okcode &IC1
endform.                 " STATUS

form user_command using r_ucomm     like sy-ucomm
                               rs_selfield type slis_selfield.

  case r_ucomm.

    when 'BACK' or 'CANC' or 'EXIT'.
      leave to screen 0.
    when '&IC1'.
      if rs_selfield-fieldname = 'VBELN'.
        set parameter id 'AUN' field rs_selfield-value.
        call transaction 'VA03' and skip first screen.
      endif.
  endcase.
endform.                    "USER_COMMAND</b>

Regards

vijay

Read only

Clemenss
Active Contributor
0 Likes
1,217

Hi Pavan and all other ALVers,

what about 2 smart form routines to create a valid and useful fieldcatalog for an internal table of any structure, just pass the table to be displayed and get back the field catalog:

(If you need it for grid control, just use FUNCTION 'LVC_TRANSFER_FROM_SLIS' to get the field catalog in OO LVC format)

<pre>

&----


*& Form ALV_FIELDCAT_FOR_ITAB

&----


  • Feldkatalog from (arbitrary) internal Table (c) Clemens Li

  • * build field catalog from type description

----


FORM alv_fieldcat_for_itab "#EC *

TABLES pt_outtab TYPE table "#EC *

CHANGING pt_alv_fieldcat TYPE slis_t_fieldcat_alv."#EC *

DATA:

l_desc TYPE sydes_desc,

l_alv_fieldcat TYPE slis_fieldcat_alv,

l_longfield TYPE fname.

FIELD-SYMBOLS:

<typeinfo> TYPE sydes_typeinfo,

<nameinfo> TYPE sydes_nameinfo.

DESCRIBE FIELD pt_outtab INTO l_desc. "#EC *

LOOP AT l_desc-types

ASSIGNING <typeinfo>

WHERE NOT idx_name IS INITIAL

AND table_kind IS INITIAL "no entries for deep table like color

AND back = 1. "top-level-entries only.

READ TABLE l_desc-names INDEX <typeinfo>-idx_name

ASSIGNING <nameinfo>.

CHECK <nameinfo>-name <> 'INCLUDE'.

l_alv_fieldcat-fieldname = <nameinfo>-name.

WHILE NOT <nameinfo>-continue IS INITIAL.

ADD 1 TO <typeinfo>-idx_name.

READ TABLE l_desc-names INDEX <typeinfo>-idx_name

ASSIGNING <nameinfo>.

CONCATENATE

l_alv_fieldcat-fieldname

<nameinfo>-name

INTO l_alv_fieldcat-fieldname.

ENDWHILE." not <nameinfo>-continue IS INITIAL.

READ TABLE l_desc-names INDEX <typeinfo>-idx_help_id

ASSIGNING <nameinfo>.

IF sy-subrc = 0.

  • Caution: Help-ID may be Tablename-Fieldname and thus longer

  • than 30 Chars; l_alv_fieldcat-rollname is 30 Chars only

l_alv_fieldcat-rollname = <nameinfo>-name.

l_longfield = <nameinfo>-name.

WHILE NOT <nameinfo>-continue IS INITIAL.

ADD 1 TO <typeinfo>-idx_help_id.

READ TABLE l_desc-names INDEX <typeinfo>-idx_help_id

ASSIGNING <nameinfo>.

CONCATENATE

l_longfield

<nameinfo>-name

INTO l_longfield.

ENDWHILE." not l_desc-continue is initial.

  • help id may be data element or <table>-<field>

IF l_longfield CA '-'.

  • get data type for table field

PERFORM get_rollname_4_tabfield

USING l_longfield CHANGING l_alv_fieldcat.

ENDIF." l_longfield ca '-'.

ELSE.

  • No Help-ID: Use Fieldname as text

l_alv_fieldcat-seltext_s =

l_alv_fieldcat-seltext_m =

l_alv_fieldcat-seltext_l =

l_alv_fieldcat-reptext_ddic =

<nameinfo>-name.

ENDIF." sy-subrc = 0.

  • Starting 4.7: get edit mask

IF NOT <typeinfo>-idx_edit_mask IS INITIAL.

READ TABLE l_desc-names INDEX <typeinfo>-idx_edit_mask

ASSIGNING <nameinfo>.

l_alv_fieldcat-edit_mask = <nameinfo>-name.

IF NOT <nameinfo>-continue IS INITIAL.

ADD 1 TO <typeinfo>-idx_edit_mask.

READ TABLE l_desc-names INDEX <typeinfo>-idx_edit_mask

ASSIGNING <nameinfo>.

CONCATENATE

l_alv_fieldcat-edit_mask

<nameinfo>-name

INTO l_alv_fieldcat-edit_mask.

ENDIF." not <nameinfo>-continue IS INITIAL.

ENDIF." not <typeinfo>-IDX_EDIT_MASK is initial.

  • assign length, output length and decimals

l_alv_fieldcat-intlen = <typeinfo>-length.

l_alv_fieldcat-outputlen = <typeinfo>-output_length.

l_alv_fieldcat-decimals_out = <typeinfo>-decimals.

l_alv_fieldcat-inttype = <typeinfo>-type.

APPEND l_alv_fieldcat TO pt_alv_fieldcat.

CLEAR: "prevent anything 2 B taken for subsequent fields

l_alv_fieldcat.

ENDLOOP." at l_desc-types where not IDX_NAME is in initial.

ENDFORM. " ALV_FIELDCAT_FOR_ITAB

*&----


*& Form get_rollname_4_tabfield

*&----


  • Get Data type for Table field

*----


FORM get_rollname_4_tabfield

USING p_fname TYPE fname

CHANGING p_alv_fieldcat TYPE slis_fieldcat_alv.

FIELD-SYMBOLS:

<dfies> TYPE dfies.

DATA:

l_tabname TYPE tabname,

lt_dfies TYPE TABLE OF dfies,

l_fieldname TYPE fieldname.

SPLIT p_fname AT '-'

INTO l_tabname l_fieldname.

CLEAR p_alv_fieldcat-rollname.

CALL FUNCTION 'DDIF_FIELDINFO_GET'

EXPORTING

tabname = l_tabname

fieldname = l_fieldname

  • LANGU = SY-LANGU

  • LFIELDNAME = ' '

  • ALL_TYPES = ' '

  • IMPORTING

  • X030L_WA =

  • DDOBJTYPE =

  • DFIES_WA =

  • LINES_DESCR =

TABLES

dfies_tab = lt_dfies

  • FIXED_VALUES =

EXCEPTIONS

not_found = 1

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

ELSE.

READ TABLE lt_dfies ASSIGNING <dfies> INDEX 1.

p_alv_fieldcat-rollname = <dfies>-rollname.

  • Und wenn keinerlei Twexte gepflegt sind?

IF <dfies>-reptext IS INITIAL AND

<dfies>-scrtext_s IS INITIAL AND

<dfies>-scrtext_m IS INITIAL AND

<dfies>-scrtext_l IS INITIAL.

  • No Text: Use Fieldname as text

p_alv_fieldcat-seltext_s =

p_alv_fieldcat-seltext_m =

p_alv_fieldcat-seltext_l =

p_alv_fieldcat-reptext_ddic =

p_alv_fieldcat-fieldname.

ENDIF." <dfies>-reptext IS INITIAL AND

ENDIF.

ENDFORM. " get_rollname_4_tabfield

</pre>

Regards,

Clemens