‎2013 Nov 06 11:16 AM
*&---------------------------------------------------------------------*
*& Report ZSP_BSID
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZSP_BSID.
TYPE-POOLS:SLIS.
"type-pools:abap.
TABLES: BSID.
"CONSTANTS : lc_structure TYPE tabname VALUE 'ZSXX'.
TYPES: BEGIN OF TY_bsid," OCCURS 0,
bukrs TYPE bsid-bukrs,
kunnr TYPE bsid-kunnr,
monat TYPE bsid-monat,
TEXT TYPE C,
total type n,
END OF TY_bsid.
"monat like bsid-monat,
* jan TYPE bsid-monat,
* feb TYPE bsid-monat,
* mar TYPE bsid-monat,
* apr TYPE bsid-monat,
* may TYPE bsid-monat,
* jun TYPE bsid-monat,
* jul TYPE bsid-monat,
* aug TYPE bsid-monat,
* sep TYPE bsid-monat,
* oct TYPE bsid-monat,
* nov TYPE bsid-monat,
* dec TYPE bsid-monat,
DATA: FCAT TYPE SLIS_FIELDCAT_ALV,
IT_FCAT TYPE SLIS_T_FIELDCAT_ALV.
DATA: T_EVENT TYPE SLIS_T_EVENT,
W_EVENT TYPE SLIS_ALV_EVENT.
DATA: SORT TYPE SLIS_SORTINFO_ALV,
IT_SORT TYPE SLIS_T_SORTINFO_ALV.
DATA: MONAT(2) TYPE c.
"CALL SCREEN 2000.
"DATA: FLAG.
"data: lv_pos type i.
DATA: IT_BSID TYPE TY_BSID OCCURS 0 with header line.
"data: it_color TYPE TABLE OF lvc_s_scol.
DATA: WA_BSID TYPE TY_bsid.
SELECTION-SCREEN: BEGIN OF BLOCK A WITH FRAME TITLE B.
SELECT-OPTIONS: CMP_CODE FOR BSID-BUKRS." OBLIGATORY.
SELECT-OPTIONS: CUST_NME FOR BSID-KUNNR." OBLIGATORY.
SELECT-OPTIONS: MONTH FOR BSID-MONAT.
SELECTION-SCREEN: END OF BLOCK A.
data: num1(2) type c,
num2(2) type c.
"monat type n.
*
num1 = MONTH-low.
num2 = MONTH-high.
monat = num2 - num1(01) + 1.
field-symbols: <it_bsid> type STANDARD TABLE.
START-OF-SELECTION.
PERFORM SELECT.
PERFORM FIELDCAT.
PERFORM DISPLAY.
"PERFORM DISPLAY1.
"perform format_field_catolog.
" PERFORM DISPLAY1.
*&---------------------------------------------------------------------*
*& Form SELECT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM SELECT.
SELECT bukrs kunnr monat FROM BSID INTO TABLE IT_BSID
* WHERE BUKRS IN CMP_CODE AND
* kunnr IN CUST_NME and
where monat eq MONTH.
ENDFORM.
" SELECT
"create DATA w_dref TYPE STANDARD TABLE OF (month).
*ASSIGN w_dref->* to <it_bsid>.
*
*
*SELECT * FROM (month) into table <it_bsid>.
*&---------------------------------------------------------------------*
*& Form FIELDCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form FIELDCAT .
"do 12 times.
" result = sy-index ** 12.
fcat-col_pos = '1'.
fcat-tabname = 'IT_BSID'.
fcat-fieldname = 'BUKRS'.
fcat-seltext_m = 'CUSTOMER NAME'.
fcat-hotspot = 'X'.
fcat-emphasize = 'C666'.
APPEND FCAT TO it_fcat.
CLEAR fcat.
fcat-COL_POS = '2'.
fcat-SELTEXT_L = 'COMPANY CODE'.
fcat-FIELDNAME = 'KUNNR'.
APPEND FCAT TO IT_FCAT.
CLEAR FCAT.
"do 12 times.
" result = sy-index ** 12.
.
DO MONAT times.
"RESULT = SY-INDEX ** 12.
"WRITE:/ sy-index EQ RESULT.
fcat-col_pos = '3'.
fcat-tabname = 'IT_BSID'.
fcat-fieldname = 'MONAT'.
fcat-seltext_m = 'MONTH'.
APPEND FCAT TO it_fcat.
CLEAR fcat.
enddo.
*
*fcat-col_pos = '4'.
* "fcat-tabname = 'IT_BSID'.
* fcat-fieldname = 'MONAT'.
* "FCAT-no_totalline = 'X'.
* fcat-seltext_m = 'TOTAL'.
* FCAT-DO_SUM = 'X'.
* FCAT-NO_OUT = 'X'.
*" fcat-hotspot = 'X'.
* " fcat-emphasize = 'C666'.
* APPEND FCAT TO it_fcat.
* CLEAR fcat.
*fcat-col_pos = '4'.
* "fcat-tabname = 'IT_BSID'.
* fcat-fieldname = 'MONAT'.
* "FCAT-no_totalline = 'X'.
* fcat-seltext_m = 'TOTAL'.
* FCAT-DO_SUM = 'X'.
* "FCAT-NO_OUT = 'X'.
*" fcat-hotspot = 'X'.
* " fcat-emphasize = 'C666'.
* APPEND FCAT TO it_fcat.
* CLEAR fcat.
*
*SORT-fieldname = 'MONAT'.
*SORT-SUBTOT = 'X'.
*APPEND SORT TO IT_SORT.
*CLEAR SORT.
endform.
" FIELDCAT
*&---------------------------------------------------------------------*
*& Form DISPLAY
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form DISPLAY .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER = ' '
* I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = SY-REPID
* I_CALLBACK_PF_STATUS_SET = ' '
* I_CALLBACK_USER_COMMAND = ' '
* I_CALLBACK_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_GRID_SETTINGS =
* IS_LAYOUT =
IT_FIELDCAT = IT_FCAT
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
IT_SORT = IT_SORT
* IT_FILTER =
* IS_SEL_HIDE =
" I_DEFAULT = 'X'
* I_SAVE = ' '
* IS_VARIANT =
" IT_EVENTS = T_EVENT
* 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_BSID
* 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
*&---------------------------------------------------------------------*
*& Form FORMAT_FIELD_CATOLOG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
*form FORMAT_FIELD_CATOLOG .
*
* beg_month = listbox1.
*end_month = listbox2 .
*
*dO.
*if beg_month gt end_month.
* exit.
*
*ENdif.
*
*
*enddo.
*
*endform. " FORMAT_FIELD_CATOLOG
*CALL FUNCTION 'HR_E_NUM_OF_DAYS_OF_MONTH'
* EXPORTING
* p_fecha = SY-DATUM
** IMPORTING
** NUMBER_OF_DAYS =
*
*&---------------------------------------------------------------------*
*& Form DISPLAY1
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
*form DISPLAY1 .
*CALL FUNCTION 'MONTH_PLUS_DETERMINE'
* EXPORTING
* months = 12
* olddate = SY-DATUM
* IMPORTING
* NEWDATE = RESULT.
*endform. " DISPLAY1
"DATA: T_OUTPUT TYPE REF TO DATA.
"FIELD-SYMBOLS: <T_OUTPUT> TYPE TABLE.
"Call Method CL_ALV_TABLE_CREATE->CREATE_DYNAMIC_TABLE
"Exporting
"IT_FIELDCATALOG = T_FIELDCAT
"Importing
"EP_TABLE = T_OUTPUT.
"ASSIGN T_OUTPUT->* TO <T_OUTPUT>.
"*&---------------------------------------------------------------------*
"*& Form DISPLAY1
"*&---------------------------------------------------------------------*
"* text
"*----------------------------------------------------------------------*
"* --> p1 text
"* <-- p2 text
"*----------------------------------------------------------------------*
"form DISPLAY1 .
"CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
" EXPORTING
"* I_BUFFER_ACTIVE =
" I_STRUCTURE_NAME = sy-repid
"* I_CLIENT_NEVER_DISPLAY = 'X'
"* I_BYPASSING_BUFFER =
"* I_INTERNAL_TABNAME =
" CHANGING
" ct_fieldcat = it_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.
"endform. " DISPLAY1
please check the code....
‎2013 Nov 06 12:10 PM
‎2013 Nov 06 11:58 AM
First you need to create table with CL_ALV_TABLE_CREATE->CREATE_DYNAMIC_TABLE to assign value to field.
Now logic is simple.
Create fieldcat, add aditional field to fieldcat ( in your case months ), now create table with this fieldcat. You need to add your dynamic field to fieldcat manualy.
select needed data to template table. now to assign field to created table you need to now fieldname.
Here is the example : http://scn.sap.com/message/14468651#14468651
and adding this example to assign sipecific field:
FIELD-SYMBOLS : <field> TYPE any.
in your loop. assign your dynamic field like this : you need to know field name.
ASSIGN COMPONENT 'FIELDNAME' OF STRUCTURE <fs_line> TO <field>.
for example : fieldname = 'FEB'.
ASSIGN COMPONENT 'FEB' OF STRUCTURE <fs_line> TO <field>.
IF bsid-monat EQ '02'.
<field> = bsid-wrbtr.
ENDIF.
Regards
Tolga
‎2013 Nov 06 12:10 PM
‎2013 Nov 06 12:21 PM
Hi
Please check the below link.. You can use RTTS concept for creating a Dynamic Internal Table and use the same for ALV
http://think2solve.blogspot.in/2013/08/dynamic-internal-table-creation-using.html
SKR