ALV : building FIELDCATALOG in ALV object
Hello,
Could somebody give me a method for building the fieldcatalog from a static internal table in ALV object.
Thanks for help,
Bertrand
Hi,
I am sendin the sample code for alv grid display.
REPORT YMS_EXCISE MESSAGE-ID E4 NO STANDARD PAGE HEADING LINE-SIZE 350. .
TABLES : J_1IEXCHDR, " header table
J_1IEXCDTL, " item table
J_1IPART2, " Excise Part II details
LFA1, " vendor master table
J_1IMOVEND, " vendor excise details table
MSEG, " Document Segment: Material
MKPF, " Header: Material Document
DD07T, " domain text table
T001W. " Plant and Branch Details
DATA : BEGIN OF IT_CHDR OCCURS 100,
DOCNO LIKE J_1IEXCHDR-DOCNO,
DOCYR LIKE J_1IEXCHDR-DOCYR,
EXNUM LIKE J_1IEXCHDR-EXNUM,
EXDAT LIKE J_1IEXCHDR-EXDAT,
WERKS LIKE J_1IEXCHDR-WERKS,
EXBED LIKE J_1IEXCHDR-EXBED,
EXCCD LIKE J_1IEXCHDR-EXCCD,
ECS LIKE J_1IEXCHDR-ECS,
END OF IT_CHDR.
DATA : BEGIN OF IT_CDTL OCCURS 100,
DOCYR LIKE J_1IEXCDTL-DOCYR,
DOCNO LIKE J_1IEXCDTL-DOCNO,
EXNUM LIKE J_1IEXCDTL-EXNUM,
EXDAT LIKE J_1IEXCDTL-EXDAT,
LIFNR LIKE J_1IEXCDTL-LIFNR,
MATNR LIKE J_1IEXCDTL-MATNR,
MAKTX LIKE J_1IEXCDTL-MAKTX,
CHAPID LIKE J_1IEXCDTL-CHAPID,
EXBAS LIKE J_1IEXCDTL-EXBAS,
EXBED LIKE J_1IEXCDTL-EXBED,
ECS LIKE J_1IEXCDTL-ECS,
MENGE LIKE J_1IEXCDTL-MENGE,
MEINS LIKE J_1IEXCDTL-MEINS,
RDOC2 LIKE J_1IEXCDTL-RDOC2,
END OF IT_CDTL.
DATA TEXT(10).
DATA : BEGIN OF IT_OUT OCCURS 0,
SERIALNO LIKE J_1IPART2-SERIALNO,
TEXT1 LIKE TEXT,
EXNUM LIKE J_1IEXCDTL-EXNUM,
EXDAT LIKE J_1IEXCDTL-EXDAT,
NAME LIKE LFA1-NAME1,
DDTEXT LIKE DD07T-DDTEXT,
EXCCD LIKE J_1IEXCHDR-EXCCD,
BUDAT LIKE MKPF-BUDAT,
EXBAS LIKE IT_CDTL-EXBAS,
EXBED LIKE IT_CDTL-EXBED,
ECS LIKE IT_CDTL-ECS,
MATNR LIKE IT_CDTL-MATNR,
MAKTX LIKE IT_CDTL-MAKTX,
CHAPID LIKE IT_CDTL-CHAPID,
MENGE LIKE IT_CDTL-MENGE,
MEINS LIKE IT_CDTL-MEINS,
DEL_IND(1),
END OF IT_OUT.
DATA IT_PART2 LIKE J_1IPART2 OCCURS 0 WITH HEADER LINE.
DATA S_NO(4) .
DATA DB_CNT LIKE SY-TABIX.
DATA EBELN_T LIKE MSEG-EBELN .
TYPE-POOLS : SLIS.
DATA : AFIELD TYPE SLIS_FIELDCAT_ALV.
DATA : LIST_HEADER TYPE SLIS_T_LISTHEADER,
FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
LS_FTCAT TYPE LVC_S_FCAT,
SORTCAT TYPE SLIS_T_SORTINFO_ALV,
SORTCAT_LN LIKE LINE OF SORTCAT,
G_REPID LIKE SY-REPID,
G_BACK_GROUND(70), "like bapibds01-objkey,
GS_VARIANT LIKE DISVARIANT,
G_SAVE ,
GT_EVENTS TYPE SLIS_T_EVENT,
ALV_EVENT TYPE SLIS_ALV_EVENT,
EVENTCAT TYPE SLIS_T_EVENT,
EVENTCAT_LN LIKE LINE OF EVENTCAT,
LAYOUT_IN TYPE SLIS_LAYOUT_ALV,
LAYOUT_IN1 TYPE SLIS_LAYOUT_ALV.
CONSTANTS : GC_FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE
'TOP_OF_PAGE',
GC_FORMNAME_USER_COMMAND TYPE SLIS_FORMNAME VALUE
'USER_COMMAND',
GC_FORMNAME_BEFORE_OUTPUT TYPE SLIS_FORMNAME VALUE
'BEFORE_OUTPUT'.
ALV_EVENT TYPE SLIS_ALV_EVENT,
DATA EX_NO LIKE IT_CHDR-EXNUM VALUE 0.
DATA REGTYP_1 LIKE J_1IPART2-REGTYP.
SELECTION-SCREEN BEGIN OF BLOCK B WITH FRAME.
PARAMETERS WERKS TYPE J_1IEXCHDR-WERKS.
SELECT-OPTIONS : BUDAT FOR J_1IEXCHDR-EXDAT.
PARAMETERS : R1 RADIOBUTTON GROUP GRP DEFAULT 'X',
R2 RADIOBUTTON GROUP GRP.
SELECTION-SCREEN END OF BLOCK B.
INITIALIZATION.
G_REPID = SY-REPID.
G_SAVE = 'A'.
PERFORM BUILD_EVENT USING GT_EVENTS[].
PERFORM ALV_EVENT_INIT.
AT SELECTION-SCREEN.
REFRESH LIST_HEADER.
PERFORM TOP_OF_PAGE_LIST_HEADER USING LIST_HEADER.
START-OF-SELECTION.
PERFORM ALV_EVENT_INIT.
G_REPID = SY-REPID.
G_BACK_GROUND = ' ' .
IF R1 = 'X'.
CLEAR R2. CLEAR : REGTYP_1.
REGTYP_1 = 'A'.
set titlebar 'BALAJI' with DB_CNT.
ELSEIF R2 = 'X'.
CLEAR R1.CLEAR : REGTYP_1.
REGTYP_1 = 'C'.
set titlebar 'BALAJI1' with DB_CNT.
ENDIF.
SELECT * FROM J_1IPART2
INTO CORRESPONDING FIELDS OF TABLE IT_PART2
WHERE REGTYP = REGTYP_1 AND
TRNTYP = 'GRPO' AND
BUDAT IN BUDAT.
DOCYR = IT_CDTL-DOCYR AND
DOCNO = IT_CDTL-DOCNO.
LOOP AT IT_PART2.
SELECT SINGLE * FROM J_1IEXCHDR
INTO CORRESPONDING FIELDS OF IT_CHDR
WHERE TRNTYP = 'GRPO' AND
DOCYR = IT_PART2-DOCYR AND
DOCNO = IT_PART2-DOCNO AND
WERKS = WERKS AND
exdat IN BUDAT.
ORDER BY EXDAT.
IF SY-SUBRC = 0.
APPEND IT_CHDR.
ELSE.
CONTINUE.
ENDIF.
IF SY-SUBRC <> 0.
MESSAGE E084.
ENDIF.
ENDLOOP.
LOOP AT IT_CHDR.
SELECT * FROM J_1IEXCDTL
INTO CORRESPONDING FIELDS OF IT_CDTL
FOR ALL ENTRIES IN IT_CHDR
WHERE
TRNTYP = 'GRPO' AND
DOCNO = IT_CHDR-DOCNO AND
DOCYR = IT_CHDR-DOCYR AND
EXNUM = IT_CHDR-EXNUM AND
EXDAT = IT_CHDR-EXDAT AND
WERKS = IT_CHDR-WERKS.
IF SY-SUBRC = 0.
APPEND IT_CDTL.
ELSE.
CONTINUE.
ENDIF.
ENDSELECT.
ENDLOOP.
LOOP AT IT_CDTL.
CLEAR TEXT.
DB_CNT = DB_CNT + 1.
READ TABLE IT_CHDR WITH KEY EXNUM = IT_CDTL-EXNUM.
READ TABLE IT_PART2 WITH KEY DOCNO = IT_CDTL-DOCNO .
IT_OUT-SERIALNO = IT_PART2-SERIALNO.
SELECT SINGLE NAME1 FROM LFA1
INTO IT_OUT-NAME
WHERE LIFNR = IT_CDTL-LIFNR.
SELECT SINGLE * FROM LFA1
WHERE LIFNR = IT_CDTL-LIFNR.
IF LFA1-LAND1 EQ 'IN'.
TEXT = 'INVOICE'.
IT_OUT-TEXT1 = TEXT.
ELSE.
TEXT = 'BOE'.
IT_OUT-TEXT1 = TEXT.
ENDIF.
SELECT SINGLE * FROM J_1IMOVEND
WHERE LIFNR = IT_CDTL-LIFNR.
SELECT SINGLE * FROM DD07T
INTO IT_OUT-DDTEXT
WHERE DOMNAME = 'J_1IVTYP' AND
DDLANGUAGE = 'EN' AND
DOMVALUE_L = J_1IMOVEND-J_1IVTYP.
IF DD07T-DDTEXT = 'First Stage Dealer of indigenous excisable goods'
OR
DD07T-DDTEXT = 'Second Stage Dealer of indigenous excisablegoods'.
DD07T-DDTEXT = 'Dealer'.
ENDIF.
IT_OUT-DDTEXT = DD07T-DDTEXT.
ELSEIF DD07T-DDTEXT = 'Second Stage Dealer of indigenous excisable
*goods'.
DD07T-DDTEXT =
CLEAR EBELN_T.
SELECT SINGLE LFBNR FROM MSEG
INTO EBELN_T
WHERE MBLNR = IT_CDTL-RDOC2 .
SELECT SINGLE * FROM MSEG
WHERE BWART = '106' AND
LFBNR = EBELN_T ."and
ebeln = ebeln_t.
IF SY-SUBRC = 0.
IT_OUT-DEL_IND = 'X'.
ELSE.
IT_OUT-DEL_IND = ' '.
ENDIF.
SELECT SINGLE BUDAT FROM MKPF
INTO IT_OUT-BUDAT
WHERE MBLNR = EBELN_T ."MSEG-LFBNR.
IT_OUT-EXNUM = IT_CDTL-EXNUM.
IT_OUT-EXDAT = IT_CDTL-EXDAT.
IT_OUT-EXCCD = IT_CHDR-EXCCD.
IT_OUT-EXBAS = IT_CDTL-EXBAS.
IT_OUT-EXBED = IT_CDTL-EXBED.
IT_OUT-ECS = IT_CDTL-ECS.
IT_OUT-MATNR = IT_CDTL-MATNR.
IT_OUT-MAKTX = IT_CDTL-MAKTX.
IT_OUT-CHAPID = IT_CDTL-CHAPID.
IT_OUT-MENGE = IT_CDTL-MENGE.
IT_OUT-MEINS = IT_CDTL-MEINS.
APPEND IT_OUT.
EX_NO = IT_CDTL-EXNUM.
ENDLOOP.
Title Portion
IF REGTYP_1 = 'A'.
SET TITLEBAR 'BALAJI' WITH DB_CNT.
ELSEIF REGTYP_1 = 'C'.
SET TITLEBAR 'BALAJI1' WITH DB_CNT.
ENDIF.
AFIELD-COL_POS = 1.
AFIELD-FIELDNAME = 'SERIALNO'.
AFIELD-SELTEXT_L = 'INPUTS'.
AFIELD-JUST = 'L'.
APPEND AFIELD TO FIELDCAT.
AFIELD-COL_POS = 2.
AFIELD-FIELDNAME = 'TEXT1'.
AFIELD-SELTEXT_L = 'TYPE OF DOC'.
AFIELD-JUST = 'L'.
AFIELD-DECIMALS_OUT = '0'.
AFIELD-NO_ZERO = 'X'.
APPEND AFIELD TO FIELDCAT.
AFIELD-COL_POS = 3.
AFIELD-FIELDNAME = 'EXNUM'.
AFIELD-SELTEXT_L = 'DOC.NO'.
AFIELD-JUST = 'L'.
APPEND AFIELD TO FIELDCAT.
AFIELD-COL_POS = 4.
AFIELD-FIELDNAME = 'EXDAT'.
AFIELD-SELTEXT_L = 'DOC.DATE'.
AFIELD-JUST = 'C'.
APPEND AFIELD TO FIELDCAT.
AFIELD-COL_POS = 5.
AFIELD-FIELDNAME = 'NAME'.
AFIELD-SELTEXT_L = 'NAME OF THE SUPPLIER'.
AFIELD-NO_ZERO = 'X'.
AFIELD-JUST = 'L'.
APPEND AFIELD TO FIELDCAT.
AFIELD-COL_POS = 6.
AFIELD-FIELDNAME = 'DDTEXT'.
AFIELD-SELTEXT_L = 'TYPE-OF-SUPPLIER'.
AFIELD-JUST = 'L'.
APPEND AFIELD TO FIELDCAT.
AFIELD-COL_POS = 7.
AFIELD-FIELDNAME = 'EXCCD'.
AFIELD-SELTEXT_L = 'ECC OF THE SUPPLIER'.
AFIELD-NO_ZERO = 'X'.
AFIELD-JUST = 'L'.
APPEND AFIELD TO FIELDCAT.
AFIELD-COL_POS = 8.
AFIELD-FIELDNAME = 'BUDAT'.
AFIELD-SELTEXT_L = 'INPUT RECV DATE'.
AFIELD-JUST = 'C'.
APPEND AFIELD TO FIELDCAT.
AFIELD-COL_POS = 9.
AFIELD-FIELDNAME = 'EXBAS'.
AFIELD-SELTEXT_L = 'ASSESSABLE-VALUE'.
AFIELD-DO_SUM = 'X'.
AFIELD-JUST = 'R'.
AFIELD-DECIMALS_OUT = '2'.
APPEND AFIELD TO FIELDCAT.
AFIELD-COL_POS = 10.
AFIELD-FIELDNAME = 'EXBED'.
AFIELD-SELTEXT_L = 'DET OF CREDIT TAKEN CENVAT'.
AFIELD-JUST = 'R'.
APPEND AFIELD TO FIELDCAT.
AFIELD-COL_POS = 11.
AFIELD-FIELDNAME = 'ECS'.
AFIELD-SELTEXT_L = 'DET OF CREDIT TAKEN E-CESS'.
AFIELD-JUST = 'R'.
APPEND AFIELD TO FIELDCAT.
AFIELD-COL_POS = 12.
AFIELD-FIELDNAME = 'MATNR'.
AFIELD-SELTEXT_L = 'MATERIAL-CODE'.
AFIELD-JUST = 'L'.
APPEND AFIELD TO FIELDCAT.
AFIELD-COL_POS = 13.
AFIELD-FIELDNAME = 'MAKTX'.
AFIELD-SELTEXT_L = 'DESCRIPTION'.
AFIELD-JUST = 'L'.
APPEND AFIELD TO FIELDCAT.
AFIELD-COL_POS = 14.
AFIELD-FIELDNAME = 'CHAPID'.
AFIELD-SELTEXT_L = 'TARIFF-ID'.
AFIELD-JUST = 'L'.
APPEND AFIELD TO FIELDCAT.
AFIELD-COL_POS = 15.
AFIELD-FIELDNAME = 'MENGE'.
AFIELD-SELTEXT_L = 'QUANTITY'.
AFIELD-JUST = 'R'.
AFIELD-DO_SUM = ' '.
APPEND AFIELD TO FIELDCAT.
AFIELD-COL_POS = 16.
AFIELD-FIELDNAME = 'MEINS'.
AFIELD-SELTEXT_L = 'UOM'.
AFIELD-JUST = 'C'.
APPEND AFIELD TO FIELDCAT.
AFIELD-COL_POS = 17.
AFIELD-FIELDNAME = 'DEL_IND'.
AFIELD-SELTEXT_L = 'Deleted'.
AFIELD-JUST = 'C'.
APPEND AFIELD TO FIELDCAT.
* LAYOUT FOR ZEBRA CATLOG
LAYOUT_IN-COLWIDTH_OPTIMIZE = 'X'.
LAYOUT_IN-ZEBRA = 'X'.
LAYOUT_IN-GET_SELINFOS = 'X'.
LAYOUT_IN-CONFIRMATION_PROMPT = 'X'.
LAYOUT_IN-DETAIL_POPUP = 'X' .
SORTCAT-decimals = '0'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = G_REPID
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
I_SAVE = G_SAVE
IS_VARIANT = GS_VARIANT
IT_FIELDCAT = FIELDCAT
IT_SORT = SORTCAT
IS_LAYOUT = LAYOUT_IN
IT_EVENTS = EVENTCAT
I_BACKGROUND_ID = g_back_ground
TABLES
T_OUTTAB = IT_OUT.
*& Form TOP_OF_PAGE_LIST_HEADER
text
-->LIST_HEADERtext
FORM TOP_OF_PAGE_LIST_HEADER USING LIST_HEADER TYPE SLIS_T_LISTHEADER.
DATA : HLINE TYPE SLIS_LISTHEADER,
TEXT(60) TYPE C.
CLEAR : HLINE,TEXT.
HLINE-TYP = 'H'.
WRITE 'ROOTS INDUSTRIES LTD' TO TEXT.
HLINE-INFO = TEXT.
APPEND HLINE TO LIST_HEADER.
SELECT SINGLE * FROM T001W WHERE WERKS = WERKS.
CLEAR : HLINE,TEXT.
HLINE-TYP = 'H'.
WRITE 'PLANT :' TO TEXT.
WRITE WERKS TO TEXT+8.
HLINE-INFO = TEXT.
APPEND HLINE TO LIST_HEADER.
CLEAR : HLINE,TEXT.
HLINE-TYP = 'H'.
WRITE T001W-NAME1 TO TEXT.
HLINE-INFO = TEXT.
APPEND HLINE TO LIST_HEADER.
CLEAR : HLINE,TEXT.
HLINE-TYP = 'H'.
WRITE T001W-STRAS TO TEXT.
HLINE-INFO = TEXT.
APPEND HLINE TO LIST_HEADER.
CLEAR : HLINE,TEXT.
HLINE-TYP = 'H'.
WRITE T001W-ORT01 TO TEXT.
HLINE-INFO = TEXT.
APPEND HLINE TO LIST_HEADER.
CLEAR : HLINE,TEXT.
HLINE-TYP = 'H'.
WRITE 'DATE :' TO TEXT.
WRITE BUDAT-LOW TO TEXT+7.
IF BUDAT-HIGH NE ''.
WRITE 'TO' TO TEXT+18.
WRITE BUDAT-HIGH TO TEXT+22.
ENDIF.
HLINE-INFO = TEXT.
APPEND HLINE TO LIST_HEADER.
ENDFORM. "TOP_OF_PAGE_LIST_HEADER
*& Form ALV_EVENT_INIT
text
FORM ALV_EVENT_INIT .
CLEAR ALV_EVENT.
ALV_EVENT-NAME = SLIS_EV_TOP_OF_PAGE.
ALV_EVENT-FORM = 'ALV_TOP_OF_PAGE'.
APPEND ALV_EVENT TO EVENTCAT.
CLEAR ALV_EVENT.
ALV_EVENT-NAME = SLIS_EV_TOP_OF_LIST.
ALV_EVENT-FORM = 'ALV_TOP_OF_LIST'.
APPEND ALV_EVENT TO EVENTCAT.
CLEAR ALV_EVENT.
ALV_EVENT-NAME = SLIS_EV_END_OF_LIST.
ALV_EVENT-FORM = 'ALV_END_OF_LIST'.
APPEND ALV_EVENT TO GT_EVENTS.
CLEAR ALV_EVENT.
ALV_EVENT-NAME = SLIS_EV_END_OF_PAGE.
ALV_EVENT-FORM = 'ALV_END_OF_PAGE'.
APPEND ALV_EVENT TO GT_EVENTS.
ENDFORM. "ALV_EVENT_INIT
*& Form ALV_TOP_OF_PAGE
text
FORM ALV_TOP_OF_PAGE.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = LIST_HEADER
I_LOGO = 'ENJOYSAP_LOGO'.
ENDFORM. "ALV_TOP_OF_PAGE
*& Form BUILD_EVENT
text
-->P_GT_EVENTS[] text
FORM BUILD_EVENT USING P_EVENTS TYPE SLIS_T_EVENT.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = P_EVENTS
EXCEPTIONS
LIST_TYPE_WRONG = 1
OTHERS = 2.
READ TABLE P_EVENTS WITH KEY NAME = SLIS_EV_USER_COMMAND INTO
ALV_EVENT.
IF SY-SUBRC = 0.
MOVE GC_FORMNAME_USER_COMMAND TO ALV_EVENT-FORM.
APPEND ALV_EVENT TO P_EVENTS.
ENDIF.
READ TABLE P_EVENTS WITH KEY NAME = SLIS_EV_BEFORE_LINE_OUTPUT INTO
ALV_EVENT.
IF SY-SUBRC = 0.
MOVE GC_FORMNAME_BEFORE_OUTPUT TO ALV_EVENT-FORM.
APPEND ALV_EVENT TO P_EVENTS.
ENDIF.
ENDFORM. " BUILD_EVENT
Thanks,
Shankar
Similar Messages
-
ALV using ABAP Classes and Objects
Hi All,
I am trying to print the values in my internal table using ALV, using ABAP classes and objects. Here the title for columns are picked based on the title specified in the data element. I want to set the title of my columns by my own. how to achieve this ?. Please provide me a sample code if possible.
thanks & regards,
Navneeth.KHello Navneeth
The following sample report shows how to build and modify a fieldcatalog (routine <b>BUILD_FIELDCATALOG_KNB1</b>).
*& Report ZUS_SDN_ALVGRID_EVENTS
REPORT zus_sdn_alvgrid_events.
DATA:
gd_okcode TYPE ui_func,
gt_fcat TYPE lvc_t_fcat,
go_docking TYPE REF TO cl_gui_docking_container,
go_grid1 TYPE REF TO cl_gui_alv_grid.
DATA:
gt_knb1 TYPE STANDARD TABLE OF knb1.
PARAMETERS:
p_bukrs TYPE bukrs DEFAULT '2000' OBLIGATORY.
* CLASS lcl_eventhandler DEFINITION
CLASS lcl_eventhandler DEFINITION.
PUBLIC SECTION.
CLASS-METHODS:
handle_hotspot_click FOR EVENT hotspot_click OF cl_gui_alv_grid
IMPORTING
e_row_id
e_column_id
es_row_no
sender.
ENDCLASS. "lcl_eventhandler DEFINITION
* CLASS lcl_eventhandler IMPLEMENTATION
CLASS lcl_eventhandler IMPLEMENTATION.
METHOD handle_hotspot_click.
* define local data
DATA:
ls_knb1 TYPE knb1,
ls_col_id TYPE lvc_s_col.
READ TABLE gt_knb1 INTO ls_knb1 INDEX e_row_id-index.
CHECK ( ls_knb1-kunnr IS NOT INITIAL ).
CASE e_column_id-fieldname.
WHEN 'KUNNR'.
SET PARAMETER ID 'KUN' FIELD ls_knb1-kunnr.
SET PARAMETER ID 'BUK' FIELD ls_knb1-bukrs.
CALL TRANSACTION 'XD03' AND SKIP FIRST SCREEN.
WHEN 'ERNAM'.
* SET PARAMETER ID 'USR' FIELD ls_knb1-ernam.
* NOTE: no parameter id available, yet simply show the priciple
CALL TRANSACTION 'SU01' AND SKIP FIRST SCREEN.
WHEN OTHERS.
* do nothing
ENDCASE.
* Set active cell to field BUKRS otherwise the focus is still on
* field KUNNR which will always raise event HOTSPOT_CLICK
ls_col_id-fieldname = 'BUKRS'.
CALL METHOD go_grid1->set_current_cell_via_id
EXPORTING
is_row_id = e_row_id
is_column_id = ls_col_id.
ENDMETHOD. "handle_hotspot_click
ENDCLASS. "lcl_eventhandler IMPLEMENTATION
START-OF-SELECTION.
SELECT * FROM knb1 INTO TABLE gt_knb1
WHERE bukrs = p_bukrs.
* Create docking container
CREATE OBJECT go_docking
EXPORTING
parent = cl_gui_container=>screen0
ratio = 90
EXCEPTIONS
OTHERS = 6.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* Create ALV grid
CREATE OBJECT go_grid1
EXPORTING
i_parent = go_docking
EXCEPTIONS
OTHERS = 5.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* Set event handler
SET HANDLER:
lcl_eventhandler=>handle_hotspot_click FOR go_grid1.
* Build fieldcatalog and set hotspot for field KUNNR
PERFORM build_fieldcatalog_knb1.
* Display data
CALL METHOD go_grid1->set_table_for_first_display
CHANGING
it_outtab = gt_knb1
it_fieldcatalog = gt_fcat
EXCEPTIONS
OTHERS = 4.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* Link the docking container to the target dynpro
CALL METHOD go_docking->link
EXPORTING
repid = syst-repid
dynnr = '0100'
* CONTAINER =
EXCEPTIONS
OTHERS = 4.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* ok-code field = GD_OKCODE
CALL SCREEN '0100'.
END-OF-SELECTION.
*& Module STATUS_0100 OUTPUT
* text
MODULE status_0100 OUTPUT.
SET PF-STATUS 'STATUS_0100'.
* SET TITLEBAR 'xxx'.
ENDMODULE. " STATUS_0100 OUTPUT
*& Module USER_COMMAND_0100 INPUT
* text
MODULE user_command_0100 INPUT.
CASE gd_okcode.
WHEN 'BACK' OR
'END' OR
'CANC'.
SET SCREEN 0. LEAVE SCREEN.
WHEN OTHERS.
ENDCASE.
CLEAR: gd_okcode.
ENDMODULE. " USER_COMMAND_0100 INPUT
*& Form BUILD_FIELDCATALOG_KNB1
* text
* --> p1 text
* <-- p2 text
FORM build_fieldcatalog_knb1 .
* define local data
DATA:
ls_fcat TYPE lvc_s_fcat.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
* I_BUFFER_ACTIVE =
i_structure_name = 'KNB1'
* I_CLIENT_NEVER_DISPLAY = 'X'
* I_BYPASSING_BUFFER =
* I_INTERNAL_TABNAME =
CHANGING
ct_fieldcat = gt_fcat
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 gt_fcat INTO ls_fcat
WHERE ( fieldname = 'KUNNR' OR
fieldname = 'ERNAM' ).
ls_fcat-hotspot = abap_true.
ls_fcat-scrtext_s = '<short text>'. " short text of column
ls_fcat-scrtext_m = '<medium text>'. " medium text of column
ls_fcat-scrtext_l = '<long text>'. " longtext text of column
ls_fcat-tooltip = '...'. " ALV control: Tool tip for column header
ls_fcat-coltext = '...'. " ALV control: Column heading
MODIFY gt_fcat FROM ls_fcat.
ENDLOOP.
ENDFORM. " BUILD_FIELDCATALOG_KNB1
Regards
Uwe -
ALV tree without using abap objects---------urgent
hi
can anybody send me code for making alv tree without using ABAP objects.
thanks in advance
AdityaHI
goto this link
you will get all ALV TREE programs
follow that code you can understand very easily
http://www.sapdev.co.uk/reporting/alv/alvtree.htm
<b>Reward if usefull</b> -
What is the difference b/w ALV Function Module and ALV Methods?
Hello Friends,
Can anybody help me in finding out the difference between ALV Function Modules and ALV methods?
Thanks & Regards
Sathish KumarHi Sathish,
Plz go through this info. It is very useful.
hi,
chk these excellent links.
http://www.geocities.com/mpioud/Abap_programs.html
http://www.sapdevelopment.co.uk/reporting/reportinghome.htm
Simple ALV report
http://www.sapgenie.com/abap/controls/alvgrid.htm
http://wiki.ittoolbox.com/index.php/Code:Ultimate_ALV_table_toolbox
http://www.sapgenie.com/abap/controls/alvgrid.htm
http://wiki.ittoolbox.com/index.php/Code:Ultimate_ALV_table_toolbox
ALV
1. Please give me general info on ALV.
http://www.sapfans.com/forums/viewtopic.php?t=58286
http://www.sapfans.com/forums/viewtopic.php?t=76490
http://www.sapfans.com/forums/viewtopic.php?t=20591
http://www.sapfans.com/forums/viewtopic.php?t=66305 - this one discusses which way should you use - ABAP Objects calls or simple function modules.
2. How do I program double click in ALV?
http://www.sapfans.com/forums/viewtopic.php?t=11601
http://www.sapfans.com/forums/viewtopic.php?t=23010
3. How do I add subtotals (I have problem to add them)...
http://www.sapfans.com/forums/viewtopic.php?t=20386
http://www.sapfans.com/forums/viewtopic.php?t=85191
http://www.sapfans.com/forums/viewtopic.php?t=88401
http://www.sapfans.com/forums/viewtopic.php?t=17335
4. How to add list heading like top-of-page in ABAP lists?
http://www.sapfans.com/forums/viewtopic.php?t=58775
http://www.sapfans.com/forums/viewtopic.php?t=60550
http://www.sapfans.com/forums/viewtopic.php?t=16629
5. How to print page number / total number of pages X/XX in ALV?
http://www.sapfans.com/forums/viewtopic.php?t=29597 (no direct solution)
6. ALV printing problems. The favourite is: The first page shows the number of records selected but I don't need this.
http://www.sapfans.com/forums/viewtopic.php?t=64320
http://www.sapfans.com/forums/viewtopic.php?t=44477
7. How can I set the cell color in ALV?
http://www.sapfans.com/forums/viewtopic.php?t=52107
8. How do I print a logo/graphics in ALV?
http://www.sapfans.com/forums/viewtopic.php?t=81149
http://www.sapfans.com/forums/viewtopic.php?t=35498
http://www.sapfans.com/forums/viewtopic.php?t=5013
9. How do I create and use input-enabled fields in ALV?
http://www.sapfans.com/forums/viewtopic.php?t=84933
http://www.sapfans.com/forums/viewtopic.php?t=69878
10. How can I use ALV for reports that are going to be run in background?
http://www.sapfans.com/forums/viewtopic.php?t=83243
http://www.sapfans.com/forums/viewtopic.php?t=19224
11. How can I display an icon in ALV? (Common requirement is traffic light icon).
http://www.sapfans.com/forums/viewtopic.php?t=79424
http://www.sapfans.com/forums/viewtopic.php?t=24512
12. How can I display a checkbox in ALV?
http://www.sapfans.com/forums/viewtopic.php?t=88376
http://www.sapfans.com/forums/viewtopic.php?t=40968
http://www.sapfans.com/forums/viewtopic.php?t=6919
Go thru these programs they may help u to try on some hands on
ALV Demo program
BCALV_DEMO_HTML
BCALV_FULLSCREEN_DEMO ALV Demo: Fullscreen Mode
BCALV_FULLSCREEN_DEMO_CLASSIC ALV demo: Fullscreen mode
BCALV_GRID_DEMO Simple ALV Control Call Demo Program
BCALV_TREE_DEMO Demo for ALV tree control
BCALV_TREE_SIMPLE_DEMO
BC_ALV_DEMO_HTML_D0100
OOPs:
Check this for basic concepts of OOPS
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/webas/abap/abap%20code%20samples/abap%20objects/abap%20code%20sample%20to%20learn%20basic%20concept%20of%20object-oriented%20programming.doc
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/webas/abap/abap%20code%20samples/alv%20grid/abap%20code%20sample%20to%20display%20data%20in%20alv%20grid%20using%20object%20oriented%20programming.doc
Tabstrip
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/webas/abap/abap%20code%20samples/alv%20grid/abap%20code%20sample%20for%20tab%20strip%20in%20alv.pdf
Editable ALV
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/webas/abap/abap%20code%20samples/alv%20grid/abap%20code%20sample%20to%20edit%20alv%20grid.doc
Tree
http://www.sapdevelopment.co.uk/reporting/alv/alvtree/alvtree_usrint.htm
General Tutorial for OOPS
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/webas/abap/an%20easy%20reference%20for%20alv%20grid%20control.pdf
Rewords some points if it is helpful.
Rgds,
P.Naganjana Reddy -
Hi all,
Please let me know the advantages and disadvantages of ALV control over Classical ALV.
Thanks & regards,
Naresh.ALV LIST Can be coded using only FMs
ALV control Can be coded using FMs and object oriented concepts
ALV LIST Can be displayed hieraicharlly
ALV GRID cannot be displayed hierarichally
Alv grid (using oo concept) requires
designing the screen layout .
Hence, in one screen, we can show more
then one alv grid
(we cannot show more than
one alv list on one screen)
ALV LIST is Display Only.
Whereas
ALV Grid Can Be made EDITABLE for entry purpose. -
Seperate ALV Properties in Blocked ALV
Hi All,
I have created a blocked ALV. The standard ALV functionalities like Sort ,Filter etc is working only for the first list.
Is there any techniques to give seperate functionalities for each list?
Iam using reuse_alv_grid_display .
and LAYOUT-LIST_APPEND to show the blocked ALV.
thanks and regards,
Subeesh KannottilHi Yawa Ding,
I have 3 lists .The standard ALV unctionality works only for the first list.
I want all these properties to be applied to all lists
Thanks and Regards,
Subeesh Kannottil -
Can we call ALV Grid in another ALV Grid
Hi,
I have a requirement where I have an ALV List Displayed and for this we have an User Command and the User Defined Button Placed on the ALV List displaya another ALV Grid. Now the user want an User Command to be activated on the Second ALV Report to call a Third ALV Report.
Could someone tell me whether this is feasible if so how can it be achieved.
Thanks & Regards,
YJR.Hi YJR,
As far as feasibility of the requirement is concerned it is very subjective to your business process.
But yes, it is possible.
Just give a different callback user command in the call to ALV and write another form.
That should solve your problem.
Regards,
Ravi -
Can more than one build in or out object appear/ disappear simultaneously?
I have objects (images and text boxes) appearing one at a time but I would like them all to disappear simultaneously so is there some way you can group objects to appear and disappear at the same time?
Thanks
Kevin[email protected] wrote:
Just a couple of questions first, when you mentioned "Set all the Build Outs to occur together." How do I actually do that? I tried highlighting them all and right clicking to see if it gives me an option to do that and look everywhere but couldn't find that function.
Again, if I'm understanding you, this is a very straightforward effect to produce. In the Build Inspector, set up all the Build Ins for the objects, then specify the Build Outs. Now click on the More Options button, which will reveal the Build Order drawer. For each of the Build Outs except the first, select the build in the order listing, then in the Start Build drop down menu, choose "Automatically with build #", where "#" is the number of the first Build Out. -
Dark path's edges after using shape builder tool or masking objects
hi,
i have a problem with path edges after using shape builder tool or masking objects. This problem occurs when i draw bright colored objects above dark colored object. After that i have dark path's edges. Like this: http://img94.imageshack.us/img94/2051/dlm2.jpg
I have one solution (pathfinder->dive objects and delete some dark elements on the bottom) but maybe someone know another solution for this problem?Thank you for reply
Unfortunately, I don't have opportunity to print it, but as you wrote, it must be a screen artifact. I exported this file to tiff, then i opened it in photoshop. Everything is ok. All of the edges are clear. -
Filtering the contents of one alv based on another ALV's filter
Hi,
I have used a tab element within which i have two tabs.each tab has an alv table.
Is it possible to restrict the entries of one alv table based on enrties from another alv table(both the alv tables will have some common fields).for example I have filtered entries in alv1 based on field1 .when i go to alv2 entries should be restricted on the field1 (common field)
Thanks
Bala Duvvuri
this is the answer
refer SALV_WD_FILTER_UI
Edited by: Bala Duvvuri on Oct 4, 2011 1:20 AMhi Mohamed,
Go through this links ,
<a href="http://help.sap.com/saphelp_nw70/helpdata/en/95/92b2f7d2f14a6da7a8b5d66808d1f6/content.htm">Portal Display Rules</a>
<a href="http://help.sap.com/saphelp_nw70/helpdata/en/4b/29cf122f414721964269e1b675d62c/content.htm">Rulecollection</a>
Regards,
Malini.V -
OOPs ALV report Fieldcatalog Editing a currency field
Hi all,
I have created an OOP's ALV report. I have made one of the currency field editable. when I am changing the value in any cell and go out of the cell(or move to other cell using arrow keys or click some were in the grid) it is taking '.' after 2 digits from the right.
for example if I take 10 it is converting to 0.10, if I take 100 it is becomnig 1.00, if I take 100.00 it is becoming 1.00. If I take 123.45 I am getting a pop up box with message "Too many decimal places"
the fieldcatalog values are as follows
WA_FIELDCAT-FIELDNAME = 'ORD_VAL'.
WA_FIELDCAT-SCRTEXT_M = 'Ord Value'.
WA_FIELDCAT-COL_POS = 11.
wa_fieldcat-no_zero = 'X'.
WA_FIELDCAT-OUTPUTLEN = 14.
WA_FIELDCAT-CURRENCY = 'INR'.
wa_fieldcat-decimals_o = '2'.
wa_fieldcat-no_zero = 'X'.
WA_FIELDCAT-EDIT = 'X'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
Can anybody please help me. As If I edit the field it should take the values what I input.
Thanks in Advance.Hi ,
The CURR field is the currency unit field in the table ITAB.
I am just confused with your answer. in my case the final internal table is T_CHKQTY1 shall I take that or anything else. I have taken WA_FIELDCAT-CTABNAME = 'CURR'. but the system is thrownig an error as The data object has no component with CTABNAME but there is a component called TABNAME.
Can you please currect me. -
ALV Error: Fieldcatalog not found...
Hello Experts,
I am currently creating a new report that uses object oriented ALV with
custom control. But when I run my program it always gives me that there is no fieldcatalog
found. I will paste my code below so you can see. Hope you can help me out here guys.
Thank you and take care!
*=====================================================================
* Program Name : ZSD_ORDERSTAGE
* Author : Aris Hidalgo
* Date Created : May 4, 2007
* Description : Display sales orders for a given customer on a given
* date range
*=====================================================================
REPORT zsd_orderstage
NO STANDARD PAGE HEADING.
* Data Dictionary Table/s *
TABLES: vbak.
* Global Structure/s *
TYPES: BEGIN OF t_vbak,
vbeln TYPE vbak-vbeln,
posnr TYPE vbap-posnr,
erdat TYPE vbak-erdat,
ernam TYPE vbak-ernam,
auart TYPE vbak-auart,
kunnr TYPE vbak-kunnr,
vkgrp TYPE vbak-vkgrp,
END OF t_vbak.
TYPES: BEGIN OF t_vbfa,
vbelv TYPE vbfa-vbelv,
posnv TYPE vbfa-posnv,
vbtyp_n TYPE vbfa-vbtyp_n,
vbtyp_v TYPE vbfa-vbtyp_v,
vbeln TYPE vbfa-vbeln,
END OF t_vbfa.
TYPES: BEGIN OF t_likp,
vgbel TYPE lips-vgbel,
vgpos TYPE lips-vgpos,
vbeln TYPE likp-vbeln,
posnr TYPE lips-posnr,
kunnr TYPE likp-kunnr,
END OF t_likp.
TYPES: BEGIN OF t_vbrk,
aubel TYPE vbrp-aubel,
aupos TYPE vbrp-aupos,
vbeln TYPE vbrk-vbeln,
END OF t_vbrk.
TYPES: BEGIN OF t_output,
salesorder TYPE vbak-vbeln,
salesitem TYPE vbap-posnr,
salesgroup TYPE vbak-vkgrp,
custcode TYPE vbak-kunnr,
shipto TYPE likp-kunnr,
creation_date TYPE vbak-erdat,
created_by TYPE vbak-ernam,
delorder TYPE likp-vbeln,
invnumber TYPE vbrk-vbeln,
END OF t_output.
* Global Internal Table/s *
DATA: gt_vbak TYPE STANDARD TABLE OF t_vbak,
gt_vbfa TYPE STANDARD TABLE OF t_vbfa,
gt_likp TYPE STANDARD TABLE OF t_likp,
gt_vbrk TYPE STANDARD TABLE OF t_vbrk,
gt_output TYPE STANDARD TABLE OF t_output.
* SELECTION-SCREEN *
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS: p_kunnr TYPE vbak-kunnr OBLIGATORY.
SELECT-OPTIONS: s_vkgrp FOR vbak-vkgrp,
s_auart FOR vbak-auart,
s_erdat FOR vbak-erdat OBLIGATORY,
s_ernam FOR vbak-ernam.
SELECTION-SCREEN END OF BLOCK b1.
CLASS lcl_event_receiver DEFINITION DEFERRED.
* Data Declaration/s *
DATA: ok_code TYPE sy-ucomm,
save_ok TYPE sy-ucomm,
g_max TYPE i VALUE 100,
g_repid TYPE sy-repid,
gs_layout TYPE lvc_s_layo,
cont_for_flights TYPE scrfname VALUE 'BCALV_GRID_02_100',
grid1 TYPE REF TO cl_gui_alv_grid,
custom_container TYPE REF TO cl_gui_custom_container,
grid2 TYPE REF TO cl_gui_alv_grid,
* reference to dialogbox container.
dialogbox_container TYPE REF TO cl_gui_dialogbox_container,
event_receiver TYPE REF TO lcl_event_receiver.
* CLASS lcl_event_receiver DEFINITION
CLASS lcl_event_receiver DEFINITION.
PUBLIC SECTION.
METHODS:
handle_double_click
FOR EVENT double_click OF cl_gui_alv_grid
IMPORTING e_row e_column,
handle_close
FOR EVENT close OF cl_gui_dialogbox_container
IMPORTING sender,
create_detail_list.
PRIVATE SECTION.
DATA: dialogbox_status TYPE c. "'X': does exist, SPACE: does not ex.
ENDCLASS. "lcl_event_receiver DEFINITION
* CLASS lcl_event_receiver IMPLEMENTATION
CLASS lcl_event_receiver IMPLEMENTATION.
* §3.At doubleclick(1): The event DOUBLE_CLICK provides
* parameters of the clicked row and column.
* Use row parameter to select a line of the
* corresponding internal table.
METHOD handle_double_click.
* DATA: ls_sflight LIKE LINE OF gt_sflight.
* read selected row from internal table gt_sflight
* READ TABLE gt_sflight INDEX e_row-index INTO ls_sflight.
* §4.At Doubleclick(2): Select booking data
* PERFORM select_table_sbook USING ls_sflight
* CHANGING gt_sbook.
* §5.At doubleclick(3): Create dialogbox to show detail list
* (if not already existent)
IF dialogbox_status IS INITIAL.
dialogbox_status = 'X'.
* PERFORM create_detail_list.
CALL METHOD me->create_detail_list.
ELSE.
CALL METHOD dialogbox_container->set_visible
EXPORTING
visible = 'X'.
CALL METHOD grid2->refresh_table_display.
ENDIF.
ENDMETHOD. "handle_double_click
METHOD handle_close.
* §6.Handle the CLOSE-button of the dialogbox
* set dialogbox invisible
* (the dialogbox is destroyed outomatically when the user
* switches to another dynpro).
CALL METHOD sender->set_visible
EXPORTING
visible = space.
* In this example closing the dialogbox leads
* to make it invisible. It is also conceivable to destroy it
* and recreate it if the user doubleclicks a line again.
* Displaying a great amount of data has a greater impact on performance.
ENDMETHOD. "handle_close
METHOD create_detail_list.
* create dialogbox container as dynpro-instance
* When the user switches to another screen, it is
* destroyed by lifetime mangagement of CFW
CREATE OBJECT dialogbox_container
EXPORTING
top = 150
left = 150
lifetime = cntl_lifetime_dynpro
caption = 'Sales Orders'(200)
width = 800
height = 200.
CREATE OBJECT grid2
EXPORTING i_parent = dialogbox_container.
* Register ABAP OO event 'CLOSE'. It is not necessary to register this
* event at the frontend (this is done during creation).
SET HANDLER event_receiver->handle_close FOR dialogbox_container.
* display data
gs_layout-grid_title = space.
CALL METHOD grid2->set_table_for_first_display
EXPORTING
i_structure_name = 'T_OUTPUT'
is_layout = gs_layout
CHANGING
it_outtab = gt_output.
CALL METHOD cl_gui_control=>set_focus
EXPORTING
control = grid2.
ENDMETHOD. "create_detail_list
ENDCLASS. "lcl_event_receiver IMPLEMENTATION
* CLASS lcl_get_so DEFINITION
CLASS lcl_get_so DEFINITION.
PUBLIC SECTION.
METHODS: get_sales_orders
EXPORTING
ex_vbak LIKE gt_vbak.
ENDCLASS. "lcl_get_so DEFINITION
* CLASS lcl_get_so IMPLEMENTATION
CLASS lcl_get_so IMPLEMENTATION.
METHOD get_sales_orders.
SELECT vbak~vbeln vbap~posnr vbak~erdat
vbak~ernam vbak~auart vbak~kunnr
vbak~vkgrp
FROM vbak
INNER JOIN vbap
ON vbak~vbeln = vbap~vbeln
INTO TABLE gt_vbak
WHERE vbak~erdat IN s_erdat
AND vbak~ernam IN s_ernam
AND vbak~auart IN s_auart
AND vbak~vkgrp IN s_vkgrp
AND vbak~kunnr = p_kunnr.
IF NOT gt_vbak[] IS INITIAL.
ex_vbak[] = gt_vbak[].
ENDIF.
ENDMETHOD. "get_sales_orders
ENDCLASS. "lcl_get_so IMPLEMENTATION
* CLASS lcl_get_do DEFINITION
CLASS lcl_get_do DEFINITION.
PUBLIC SECTION.
METHODS: get_delivery_orders
IMPORTING
value(im_vbak) LIKE gt_vbak
EXPORTING
value(ex_likp) LIKE gt_likp.
ENDCLASS. "lcl_get_do DEFINITION
* CLASS lcl_get_do IMPLEMENTATION
CLASS lcl_get_do IMPLEMENTATION.
METHOD get_delivery_orders.
IF NOT im_vbak[] IS INITIAL.
SELECT lips~vgbel lips~vgpos
likp~vbeln lips~posnr
likp~kunnr
FROM likp
INNER JOIN lips
ON likp~vbeln = lips~vbeln
INTO TABLE gt_likp
FOR ALL ENTRIES IN im_vbak
WHERE vgbel = im_vbak-vbeln
AND vgpos = im_vbak-posnr.
ENDIF.
IF NOT gt_likp[] IS INITIAL.
ex_likp[] = gt_likp[].
ENDIF.
ENDMETHOD. "get_delivery_orders
ENDCLASS. "lcl_get_do IMPLEMENTATION
* CLASS lcl_get_bd DEFINITION
CLASS lcl_get_bd DEFINITION.
PUBLIC SECTION.
METHODS: get_billing_documents
IMPORTING
value(im_vbak) LIKE gt_vbak
EXPORTING
value(ex_vbrk) LIKE gt_vbrk.
ENDCLASS. "lcl_get_bd DEFINITION
* CLASS lcl_get_bd IMPLEMENTATION
CLASS lcl_get_bd IMPLEMENTATION.
METHOD get_billing_documents.
IF NOT im_vbak[] IS INITIAL.
SELECT vbrp~aubel vbrp~aupos vbrk~vbeln
FROM vbrk
INNER JOIN vbrp
ON vbrk~vbeln = vbrp~vbeln
INTO TABLE gt_vbrk
FOR ALL ENTRIES IN im_vbak
WHERE aubel = im_vbak-vbeln
AND aupos = im_vbak-posnr.
ENDIF.
IF NOT gt_vbrk[] IS INITIAL.
ex_vbrk[] = gt_vbrk[].
ENDIF.
ENDMETHOD. "get_billing_documents
ENDCLASS. "lcl_get_bd IMPLEMENTATION
* CLASS lcl_combine_data DEFINITION
CLASS lcl_combine_data DEFINITION.
PUBLIC SECTION.
METHODS: combine_data
IMPORTING
value(im_vbak) LIKE gt_vbak
value(im_likp) LIKE gt_likp
value(im_vbrk) LIKE gt_vbrk
EXPORTING
value(ex_output) LIKE gt_output.
ENDCLASS. "lcl_combine_data DEFINITION
* CLASS lcl_combine_data IMPLEMENTATION
CLASS lcl_combine_data IMPLEMENTATION.
METHOD combine_data.
FIELD-SYMBOLS: <fs_vbak> LIKE LINE OF im_vbak,
<fs_likp> LIKE LINE OF im_likp,
<fs_vbrk> LIKE LINE OF im_vbrk.
DATA: wa_output LIKE LINE OF ex_output.
SORT im_vbak ASCENDING BY: vbeln posnr.
SORT im_likp ASCENDING BY: vgbel vgpos.
SORT im_vbrk ASCENDING BY: aubel aupos.
LOOP AT im_vbak ASSIGNING <fs_vbak>.
READ TABLE im_likp ASSIGNING <fs_likp>
WITH KEY vgbel = <fs_vbak>-vbeln
vgpos = <fs_vbak>-posnr
BINARY SEARCH.
IF sy-subrc = 0.
MOVE: <fs_vbak>-vbeln TO wa_output-salesorder,
<fs_vbak>-posnr TO wa_output-salesitem,
<fs_vbak>-vkgrp TO wa_output-salesgroup,
<fs_vbak>-kunnr TO wa_output-custcode,
<fs_likp>-kunnr TO wa_output-shipto,
<fs_vbak>-erdat TO wa_output-creation_date,
<fs_vbak>-ernam TO wa_output-created_by,
<fs_likp>-vbeln TO wa_output-delorder.
ENDIF.
READ TABLE im_vbrk ASSIGNING <fs_vbrk>
WITH KEY aubel = <fs_vbak>-vbeln
aupos = <fs_vbak>-posnr
BINARY SEARCH.
IF sy-subrc = 0.
MOVE <fs_vbrk>-vbeln TO wa_output-invnumber.
ENDIF.
APPEND wa_output TO ex_output.
CLEAR wa_output.
ENDLOOP.
DELETE ex_output WHERE salesorder IS INITIAL.
ENDMETHOD. "combine_data
ENDCLASS. "lcl_combine_data IMPLEMENTATION
* START-OF-SELECTION *
START-OF-SELECTION.
DATA: lt_vbak_dum LIKE gt_vbak,
lt_likp_dum LIKE gt_likp,
lt_vbrk_dum LIKE gt_vbrk.
DATA: o_get_so TYPE REF TO lcl_get_so,
o_get_do TYPE REF TO lcl_get_do,
o_get_bd TYPE REF TO lcl_get_bd,
o_combine_data TYPE REF TO lcl_combine_data.
CREATE OBJECT: o_get_so,
o_get_do,
o_get_bd,
o_combine_data.
END-OF-SELECTION.
CALL SCREEN 100.
*& Module STATUS_0100 OUTPUT
* text
MODULE status_0100 OUTPUT.
SET PF-STATUS 'MAIN100'.
* SET TITLEBAR 'xxx'.
g_repid = sy-repid.
IF custom_container IS INITIAL.
CALL METHOD o_get_so->get_sales_orders
IMPORTING
ex_vbak = lt_vbak_dum.
CALL METHOD o_get_do->get_delivery_orders
EXPORTING
im_vbak = lt_vbak_dum
IMPORTING
ex_likp = lt_likp_dum.
CALL METHOD o_get_bd->get_billing_documents
EXPORTING
im_vbak = lt_vbak_dum
IMPORTING
ex_vbrk = lt_vbrk_dum.
CALL METHOD o_combine_data->combine_data
EXPORTING
im_vbak = lt_vbak_dum
im_likp = lt_likp_dum
im_vbrk = lt_vbrk_dum
IMPORTING
ex_output = gt_output.
*Create a custom container control for our ALV Control
CREATE OBJECT custom_container
EXPORTING
container_name = cont_for_flights
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5.
IF sy-subrc NE 0.
*Add your handling, for example
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
titel = g_repid
txt2 = sy-subrc
txt1 = 'The control could not be created'(510).
ENDIF.
*Create an instance of alv control
CREATE OBJECT grid1
EXPORTING i_parent = custom_container.
*Set a titlebar for the grid control
gs_layout-grid_title = 'List of Sales Orders'(100).
CALL METHOD grid1->set_table_for_first_display
EXPORTING
* i_structure_name = 'T_OUTPUT'
is_layout = gs_layout
CHANGING
it_outtab = gt_output.
*Create Object to receive events and link them to handler methods.
*When the ALV Control raises the event for the specified instance
*the corresponding method is automatically called.
CREATE OBJECT event_receiver.
SET HANDLER event_receiver->handle_double_click FOR grid1.
ENDIF.
CALL METHOD cl_gui_control=>set_focus
EXPORTING
control = grid1.
ENDMODULE. " STATUS_0100 OUTPUT
*& Module USER_COMMAND_0100 INPUT
* text
MODULE user_command_0100 INPUT.
save_ok = ok_code.
CASE save_ok.
WHEN 'BACK'.
CALL METHOD custom_container->free.
CALL METHOD cl_gui_cfw=>flush.
IF sy-subrc <> 0.
*Add your handling, for example
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
titel = g_repid
txt2 = sy-subrc
txt1 = 'Error in FLush'(500).
ENDIF.
LEAVE PROGRAM.
WHEN 'EXIT'.
CALL METHOD custom_container->free.
CALL METHOD cl_gui_cfw=>flush.
IF sy-subrc <> 0.
*Add your handling, for example
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
titel = g_repid
txt2 = sy-subrc
txt1 = 'Error in FLush'(500).
ENDIF.
LEAVE PROGRAM.
WHEN 'CANCEL'.
CALL METHOD custom_container->free.
CALL METHOD cl_gui_cfw=>flush.
IF sy-subrc <> 0.
*Add your handling, for example
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
titel = g_repid
txt2 = sy-subrc
txt1 = 'Error in FLush'(500).
ENDIF.
LEAVE PROGRAM.
ENDCASE.
CLEAR save_ok.
ENDMODULE. " USER_COMMAND_0100 INPUTHi Viraylab,
You need to craete a fieldcat to print data in ALV and pass this table to the method written below :
CALL METHOD grid1->set_table_for_first_display
EXPORTING
i_structure_name = 'T_OUTPUT'
is_layout = gs_layout
CHANGING
it_outtab = gt_output.
i_fieldcat = gt_fieldcat
u can bulid afield catlog table like this :
form FIELDCAT using p_i_fieldcat TYPE SLIS_T_FIELDCAT_ALV.
DATA : L_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
FOR MATERIAL NO
CLEAR L_FIELDCAT.
L_FIELDCAT-COL_POS = '1'.
L_FIELDCAT-FIELDNAME = 'MATNR'.
L_FIELDCAT-TABNAME = 'IT_MATSTOCK'.
L_FIELDCAT-seltext_l = 'MATERIAL NO'. " LONG TEXT FOR HEADER.
L_FIELDCAT-seltext_m = 'MAT NO'. " MEDIUM TEXT FOR HEADER.
L_FIELDCAT-seltext_s = 'MATNO'. " SHORT TEXT FOR HEADER.
L_FIELDCAT-EMPHASIZE = 'C410'. " COLOR OF THIS COLUMN.
L_FIELDCAT-OUTPUTLEN = '20'.
APPEND L_FIELDCAT TO P_I_FIELDCAT.
FOR MATERIAL TYPE
CLEAR L_FIELDCAT.
L_FIELDCAT-COL_POS = '2'.
L_FIELDCAT-FIELDNAME = 'MTART'.
L_FIELDCAT-TABNAME = 'IT_MATSTOCK'.
L_FIELDCAT-seltext_l = 'MATERIAL TYPE'. " LONG TEXT FOR HEADER.
L_FIELDCAT-seltext_m = 'MAT TYPE'. " MEDIUM TEXT FOR HEADER.
L_FIELDCAT-seltext_s = 'MAT TYP'. " SHORT TEXT FOR HEADER.
L_FIELDCAT-EMPHASIZE = 'C510'. " COLOR OF THIS COLUMN.
L_FIELDCAT-OUTPUTLEN = '6'.
APPEND L_FIELDCAT TO P_I_FIELDCAT.
FOR MATERIAL DESCRIPTION
CLEAR L_FIELDCAT.
L_FIELDCAT-COL_POS = '3'.
L_FIELDCAT-FIELDNAME = 'MAKTX'.
L_FIELDCAT-TABNAME = 'IT_MATSTOCK'.
L_FIELDCAT-seltext_l = 'MAT DESCRIP'. " LONG TEXT FOR HEADER.
L_FIELDCAT-seltext_m = 'M DESCRIP'. " MEDIUM TEXT FOR HEADER.
L_FIELDCAT-seltext_s = 'MDESCRIP'. " SHORT TEXT FOR HEADER.
L_FIELDCAT-EMPHASIZE = 'C310'. " COLOR OF THIS COLUMN.
L_FIELDCAT-OUTPUTLEN = '40'.
APPEND L_FIELDCAT TO P_I_FIELDCAT.
Reward points if helpful.
Regards,
Hemant -
Issuw with Fieldcatalog in ALV OOPS
Hi All,
I am displaying output using ALV OOPs. in output table ihave dropdown field called Manual Processing status.
to get dropdown i used below logic.
DATA: lt_dropdown TYPE lvc_t_drop,
ls_dropdown TYPE lvc_s_drop.
ls_dropdown-handle = '1'.
ls_dropdown-value = 'OPEN'(016).
APPEND ls_dropdown TO lt_dropdown.
ls_dropdown-handle = '1'.
ls_dropdown-value = 'CLOSED'(012).
APPEND ls_dropdown TO lt_dropdown.
ls_dropdown-handle = '1'.
ls_dropdown-value = 'CANCELLED'(014).
APPEND ls_dropdown TO lt_dropdown.
ls_dropdown-handle = '1'.
ls_dropdown-value = 'NO ACTION REQUIRED'(015).
APPEND ls_dropdown TO lt_dropdown.
ls_dropdown-handle = '1'.
ls_dropdown-value = ' '.
APPEND ls_dropdown TO lt_dropdown.
CALL METHOD grid->set_drop_down_table
EXPORTING
it_drop_down = lt_dropdown.
when i a, displaying the output lenth of this field is '9'(i mentioned while building the fieldcatalog) but in output its size is more. I used the below field catalog for this field.
ls_feildcat-fieldname = pv_field.
ls_feildcat-outputlen = pc_length.
ls_feildcat-coltext = pv_header.
ls_feildcat-just = pc_true.
ls_feildcat-no_out = gc_space.
ls_feildcat-drdn_hndl = '1'.
ls_feildcat-fix_column = 'X'.
when i comment ls_feildcat-drdn_hndl = '1' then its working fine but i am not getting dropdown. ANybody can sugeest me how to approach in this case.
Regards,
MaheedharHi,
Not sure to get your point...could this be in relation with your layout settings (e.g by passing is_layout-cwidth_opt = 'X' to method set_table_for_first_display) ?
Kr,
m. -
Need class name to display ALV list (not Grid) in objects..
hi,
i need to display ALV list ( not ALV Grid ) in objects.. i dont the class name for tat.. so plz can anyone help me out for the same..
thanks in advance..With cl_salv_table you can have both grid or list, depending what you want.
cl_salv_table=>factory(
EXPORTING
list_display = 'X' "when space then GRID, when 'X' then LIST
IMPORTING
r_salv_table = ref_table
CHANGING
t_table = gt_sflight ).
Regards
Marcin -
hi experts,
I have a problem in alv report. actually output table consists of 150 fields. out of which i want to display 15 fields in alv grid and rest of the fields get displayed only when user wants to by using change layout tab.. now for this i need to make field catalog for each field separately which will increase the no of code lines to a great extent which i dont want..
Is there any other alternative for that?
Thankshi
u can use a function module for this.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name =
CHANGING
ct_fieldcat = gt_fieldcat
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.
" then loop at fieldcatalog and make fieldcatalog for all
the fields which u want to display.
LOOP AT gt_fieldcat INTO ls_fcat.
CASE ls_fcat-fieldname.
WHEN c_fieldname.
ls_fcat-col_pos = 0.
ls_fcat-row_pos = 1.
ls_fcat-outputlen = 2.
ls_fcat-tabname = table_name.
and when others will have all the fields which u dont want to display.
WHEN OTHERS.
ls_fcat-no_out = 'X'.
ls_fcat-outputlen = 15.
ls_fcat-just = c_l.
ls_fcat-tabname = table_name .
ENDCASE.
MODIFY gt_fieldcat FROM ls_fcat.
CLEAR ls_fcat.
ENDLOOP.
regards
Maybe you are looking for
-
I RECENTLY HAD THE HARD DRIVE REPLACED ON MY MACBOOK PRO 8.1 UNDER WARRENTY NOW I FIND I CANNOT INSTALL I LIFE FROM MY ORIGINAL DVD my original os was 10.6.7 now running 10.6.8
-
IPCC Express script is not working
Hello, i am ahving one script that is configured with script editor fine but when i play with cucm then call for on duty time going to off duty time extneison number. why is it happening. it is not shwoing any error in the debugg also.
-
Alert Rule Configuration in SAP PI 7.3
Hello, I am using PI 7.3. It's java stack only. I am using component based alert configuration. AlertConsumerJob is running. But for a particular scenario, no alert is generated, although the message status is "System error". We are getting the below
-
Client web browser closes abruptly when accessing forms deployed using 9iAS 1.0. 2
I am using 9iAS 1.0.2 on W2K server with SP3.I could successfully launch the application on web browser at server side.Hoever when I try to access from client machine the first time it install the Jinitiator and the web browser gets closed. why it is
-
How do I download images from a camera into Photoshop Elements 7?
Previously I've downloaded digital images directly from my camera into Photoshop Elements 7.0 In trying to do that today, I go to "File", choose "Get pictures from Camera", then see a "source" box, with an instruction to "Get Pictures from:" and of