2006 Jun 15 2:12 PM
Hii,
Can anyone send me basic tutorials of ALV programming.
My mail id is [email protected].
Thanks & Regards
Hiren K.Chitalia
Hii,
Can anyone send me basic tutorials of ALV programming.
My mail id is [email protected].
Thanks & Regards
Hiren K.Chitalia
2006 Jun 15 2:13 PM
Hi,
send u on ur email id.
<b>also refer this link for basic ALV programming</b>:
http://www.allsaplinks.com/alv1.html
http://www.sapbrain.com/TUTORIALS/TECHNICAL/ALV_tutorial.html
rgds,
latheesh
Message was edited by: Latheesh Kaduthara
Message was edited by: Latheesh Kaduthara
2006 Jun 15 2:13 PM
Hi hiren,
SIMPLE ALV (WITH CALL BACK CONCEPT)
1. There are some parameters
in the FM which are passed,
and a new FORM has to be written.
2. Just copy paste this code in new program.
3. It will display list of company.
On double-clicking on the alv,
it will again display the clicked company code.
Important code has been marked.
4.
REPORT abc.
TYPE-POOLS : slis.
*----
Data
DATA : BEGIN OF itab OCCURS 0.
INCLUDE STRUCTURE t001.
DATA : END OF itab.
DATA : alvfc TYPE slis_t_fieldcat_alv.
*----
Select Data
SELECT * FROM t001 INTO TABLE itab.
*------- Field Catalogue
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = sy-repid
i_internal_tabname = 'ITAB'
i_inclname = sy-repid
CHANGING
ct_fieldcat = alvfc
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
*----
Display
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
it_fieldcat = alvfc
i_callback_program = sy-repid "<-------Important
i_callback_user_command = 'ITAB_USER_COMMAND' "<------ Important
TABLES
t_outtab = itab
EXCEPTIONS
program_error = 1
OTHERS = 2.
*----
CALL BACK FORM
*----
FORM itab_user_command USING whatcomm TYPE sy-ucomm whatrow TYPE
slis_selfield.
READ TABLE itab INDEX whatrow-tabindex.
WRITE itab-bukrs.
ENDFORM. "ITAB_user_command
regards,
amit m.
2006 Jun 15 2:16 PM
hi hiren,
http://www.sap-img.com/abap/what-is-alv-programming.htm
http://www.sapdevelopment.co.uk/reporting/alv/alvlist_code.htm
http://www.sap4.com/wiki/index.php/ALV_List
http://www.sapgenie.com/abap/controls/alvgrid.htm
hope these help,
do reward if it helps,
priya.
2006 Jun 15 2:17 PM
Hi,
Check this http://www.sapdevelopment.co.uk/reporting/alvhome.htm
and also Check the ALV FM's
<b>REUSE_ALV_LIST_DISPLAY
REUSE_ALV_GRID_DISPLAY</b>
Function documentation.
Check the Programs in the package SLIS.
you can find lot of demo programs.
Regards
vijay
2006 Jun 15 2:18 PM
HI
HERE WITH I AM SENDING SOME OF THE LINKS , GO THROUGH THEM I HOPE YOU WILL GET MORE KNOWLEDGE ABOUT THE ALV PROGRAMMING .
WW.SAPPOINT.COM
http://fuller.mit.edu/hr/cluster_tables.html
http://web.mit.edu/ist/org/admincomputing/dev/abap_review_check_list.htm
http://www.sapgenie.com/abap/code/abap15.htm
http://abap4.tripod.com/SAP_Functions.html
http://itcompleteguide.tripod.com/sap.html
http://www.sapdesignguild.org/editions/edition7/web_services.asp
YOU START WORKING WITH ALV PROGRAMMING , IF YOU FACE ANY KIND OF ERROR THAN YOU CAN MAIL ME IN MY MAIL ID, WHICH IS THERE IN THE BUSINESS CARD.
THANKS
MRUTYUN
2006 Jun 15 2:20 PM
Hai Hiren
Check your mail Box
Thanks & regards
Sreenivasulu P
P.S.award Points if helpful
2006 Jun 15 2:26 PM
Hi Hiren,
Refer the following link. It has everything for ALV.
http://sapfans.com/forums/viewtopic.php?t=94198&sid=faa1b3ecd13879a721df1236e7dbc182
I have also sent you the docs for ALV at [email protected].
<b>Reward points if it helps.</b>
Message was edited by: Amit Mishra
2006 Jun 15 2:38 PM
HI Hiren,
www50.sap.com/useducation/ curriculum/course.asp?cid=60193497
www.sap.com/hungary/services/ education/tanfolyamok/leiras/BC405_54_EN.html
www.sap-spain.com/newsletter/formacion/ clientes/2006/05/04052006/docs/bc405.pdf
www.training-classes.com/course_hierarchy/ courses/3095_ABAP_6_10_Reporting.php
Regards.
Laxmi.
2006 Jun 15 2:42 PM
Hello Hiren,
Check your mail box and please dont forget to award points at the end and close the thread if your problem is solved.
Thanks,
2006 Jun 15 5:05 PM
Hi hiren,
Please refer:
http://help.sap.com/saphelp_erp2005/helpdata/en/b8/d84f59aac911d295e300a0c9306433/frameset.htm
You can also find lot of ALV examples in the package <b>SLIS</b>, Transactions : <b>BIBS</b> , <b>LIBS</b> and <b>DWDM</b>.
Also refer to the documetation for the <b>FM's</b> (SE37)
<b>REUSE_ALV_LIST_DISPLAY
REUSE_ALV_GRID_DISPLAY</b>
and Class (SE24)
<b>CL_GUI_ALV_GRID</b>
Cheers,
Arun Sambargi.
2006 Jun 15 5:18 PM
Hi
there are few forum links go through this.
first u go though this there are few link which can help u
<b>
<a class="jive_macro jive_macro_message" href="" __jive_macro_name="message" modifiedtitle="true" __default_attr="1221872"></a></b>
https://www.sdn.sap.com/irj/sdn/forumsearch
This is the sample code please go through this.
REPORT zmm_risk_analysis NO STANDARD PAGE HEADING LINE-SIZE 200
LINE-COUNT 65.
*&---------------------------------------------------------------------*
* A L V P o o l s *
*&---------------------------------------------------------------------*
TYPE-POOLS: slis.
*&---------------------------------------------------------------------*
* T A B L E S *
*&---------------------------------------------------------------------*
TABLES: stpo,
: mast,
: ausp,
: mvke,
: makt,
: s805,
: s905,
: s935,
: s945.
*&---------------------------------------------------------------------*
* A L V R E L A T E D D E C L A R A T I O N S *
*&---------------------------------------------------------------------*
DATA: gt_events TYPE slis_t_event,
gt_layout TYPE slis_layout_alv,
gt_sort TYPE slis_t_sortinfo_alv,
gt_list_top_of_page TYPE slis_t_listheader,
gt_fieldcat TYPE slis_t_fieldcat_alv,
gt_repid TYPE sy-repid,
gt_top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE',
gt_top_of_list TYPE slis_formname VALUE 'TOP_OF_LIST',
gt_end_of_list TYPE slis_formname VALUE 'END_OF_LIST'.
DATA: gt_color TYPE slis_t_specialcol_alv WITH HEADER LINE.
*&---------------------------------------------------------------------*
* G L O B A L D E C L A R A T I O N S *
*&---------------------------------------------------------------------*
DATA: gv_pos TYPE i VALUE 1, " Field Position
: gv_col TYPE i VALUE 1, " Column Position
: gc_atinn TYPE ausp-atinn VALUE '0000000355 '.
* FORMULA_X_NUMBER'.
RANGES: r_spbup FOR s805-spbup.
*&---------------------------------------------------------------------*
* S T R U C T U R E D E C L A R A T I O N S *
*&---------------------------------------------------------------------*
* Start of changes CHG029586
TYPES: BEGIN OF x_mara, " Material
matnr TYPE mara-matnr, " Material Number
END OF x_mara.
* End of changes CHG029586
TYPES: BEGIN OF x_stpo, " BOM item
stlnr TYPE stpo-stlnr, " Bill of material
idnrk TYPE stpo-idnrk, " BOM component
sflag TYPE c, " Active BOM flag
END OF x_stpo.
TYPES: BEGIN OF x_stpo_i, " BOM item
stlnr TYPE stpo-stlnr, " Bill of material
END OF x_stpo_i.
TYPES: BEGIN OF x_mast, " Material to BOM Link
stlnr TYPE mast-stlnr, " Bill of material
matnr TYPE ausp-atwrt, " Material Number
END OF x_mast.
TYPES: BEGIN OF x_mast_i, " Material to BOM Link
ramnr TYPE mara-matnr, " Raw Material
matnr TYPE ausp-atwrt, " Material Number
END OF x_mast_i.
TYPES: BEGIN OF x_ausp, " Characteristic Values
matnr TYPE ausp-atwrt, " Material Number
objek TYPE ausp-objek, " Key of object to be classified
END OF x_ausp.
TYPES: BEGIN OF x_matx, " All materials
idnrk TYPE stpo-idnrk, " BOM component
matnr TYPE ausp-atwrt, " Material Number
END OF x_matx.
TYPES: BEGIN OF x_matl, " All materials
* Start of changes CHG029586
ramnr TYPE mara-matnr, " Raw Material
matnr TYPE ausp-atwrt, " Material Number
* idnrk TYPE stpo-idnrk, " BOM component
* matnr TYPE ausp-atwrt, " Material Number
objek TYPE s805-matnr, " Key of object to be classified
* End of changes CHG029586
END OF x_matl.
TYPES: BEGIN OF x_matl_i, " All materials
objek TYPE s805-matnr, " Key of object to be classified
END OF x_matl_i.
TYPES: BEGIN OF x_sxxx, " SIS data
ssour TYPE s805-ssour, " Statistic(s) origin
vrsio TYPE s805-vrsio, " Version number in the information structure
spmon TYPE s805-spmon, " Period to analyze - month
sptag TYPE s805-sptag, " Period to analyze - current date
spwoc TYPE s805-spwoc, " Period to analyze - week
spbup TYPE s805-spbup, " Period to analyze - posting period
vkorg TYPE s805-vkorg, " Sales Organization
zzprodh1 TYPE s805-zzprodh1, " Product line
kdgrp TYPE s805-kdgrp, " Customer group
pkunag TYPE s805-pkunag, " Sold-to party
regio TYPE s805-regio, " Region (State, Province, County)
pkunwe TYPE s805-pkunwe, " Ship-To Party
matnr TYPE s805-matnr, " Material Number
land1 TYPE s805-land1, " Destination country
stwae TYPE s805-stwae, " Currency code
zumnetwr TYPE s805-zumnetwr, " Net sales
zumntkzwi6 TYPE s805-zumntkzwi6, " Cost of sales
END OF x_sxxx.
TYPES: BEGIN OF x_ssum, " SIS data
spbup TYPE s805-spbup, " Posting period
matnr TYPE s805-matnr, " Material Number
land1 TYPE s805-land1, " Destination country
stwae TYPE s805-stwae, " Currency code
zumnetwr TYPE s805-zumnetwr, " Net sales
zumntkzwi6 TYPE s805-zumntkzwi6, " Cost of sales
END OF x_ssum.
TYPES: BEGIN OF x_last, " SIS data
matnr TYPE s805-matnr, " Material Number
land1 TYPE s805-land1, " Destination country
zumnetwr TYPE s805-zumnetwr, " Net sales
zumntkzwi6 TYPE s805-zumntkzwi6, " Cost of sales
zumcontri TYPE s805-zumnetwr, " Contribution
END OF x_last.
TYPES: BEGIN OF x_list, " ALV list
idnrk TYPE stpo-idnrk, " BOM component
idnrk_t TYPE makt-maktx, " Description
finnr TYPE ausp-atwrt, " Material Number
finnr_t TYPE makt-maktx, " Description
matnr TYPE s805-matnr, " Material Number
matnr_t TYPE makt-maktx, " Description
land1 TYPE s805-land1, " Destination country
landx TYPE t005t-landx, " Description
zumnetwr TYPE s805-zumnetwr, " Net sales
zumntkzwi6 TYPE s805-zumntkzwi6, " Cost of sales
zumcontri TYPE s805-zumnetwr, " Contribution
END OF x_list.
*&---------------------------------------------------------------------*
* I N T E R N A L T A B L E D E C L A R A T I O N S *
*&---------------------------------------------------------------------*
* Start of changes CHG029586
DATA: it_mara TYPE STANDARD TABLE OF x_mara WITH HEADER LINE.
DATA: it_mult TYPE STANDARD TABLE OF zrmmat WITH HEADER LINE.
* End of changes CHG029586
DATA: it_stpo TYPE STANDARD TABLE OF x_stpo WITH HEADER LINE.
DATA: it_stpo_i TYPE STANDARD TABLE OF x_stpo_i WITH HEADER LINE.
DATA: it_mast TYPE STANDARD TABLE OF x_mast WITH HEADER LINE.
DATA: it_mast_i TYPE STANDARD TABLE OF x_mast_i WITH HEADER LINE.
DATA: it_ausp TYPE STANDARD TABLE OF x_ausp WITH HEADER LINE.
DATA: it_matx TYPE STANDARD TABLE OF x_matx WITH HEADER LINE.
DATA: it_matl TYPE STANDARD TABLE OF x_matl WITH HEADER LINE.
DATA: it_matl_i TYPE STANDARD TABLE OF x_matl_i WITH HEADER LINE.
* Start of changes CHG029586
*DATA: it_sxxx TYPE STANDARD TABLE OF x_sxxx WITH HEADER LINE.
DATA: it_s805 TYPE STANDARD TABLE OF x_sxxx WITH HEADER LINE.
DATA: it_s905 TYPE STANDARD TABLE OF x_sxxx WITH HEADER LINE.
DATA: it_s935 TYPE STANDARD TABLE OF x_sxxx WITH HEADER LINE.
DATA: it_s945 TYPE STANDARD TABLE OF x_sxxx WITH HEADER LINE.
* End of changes CHG029586
DATA: it_ssum TYPE STANDARD TABLE OF x_ssum WITH HEADER LINE.
DATA: it_last TYPE STANDARD TABLE OF x_last WITH HEADER LINE.
DATA: it_list TYPE STANDARD TABLE OF x_list WITH HEADER LINE.
DATA: da(60). " Header string
* Start of changes CHG029586
DATA: ra(60). " Header string
DATA: fa(60). " Header string
* End of changes CHG029586
*&---------------------------------------------------------------------*
* U S E R I N P U T S S C R E E N *
*&---------------------------------------------------------------------*
SELECTION-SCREEN: BEGIN OF BLOCK head WITH FRAME TITLE text-t01.
SELECT-OPTIONS : s_idnrk FOR stpo-idnrk OBLIGATORY,
: s_datum FOR sy-datum OBLIGATORY,
: s_matnr FOR s805-matnr.
SELECTION-SCREEN END OF BLOCK head.
*&---------------------------------------------------------------------*
* I N I T I A L I Z A T I O N *
*&---------------------------------------------------------------------*
INITIALIZATION.
* Get program name
gt_repid = sy-repid.
* Build the events list
PERFORM eventtab_build. " Build Events
* Build the field catalogue
PERFORM fieldcat_init. " Build Field Catalogue
* Build the sort tab to group
PERFORM sort.
*&---------------------------------------------------------------------*
* A T S E L E C T I O N S C R E E N *
*&---------------------------------------------------------------------*
AT SELECTION-SCREEN.
DATA: l_diff TYPE p,
: l_dat1 TYPE d,
: l_dat2 TYPE d,
: l_tim1 TYPE t,
: l_tim2 TYPE t.
* Assign the high value if high is initial.
IF s_datum-high IS INITIAL.
s_datum-high = s_datum-low.
ENDIF.
l_dat1 = s_datum-low.
l_dat2 = s_datum-high.
l_tim1 = '1'.
l_tim2 = '1'.
CALL FUNCTION 'SD_DATETIME_DIFFERENCE'
EXPORTING
date1 = l_dat1
time1 = l_tim1
date2 = l_dat2
time2 = l_tim2
IMPORTING
datediff = l_diff
EXCEPTIONS
invalid_datetime = 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.
ELSE.
IF l_diff > 365.
MESSAGE e000(zz) WITH 'Date range should not exceed 12 months'(014).
ENDIF.
ENDIF.
*&---------------------------------------------------------------------*
* S T A R T O F S E L E C T I O N *
*&---------------------------------------------------------------------*
* Start of selection event
START-OF-SELECTION.
* Assign the period based on inputs
r_spbup-sign = 'I'.
r_spbup-option = 'BT'.
r_spbup-low = s_datum-low(6).
r_spbup-high = s_datum-high(6).
APPEND r_spbup.
*/// Get the data from tables. ///*
* Start of changes CHG029586
* Get the BOM item
* PERFORM get_stpo.
* Get the Material to BOM Link
* PERFORM get_mast.
* End of changes CHG029586
* Start of changes CHG029586
PERFORM get_fm_raw.
* End of changes CHG029586
* Get the Finished goods
PERFORM get_ausp.
* Swap the data into int table
PERFORM get_swap.
* Get the SIS data
PERFORM get_sxxx.
* Convert the currencies to USD
PERFORM get_curs.
* List the items into int table
PERFORM get_list.
* Get the descriptions
PERFORM get_text.
**&---------------------------------------------------------------------*
** E N D S E L E C T I O N *
**&---------------------------------------------------------------------*
** End of selection event
END-OF-SELECTION.
* Check the final int table is initial
IF it_list[] IS INITIAL.
MESSAGE i000(zz) WITH 'No data found!'(000).
ELSE.
* Build the header
PERFORM comment_write.
* Build the layout
PERFORM layout_init.
* Write the output list
PERFORM get_write.
ENDIF.
*&---------------------------------------------------------------------*
*& Form get_write
*&---------------------------------------------------------------------*
* Write output list
*----------------------------------------------------------------------*
FORM get_write .
* Calling the ALV list FM to generate the list
PERFORM call_alv_list.
ENDFORM. " get_write
*&---------------------------------------------------------------------*
*& Form EVENTTAB_BUILD
*&---------------------------------------------------------------------*
* Build Events
*----------------------------------------------------------------------*
FORM eventtab_build.
* Local Declarations
DATA: ls_event TYPE slis_alv_event. " Event related Workarea
* Events
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = gt_events.
SORT gt_events.
READ TABLE gt_events WITH KEY name = slis_ev_top_of_page BINARY SEARCH
INTO ls_event.
IF sy-subrc = 0.
MOVE gt_top_of_page TO ls_event-form.
APPEND ls_event TO gt_events.
ENDIF.
ENDFORM. " EVENTTAB_BUILD
*&---------------------------------------------------------------------*
*& Form FIELDCAT_INIT
*&---------------------------------------------------------------------*
* Build Field Catalogue
*----------------------------------------------------------------------*
FORM fieldcat_init.
* Add Fields - preparing the field catalogue
PERFORM add_field USING:
'IDNRK' 'Raw Material'(001) space space '18',
'IDNRK_T' 'Description'(002) space space '40',
'FINNR' 'Formulation'(003) space space '30',
'FINNR_T' 'Description'(004) space space '40',
'MATNR' 'SKU'(005) space space '18',
'MATNR_T' 'Description'(006) space space '40',
'LANDX' 'Destination Country'(007) space space '15',
'ZUMNETWR' 'Net Sales (USD)'(008) space 'X' '19',
'ZUMNTKZWI6' 'Cost of Sales (USD)'(009) space 'X' '19',
'ZUMCONTRI' 'Contribution (USD)'(010) space 'X' '19'.
ENDFORM. " FIELDCAT_INIT
*&---------------------------------------------------------------------*
*& Form add_field
*&---------------------------------------------------------------------*
* Add Fields to the List
*----------------------------------------------------------------------*
FORM add_field USING value(p_fnm) TYPE c value(p_txt) TYPE c
value(p_key) TYPE c value(p_sum) TYPE c
value(p_len) TYPE c.
* Local Declarations
DATA: ls_fieldcat TYPE slis_fieldcat_alv.
* Add Fields to the List
ls_fieldcat-col_pos = gv_pos.
ls_fieldcat-fieldname = p_fnm.
ls_fieldcat-seltext_m = p_txt.
ls_fieldcat-key = p_key.
ls_fieldcat-do_sum = p_sum.
ls_fieldcat-outputlen = p_len.
APPEND ls_fieldcat TO gt_fieldcat.
gv_pos = gv_pos + 1.
ENDFORM. " add_field
*&---------------------------------------------------------------------*
*& Form LAYOUT_INIT
*&---------------------------------------------------------------------*
* Layout Initialization
*----------------------------------------------------------------------*
FORM layout_init.
* Build the layout set
gt_layout-detail_popup = 'X'.
gt_layout-colwidth_optimize = 'X'.
gt_layout-zebra = 'X'.
ENDFORM. " LAYOUT_INIT
*&---------------------------------------------------------------------*
*& Form call_alv_list
*&---------------------------------------------------------------------*
* Calling ALV List FM
*----------------------------------------------------------------------*
FORM call_alv_list .
* Check the list is initial or not
IF NOT it_list[] IS INITIAL.
* Calling the ALV list display FM
SORT it_list BY idnrk finnr matnr.
* CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = gt_repid
is_layout = gt_layout
it_fieldcat = gt_fieldcat[]
it_events = gt_events[]
it_sort = gt_sort[]
TABLES
t_outtab = it_list
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.
ELSE.
MESSAGE s000(zz) WITH 'No data to Process'(011).
ENDIF.
ENDFORM. " call_alv_list
*&---------------------------------------------------------------------*
*& Form get_header
*&---------------------------------------------------------------------*
* Get the Report Header
*----------------------------------------------------------------------*
*FORM top_of_page.
* DATA: l_fdate(10),
* : l_tdate(10).
** Print the header
* WRITE s_datum-low TO l_fdate.
* WRITE s_datum-high TO l_tdate.
* SKIP 1.
* WRITE:/60 'Risk Analysis Report'.
* SKIP 1.
* WRITE:/54 'Date from', l_fdate, 'to', l_tdate.
* SKIP 1.
*ENDFORM. " TOP_OF_PAGE
*&---------------------------------------------------------------------*
*& Form sort
*&---------------------------------------------------------------------*
* Sorting
*----------------------------------------------------------------------*
FORM sort .
* Preparing the SORT tab to get the sum
DATA: ls_sort TYPE slis_sortinfo_alv.
ls_sort-spos = '1'.
ls_sort-fieldname = 'IDNRK'.
ls_sort-up = 'X'.
ls_sort-subtot = 'X'.
APPEND ls_sort TO gt_sort.
ls_sort-spos = '3'.
ls_sort-fieldname = 'FINNR'.
ls_sort-up = 'X'.
ls_sort-subtot = 'X'.
APPEND ls_sort TO gt_sort.
ls_sort-spos = '5'.
ls_sort-fieldname = 'MATNR'.
ls_sort-up = 'X'.
ls_sort-subtot = 'X'.
APPEND ls_sort TO gt_sort.
ENDFORM. " sort
*&---------------------------------------------------------------------*
*& Form get_stpo
*&---------------------------------------------------------------------*
* Get Bill of material
*----------------------------------------------------------------------*
FORM get_stpo .
* Start of changes CHG029586
* DATA: l_index TYPE sy-tabix.
** Getting BOM items
* CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
* EXPORTING
* text = 'Getting BOM items.....'(901).
* SELECT stlnr
* idnrk
* INTO TABLE it_stpo
* FROM stpo
* WHERE stlty EQ 'M'
* AND idnrk IN s_idnrk
* AND datuv LE s_datum-high.
* IF sy-subrc EQ 0.
* SORT it_stpo BY stlnr idnrk.
* DELETE ADJACENT DUPLICATES FROM it_stpo.
* ELSE.
* STOP.
* ENDIF.
* SELECT stlnr
* INTO TABLE it_stpo_i
* FROM stko
* FOR ALL ENTRIES IN it_stpo
* WHERE stlty EQ 'M'
* AND stlnr EQ it_stpo-stlnr
* AND loekz EQ ' '.
* IF sy-subrc EQ 0.
* SORT it_stpo_i BY stlnr.
* DELETE ADJACENT DUPLICATES FROM it_stpo_i.
* LOOP AT it_stpo_i.
* READ TABLE it_stpo WITH KEY stlnr = it_stpo_i-stlnr BINARY SEARCH.
* IF sy-subrc NE 0.
* DELETE it_stpo WHERE stlnr = it_stpo_i-stlnr.
* ENDIF.
* ENDLOOP.
* ELSE.
* STOP.
* ENDIF.
* End of changes CHG029586
ENDFORM. " get_stpo
*&---------------------------------------------------------------------*
*& Form get_mast
*&---------------------------------------------------------------------*
* Get Material to BOM Link
*----------------------------------------------------------------------*
FORM get_mast .
* Start of changes CHG029586
** Getting Material to BOM links
* CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
* EXPORTING
* text = 'Getting Material to BOM links.....'(902).
* SELECT stlnr
* matnr
* INTO TABLE it_mast
* FROM mast
* FOR ALL ENTRIES IN it_stpo_i
* WHERE stlan EQ '1'
* AND stlnr EQ it_stpo_i-stlnr.
* IF sy-subrc EQ 0.
* SORT it_mast BY stlnr.
* DELETE ADJACENT DUPLICATES FROM it_mast.
* LOOP AT it_mast.
* MOVE-CORRESPONDING it_mast TO it_mast_i.
* APPEND it_mast_i.
* ENDLOOP.
* SORT it_mast_i BY matnr.
* DELETE ADJACENT DUPLICATES FROM it_mast_i.
* ELSE.
* STOP.
* ENDIF.
* End of changes CHG029586
ENDFORM. " get_mast
*&---------------------------------------------------------------------*
*& Form get_ausp
*&---------------------------------------------------------------------*
* Get the Finished goods
*----------------------------------------------------------------------*
FORM get_ausp .
DATA: l_matnr TYPE mvke-matnr,
: l_index TYPE sy-tabix.
* Getting Finished goods
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
text = 'Getting Finished goods.....'(903).
IF NOT IT_MAST_I[] IS INITIAL. "CHG029950
SELECT atwrt
objek
INTO TABLE it_ausp
FROM ausp
FOR ALL ENTRIES IN it_mast_i
WHERE atinn EQ gc_atinn
AND atzhl EQ '001'
AND mafid EQ 'O'
AND klart EQ '001'
AND atwrt EQ it_mast_i-matnr.
IF sy-subrc EQ 0.
SORT it_ausp BY matnr.
DELETE ADJACENT DUPLICATES FROM it_ausp.
DELETE it_ausp WHERE objek IS INITIAL.
IF NOT s_matnr[] IS INITIAL.
* Delete the finished goods list if user list not matches
DELETE it_ausp WHERE NOT objek IN s_matnr.
IF it_ausp[] IS INITIAL.
STOP.
ENDIF.
ENDIF.
ELSE.
STOP.
ENDIF.
*Start of CHG029950
ELSE.
STOP.
ENDIF.
*End of CHG029950
* Check the finished goods have sale values
LOOP AT it_ausp.
l_index = sy-tabix.
SELECT SINGLE matnr INTO l_matnr
FROM mvke
WHERE matnr = it_ausp-objek.
IF sy-subrc NE 0.
DELETE it_ausp INDEX l_index.
ENDIF.
ENDLOOP.
ENDFORM. " get_ausp
*&---------------------------------------------------------------------*
*& Form get_swap
*&---------------------------------------------------------------------*
* Pull the data into int table
*----------------------------------------------------------------------*
FORM get_swap .
DATA: l_index TYPE sy-tabix.
* Swapping the data
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
text = 'Swapping the data.....'(904).
* Start of changes CHG029586
SORT it_mast_i BY matnr ramnr.
SORT it_ausp BY matnr objek.
LOOP AT it_ausp.
LOOP AT it_mast_i WHERE matnr = it_ausp-matnr.
it_matl-ramnr = it_mast_i-ramnr.
it_matl-matnr = it_mast_i-matnr.
it_matl-objek = it_ausp-objek.
APPEND it_matl.
ENDLOOP.
ENDLOOP.
* SORT it_stpo BY stlnr.
* SORT it_mast BY stlnr.
* SORT it_ausp BY matnr.
* LOOP AT it_stpo.
* READ TABLE it_mast WITH KEY stlnr = it_stpo-stlnr BINARY SEARCH.
* IF sy-subrc EQ 0.
* it_matx-idnrk = it_stpo-idnrk.
* it_matx-matnr = it_mast-matnr.
* APPEND it_matx.
* ENDIF.
* ENDLOOP.
* DELETE ADJACENT DUPLICATES FROM it_matx COMPARING idnrk matnr.
* LOOP AT it_matx.
* LOOP AT it_ausp WHERE matnr = it_matx-matnr.
* it_matl-idnrk = it_matx-idnrk.
* it_matl-matnr = it_matx-matnr.
* it_matl-objek = it_ausp-objek.
* APPEND it_matl.
* ENDLOOP.
* ENDLOOP.
* SORT it_matl BY idnrk matnr objek.
* DELETE ADJACENT DUPLICATES FROM it_matl COMPARING idnrk matnr objek.
* End of changes CHG029586
ENDFORM. " get_swap
*&---------------------------------------------------------------------*
*& Form get_sxxx
*&---------------------------------------------------------------------*
* Get the data from SIS tables
*----------------------------------------------------------------------*
FORM get_sxxx .
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
text = 'Getting Repository data.....'(905).
* Getting the data from SIS tables
LOOP AT it_matl.
MOVE-CORRESPONDING it_matl TO it_matl_i.
APPEND it_matl_i.
ENDLOOP.
SORT it_matl_i.
DELETE ADJACENT DUPLICATES FROM it_matl_i.
IF it_matl_i[] IS INITIAL.
STOP.
ELSE.
* N America Data Repository
SELECT ssour
vrsio
spmon
sptag
spwoc
spbup
vkorg
zzprodh1
kdgrp
pkunag
regio
pkunwe
matnr
land1
stwae
zumnetwr
zumntkzwi6
INTO TABLE it_s805
FROM s805
FOR ALL ENTRIES IN it_matl_i
WHERE ssour EQ ' '
AND spbup IN r_spbup
AND matnr EQ it_matl_i-objek.
DELETE it_s805 WHERE ( zumnetwr EQ 0 AND zumntkzwi6 EQ 0 ).
* Europe: Data repository
SELECT ssour
vrsio
spmon
sptag
spwoc
spbup
vkorg
zzprodh1
kdgrp
pkunag
regio
pkunwe
matnr
plawe
stwae
zumnetwr
zumntkzwi6
INTO TABLE it_s905
FROM s905
FOR ALL ENTRIES IN it_matl_i
WHERE ssour EQ ' '
AND spbup IN r_spbup
AND matnr EQ it_matl_i-objek.
DELETE it_s905 WHERE ( zumnetwr EQ 0 AND zumntkzwi6 EQ 0 ).
* Asia Pacific: Data Repository
SELECT ssour
vrsio
spmon
sptag
spwoc
spbup
vkorg
zzprodh1
kdgrp
pkunag
regio
pkunwe
matnr
plawe
stwae
zumnetwr
zumntkzwi6
INTO TABLE it_s935
FROM s935
FOR ALL ENTRIES IN it_matl_i
WHERE ssour EQ ' '
AND spbup IN r_spbup
AND matnr EQ it_matl_i-objek.
DELETE it_s935 WHERE ( zumnetwr EQ 0 AND zumntkzwi6 EQ 0 ).
* Latin America: Data Repository
SELECT ssour
vrsio
spmon
sptag
spwoc
spbup
vkorg
zzprodh1
kdgrp
pkunag
regio
pkunwe
matnr
plawe
stwae
zumnetwr
zumntkzwi6
INTO TABLE it_s945
FROM s945
FOR ALL ENTRIES IN it_matl_i
WHERE ssour EQ ' '
AND spbup IN r_spbup
AND matnr EQ it_matl_i-objek
AND ( zumnetwr GT '0.00'
OR zumntkzwi6 GT '0.00' ).
DELETE it_s945 WHERE ( zumnetwr EQ 0 AND zumntkzwi6 EQ 0 ).
* Move the consolidated data
LOOP AT it_s805.
MOVE-CORRESPONDING it_s805 TO it_ssum.
COLLECT it_ssum.
ENDLOOP.
LOOP AT it_s905.
MOVE-CORRESPONDING it_s905 TO it_ssum.
COLLECT it_ssum.
ENDLOOP.
LOOP AT it_s935.
MOVE-CORRESPONDING it_s935 TO it_ssum.
COLLECT it_ssum.
ENDLOOP.
LOOP AT it_s945.
MOVE-CORRESPONDING it_s945 TO it_ssum.
COLLECT it_ssum.
ENDLOOP.
ENDIF.
ENDFORM. " get_sxxx
*&---------------------------------------------------------------------*
*& Form get_curs
*&---------------------------------------------------------------------*
* Convert the Currency to USD
*----------------------------------------------------------------------*
FORM get_curs .
DATA: l_index TYPE sy-tabix,
: l_datum TYPE sy-datum.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
text = 'Currency conversion.....'(906).
* Currency conversion to USD
LOOP AT it_ssum WHERE stwae NE 'USD'.
l_index = sy-tabix.
CONCATENATE it_ssum-spbup '01' INTO l_datum.
CALL FUNCTION 'Z_CONVERT_TO_LOCAL_CURRENCY'
EXPORTING
date = l_datum
foreign_amount = it_ssum-zumnetwr
foreign_currency = it_ssum-stwae
local_currency = 'USD'
type_of_rate = 'M'
IMPORTING
local_amount = it_ssum-zumnetwr
EXCEPTIONS
error_message = 4
OTHERS = 4.
IF sy-subrc = 0.
MODIFY it_ssum INDEX l_index.
ELSE.
* MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
* WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CALL FUNCTION 'Z_CONVERT_TO_LOCAL_CURRENCY'
EXPORTING
date = l_datum
foreign_amount = it_ssum-zumntkzwi6
foreign_currency = it_ssum-stwae
local_currency = 'USD'
type_of_rate = 'M'
IMPORTING
local_amount = it_ssum-zumntkzwi6
EXCEPTIONS
error_message = 4
OTHERS = 4.
IF sy-subrc = 0.
MODIFY it_ssum INDEX l_index.
ELSE.
* MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
* WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDLOOP.
ENDFORM. " get_curs
*&---------------------------------------------------------------------*
*& Form get_list
*&---------------------------------------------------------------------*
* Get the List values
*----------------------------------------------------------------------*
FORM get_list .
DATA: l_index TYPE sy-tabix.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
text = 'Preparing data list.....'(907).
* Preparing the final list for ALV input
LOOP AT it_ssum.
it_last-zumcontri = it_ssum-zumnetwr - it_ssum-zumntkzwi6.
MOVE-CORRESPONDING it_ssum TO it_last.
COLLECT it_last.
ENDLOOP.
LOOP AT it_matl.
LOOP AT it_last WHERE matnr = it_matl-objek.
it_list-idnrk = it_matl-ramnr.
it_list-finnr = it_matl-matnr.
it_list-matnr = it_last-matnr.
it_list-land1 = it_last-land1.
it_list-zumnetwr = it_last-zumnetwr.
it_list-zumntkzwi6 = it_last-zumntkzwi6.
it_list-zumcontri = it_last-zumcontri.
APPEND it_list.
ENDLOOP.
ENDLOOP.
ENDFORM. " get_list
*&---------------------------------------------------------------------*
*& Form get_text
*&---------------------------------------------------------------------*
* Get the descriptions
*----------------------------------------------------------------------*
FORM get_text .
DATA: l_index TYPE sy-tabix,
: l_maktx TYPE makt-maktx,
: l_landx TYPE t005t-landx.
* Get the descriptions
SORT it_list BY idnrk finnr matnr.
LOOP AT it_list.
l_index = sy-tabix.
* Raw materal
AT NEW idnrk.
READ TABLE it_list INDEX l_index.
SELECT SINGLE maktx INTO l_maktx
FROM makt
WHERE spras EQ sy-langu
AND matnr EQ it_list-idnrk.
IF sy-subrc EQ 0.
it_list-idnrk_t = l_maktx.
MODIFY it_list TRANSPORTING idnrk_t WHERE idnrk = it_list-idnrk.
ENDIF.
ENDAT.
* Formulation
AT NEW finnr.
READ TABLE it_list INDEX l_index.
SELECT SINGLE maktx INTO l_maktx
FROM makt
WHERE spras EQ sy-langu
AND matnr EQ it_list-finnr.
IF sy-subrc EQ 0.
it_list-finnr_t = l_maktx.
MODIFY it_list TRANSPORTING finnr_t WHERE finnr = it_list-finnr.
ENDIF.
ENDAT.
* Finished good
AT NEW matnr.
READ TABLE it_list INDEX l_index.
SELECT SINGLE maktx INTO l_maktx
FROM makt
WHERE spras EQ sy-langu
AND matnr EQ it_list-matnr.
IF sy-subrc EQ 0.
it_list-matnr_t = l_maktx.
MODIFY it_list TRANSPORTING matnr_t WHERE matnr = it_list-matnr.
ENDIF.
ENDAT.
ENDLOOP.
* Country
LOOP AT it_list WHERE land1 NE space.
l_index = sy-tabix.
SELECT SINGLE landx INTO l_landx
FROM t005t
WHERE spras EQ sy-langu
AND land1 EQ it_list-land1.
IF sy-subrc EQ 0.
it_list-landx = l_landx.
MODIFY it_list INDEX l_index TRANSPORTING landx.
ENDIF.
ENDLOOP.
ENDFORM. " get_text
*&---------------------------------------------------------------------*
*& Form COMMENT_WRITE
*&---------------------------------------------------------------------*
* Build Comments
*----------------------------------------------------------------------*
FORM comment_write.
DATA: ls_line TYPE slis_listheader.
CLEAR ls_line.
ls_line-typ = 'H'.
ls_line-info = sy-title.
APPEND ls_line TO gt_list_top_of_page.
PERFORM get_hdstr.
CLEAR ls_line.
ls_line-typ = 'A'.
ls_line-info = ra.
APPEND ls_line TO gt_list_top_of_page.
* Start of changes CHG029586
CLEAR ls_line.
ls_line-typ = 'A'.
ls_line-info = da.
APPEND ls_line TO gt_list_top_of_page.
CLEAR ls_line.
ls_line-typ = 'A'.
ls_line-info = fa.
APPEND ls_line TO gt_list_top_of_page.
* End of changes CHG029586
ENDFORM. " COMMENT_WRITE
*&---------------------------------------------------------------------*
*& Form get_hdstr
*&---------------------------------------------------------------------*
* Sub Header
*----------------------------------------------------------------------*
FORM get_hdstr .
DATA: l_fdate(10),
: l_tdate(10).
* Print the header
WRITE s_datum-low TO l_fdate.
WRITE s_datum-high TO l_tdate.
CONCATENATE 'Date from.........:'(012) l_fdate 'to'(013) l_tdate
INTO da SEPARATED BY space.
IF s_idnrk-high IS INITIAL.
s_idnrk-high = s_idnrk-low.
ENDIF.
* Start of changes CHG029586
DESCRIBE TABLE s_idnrk LINES sy-tabix.
IF sy-tabix > 1.
ra = space.
ELSE.
CONCATENATE 'Raw Material from.:'(015) s_idnrk-low 'to'(013) s_idnrk-high
INTO ra SEPARATED BY space.
IF s_matnr-high IS INITIAL.
s_matnr-high = s_matnr-low.
ENDIF.
ENDIF.
DESCRIBE TABLE s_matnr LINES sy-tabix.
IF sy-tabix > 1.
fa = space.
ELSE.
IF s_matnr[] IS INITIAL.
CONCATENATE 'Finished Good.....:'(017) 'All'(018)
INTO fa SEPARATED BY space.
ELSE.
CONCATENATE 'Finished Good from:'(016) s_matnr-low 'to'(013) s_matnr-high
INTO fa SEPARATED BY space.
ENDIF.
ENDIF.
* End of changes CHG029586
ENDFORM. " get_hdstr
*---------------------------------------------------------------------*
* FORM TOP_OF_PAGE *
*---------------------------------------------------------------------*
* Report Header *
*---------------------------------------------------------------------*
FORM top_of_page.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
* i_logo = 'ENJOYSAP_LOGO'
it_list_commentary = gt_list_top_of_page.
ENDFORM. "TOP_OF_PAGE
*&---------------------------------------------------------------------*
*& Form get_fm_raw
*&---------------------------------------------------------------------*
* Get the Multi level BOM items using the FM
*----------------------------------------------------------------------*
FORM get_fm_raw .
* Start of changes CHG029586
* Getting BOM items
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
text = 'Getting BOM items.....'(901).
* Get the materials based on input(s)
SELECT matnr
INTO TABLE it_mara
FROM mara
WHERE matnr IN s_idnrk.
IF sy-subrc NE 0.
STOP.
ELSE.
SORT it_mara BY matnr.
ENDIF.
* Get the BOMs using the FM
LOOP AT it_mara.
CLEAR : it_mult.
REFRESH: it_mult.
CALL FUNCTION 'Z_RM_WHERE_USED_LIST'
EXPORTING
pm_idnrk = it_mara-matnr
pm_werks = '*'
pm_stlan = '1'
pm_datuv = s_datum-low
pm_datub = s_datum-high
pm_mehrs = 'X'
TABLES
rmmat_x = it_mult.
IF sy-subrc EQ 0.
READ TABLE it_mult INDEX 1.
IF sy-subrc EQ 0.
* Delete the RM from the list
DELETE it_mult INDEX 1.
SORT it_mult BY matnr.
DELETE ADJACENT DUPLICATES FROM it_mult COMPARING matnr.
* Move the data into internal table
LOOP AT it_mult.
it_mast_i-ramnr = it_mara-matnr.
it_mast_i-matnr = it_mult-matnr.
APPEND it_mast_i.
CLEAR it_mast_i.
ENDLOOP.
ENDIF.
ENDIF.
ENDLOOP.
* End of changes CHG029586
ENDFORM. " get_fm_rawThanks
Vikranth Khimavath
| User | Count |
|---|---|
| 3 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |