‎2013 Jan 21 7:44 AM
Hi Genius,
I have one selection screen.
based on the my selection screen i have create column at run time and move data for each column.
here i write a coding for create column in run time .
but i dont know procedure for how to move my GT_BOOK Data into the GT_final.
Pls check following code
COLUMN HEADING :
ORDER_TYPE DETAIL STOCK 01.01.2013 02.01.2013 03.01.2013 .......... 31.01.2013
TYPE-POOLS : SLIS.
TABLES : ZFDRBOOKING.
TYPES : BEGIN OF TY_BOOK,
EXTWG TYPE ZFDRBOOKING-EXTWG,
KUNNR TYPE ZFDRBOOKING-KUNNR,
BOOKNO TYPE ZFDRBOOKING-BOOKNO,
CUSTOMERNAME TYPE ZFDRBOOKING-CUSTOMERNAME,
CUSTOMERMOBILE TYPE ZFDRBOOKING-CUSTOMERMOBILE,
MJAHR TYPE ZFDRBOOKING-MJAHR,
BOOKDATE TYPE ZFDRBOOKING-BOOKDATE,
BOOKQTY TYPE ZFDRBOOKING-BOOKQTY,
BOOKSTATUS TYPE ZFDRBOOKING-BOOKSTATUS,
END OF TY_BOOK.
DATA : GT_BOOK TYPE TABLE OF TY_BOOK.
DATA : GS_BOOK TYPE TY_BOOK.
DATA : GT_FIELDCAT TYPE LVC_T_FCAT, "slis_t_fieldcat_alv,
GS_FIELDCAT TYPE LVC_S_FCAT. "LIKE LINE OF gt_fieldcat.
FIELD-SYMBOLS: <GT_DYNTABLE> TYPE TABLE, " Dynamic internal table name
<FS_DYNTABLE>, " Field symbol to create work area
<FS_FLDVAL> TYPE ANY.
DATA : GT_FINAL TYPE REF TO DATA,
GS_final LIKE GT_FINAL. "“ Field symbol to assign values
DATA: LV_DATE TYPE I,
S_NO TYPE I.
SELECT-OPTIONS : S_BUDAT FOR ZFDRBOOKING-BOOKDATE.
START-OF-SELECTION.
IF S_BUDAT IS NOT INITIAL.
LV_DATE = S_BUDAT-HIGH - S_BUDAT-LOW + 3.
DO LV_DATE TIMES.
S_NO = S_NO + 4.
CASE: S_NO.
WHEN '1'.
GS_FIELDCAT-COL_POS = S_NO.
GS_FIELDCAT-FIELDNAME = 'Order_Type'.
GS_FIELDCAT-SELTEXT = 'Order Type'.
APPEND GS_FIELDCAT TO GT_FIELDCAT.
CLEAR GS_FIELDCAT.
WHEN '2'.
GS_FIELDCAT-COL_POS = S_NO.
GS_FIELDCAT-FIELDNAME = 'Detail'.
GS_FIELDCAT-SELTEXT = 'Detail'.
APPEND GS_FIELDCAT TO GT_FIELDCAT.
CLEAR GS_FIELDCAT.
WHEN '3'.
GS_FIELDCAT-COL_POS = S_NO.
GS_FIELDCAT-FIELDNAME = 'Stock'.
GS_FIELDCAT-SELTEXT = 'Stock'.
APPEND GS_FIELDCAT TO GT_FIELDCAT.
CLEAR GS_FIELDCAT.
WHEN '4'.
GS_FIELDCAT-COL_POS = S_NO.
GS_FIELDCAT-FIELDNAME = 'EXTWG'.
GS_FIELDCAT-SELTEXT = 'GROUP'.
APPEND GS_FIELDCAT TO GT_FIELDCAT.
CLEAR GS_FIELDCAT.
WHEN OTHERS.
GS_FIELDCAT-COL_POS = S_NO.
GS_FIELDCAT-FIELDNAME = S_BUDAT-LOW.
GS_FIELDCAT-SELTEXT = S_BUDAT-LOW.
APPEND GS_FIELDCAT TO GT_FIELDCAT.
S_BUDAT-LOW = S_BUDAT-LOW + 1.
ENDCASE.
ENDDO.
SORT GT_FIELDCAT BY COL_POS.
ENDIF.
DATA : GT_TABLE TYPE REF TO DATA.
CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE
EXPORTING
IT_FIELDCATALOG = GT_FIELDCAT[]
IMPORTING
EP_TABLE = GT_TABLE.
GT_FINAL = GT_TABLE.
ASSIGN GT_FINAL->* TO <GT_DYNTABLE>.
* Create dynamic work area and assign to FS
CREATE DATA : GS_FINAL LIKE LINE OF <GT_DYNTABLE>.
ASSIGN GS_final->* TO <FS_DYNTABLE>.
SELECT EXTWG KUNNR BOOKNO CUSTOMERNAME CUSTOMERMOBILE
MJAHR BOOKDATE BOOKQTY BOOKSTATUS
FROM ZFDRBOOKING
INTO TABLE GT_BOOK
WHERE BOOKDATE IN S_BUDAT
AND EXTWG = '00010'.
LOOP AT GT_BOOK INTO GS_BOOK.
Here how to move my gt_book data into gt_final table based on the column heading.
ENDLOOP.
Pls anyone help to me...
‎2013 Jan 21 9:10 AM
Hi Subramani ,
First check for the column heading created at the time of run.
Read that internal table in which those column heading is present in between this loop for gt_book.
Then use move corresponding from the work area of gt_book to work area of gt_final.
Then at last append those value from work area of gt_final to internal table of gt_final.
Hope this will help ....