Reports used in Plant Maintanence
Hi,
i'm very new to this group will anybody plz let me know
about the reports asked by the client in PM
Thanks,
sowji
hi
as i mentioned earlier in another forum you can use T code SAP1 and select the required module reports.
regards
thyagarajan
Similar Messages
-
Using Profit Center Accounting for balance sheet reporting on various plant
Hi Gurus,
Can anyone please tell me the steps I need to take to use PCA for balance sheet reporting on various plants under one company code. If there is a better way then please let me know. ThanksHi,
It depends on the organisation structure you decide on and as such PCA is recomended for your requirement.
Cosider each plant as a Profit center and decide cost centers under each plant/profict centers.
For all the materials under each plant assign the prfict center or that pant.
Change the feild status groups for Profit centers as mandatory.
If you are in 4.7EE You need to write derivaton rules & Assign dummy profit center for scenarios that overlap or for sales made by one plant of the stocks of other plant.
Need to identify the Asset costcenter/Plant/location wise adn need to assign in ACSET.
You need to rum F.5D , F.5E as period end process.
Down payments need to be handled by way if user exits if you are in 4.7EE
If you are in >= ECC5.0 then simply activating the document split will give you the PCA wise balances without much month end closing activities.
Make Zero Balance and Profit centers as mandatory in document splitting charactersics.
In any case you need to completely test the scenarios and how you are goinbg to get th eprofit center in all the scenarios.
Reward if useful.
Sarma -
Authorization of alv report based on plants
I have created a new alv report for sale order statement.The problem is which can be seen in all plants
irespective of the user.Suppose our company has 5 palnt
Plant 1100 to 1500
The problem is suppose a user he has only rights in a prticular plant but he can see all the palnt sale order details
How can we authorize this particular alv report based on the plantsHello,
My assumption: You have Company Code(T001-BUKRS) in the selection-screen.
Plz check the code snippet below:
DATA:
IT_PLANT TYPE STANDARD TABLE OF WERKS,
WA_PLANT LIKE LINE OF IT_PLANT.
DATA:
IT_R_WERKS TYPE RANGE_T_WERKS_D,
R_WERKS TYPE RANGE_S_WERKS_D.
SELECT BWKEY INTO TABLE IT_PLANT
FROM T001K
WHERE BUKRS = '1000'. "--> Here you have to use your sel. scr. parameter
IF SY-SUBRC = 0.
SORT IT_PLANT BY WERKS.
ENDIF.
LOOP AT IT_PLANT INTO WA_PLANT.
* Check the authority for the plant
AUTHORITY-CHECK OBJECT 'M_MSEG_WMB'
ID 'ACTVT' FIELD '03'
ID 'WERKS' FIELD WA_PLANT-WERKS.
IF SY-SUBRC = 0.
R_WERKS-SIGN = 'I'.
R_WERKS-OPTION = 'EQ'.
R_WERKS-LOW = WA_PLANT-WERKS.
APPEND R_WERKS TO IT_R_WERKS.
CLEAR R_WERKS.
ENDIF.
ENDLOOP.
IF IT_R_WERKS IS NOT INITIAL.
"Select data using the Plants for which user is authorised
ELSE.
"User has no authority to display any Plant data
ENDIF.
Hope this is of some help to you.
BR,
Suhas
Edited by: Suhas Saha on Mar 18, 2009 10:18 AM -
Example of a Simple ALV Report using Function Modules (not OO)
Hi,
I am new to ABAP. Where can I get a proper Example of a Simple ALV Report using Function Modules? I searched the forum but did not find a proper solution. Kindly help.
Smruthi.
Edited by: Smruthi Acharya on Jan 29, 2009 7:13 PMHi,
Use this demo code:-
REPORT z_alv01 MESSAGE-ID zmsg.
* TABLES
TABLES : ekpo.
* TYPE POOLS
TYPE-POOLS : slis.
* TYPE DECLARATION
TYPES : BEGIN OF t_ekpo,
ebeln TYPE ekpo-ebeln,
ebelp TYPE ekpo-ebelp,
matnr TYPE ekpo-matnr,
werks TYPE ekpo-werks,
menge TYPE ekpo-menge,
END OF t_ekpo.
* PARAMETERS
PARAMETERS : s_var TYPE disvariant-variant.
* DATA DECLARATION
*VARIABLES
DATA : check(1),
rep_id TYPE sy-repid.
*INTERNAL TABLE TYPE OF ZEKPO
DATA : it_ekpo TYPE STANDARD TABLE OF t_ekpo WITH HEADER LINE.
*FIELD CATALOG
DATA : it_field TYPE slis_t_fieldcat_alv,
wa_field TYPE slis_fieldcat_alv.
*SORTING
DATA : it_sort TYPE slis_t_sortinfo_alv,
wa_sort TYPE slis_sortinfo_alv.
*FOR TOP OF THE PAGE
DATA : it_top TYPE slis_t_listheader,
wa_top TYPE slis_listheader.
*FOR END OF THE PAGE
DATA : it_end TYPE slis_t_listheader,
wa_end TYPE slis_listheader.
*TO CAPTURE EVENTS AND HANDLE
DATA : it_event TYPE slis_t_event,
wa_event TYPE slis_alv_event.
*FOR GRID TITLE
DATA : wa_title TYPE lvc_title.
*FOR LAYOUT
DATA : wa_layout TYPE slis_layout_alv.
*FOR EXCLUDING STANDARD BUTTON FROM ALV TOOLBAR
DATA : it_exclude TYPE slis_t_extab,
wa_exclude TYPE slis_extab.
*FOR VARIANT
DATA : wa_variant TYPE disvariant.
* INITIALIZATION
INITIALIZATION.
check = 'X'.
rep_id = sy-repid.
wa_variant-report = sy-repid.
*GET DEFUALT ON THE SELECTION SCREEN FOR DEFAULT DISPLAY
CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
EXPORTING
i_save = 'A'
CHANGING
cs_variant = wa_variant
EXCEPTIONS
wrong_input = 1
not_found = 2
program_error = 3
OTHERS = 4.
IF sy-subrc = 0. " IF DEFAULT VARIANT FOUND
s_var = wa_variant-variant. " PASS THE DEFAULT VARIANT TO THE SELECTION SCREEN FIELD
ENDIF.
* AT-SELECTION SCREEN ON VALUE REQUEST
* TO GET THE F4 HELP FOR VARIANT
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_var.
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
is_variant = wa_variant
* I_TABNAME_HEADER =
* I_TABNAME_ITEM =
* IT_DEFAULT_FIELDCAT =
i_save = 'A'
* I_DISPLAY_VIA_GRID = ' '
IMPORTING
* E_EXIT =
es_variant = wa_variant
EXCEPTIONS
not_found = 1
program_error = 2
OTHERS = 3.
IF sy-subrc = 0.
s_var = wa_variant-variant. " PASS THE SELECTED VARIANT TO THE SELECTION SCREEN FIELD
ENDIF.
* AT-SELECTION SCREEN
* TO CHECK THE EXISTENCE FOR VARIANT
AT SELECTION-SCREEN.
wa_variant-variant = s_var.
CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
EXPORTING
i_save = 'A'
CHANGING
cs_variant = wa_variant
EXCEPTIONS
wrong_input = 1
not_found = 2
program_error = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE w001.
ENDIF.
* START OF SELECTION
START-OF-SELECTION.
SELECT ebeln
ebelp
matnr
werks
menge
FROM ekpo
INTO TABLE it_ekpo.
* FIELD CATALOG
wa_field-fieldname = 'EBELN'.
wa_field-tabname = 'IT_TAB'.
wa_field-outputlen = 10.
wa_field-seltext_l = 'PO #'.
APPEND wa_field TO it_field.
CLEAR wa_field.
wa_field-fieldname = 'EBELP'.
wa_field-tabname = 'IT_TAB'.
wa_field-outputlen = 10.
wa_field-seltext_l = 'Line Item'.
APPEND wa_field TO it_field.
CLEAR wa_field.
wa_field-fieldname = 'MATNR'.
wa_field-tabname = 'IT_TAB'.
wa_field-outputlen = 15.
wa_field-seltext_l = 'Material'.
* wa_field-input = check.
* wa_field-edit = check.
APPEND wa_field TO it_field.
CLEAR wa_field.
wa_field-fieldname = 'WERKS'.
wa_field-tabname = 'IT_TAB'.
wa_field-outputlen = 6.
wa_field-seltext_l = 'Plant'.
* wa_field-input = check.
* wa_field-edit = check.
APPEND wa_field TO it_field.
CLEAR wa_field.
wa_field-fieldname = 'MENGE'.
wa_field-tabname = 'IT_TAB'.
wa_field-outputlen = 10.
wa_field-seltext_l = 'Qty.'.
* wa_field-input = check.
* wa_field-edit = check.
wa_field-do_sum = check.
APPEND wa_field TO it_field.
CLEAR wa_field.
* SORT W.R.T. PURCHASE ORDER NUMBER
wa_sort-spos = 1.
wa_sort-fieldname = 'EBELN'.
wa_sort-tabname = 'IT_EKPO'.
wa_sort-up = check.
wa_sort-subtot = check.
APPEND wa_sort TO it_sort.
CLEAR wa_sort.
* FOR GRID TITLE
wa_title = 'Hello'.
* FOR LAYOUT
wa_layout-zebra = check.
* FOR EXCLUDING STANDARD BUTTONS FROM ALV TOOLBAR
wa_exclude-fcode = '&OUP'.
APPEND wa_exclude TO it_exclude.
CLEAR wa_exclude.
wa_exclude-fcode = '&ODN'.
APPEND wa_exclude TO it_exclude.
CLEAR wa_exclude.
wa_exclude-fcode = '&OAD'.
APPEND wa_exclude TO it_exclude.
CLEAR wa_exclude.
* wa_exclude-fcode = '&AVE'.
* APPEND wa_exclude TO it_exclude.
* CLEAR wa_exclude.
wa_exclude-fcode = '&INFO'.
APPEND wa_exclude TO it_exclude.
CLEAR wa_exclude.
* POPULATE ALL EVENTS INTO INTERNAL TABLE
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = it_event
EXCEPTIONS
list_type_wrong = 1
OTHERS = 2.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
READ TABLE it_event INTO wa_event WITH KEY name = 'END_OF_LIST'.
wa_event-form = 'END'.
MODIFY it_event FROM wa_event INDEX sy-tabix.
CLEAR wa_event.
* DISPLAY RECORDS IN ALV GRID
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER = ' '
* I_BUFFER_ACTIVE = ' '
i_callback_program = rep_id
* i_callback_pf_status_set = 'PF'
i_callback_user_command = 'COMMAND'
i_callback_top_of_page = 'TOP'
* I_CALLBACK_HTML_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_END_OF_LIST = ' '
* I_STRUCTURE_NAME =
* I_BACKGROUND_ID = ' '
i_grid_title = wa_title
* I_GRID_SETTINGS =
is_layout = wa_layout
it_fieldcat = it_field
it_excluding = it_exclude
* IT_SPECIAL_GROUPS =
it_sort = it_sort
* IT_FILTER =
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
i_save = 'A'
is_variant = wa_variant
it_events = it_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_ekpo
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
ENDIF.
*& Form top
* TO WRITE THE HEADER
FORM top.
REFRESH it_top.
wa_top-typ = 'S'.
wa_top-key = text-001.
wa_top-info = rep_id.
APPEND wa_top TO it_top.
CLEAR wa_top.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = it_top
* I_LOGO =
* I_END_OF_LIST_GRID =
* I_ALV_FORM =
ENDFORM. "top
*& Form end
* TO WRITE THE FOOTER
FORM end.
REFRESH it_end.
wa_end-typ = 'S'.
wa_end-key = text-001.
wa_end-info = rep_id.
APPEND wa_end TO it_end.
CLEAR wa_end.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = it_end
* I_LOGO =
* I_END_OF_LIST_GRID =
* I_ALV_FORM =
ENDFORM. "end
*& Form pf
* FOR PF-STATUS WITH USER DEFINED BUTTONS
* -->RT_EXTAB text
FORM pf USING rt_extab TYPE slis_t_extab.
SET PF-STATUS 'ZTG_PF_ALV'.
ENDFORM. "pf
*& Form command
* TO HANDLE USER ACTIONS AGAINST PF-STATUS
* -->UCOMM text
* -->SELFIELD text
FORM command USING ucomm LIKE sy-ucomm selfield TYPE slis_selfield.
DATA : ok_code TYPE sy-ucomm.
ok_code = ucomm.
CASE ok_code.
WHEN 'T_DOWN'.
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
titel = 'HELLO'
txt1 = 'USER COMMAND'
txt2 = 'TOTAL DOWN'.
WHEN 'DOWN'.
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
titel = 'HELLO'
txt1 = 'USER COMMAND'
txt2 = 'DOWN'.
WHEN 'UP'.
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
titel = 'HELLO'
txt1 = 'USER COMMAND'
txt2 = 'UP'.
WHEN 'T_UP'.
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
titel = 'HELLO'
txt1 = 'USER COMMAND'
txt2 = 'TOTAL UP'.
ENDCASE.
ENDFORM. "command
Hope this helps you.
Thanks & Regards,
Tarun Gambhir -
Hoe top create summary and detail report using ABAP QUERY
Hi ,
Can any one suggest me how to create summary and detailed report using ABAP Quey.
Regards,
Raghu.Hi,
Table Declaration
tables:mara,mast.
*Declaring the internal table
data: begin of itab_new occurs 0,
matnr like mara-matnr, "Material No
ernam like mara-ernam, "Material Created by
mtart like mara-mtart, "Material Type
matkl like mara-matkl, "Material Desc
werks like mast-werks, "Plant
aenam like mast-aenam, "BOM created
stlal like mast-stlal, "Alternative BOM
end of itab_new.
select-options: p_matnr for mara-matnr.
CODE A : Retrieving the data from the database
select f~matnr f~ernam f~mtart f~matkl m~werks m~aenam m~stlal
into table itab_new
from mara as f inner join mast as m
on f~matnr = m~matnr
where f~matnr in p_matnr.
CODE B : Retrieving the data from the database.
SELECT FMATNR FERNAM FMTART FMATKL MWERKS MAENAM M~STLAL
INTO TABLE ITAB_NEW
FROM MARA AS F INNER JOIN MAST AS M
ON FMATNR = MMATNR
WHERE F~MATNR = P_MATNR.
SORT ITAB_NEW BY ERNAM.
loop at itab_new.
write:/5 itab_new-matnr,itab_new-ernam,itab_new-mtart,itab_new-matkl,itab_new-werks,itab_new-aenam,itab_new-stlal.
endloop.
*TABLES: MARA , MAST.
*DATA:BEGIN OF ITAB_NEW OCCURS 0,
MATNR LIKE MARA-MATNR,
ERNAM LIKE MARA-ERNAM,
MTART LIKE MARA-MTART,
MATKL LIKE MARA-MATKL,
END OF ITAB_NEW.
SELECT MATNR ERNAM MTART MATKL
INTO TABLE ITAB_NEW
FROM MARA
WHERE MTART = 'T'
ORDER BY MATNR ERNAM MTART MATKL.
*DATA: BEGIN OF ITAB OCCURS 0,
MATNR LIKE MARA-MATNR,
END OF ITAB.
Thank U,
Jay.... -
hi friendz,
can any one of u give an example, how to build alv report using oops abap ?
thanks in advance.
points for sure
regards,
VijayaHi Vijaya,
I hope the following code upto your requirement.
*& Report ZMAT_ALV_GRID *
REPORT ZCL_CLASS1.
TYPES: BEGIN OF T_MARA,
MATNR TYPE MARA-MATNR,
MAKTX TYPE MAKT-MAKTX,
WERKS TYPE MARD-WERKS,
LGORT TYPE MARD-LGORT,
LABST TYPE MARD-LABST,
END OF T_MARA.
*DATA: IT_MARA TYPE STANDARD TABLE OF T_MARA.
DATA: IT_MARA TYPE T_MARA OCCURS 0.
DATA: O_CONT TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
O_GRID TYPE REF TO CL_GUI_ALV_GRID.
DATA: X_FLDCAT TYPE LVC_S_FCAT.
DATA: IT_FLDCAT TYPE LVC_T_FCAT.
DATA: I_LAYOUT TYPE LVC_S_LAYO.
DATA: X_SORT TYPE LVC_S_SORT.
DATA: I_SORT TYPE LVC_T_SORT.
TABLES: MARA.
SELECT-OPTIONS: S_MATNR FOR MARA-MATNR.
PARAMETERS: P_CHK AS CHECKBOX.
START-OF-SELECTION.
PERFORM GET_DATA.
PERFORM GENERATE_FLDCAT.
PERFORM GENERATE_LAYOUT.
PERFORM DO_SORT.
SET SCREEN 100.
*& Module STATUS_0100 OUTPUT
text
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS 'MAIN'.
SET TITLEBAR 'xxx'.
PERFORM BUILD_ALV.
ENDMODULE. " STATUS_0100 OUTPUT
*& Module USER_COMMAND_0100 INPUT
text
MODULE USER_COMMAND_0100 INPUT.
CASE SY-UCOMM.
WHEN 'BACK'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
*& Form BUILD_ALV
text
FORM BUILD_ALV .
CREATE OBJECT O_CONT
EXPORTING
CONTAINER_NAME = 'MAT_CONTAINER'
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
CREATE_ERROR = 3
LIFETIME_ERROR = 4
LIFETIME_DYNPRO_DYNPRO_LINK = 5
others = 6.
CREATE OBJECT O_GRID
EXPORTING
I_PARENT = O_CONT
EXCEPTIONS
ERROR_CNTL_CREATE = 1
ERROR_CNTL_INIT = 2
ERROR_CNTL_LINK = 3
ERROR_DP_CREATE = 4
others = 5.
CALL METHOD O_GRID->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
I_BUFFER_ACTIVE =
I_BYPASSING_BUFFER =
I_CONSISTENCY_CHECK =
I_STRUCTURE_NAME =
IS_VARIANT =
I_SAVE =
I_DEFAULT = ' '
IS_LAYOUT = I_LAYOUT
IS_PRINT =
IT_SPECIAL_GROUPS =
IT_TOOLBAR_EXCLUDING =
IT_HYPERLINK =
IT_ALV_GRAPHICS =
IT_EXCEPT_QINFO =
CHANGING
IT_OUTTAB = IT_MARA
IT_FIELDCATALOG = IT_FLDCAT[]
IT_SORT = I_SORT
IT_FILTER =
EXCEPTIONS
INVALID_PARAMETER_COMBINATION = 1
PROGRAM_ERROR = 2
TOO_MANY_LINES = 3
others = 4.
ENDFORM. " BUILD_ALV
*& Form GET_DATA
text
FORM GET_DATA .
SELECT A~MATNR
B~MAKTX
C~WERKS
C~LGORT
C~LABST
INTO TABLE IT_MARA
FROM MARA AS A
INNER JOIN MAKT AS B
ON BMATNR = AMATNR
INNER JOIN MARD AS C
ON CMATNR = AMATNR
WHERE A~MATNR IN S_MATNR
AND B~SPRAS = SY-LANGU.
ENDFORM. " GET_DATA
*& Form GENERATE_FLDCAT
text
FORM GENERATE_FLDCAT .
*CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
I_BUFFER_ACTIVE =
I_STRUCTURE_NAME = 'ZSMARA'
I_CLIENT_NEVER_DISPLAY = 'X'
I_BYPASSING_BUFFER =
I_INTERNAL_TABNAME = ' '
CHANGING
CT_FIELDCAT = IT_FLDCAT
EXCEPTIONS
INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 2
OTHERS = 3.
X_FLDCAT-COL_POS = 1.
X_FLDCAT-FIELDNAME = 'MATNR'.
X_FLDCAT-OUTPUTLEN = '18'.
X_FLDCAT-REPTEXT = 'Material No'.
APPEND X_FLDCAT TO IT_FLDCAT.
X_FLDCAT-COL_POS = 2.
X_FLDCAT-FIELDNAME = 'MAKTX'.
X_FLDCAT-OUTPUTLEN = '48'.
X_FLDCAT-REPTEXT = 'Material Desc'.
X_FLDCAT-TOOLTIP = 'Material Desc'.
APPEND X_FLDCAT TO IT_FLDCAT.
X_FLDCAT-COL_POS = 3.
X_FLDCAT-FIELDNAME = 'WERKS'.
X_FLDCAT-OUTPUTLEN = '5'.
X_FLDCAT-REPTEXT = 'Plant'.
X_FLDCAT-TOOLTIP = 'Plant'.
APPEND X_FLDCAT TO IT_FLDCAT.
X_FLDCAT-COL_POS = 4.
X_FLDCAT-FIELDNAME = 'LGORT'.
X_FLDCAT-OUTPUTLEN = '5'.
X_FLDCAT-REPTEXT = 'S.Loc'.
X_FLDCAT-TOOLTIP = 'S.Loc'.
APPEND X_FLDCAT TO IT_FLDCAT.
X_FLDCAT-COL_POS = 5.
X_FLDCAT-FIELDNAME = 'LABST'.
X_FLDCAT-OUTPUTLEN = '20'.
X_FLDCAT-REPTEXT = 'Quantity'.
X_FLDCAT-TOOLTIP = 'Quantity'.
X_FLDCAT-DO_SUM = 'X'.
APPEND X_FLDCAT TO IT_FLDCAT.
ENDFORM. " GENERATE_FLDCAT
*& Form GENERATE_LAYOUT
text
FORM GENERATE_LAYOUT .
I_LAYOUT-ZEBRA = 'X'.
I_LAYOUT-FRONTEND = 'X'.
I_LAYOUT-GRID_TITLE = 'ALV GRID USING OOPS'.
I_LAYOUT-NUMC_TOTAL = 'X'.
ENDFORM. " GENERATE_LAYOUT
*& Form DO_SORT
text
FORM DO_SORT .
X_SORT-FIELDNAME = 'MATNR'.
X_SORT-UP = 'X'.
X_SORT-SUBTOT = 'X'.
IF P_CHK = 'X'.
X_SORT-EXPA = SPACE.
ELSE.
X_SORT-EXPA = 'X'.
ENDIF.
APPEND X_SORT TO I_SORT.
ENDFORM. " DO_SORT
inorder to execute this code perfectly, do the following things.
1. Create a Graphical Screen 100.
2. Place a Custom Control on that screen and give name as MAT_CONTAINER.
3. activate the screen.
and execute the program.
if this suits requirement award points.
satish -
Report (uses LDB's) giving dump due to memory problem
Hi,
I have a report which is giving dump in production due to memory problem.
Memory is increased from basis part,but still getting same error.
the report uses Logical DataBases.
Can anyone suggest solution to solve this problem.
regards
MallikHi Amit,
thanks for ur quick reply and ur idea "make changes in development and write the logic to read records in chunks".
I have n't worked on LDB's till now.So i Don't know how I can read the data in chunks from LDB's.
Can u Plz give some idea how to read data in chunks.
Iam also sending the code,if possible ,plz go thru it and give me some idea.
Hope u will help me.
CODE.
REPORT ZAROP028
ABLES: PROJ, " Project definition
PRPS_R, " WBS element
PRPS, " WBS elements
TJ02T, " System Status Values
TCJ1, " Project Types
JEST, " Active System Status
COSP1, " cost totals - external postings
COSS1, " cost totals - internal postings
COVP11, " Line Items by Prd & Doc Header
COVP12, " Line Items by Prd & Doc Header
BHDGD, " Page heading table.
AUFK, " Order Master Data for WBS (LDB)
ANEP, " Asset line item
COBRB, "Distribution Rules Settlement Ru
SETHIER, "Hierarchy Structure
TKA02, "Controlling Area Assignment
CEPC, "Profit Center Master Data
PSDYPD, "Dummy struct for GET proj late
PSDYPR, "Dummy struct for GET PRPS_R late
PSDYNP. "Dummy struct for GET AUFK late
CONSTANTS:
C_E TYPE C VALUE 'E',
C_I TYPE C VALUE 'I',
C_N TYPE C VALUE 'N',
C_X TYPE C VALUE 'X',
C_Y TYPE C VALUE 'Y',
C_NE(2) TYPE C VALUE 'NE',
C_EQ(2) TYPE C VALUE 'EQ',
C_USD(3) TYPE C VALUE 'USD',
C_04(2) TYPE C VALUE '04',
C_I0046(5) TYPE C VALUE 'I0046'
various working storage
DATA:
W_TXT04(4) TYPE C. " make status uppercase
DATA: ACTIVE(1) TYPE C VALUE 'A', " type for status_flag
INACTIVE(1) TYPE C VALUE 'I', " type for status_flag
STATUS_FLAG(1) TYPE C VALUE 'I', " wbs active or inactive?
INACTIVEDT LIKE SY-DATUM, " inactive date for wbs
REC_FLAG TYPE C VALUE 'N', " records retrieved?
DAYS_INACTIVE TYPE I, " days wbs has been inac
W_LOWINACT TYPE I, " smallest inactive days
WBS_CNT TYPE I, " cnt for wbs in status
W_AUC_COST TYPE P DECIMALS 2, " unsettled auc cost
W_VNAME LIKE PRPS_R-VNAME. " venture number storage
DATA: BEGIN OF ITAB OCCURS 0, "MELI-5F2KMH
COMPCODE LIKE PROJ-VBUKR, " company code
PLANT LIKE PROJ-WERKS, " plant
PROJECT LIKE PROJ-PSPID, " project
NAME LIKE PROJ-POST1, " project description
DINACT TYPE I, " days proj inactive
PRCTR LIKE PROJ-PRCTR, " profit center
SETID LIKE SETHIER-SETID, " level 2 pc hier
DESCRIPT LIKE SETHEADERT-DESCRIPT,
VERNA LIKE PROJ-VERNA, " person responsible
AUC TYPE P DECIMALS 2, " AUC unsettled amount
END OF ITAB.
DATA: BEGIN OF I_INACT OCCURS 0,
STAT LIKE JEST-STAT,
INACT LIKE JEST-INACT,
END OF I_INACT.
DATA: EQ_FLAG TYPE C, " system status flag
NE_FLAG TYPE C. " system status flag
TYPES: BEGIN OF T_COSTS,
PSPID LIKE PROJ-PSPID,
BUDAT LIKE COVP11-BUDAT,
END OF T_COSTS.
DATA: I_PROJ LIKE PROJ OCCURS 0 WITH HEADER LINE,
I_PRPS_R LIKE PRPS_R OCCURS 0 WITH HEADER LINE,
I_COSTS TYPE T_COSTS OCCURS 0 WITH HEADER LINE.
DATA: W_RECORDS TYPE I.
DATA: FOUND_FLAG TYPE C. " CHAD-4PRPDE
DATA: BEGIN OF I_HIER OCCURS 0. "FEAT-5BNRRP
INCLUDE STRUCTURE SETHIER. "FEAT-5BNRRP
DATA: END OF I_HIER. "FEAT-5BNRRP
RANGES: R_TJ02T FOR TJ02T-ISTAT.
DATA: W_LVL2 LIKE SETHIER-SETID. "MELI-5F2KMH
SELECTION-SCREEN BEGIN OF BLOCK PROJECT WITH FRAME TITLE TEXT-B01.
PARAMETERS: P_BUDAT LIKE COVP11-BUDAT,
DAYINACT(3) TYPE N DEFAULT '090'.
SELECTION-SCREEN SKIP. "FEAT-5BNRRP
PARAMETERS: P_PC-SET LIKE CEPC-KHINR OBLIGATORY "FEAT-5BNRRP
DEFAULT 'SCH_STREAM'. "FEAT-5BNRRP
SELECTION-SCREEN END OF BLOCK PROJECT.
SELECTION-SCREEN BEGIN OF BLOCK SORT WITH FRAME TITLE TEXT-B02.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(13) TEXT-C01.
SELECTION-SCREEN POSITION 15.
PARAMETERS: P_PLANT RADIOBUTTON GROUP SORT DEFAULT 'X'.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(13) TEXT-C03. "FEAT-5BNRRP
SELECTION-SCREEN POSITION 15.
PARAMETERS: P_PRCTR RADIOBUTTON GROUP SORT. "FEAT-5BNRRP
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(13) TEXT-C04.
SELECTION-SCREEN POSITION 15.
PARAMETERS: P_DAYS RADIOBUTTON GROUP SORT.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK SORT.
AT SELECTION-SCREEN OUTPUT.
PERFORM USER_PARM_INIT.
AT SELECTION-SCREEN.
PERFORM CHECK_PROJ_CRITERIA.
START-OF-SELECTION.
PERFORM BUILD_PC_HIER USING P_PC-SET.
Project Definition *
GET PROJ.
MOVE-CORRESPONDING PROJ TO I_PROJ. "MELI-5F2KMH
APPEND I_PROJ. "MELI-5F2KMH
CLEAR I_PROJ.
WBS element table
GET PRPS_R.
MOVE-CORRESPONDING PRPS_R TO I_PRPS_R.
APPEND I_PRPS_R.
CLEAR I_PRPS_R.
GET all order and cost objects associated with order and elements
GET AUFK.
GET COSP1.
CHECK COSP1-WRTTP EQ C_04. " check if value type '04'
Get last date that the wbselement was updated and determine status
GET COVP11.
MOVE PROJ-PSPID TO I_COSTS-PSPID.
MOVE COVP11-BUDAT TO I_COSTS-BUDAT.
APPEND I_COSTS.
CLEAR I_COSTS.
Loop through Internal cost statements
GET COSS1.
CHECK COSS1-WRTTP EQ C_04. " if value type is 04
Get last date that the wbselement was updated and determine status
GET COVP12.
MOVE PROJ-PSPID TO I_COSTS-PSPID.
MOVE COVP12-BUDAT TO I_COSTS-BUDAT.
APPEND I_COSTS.
CLEAR I_COSTS.
END-OF-SELECTION.
PERFORM BUILD_TABLE.
DELETE ITAB WHERE DINACT < DAYINACT.
DESCRIBE TABLE ITAB LINES W_RECORDS.
IF W_RECORDS = 0.
MESSAGE I024.
ENDIF.
PERFORM WRITE_REPORT.
FORM CHECK_PROJ_CRITERIA *
This form verifies correct selection criteria has been entered from *
the selection screen inputs. If incorrect data has been entered the*
valid information messages are displayed. *
FORM CHECK_PROJ_CRITERIA.
check for either posting date or inactivity criteria but not both
IF NOT P_BUDAT IS INITIAL AND NOT DAYINACT IS INITIAL.
MESSAGE E119.
ENDIF.
IF NOT DAYINACT IS INITIAL. "check s/o day inactive
IF NOT DAYINACT <= 998.
MESSAGE E018.
ELSE.
INACTIVEDT = SY-DATUM - DAYINACT.
ENDIF.
if days inactive is initial set INACTIVEDT using the posting date
ELSE.
INACTIVEDT = P_BUDAT.
ENDIF.
ENDFORM. " CHECK_PROJ_CRITERIA
FORM GET_AUC_COSTS *
This form retrieves AUC costs for records based on AUFK2 where they *
meet project criteria. This pulls the unsettled amount on a AUC as *
a settlement receiver. *
FORM GET_AUC_COSTS USING F_OBJNR F_BUKRS.
CONSTANTS:
C_SETLEMENT_ANNUAL LIKE COBRB-PERBZ VALUE 'JHR', "Annual Settlement
C_DEP_AREA_STD LIKE ANEP-AFABE VALUE '01'. "Std depreciation
DATA: L_ANLC LIKE ANLC OCCURS 0 WITH HEADER LINE,
L_ANLCV LIKE ANLCV OCCURS 0 WITH HEADER LINE,
BEGIN OF L_COBRB OCCURS 0, "SRIN-6ZNEAR
ANLN1 LIKE COBRB-ANLN1,
ANLN2 LIKE COBRB-ANLN2,
END OF L_COBRB,
F_H_COST TYPE P DECIMALS 2.
SELECT ANLN1 ANLN2 FROM COBRB
INTO TABLE L_COBRB " SRIN-6ZNEAR
WHERE OBJNR = F_OBJNR
AND PERBZ = C_SETLEMENT_ANNUAL.
IF SY-SUBRC NE 0. " gary-463qbd
EXIT. " gary-463qbd
ENDIF. " gary-463qbd
LOOP AT L_COBRB. " gary-463qbd
CLEAR: F_H_COST.
SELECT SINGLE * FROM ANLC
INTO L_ANLC
WHERE BUKRS = F_BUKRS AND
ANLN1 = L_COBRB-ANLN1 AND
ANLN2 = L_COBRB-ANLN2 AND
GJAHR = SY-DATUM(4) AND
AFABE = C_DEP_AREA_STD AND
ZUJHR = '0000' AND
ZUCOD = '0000'.
IF SY-SUBRC = 0.
CALL FUNCTION 'FI_AA_VALUES_CALCULATE'
EXPORTING
I_ANLC = L_ANLC
IMPORTING
E_ANLCV = L_ANLCV.
F_H_COST = L_ANLCV-BCHWRT_LFD.
ENDIF.
ADD: F_H_COST TO W_AUC_COST.
ENDLOOP. " gary-463qbd
ENDFORM. " GET_AUC_COSTS
FORM CHECK_INACTIVE_DATE *
This form checks the computed inactive date based on the formal *
parameter DAYS_INACTIVE. If DAYS_INACTIVE is more current than the *
current lowest inactive date W_LOWINACT then W_LOWINACT is replaced *
with this value. *
FORM CHECK_INACTIVE_DATE USING DAYS_INACTIVE.
IF DAYS_INACTIVE < W_LOWINACT.
MOVE DAYS_INACTIVE TO W_LOWINACT.
ELSEIF W_LOWINACT EQ 0.
MOVE: DAYS_INACTIVE TO W_LOWINACT,
W_LOWINACT TO ITAB-DINACT.
ENDIF.
ENDFORM. " CHECK_INACTIVE_DATE
FORM build_table *
collect fields to the internal table ITAB *
FORM BUILD_TABLE.
SORT I_COSTS BY PSPID ASCENDING BUDAT DESCENDING.
LOOP AT I_PROJ.
CLEAR W_AUC_COST.
READ TABLE I_COSTS WITH KEY PSPID = I_PROJ-PSPID
BINARY SEARCH.
IF SY-SUBRC = 0.
ITAB-DINACT = SY-DATUM - I_COSTS-BUDAT.
ELSE.
ITAB-DINACT = SY-DATUM - I_PROJ-ERDAT.
ENDIF.
LOOP AT I_PRPS_R WHERE PSPHI = I_PROJ-PSPNR AND
BELKZ = 'X'.
IF NOT I_PRPS_R-IMPRF IS INITIAL.
PERFORM GET_AUC_COSTS USING I_PRPS_R-OBJNR
I_PRPS_R-PBUKR.
ELSE.
CONTINUE.
ENDIF.
ENDLOOP.
ITAB-COMPCODE = I_PROJ-VBUKR.
ITAB-PLANT = I_PROJ-WERKS.
ITAB-PROJECT = I_PROJ-PSPID.
ITAB-NAME = I_PROJ-POST1.
ITAB-PRCTR = I_PROJ-PRCTR.
ITAB-VERNA = I_PROJ-VERNA.
ITAB-AUC = W_AUC_COST.
IF ITAB-DINACT > DAYINACT.
PERFORM GET_HIER_INFO.
ENDIF.
APPEND ITAB.
CLEAR ITAB.
ENDLOOP.
ENDFORM. " BUILD_TABLE
FORM STATUS_CHECK *
Checks the active status of the project definition for the *
parameter values assigned. *
FORM STATUS_CHECK USING F_OBJNR.
begin of GARY-463QBD
CLEAR: I_INACT.
REFRESH: I_INACT.
MOVE: C_N TO EQ_FLAG,
C_Y TO NE_FLAG.
retrieve status for a given record
SELECT STAT INACT
INTO TABLE I_INACT
FROM JEST
WHERE OBJNR EQ F_OBJNR AND
INACT NE C_X.
sort internal status entered by user
SORT R_TJ02T BY OPTION DESCENDING.
check all current object statuses meet user entered criteria
LOOP AT R_TJ02T WHERE OPTION EQ C_NE.
check for user selected options
READ TABLE I_INACT WITH KEY STAT = R_TJ02T-LOW.
IF SY-SUBRC EQ 0.
MOVE C_N TO NE_FLAG.
EXIT.
ENDIF.
ENDLOOP.
LOOP AT R_TJ02T WHERE OPTION EQ C_EQ.
check for user selected options
READ TABLE I_INACT WITH KEY STAT = R_TJ02T-LOW.
IF SY-SUBRC EQ 0.
MOVE C_Y TO EQ_FLAG.
EXIT.
ENDIF.
ENDLOOP.
check for no statuses entered as EQ option
LOOP AT R_TJ02T WHERE OPTION EQ C_EQ.
EXIT.
ENDLOOP.
if so move c_y to eq_flag
IF SY-SUBRC NE 0.
MOVE C_Y TO EQ_FLAG.
ENDIF.
if both eq_flag or ne_flag are true(c_y) move true to valid_flag
IF ( EQ_FLAG EQ C_N OR
NE_FLAG EQ C_N ).
REJECT 'PRPS_R'.
ENDIF.
end of GARY-463QBD
ENDFORM. " STATUS_CHECK
Form WRITE_REPORT
FORM WRITE_REPORT.
IF P_PLANT EQ 'X'.
SORT ASCENDING BY ITAB-BUSAREA "FEAT-5BNRRP
SORT ITAB ASCENDING BY PLANT
PROJECT.
ELSEIF P_PRCTR EQ 'X'.
SORT ITAB ASCENDING BY PRCTR "FEAT-5BNRRP
PROJECT.
ELSE.
SORT ITAB ASCENDING BY DINACT
PROJECT.
ENDIF.
FORMAT COLOR COL_BACKGROUND INTENSIFIED ON.
"MELI-5F2KMH
LOOP AT ITAB. "MELI-5F2KMH
WRITE: / ITAB-COMPCODE,
9(4) ITAB-PLANT,
17(12) ITAB-SETID,
33(40) ITAB-DESCRIPT,
77(10) ITAB-PRCTR,
91(24) ITAB-PROJECT,
119(40) ITAB-NAME,
163(25) ITAB-VERNA,
192(15) ITAB-AUC CURRENCY C_USD,
211(8) ITAB-DINACT.
ENDLOOP.
ENDFORM. " WRITE_REPORT
Form USER_PARM_INIT
Initializes user parameter settings
FORM USER_PARM_INIT.
ENDFORM. " USER_PARM_INIT
At top of every page, generate Amoco-standard header.
TOP-OF-PAGE.
MOVE: '0' TO BHDGD-INIFL,
SY-LINSZ TO BHDGD-LINES,
SY-UNAME TO BHDGD-UNAME,
SY-REPID TO BHDGD-REPID,
SY-TITLE TO BHDGD-LINE1,
SPACE TO BHDGD-DOMAI,
SPACE TO BHDGD-SEPAR,
SPACE TO BHDGD-MIFFL.
IF P_PLANT EQ 'X'.
MOVE TEXT-H01 TO BHDGD-LINE2.
ELSE.
MOVE TEXT-H03 TO BHDGD-LINE2. "FEAT-5BNRRP
ENDIF.
temporarily clear sy-mandt to remove "europe" from header "FEAT-5BNRRP
DATA: W_MANDT LIKE SY-MANDT.
BHDGD-BUKRS = SPACE.
W_MANDT = SY-MANDT.
CLEAR SY-MANDT.
FORMAT COLOR COL_BACKGROUND INTENSIFIED OFF.
PERFORM BATCH-HEADING(RSBTCHH0).
FORMAT RESET.
reset sy-mandt "FEAT-5BNRRP
SY-MANDT = W_MANDT.
PERFORM PGH_WRITE_HEADING USING TEXT-003 INACTIVEDT. "MELI-5F2KMH
SKIP 1.
ULINE.
write heading info
FORMAT COLOR COL_TOTAL INTENSIFIED ON.
WRITE: /1(5)'CCode',
9(5)'Plant',
17(12)'Level 2 Node',
33(40)'Level 2 Node Description',
77(10)'Profit Ctr',
91(18)'Project Definition',
119(19)'Project Description',
163(18)'Person Responsible',
192(15)' AUC Unsettled',
211(13)'Days Inactive'.
end FEAT-5BNRRP
BEGIN FEAT-5BNRRP NEW FORMS
FORM BUILD_PC_HIER
FORM BUILD_PC_HIER USING SETID.
DATA: W_SETID LIKE SETHIER-SETID,
W_NEWSETID LIKE SETHIER-SETID.
CONCATENATE '0H' SETID INTO W_SETID.
CALL FUNCTION 'G_SET_GET_ID_FROM_NAME'
EXPORTING
SHORTNAME = W_SETID
TABNAME = 'GLPCT'
SETCLASS = '0106'
SUPRESS_POPUP = 'X'
OLD_SETID = W_NEWSETID
IMPORTING
NEW_SETID = W_NEWSETID.
CALL FUNCTION 'G_SET_TREE_IMPORT'
EXPORTING
CLIENT = SY-MANDT
LANGU = SY-LANGU
SETID = W_NEWSETID
TABNAME = 'GLPCT'
TABLES
SET_HIERARCHY = I_HIER
EXCEPTIONS
SET_NOT_FOUND = 1
ILLEGAL_FIELD_REPLACEMENT = 2
ILLEGAL_TABLE_REPLACEMENT = 3
OTHERS = 4.
CLEAR I_HIER.
ENDFORM.
FORM GET_HIER_INFO
FORM GET_HIER_INFO.
DATA: W_SETID LIKE SETHIER-SETID,
W_KHINR LIKE CEPC-KHINR,
W_INDEX TYPE I.
CLEAR: W_SETID,
W_KHINR,
W_INDEX.
DETERMINE PROFIT CENTER NODE
SELECT SINGLE KHINR
FROM CEPC
INTO W_KHINR
WHERE PRCTR EQ ITAB-PRCTR.
CONCATENATE '0106' I_PROJ-VKOKR W_KHINR
INTO W_SETID.
READ TABLE I_HIER WITH KEY
SETID = W_SETID.
IF SY-SUBRC EQ 0.
W_INDEX = SY-TABIX.
DO.
READ TABLE I_HIER INDEX W_INDEX.
IF W_INDEX = 0.
ITAB-SETID = 'Not Found'.
EXIT.
ENDIF.
IF I_HIER-LEVEL = 1.
ITAB-SETID = I_HIER-SETID+8(12).
ITAB-DESCRIPT = I_HIER-DESCRIPT.
EXIT.
ENDIF.
IF I_HIER-LEVEL = 2.
ITAB-SETID = I_HIER-SETID+8(12).
ITAB-DESCRIPT = I_HIER-DESCRIPT.
EXIT.
ENDIF.
W_INDEX = W_INDEX - 1.
ENDDO.
ELSE.
ITAB-SETID = 'Not Found'.
ENDIF.
ENDFORM.
END FEAT-5BNRRP NEW FORMS
*& Form PGH_WRITE_HEADING WR MELI-5F2KMH
FORM PGH_WRITE_HEADING USING L_V1 L_V2.
DATA: L_LINSZ LIKE SY-LINSZ.
DATA: L_TITLEL LIKE SY-TABIX.
DATA: L_START LIKE SY-TABIX.
DATA: L_DATE LIKE SY-DATUM.
DATA: L_FORMATTED_DATE(10) TYPE C.
DATA: L_TITLE(27) TYPE C.
MOVE L_V2 TO L_DATE.
WRITE L_DATE TO L_FORMATTED_DATE.
CONCATENATE L_V1 L_FORMATTED_DATE INTO L_TITLE
SEPARATED BY SPACE.
L_LINSZ = SY-LINSZ.
L_TITLEL = STRLEN( L_TITLE ).
L_START = ( L_LINSZ / 2 ) - ( L_TITLEL / 2 ) - 2.
NEW-LINE.
POSITION L_START.
WRITE: L_TITLE.
regards
Mallik -
ALV report using OOPS concept.
Hi,
Please help me in writing ALV report using OOPS concept as i have never used this concept before.Please post a clear picture for this.
Thanks in advance.Hi
Refer this code:
REPORT zcls_alv_oops MESSAGE-ID z1.
TABLES : mara.
Types Declaration..\
TYPES :
BEGIN OF t_mara,
matnr TYPE matnr,
mtart TYPE mtart,
maktx TYPE maktx,
END OF t_mara,
BEGIN OF t_marc,
matnr TYPE matnr,
werks TYPE werks_d,
mtart TYPE mtart,
maktx TYPE maktx,
END OF t_marc.
Internal Tables Declaration..\
DATA :
i_mara TYPE TABLE OF t_mara,
i_marc TYPE TABLE OF t_marc,
i_fcat1 TYPE lvc_t_fcat,
i_fcat2 TYPE lvc_t_fcat.
Constants Declaration..\
CONSTANTS :
c_cont1 TYPE scrfname VALUE 'CONT1',
c_cont2 TYPE scrfname VALUE 'CONT2'.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
SELECT-OPTIONS:
s_matnr FOR mara-matnr NO INTERVALS.
SELECTION-SCREEN SKIP 1.
PARAMETERS :
p_hotspt RADIOBUTTON GROUP r1 DEFAULT 'X',
p_bttn RADIOBUTTON GROUP r1.
SELECTION-SCREEN END OF BLOCK b1.
\* Class forward referncing.
CLASS lcl_rcvr_class DEFINITION DEFERRED.
\* Pointers Declaration..
DATA :
lp_rcvr TYPE REF TO lcl_rcvr_class,
lp_cont1 TYPE REF TO cl_gui_custom_container,
lp_cont2 TYPE REF TO cl_gui_custom_container,
lp_grid1 TYPE REF TO cl_gui_alv_grid,
lp_grid2 TYPE REF TO cl_gui_alv_grid.
\* Local Class Definiton.
CLASS lcl_rcvr_class DEFINITION.
PUBLIC SECTION.
METHODS :
hotspot_click FOR EVENT hotspot_click OF cl_gui_alv_grid
IMPORTING e_row_id e_column_id es_row_no,
handle_double_click FOR EVENT double_click OF cl_gui_alv_grid
IMPORTING e_row e_column.
ENDCLASS.
\* Local Class Implementation.
CLASS lcl_rcvr_class IMPLEMENTATION.
METHOD hotspot_click.
DATA :
wa_mara TYPE t_mara,
wa_marc TYPE t_marc.
DATA :
l_index TYPE sy-tabix.
READ TABLE i_mara INTO wa_mara INDEX e_row_id-index.
IF sy-subrc EQ 0.
REFRESH i_marc.
SELECT matnr
werks
INTO TABLE i_marc
FROM marc
WHERE matnr EQ wa_mara-matnr.
IF sy-subrc EQ 0.
LOOP AT i_marc INTO wa_marc.
l_index = sy-tabix.
wa_marc-mtart = wa_mara-mtart.
wa_marc-maktx = wa_mara-maktx.
MODIFY i_marc FROM wa_marc INDEX l_index
TRANSPORTING mtart maktx.
ENDLOOP.
CALL SCREEN 200.
ELSE.
MESSAGE e121 WITH text-005 wa_mara-matnr.
ENDIF.
ENDIF.
ENDMETHOD.
METHOD handle_double_click.
DATA :
wa_mara TYPE t_mara,
wa_marc TYPE t_marc.
DATA :
l_index TYPE sy-tabix.
READ TABLE i_mara INTO wa_mara INDEX e_row-index.
IF sy-subrc EQ 0.
REFRESH i_marc.
SELECT matnr
werks
INTO TABLE i_marc
FROM marc
WHERE matnr EQ wa_mara-matnr.
IF sy-subrc EQ 0.
LOOP AT i_marc INTO wa_marc.
l_index = sy-tabix.
wa_marc-mtart = wa_mara-mtart.
wa_marc-maktx = wa_mara-maktx.
MODIFY i_marc FROM wa_marc INDEX l_index
TRANSPORTING mtart maktx.
ENDLOOP.
CALL SCREEN 200.
ELSE.
MESSAGE e121 WITH text-005 wa_mara-matnr.
ENDIF.
ENDIF.
ENDMETHOD.
ENDCLASS.
\* Start of Selection
START-OF-SELECTION.
\* Extract the Material Master data for the Input Material.
SELECT a~matnr
a~mtart
b~maktx
INTO TABLE i_mara
FROM mara AS a
INNER JOIN makt AS b
ON a~matnr EQ b~matnr
WHERE a~matnr IN s_matnr
AND b~spras EQ sy-langu.
END-OF-SELECTION.
IF NOT i_mara\[\] IS INITIAL.
\* Call Screen to display the Material Master data.
CALL SCREEN 100.
ELSE.
MESSAGE s121 WITH text-006.
ENDIF.
\*& Module DISP_GRID OUTPUT
\* text
MODULE disp_grid OUTPUT.
\* Build the Field catelog for Material Master data.
PERFORM build_fcat.
\* Display the Material Master data using ALV.
PERFORM disp_alv.
ENDMODULE. " DISP_GRID OUTPUT
\*& Module USER_COMMAND_0100 INPUT
\* text
MODULE user_command_0100 INPUT.
\*when exit or cancel is clicked program has to come out
CASE sy-ucomm.
WHEN 'EXIT' OR 'CANC'.
LEAVE PROGRAM.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
\*& Form build_fcat
\* text
\* \--> p1 text
\* <-\- p2 text
FORM build_fcat.
DATA : ws_fcat TYPE lvc_s_fcat.
ws_fcat-fieldname = 'MATNR'.
ws_fcat-scrtext_m = text-001.
ws_fcat-tabname = 'I_MARA'.
IF p_hotspt EQ 'X'.
ws_fcat-hotspot = 'X'.
ENDIF.
APPEND ws_fcat TO i_fcat1.
CLEAR ws_fcat.
ws_fcat-fieldname = 'MTART'.
ws_fcat-scrtext_m = text-002.
ws_fcat-tabname = 'I_MARA'.
APPEND ws_fcat TO i_fcat1.
CLEAR ws_fcat.
ws_fcat-fieldname = 'MAKTX'.
ws_fcat-scrtext_m = text-003.
ws_fcat-tabname = 'I_MARA'.
APPEND ws_fcat TO i_fcat1.
CLEAR ws_fcat.
ENDFORM. " build_fcat
\*& Form disp_alv
\* text
\* \--> p1 text
\* <-\- p2 text
FORM disp_alv.
IF lp_cont1 IS INITIAL.
\* Create the Container Object of Material Master.
CREATE OBJECT lp_cont1
EXPORTING
container_name = c_cont1
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5
others = 6 .
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
\* Create the Object for Grid of Material Master.
CREATE OBJECT lp_grid1
EXPORTING
i_parent = lp_cont1
EXCEPTIONS
error_cntl_create = 1
error_cntl_init = 2
error_cntl_link = 3
error_dp_create = 4
others = 5.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
\* Dipslay Material Master data by calling method.
CALL METHOD lp_grid1->set_table_for_first_display
CHANGING
it_outtab = i_mara
it_fieldcatalog = i_fcat1
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
\* Set Handler for the Hot Spot Event.
CREATE OBJECT lp_rcvr.
IF p_hotspt EQ 'X'.
SET HANDLER lp_rcvr->hotspot_click FOR lp_grid1.
ELSE.
SET HANDLER lp_rcvr->handle_double_click FOR lp_grid1.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDFORM. " disp_alv
\*& Module STATUS_0100 OUTPUT
\* text
MODULE status_0100 OUTPUT.
SET PF-STATUS 'MAIN_STAT'.
SET TITLEBAR 'T_100'.
ENDMODULE. " STATUS_0100 OUTPUT
\*& Module STATUS_0200 OUTPUT
\* text
MODULE status_0200 OUTPUT.
SET PF-STATUS 'PLANT_STAT'.
SET TITLEBAR 'T_200'.
ENDMODULE. " STATUS_0200 OUTPUT
\*& Module DISP_GRID_plant OUTPUT
\* text
MODULE disp_grid_plant OUTPUT.
\* Build the Field catelog for Material Plant data.
PERFORM build_fcat_plant.
\* Display the Material Master Plant data using ALV.
PERFORM disp_alv_plant.
ENDMODULE. " DISP_GRID_plant OUTPUT
\*& Module USER_COMMAND_0200 INPUT
\* text
MODULE user_command_0200 INPUT.
\*when exit or cancel is clicked program has to come out
CASE sy-ucomm.
WHEN 'EXIT' OR 'CANC'.
LEAVE PROGRAM.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE. " USER_COMMAND_0200 INPUT
\*& Form build_fcat_plant
\* text
\* \--> p1 text
\* <-\- p2 text
FORM build_fcat_plant.
DATA : ws_fcat TYPE lvc_s_fcat.
ws_fcat-fieldname = 'MATNR'.
ws_fcat-scrtext_m = text-001.
ws_fcat-tabname = 'I_MARC'.
APPEND ws_fcat TO i_fcat2.
CLEAR ws_fcat.
ws_fcat-fieldname = 'WERKS'.
ws_fcat-scrtext_m = text-004.
ws_fcat-tabname = 'I_MARC'.
APPEND ws_fcat TO i_fcat2.
CLEAR ws_fcat.
ws_fcat-fieldname = 'MTART'.
ws_fcat-scrtext_m = text-002.
ws_fcat-tabname = 'I_MARC'.
APPEND ws_fcat TO i_fcat2.
CLEAR ws_fcat.
ws_fcat-fieldname = 'MAKTX'.
ws_fcat-scrtext_m = text-003.
ws_fcat-tabname = 'I_MARC'.
APPEND ws_fcat TO i_fcat2.
CLEAR ws_fcat.
ENDFORM. " build_fcat_plant
\*& Form disp_alv_plant
\* text
\* \--> p1 text
\* <-\- p2 text
FORM disp_alv_plant.
IF lp_cont2 IS INITIAL.
\* Create the Container Object of Material Plant data.
CREATE OBJECT lp_cont2
EXPORTING
container_name = c_cont2
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5
others = 6.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
\* Create the Object for Grid of Material Plant data.
CREATE OBJECT lp_grid2
EXPORTING
i_parent = lp_cont2
EXCEPTIONS
error_cntl_create = 1
error_cntl_init = 2
error_cntl_link = 3
error_dp_create = 4
others = 5.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
\* Dipslay Material Plant data by calling method.
CALL METHOD lp_grid2->set_table_for_first_display
CHANGING
it_outtab = i_marc
it_fieldcatalog = i_fcat2
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDIF.
ENDIF.
ELSE.
\* Call method 'REFRESH_TABLE_DISPLAY' to refresh the grid data.
CALL METHOD lp_grid2->refresh_table_display.
ENDIF.
ENDFORM. " disp_alv_plant
Thanks
Vasudha -
Custom SAP report used to display an average standard cost per material.
Hi All,
I need to implement a report with the following functionality,
This is a custom SAP report used to display an average standard cost per material. Standard cost data is stored in SAP at the Material/Plant level. This report will gather the individual Standard Costs at each applicable plant (restricted by selection screen input and additional logic specified in more detail in the u201CReport Fieldsu201D section) for applicable Materials (restricted by selection screen input; if not specified all materials should be returned) and calculate an average standard cost for each material. The corresponding Currency and Base Unit of Measure will also be displayed.
Additionally the relevant u201CCommodity Code/Import Codeu201D information should be displayed for each material returned. This attribute is also stored at the Material/Plant level. To determine the value of this field for each relevant material, the report logic must retrieve the values stored for each plant. If all values are the same, the value can be output to the report. If not all values are equal, a message u201CNot Consistentu201D should be output. It should be noted that if all values are u201Cnull,u201D a null value should be returned in the report.
Can any one provide me with sample code for the same??
Thanks Debrup.Hello,
Also refer this [ THREAD|Re: error in Fleet management customising] and [link|Error when recording measurements in IFCU]
Regards
Nav
Edited by: Desire_Naveen on Nov 4, 2009 12:35 PM -
Agewise Stock Report using FIFO out of 0IC_C03
Hello,
I have a requirement where I need to create agewise stock report using FIFO. I have the stock availability from 0ic_c03.
Can any one plese tell me how to achieve the FIFO based agewise stock. I have various age buckets like 0-30 , 30-60, 60-90 etc.
If the total stock is made up of multiple receipts and I also have few issues, how can I get the balance stock based on FIFO using the GR date.
I would appreciate your help.
Regards
VasunHi,
This InfoCube allows you to evaluate stocks from ERP.
A new feature in this InfoCube is the pre-existing stock key figure Valuated Stock Quantity (0VALSTKQTY) and the associated movement key figures Receipt Quantity Valuated Stock (0RECVALSTCK) and Issue Quantity Valuated Stock (0ISSVALSTCK).
This is made possible by including the InfoObject indicator Evaluation Special Stock (0INDSPECSTK) in the InfoSource Material Stocks (as of SAP BW 3.1 Content) (2LIS_03_BX). The InfoSource used up until now, Transfer BW: Stock (2LIS_40_S278), did not recognize this InfoObject.
Note the Remarks on Filling Non-Cumulative InfoCubes.
The following Basis key figures can be restricted in the query definitions to stock categories (0STOCKCAT), such as project stock, and to stock types (0STOCKTYPE), such as quality inspection:
· Quantity of Valuated Stock (0VALSTCKQTY)
· Receipt Quantity Valuated Stock (0RECVALSTCK)
· Issue Quantity Valuated Stock (0ISSVALSTCK)
In this way, for example, you can evaluate the quantity of valuated project stock (Q).
The newly-included Basis key figures are only updated through the InfoSources 2LIS_03_BX and 2LIS_03_BF.
In this way, none of these Basis key figures can be used in queries that are built up on InfoCubes which were inventory-initialized through InfoSource 2LIS_40_S278. Moreover, the queries 0IC_C03_Q0013 to 0IC_C03_Q0016 cannot be used in the combination of InfoSources 2LIS_40_S278 and 2LIS_03_BF.
Note the following procedures when filling the InfoCube 0IC_C03 for the first time with non-cumulative data from ERP:
1. Create non-cumulatives with the program BW: Initialization of Opening Non-Cumulatives in Transfer Structure (RMCBINIT_BW).
2. Initialize the movements/revaluations with the program RMCBNEUB/RMCBNERP.
3. Post in the InfoCube using the update method Creation of Non-Cumulatives from the InfoSource 2LIS_03_BX.
4. Post in the InfoCube using the update method Initialization of the Delta Process from the InfoSources 2LIS_03_BF and 2LIS_03_UM.
Refer to SAP Note 0643687 (Compression of Non-Cumulative InfoCubes) regarding the subsequent steps for compression.
5. Compression of the request from 2LIS_03_BX with update of the marker.
6. Because in this case you are posting movements and revaluations in the InfoCube that occurred before the non-cumulative creation and which lead to this non-cumulative creation, you must execute a compression without updating the marker. For more information, see InfoCubes.
7. Thereafter, you can transfer new movements and revaluations to the BW system as usual (for performance reasons, we recommend that you regularly compress with updates of the marker, see also InfoCube Compression).
Update Logic
When updating the DataSources 2LIS_03_BX, 2LIS_03_UM and 2LIS_03_BX, the System applies the following logic:
Characteristic Value Calculation
In principle, values are updated with Plant, Material, and Stock Category only. Quantities are updated with these characteristics, as well as with Storage Location, Batch Number, and Stock Characteristic (see also SAP Note 589024: Evaluations in BW with the Characteristics Storage Location and Stck Char.).
Key Figure Value Calculation
The source field for quantities is the field CPQUABU, and for values it is the field CPPVLC.
In the update, the InfoSource fields Stock Characteristic and Stock Category control whether "special stock" key figures are updated, such as Quality Stock or Stock in Transit (only relevant for 2LIS_03_BF and 2LIS_03_UM).
The general key figures (for example, Total Stock), however, can also be restricted in queries to Stock Characteristic and Stock Category, and then deliver the same result (key word: account model versus key figure model).
The values for Stock Characteristic and Stock Category are dealt with on the extractor side in the LMCB1F20 include (routine STA_VERAENDERUNG).
The InfoObject 0INDSPECSTK (field KZBWS) also controls whether the sales order stock / project stock is valuated or non-valuated.
The system valuates the transaction key to decide whether the issue movement key figure or receipt movement key figure is updated. For more information, see SAP Note 492828: Determining the transaction key for 2LIS_03_BF + 2LIS_03_UM.
InfoSources
This InfoCube is based on the following InfoSources:
· 2LIS_03_BX
· 2LIS_03_BF
· 2LIS_03_UM
Characteristics
InfoObject
Description
0MATERIAL
Material
0PLANT
Plant
0STOR_LOC
Storage Location
0BATCH
Batch Number
0STOCKTYPE
Stock Type
0STOCKCAT
Stock Categories
0GN_VENDOR
Vendor
Time Characteristics
InfoObject
Description
0CALDAY
Calendar Day
0CALMONTH
Calendar Year/Month
0CALWEEK
Calendar Year/Week
0CALYEAR
Calendar Year
Key Figures
InfoObject
Description
0RECVS_VAL
Value Received - Valuated Stock
0VALSTCKVAL
Value - Valuated Stock
0ISSVS_VAL
Value Issued - Valuated Stock
0ISSBLOSTCK
Issue Quantity - Blocked Stock
0ISSCNSSTCK
Issue Quantity - Consignment Stock
0ISSQMSTCK
Issue Quantity - Inspection Stock
0ISSTRANSST
Issue Quantity - Stock in Transit
0RECBLOSTCK
Receipt Quantity - Blocked Stock
0RECCNSSTCK
Receipt Quantity - Consignment Stock
0RECQMSTCK
Receipt Quantity - Inspection Stock
0RECTRANSST
Receipt Quantity - Stock in Transit
0QMSTOCK
Inspection Stock
0BLOCKEDSTK
Blocked Stock
0CNSSTCKQTY
Quantity - Consignment Stock
0TRANSSTOCK
Stock in Transit
0ISSSCRP
Issue Quantity - Scrap
0ISSVALSCRP
Issue Value - Scrap
0RECTOTSTCK
Receipt Quantity - Total Stock
0ISSTOTSTCK
Issue Quantity - Total Stock
0TOTALSTCK
Quantity - Total Stock
0ISSVALSTCK
Issue Quantity - Valuated Stock
0RECVALSTCK
Receipt Quantity - Valuated Stock
0VALSTCKQTY
Quantity - Valuated Stock
0VENCONCON
Consumption Value - Vendor Consignment Stock
Units
InfoObject
Description
0LOC_CURRCY
Local Currency
0BASE_UOM
Base Un
Regards,
Hareesh -
Intractive report using ALV fm's
Hai This is Srik,
I am trying to develop an intractive report using ALV fm's...
Can anybody help me with some sample code and the needed FM's.
Thanks in advance.
SrikSrikanth,
*& Report Z_INTERACTIVE *
REPORT Z_INTERACTIVE no standard page heading line-count 200 message-id zp.
TABLES: MARA, MAKT, MARC, MARD,T001W.
DATA: BEGIN OF IT_MARA_MAKT_MARD OCCURS 0,
MATNR LIKE MARA-MATNR,
MTART LIKE MARA-MTART,
MEINS LIKE MARA-MEINS,
MAKTX LIKE MAKT-MAKTX,
LABST LIKE MARD-LABST,
END OF IT_MARA_MAKT_MARD.
DATA: BEGIN OF IT_MARC_MARD1 OCCURS 0,
WERKS LIKE MARC-WERKS,
LABST LIKE MARD-LABST,
NAME1 LIKE T001W-NAME1,
END OF IT_MARC_MARD1.
DATA: BEGIN OF IT_MARC_MARD OCCURS 0,
LGORT LIKE MARD-LGORT,
LABST LIKE MARD-LABST,
END OF IT_MARC_MARD.
SELECT-OPTIONS: s_matnr FOR MARA-MATNR.
AT SELECTION-SCREEN.
REFRESH IT_MARA_MAKT_MARD.
SELECT MATNR MTART MEINS INTO CORRESPONDING FIELDS OF IT_MARA_MAKT_MARD FROM MARA WHERE MATNR IN s_matnr.
SELECT SINGLE MAKTX INTO IT_MARA_MAKT_MARD-MAKTX FROM MAKT WHERE MATNR = IT_MARA_MAKT_MARD-MATNR.
SELECT SUM( LABST ) INTO IT_MARA_MAKT_MARD-LABST FROM MARD WHERE MATNR = IT_MARA_MAKT_MARD-MATNR.
APPEND IT_MARA_MAKT_MARD.
CLEAR IT_MARA_MAKT_MARD.
ENDSELECT.
IF SY-SUBRC <> 0.
MESSAGE I008.
ENDIF.
START-OF-SELECTION.
SORT IT_MARA_MAKT_MARD.
WRITE:/ 'MATERIAL NUMBER' COLOR 2, 20 'DESCRIPTION' COLOR 2, 50 'TYPE' COLOR 2, 70 'UOM' COLOR 2, 100 'STOCK' COLOR 2.
ULINE.
SKIP 4.
LOOP AT IT_MARA_MAKT_MARD.
WRITE:/ IT_MARA_MAKT_MARD-MATNR, 20 IT_MARA_MAKT_MARD-MAKTX, 50 IT_MARA_MAKT_MARD-MTART, 70 IT_MARA_MAKT_MARD-MEINS, 90 IT_MARA_MAKT_MARD-LABST.
HIDE: IT_MARA_MAKT_MARD-MATNR, IT_MARA_MAKT_MARD-MAKTX, IT_MARA_MAKT_MARD-MTART, IT_MARA_MAKT_MARD-MEINS, IT_MARA_MAKT_MARD-LABST.
ENDLOOP.
AT LINE-SELECTION.
CASE: SY-LSIND.
WHEN 1.
WINDOW STARTING AT 1 20 ENDING AT 120 120.
REFRESH IT_MARC_MARD1.
CLEAR IT_MARC_MARD1.
SELECT pWERKS QNAME1 INTO CORRESPONDING FIELDS OF IT_MARC_MARD1 FROM MARC AS p INNER JOIN T001W AS q ON pWERKS = qWERKS WHERE p~MATNR = IT_MARA_MAKT_MARD-MATNR.
SELECT SUM( LABST ) INTO IT_MARC_MARD1-LABST FROM MARD WHERE MATNR = IT_MARA_MAKT_MARD-MATNR AND WERKS = IT_MARC_MARD1-WERKS.
APPEND IT_MARC_MARD1.
CLEAR IT_MARC_MARD1.
ENDSELECT.
SORT IT_MARC_MARD1.
WRITE:/ 'MATERIAL NUMBER' COLOR 3.
WRITE: IT_MARA_MAKT_MARD-MATNR COLOR 4.
WRITE:/ 'DESCRIPTION' COLOR 3.
WRITE: IT_MARA_MAKT_MARD-MAKTX COLOR 4.
WRITE:/ 'TYPE' COLOR 3.
WRITE: IT_MARA_MAKT_MARD-MTART COLOR 4.
WRITE:/ 'UNIT OF MEASUREMENT' COLOR 3.
WRITE: IT_MARA_MAKT_MARD-MEINS COLOR 4.
WRITE:/ 'MATERIAL QUANTITY' COLOR 3.
WRITE: IT_MARA_MAKT_MARD-LABST COLOR 4.
ULINE.
SKIP 4.
WRITE:/ 'PLANT CODE' COLOR 2, 20 'PLANT NAME' COLOR 2, 60 'STOCK' COLOR 2.
LOOP AT IT_MARC_MARD1.
WRITE:/ IT_MARC_MARD1-WERKS COLOR 4, 20 IT_MARC_MARD1-NAME1 COLOR 4, 41 IT_MARC_MARD1-LABST.
HIDE: IT_MARC_MARD1-WERKS.
HIDE: IT_MARA_MAKT_MARD-MATNR, IT_MARA_MAKT_MARD-MAKTX, IT_MARA_MAKT_MARD-MTART, IT_MARA_MAKT_MARD-MEINS, IT_MARA_MAKT_MARD-LABST.
AT LAST.
SUM.
WRITE:/30 'TOTAL STOCK', 60 IT_MARC_MARD1-LABST.
ENDAT.
ENDLOOP.
WHEN 2.
WINDOW STARTING AT 1 20 ENDING AT 120 120.
REFRESH IT_MARC_MARD.
CLEAR IT_MARC_MARD.
SELECT LGORT LABST INTO CORRESPONDING FIELDS OF IT_MARC_MARD FROM MARD WHERE MATNR = IT_MARA_MAKT_MARD-MATNR AND WERKS = IT_MARC_MARD1-WERKS.
APPEND IT_MARC_MARD.
CLEAR IT_MARC_MARD.
ENDSELECT.
SORT IT_MARC_MARD.
WRITE:/ 'MATERIAL NUMBER' COLOR 3.
WRITE: IT_MARA_MAKT_MARD-MATNR COLOR 4.
SKIP 1.
WRITE:/ 'DESCRIPTION' COLOR 3.
WRITE: IT_MARA_MAKT_MARD-MAKTX COLOR 4.
SKIP 1.
WRITE:/ 'TYPE' COLOR 3.
WRITE: IT_MARA_MAKT_MARD-MTART COLOR 4.
SKIP 1.
WRITE:/ 'UNIT OF MEASUREMENT' COLOR 3.
WRITE: IT_MARA_MAKT_MARD-MEINS COLOR 4.
SKIP 1.
WRITE:/ 'MATERIAL QUANTITY' COLOR 3.
WRITE: IT_MARA_MAKT_MARD-LABST COLOR 4.
SKIP 1.
ULINE.
SKIP 1.
WRITE:/ 'PLANT CODE' COLOR 2, 40 'PLANT NAME' COLOR 2.
WRITE:/ IT_MARC_MARD1-WERKS, 40 IT_MARC_MARD1-NAME1.
SKIP 3.
ULINE.
WRITE:/20 'STORAGE LOCATION' COLOR 5, 50 'STOCK' COLOR 5.
SKIP 4.
LOOP AT IT_MARC_MARD.
WRITE:/20 IT_MARC_MARD-LGORT, 50 IT_MARC_MARD-LABST.
AT LAST.
SUM.
WRITE:/30 'TOTAL STOCK', 60 IT_MARC_MARD-LABST.
ENDAT.
ENDLOOP.
WHEN OTHERS.
WINDOW STARTING AT 1 20 ENDING AT 20 50.
WRITE:/40 'SORRY'.
ENDCASE.
TOP-OF-PAGE.
WRITE:/ 'XYZ LIMITED' COLOR 2, 90 'DATE:' COLOR 2, SY-DATUM.
ULINE.
ULINE.
TOP-OF-PAGE DURING LINE-SELECTION.
WRITE:/ 'XYZ LIMITED' COLOR 2, 90 'DATE:' COLOR 2, SY-DATUM.
ULINE.
interactive ALV code
ALV-INTERACTIVE.
Interactive ALV
http://www.sap-img.com/abap/an-interactive-alv-report.htm
http://www.sapgenie.com/abap/drill_down_reports.htm
Pls. reward if useful -
dear
can i configre a report using SOP and not run mrp only for running report and these are the fields which i require
These are the parameters required in that report
1. sales forecast(this is done annually with the monthly break up)
2. sales forecast value
3. actual sales
4 . diff between actual sales and forecasted
5.opening stock
6.purchanse ordering quantity per month
7.goods received
8.closing stock
9.stock index
sales forecast and purchanse ordering quantity are the forecast values which will be feed at the starting of the year
and stock index there is formula to calculate so is for that is there any user exit to calculate that is there any std report for this or using sop 2 get this report
can u pls help me in solving this issue
thanks in advance1.Hi when you create a infostrucutre as mentioned above you will have 2 tables generated by the infostructure
Ex: you create a Infostructure called s999
2. In such case 2 set of tables will be generated s999 and s999e
3. You will have the values generated through the plannigtype in the tabels999
3.Using the s999 table you will be able to generate the report that are required.
4.When you have created your own info structure you can also use the standard Tcode MC9C - Reporting to get few reports
Kindly let us know if you need more details
Reg
Dsk -
Opportunity Product Revenue report using Narrative option
Hi,
I have created quote report using "Opportunity product revenue report" with the use of narrative option and its working fine but the problem here is if opportunity has multiple product revenue items it shows in multiple quotes. For me it should show in a same quotation if there are multiple opportunity product revenue items in a opportunity. Could anyone help me how can i achieve this.
Any help would be appreciated. Thanks in advance
Thanks & Regards
AmbarishYou need to modify report and club all revenue to single item / row.
-
Creating a service report using SQVI
Hi experts
I am creating a service report using SQVI
The report should have the following fiels
SrvPO No | SrvPO Data | vendor | Stata | City | Type of Srv (Ad\banner|maintnc.) | Amount | Status(open or closed)
I am using the following tables using table join fnc
1. EKKO
EBELN-PO No
AEDAT - PO Data
LIFNR - Vendor
PROCSTAT - Status of PO doc
2.LIFNR
REGIO - State
ORTO1 - City
3. ESSR
TXZ01 - Type of Service (Short text)
4.EKPO
NETWE - Net amount of PO
All the tables are legally join but after executing I am not able to fetch any data or hardly one service PO.
And the selection field will be only From Date and To date.or the Service PO No.
Immediate response is urgent
Regards
ParthaModerator message: you said your issue is solved but did not mark your discussion as such, please see
How to close a discussion and why -
Generate report using CURSORS? - Simple question
Folks,
I'm a real newbie still with PL/SQL so please excuse my ignorance I have a simple report I need to generate. The following SQL statement gets me all my "header" records:
SELECT OHA.ORDER_NUMBER, HEADER_ID, ATT11, ATT12, ATT16
FROM XXXWD.WD_DUPS DUPS, OE_ORDER_HEADERS_ALL OHA
WHERE OHA.ATTRIBUTE11 = DUPS.ATT11
AND OHA.ATTRIBUTE12 = DUPS.ATT12
AND OHA.ATTRIBUTE16 = DUPS.ATT16
AND (OHA.FLOW_STATUS_CODE NOT IN ('CLOSED', 'CANCELLED'))
AND (ATT11 <> 'WESTERN SERVICE')
ORDER BY ATT11, ATT12, ATT16
What I want to do now is have a second script that will display all my detail records. Something like:
SELECT OLA.LINE_NUMBER, OLA.ORDERED_ITEM, OLA.FLOW_STATUS_CODE
FROM OE.ORDER_LINES_ALL OLA
WHERE OLA.HEADER_ID = OHA.HEADER_ID
I expect I'd do this with two cursors, passing the value of my HEADER_ID to my second cursor. But when I've used cursors before, they primarily have been to import data, and manipulate data. But what if I just want to create a report using these?
I essentially want to display my header information, and then any lines below that data (if there is any, there may be a header with no lines).
Can I create a simple report like this with cursors? Any help with this would be IMMENSELY appreciated. I'm really under the gun... :)
Thanks so much!
SteveHere's one query that will give you everything:
SELECT OHA.ORDER_NUMBER
,OHA.HEADER_ID
,DUPS.ATT11
,DUPS.ATT12
,DUPS.ATT16
,OLA.LINE_NUMBER
,OLA.ORDERED_ITEM
,OLA.FLOW_STATUS_CODE
FROM XXXWD.WD_DUPS DUPS
,OE_ORDER_HEADERS_ALL OHA
,OE.ORDER_LINES_ALL OLA
WHERE OLA.HEADER_ID = OHA.HEADER_ID
AND OHA.ATTRIBUTE11 = DUPS.ATT11
AND OHA.ATTRIBUTE12 = DUPS.ATT12
AND OHA.ATTRIBUTE16 = DUPS.ATT16
AND OHA.FLOW_STATUS_CODE NOT IN ('CLOSED', 'CANCELLED')
AND DUPS.ATT11 <> 'WESTERN SERVICE'
ORDER BY OHA.ORDER_NUMBER
,OLA.LINE_NUMBER
,DUPS.ATT11
,DUPS.ATT12
,DUPS.ATT16
;(correction in order by clause)
Message was edited by:
Eric H
Maybe you are looking for
-
Wifi indicator now always shows white instead of blue
Hi All- My new Ultra had been showing "blue" on the wifi indicator, but now will only show "white". I am getting 65Mbps link speed and excellent signal strength. This has been constant ( good speed and excellent sig strength). Motorola says blue mean
-
When-timer-expired hit the cursor position
Some of our forms sometimes have timers running, to monitor progress of this and that. We've found that if the timer expires when you're typing in a form field, there's a tendency for the cursor to momentarily move to the beginning of the field then
-
Microsoft JScript Runtime Error, Line: 0, Error: Object Expected?
Hi, I just got a new computer and I have Java 2 Runtime Environment SE v 1.4.2. I keep having problems with it. It says, "Microsoft JScript Runtime Error, Line:0, Error: Object Expected. I have no idea what to do or what is actually causing this. It
-
Not able to install oracle fial over software
Hi all, This is SAP Evironment SAP : ECC6.0 OS : WIN2003 ORACLE : 10g I am not able to install Oracle failover software. I saw in note 986758 Change the last line of the script sapofs.cmd from the temporary directory of @"%rootdir%\install\setup.exe
-
Patch Wizard doesnot work in R12
Hi: I am trying to analyze a patch before applying it in 12.1.3, 11g on Linux. OAM-> Patch Wizard-> entered Staging Directory=/applprod/patches/-> Ok-> Confirmation->Ok, Then it went back to Patch Wizard page. Please help me to debug. Thanks!!!