Need Help in Store Report.
Dear Gurus.
Im trying to make a report which shows the output like this
PLANT| Matt No.| Matt Description | Valuation Type | UOM | Opening Bal Qty | Opening Bal (RS) | Receipts Qty | Receipt Value (RS) | Issues Qty | Issue Value (RS)| Closing Bal Qty | Closing Bal (RS) | Rate/Unit (RS) |
Im attaching my code for your reference.
[Store Summary|http://snak.freewebspace.com/zsnak_store_activities.html]
the problem im getting is that .
my report does not match the detail with MB51 data.
please guide me.
You'd get better response if you do some analysis and at least tell us where the two reports don't match.
Locked.
Rob
Similar Messages
-
hi friends i need help on classical reports,
sold-party,
material
sales and distrubitutation channel ,division,
incoming orders,order number,invoice ,credit,
i need sub totals and final total of invoice and each customer should display in new page .Hi
Use the Tables KNA1,VBAk,VBAP,VBRK and VBRP and design the report
see the sample report using KNA1,VBAK and VBAP.
REPORT ZTEJ_INTAB1 LINE-SIZE 103 LINE-COUNT 35(5) NO STANDARD PAGE
HEADING.
*TABLES DECLARATION
TABLES : KNA1, VBAK, VBAP.
*SELECT OPTIONS
SELECT-OPTIONS: CUST_NO FOR KNA1-KUNNR.
*INITIALIZATION
INITIALIZATION.
CUST_NO-LOW = '01'.
CUST_NO-HIGH = '5000'.
CUST_NO-SIGN = 'I'.
CUST_NO-OPTION = 'BT'.
APPEND CUST_NO.
*SELECTION SCREEN VALIDATION
AT SELECTION-SCREEN ON CUST_NO.
LOOP AT SCREEN.
IF CUST_NO-LOW < 1 OR CUST_NO-HIGH > 5000.
MESSAGE E001(ZTJ1).
ENDIF.
ENDLOOP.
*BASIC LIST SELECTION
START-OF-SELECTION.
SELECT KUNNR NAME1 ORT01 LAND1 INTO
(KNA1-KUNNR, KNA1-NAME1,KNA1-ORT01,KNA1-LAND1)
FROM KNA1
WHERE KUNNR IN CUST_NO.
WRITE:/1 SY-VLINE,
KNA1-KUNNR UNDER 'CUSTOMER NO.' HOTSPOT ON,
16 SY-VLINE,
KNA1-NAME1 UNDER 'NAME',
61 SY-VLINE,
KNA1-ORT01 UNDER 'CITY',
86 SY-VLINE,
KNA1-LAND1 UNDER 'COUNTRY',
103 SY-VLINE.
HIDE: KNA1-KUNNR.
ENDSELECT.
ULINE.
*SECONDARY LIST ACCESS
AT user-command.
IF SY-UCOMM = 'IONE'.
PERFORM SALES_ORD.
ENDIF.
IF SY-UCOMM = 'ITWO'.
PERFORM ITEM_DET.
ENDIF.
*TOP OF PAGE
TOP-OF-PAGE.
FORMAT COLOR 1.
WRITE : 'CUSTOMER DETAILS'.
FORMAT COLOR 1 OFF.
ULINE.
FORMAT COLOR 3.
WRITE : 1 SY-VLINE,
3 'CUSTOMER NO.',
16 SY-VLINE,
18 'NAME',
61 SY-VLINE,
63 'CITY',
86 SY-VLINE,
88 'COUNTRY',
103 SY-VLINE.
ULINE.
FORMAT COLOR 3 OFF.
*TOP OF PAGE FOR SECONDARY LISTS
TOP-OF-PAGE DURING LINE-SELECTION.
*TOP OF PAGE FOR 1ST SECONDARY LIST
IF SY-UCOMM = 'IONE'.
ULINE.
FORMAT COLOR 1.
WRITE : 'SALES ORDER DETAILS'.
ULINE.
FORMAT COLOR 1 OFF.
FORMAT COLOR 3.
WRITE : 1 SY-VLINE,
3 'CUSTOMER NO.',
16 SY-VLINE,
18 'SALES ORDER NO.',
40 SY-VLINE,
42 'DATE',
60 SY-VLINE,
62 'CREATOR',
85 SY-VLINE,
87 'DOC DATE',
103 SY-VLINE.
ULINE.
ENDIF.
FORMAT COLOR 3 OFF.
*TOP OF PAGE FOR 2ND SECONDARY LIST
IF SY-UCOMM = 'ITWO'.
ULINE.
FORMAT COLOR 1.
WRITE : 'ITEM DETAILS'.
ULINE.
FORMAT COLOR 1 OFF.
FORMAT COLOR 3.
WRITE : 1 SY-VLINE,
3 'SALES ORDER NO.',
40 SY-VLINE,
42 'SALES ITEM NO.',
60 SY-VLINE,
62 'ORDER QUANTITY',
103 SY-VLINE.
ULINE.
ENDIF.
FORMAT COLOR 3 OFF.
*END OF PAGE
END-OF-PAGE.
ULINE.
WRITE :'USER :',SY-UNAME,/,'DATE :', SY-DATUM, 85 'END OF PAGE:',
SY-PAGNO.
SKIP.
*& Form SALES_ORD
*& FIRST SECONDARY LIST FORM
FORM SALES_ORD .
SELECT KUNNR VBELN ERDAT ERNAM AUDAT INTO
(VBAK-KUNNR, VBAK-VBELN, VBAK-ERDAT, VBAK-ERNAM, VBAK-AUDAT)
FROM VBAK
WHERE KUNNR = KNA1-KUNNR.
WRITE:/1 SY-VLINE,
VBAK-KUNNR UNDER 'CUSTOMER NO.' HOTSPOT ON,
16 SY-VLINE,
VBAK-VBELN UNDER 'SALES ORDER NO.' HOTSPOT ON,
40 SY-VLINE,
VBAK-ERDAT UNDER 'DATE',
60 SY-VLINE,
VBAK-ERNAM UNDER 'CREATOR',
85 SY-VLINE,
VBAK-AUDAT UNDER 'DOC DATE',
103 SY-VLINE.
HIDE : VBAK-VBELN.
ENDSELECT.
ULINE.
ENDFORM. " SALES_ORD
*& Form ITEM_DET
*& SECOND SECONDARY LIST FORM
FORM ITEM_DET .
SELECT VBELN POSNR KWMENG INTO
(VBAP-VBELN, VBAP-POSNR, VBAP-KWMENG)
FROM VBAP
WHERE VBELN = VBAK-VBELN.
WRITE : /1 SY-VLINE,
VBAP-VBELN UNDER 'SALES ORDER NO.',
40 SY-VLINE,
VBAP-POSNR UNDER 'SALES ITEM NO.',
60 SY-VLINE,
VBAP-KWMENG UNDER 'ORDER QUANTITY',
103 SY-VLINE.
ENDSELECT.
ULINE.
ENDFORM. " ITEM_DET
REPORT demo_list_at_pf.
START-OF-SELECTION.
WRITE 'Basic List, Press PF5, PF6, PF7, or PF8'.
AT pf5.
PERFORM out.
AT pf6.
PERFORM out.
AT pf7.
PERFORM out.
AT pf8.
PERFORM out.
FORM out.
WRITE: 'Secondary List by PF-Key Selection',
/ 'SY-LSIND =', sy-lsind,
/ 'SY-UCOMM =', sy-ucomm.
ENDFORM.
After executing the program, the system displays the basic list. The user can press the function keys F5 , F6 , F7 , and F8 to create secondary lists. If, for example, the 14th key the user presses is F6 , the output on the displayed secondary list looks as follows:
Secondary List by PF-Key Selection
SY-LSIND = 14
SY-UCOMM = PF06
Example for AT USER-COMMAND.
REPORT demo_list_at_user_command NO STANDARD PAGE HEADING.
START-OF-SELECTION.
WRITE: 'Basic List',
/ 'SY-LSIND:', sy-lsind.
TOP-OF-PAGE.
WRITE 'Top-of-Page'.
ULINE.
TOP-OF-PAGE DURING LINE-SELECTION.
CASE sy-pfkey.
WHEN 'TEST'.
WRITE 'Self-defined GUI for Function Codes'.
ULINE.
ENDCASE.
AT LINE-SELECTION.
SET PF-STATUS 'TEST' EXCLUDING 'PICK'.
PERFORM out.
sy-lsind = sy-lsind - 1.
AT USER-COMMAND.
CASE sy-ucomm.
WHEN 'FC1'.
PERFORM out.
WRITE / 'Button FUN 1 was pressed'.
WHEN 'FC2'.
PERFORM out.
WRITE / 'Button FUN 2 was pressed'.
WHEN 'FC3'.
PERFORM out.
WRITE / 'Button FUN 3 was pressed'.
WHEN 'FC4'.
PERFORM out.
WRITE / 'Button FUN 4 was pressed'.
WHEN 'FC5'.
PERFORM out.
WRITE / 'Button FUN 5 was pressed'.
ENDCASE.
sy-lsind = sy-lsind - 1.
FORM out.
WRITE: 'Secondary List',
/ 'SY-LSIND:', sy-lsind,
/ 'SY-PFKEY:', sy-pfkey.
ENDFORM.
When you run the program, the system displays the following basic list with a the page header defined in the program:
You can trigger the AT LINE-SELECTION event by double-clicking a line. The system sets the status TEST and deactivates the function code PICK. The status TEST contains function codes FC1 to FC5. These are assigned to pushbuttons in the application toolbar. The page header of the detail list depends on the status.
Here, double-clicking a line no longer triggers an event. However, there is now an application toolbar containing five user-defined pushbuttons. You can use these to trigger the AT USER-COMMAND event. The CASE statement contains a different reaction for each pushbutton.
For each interactive event, the system decreases the SY-LSIND system field by one, thus canceling out the automatic increase. All detail lists now have the same level as the basic list and thus overwrite it. While the detail list is being created, SY-LSIND still has the value 1.
Reward points for useful Answers
Regards
Anji -
Need help on Oracle Report format
Hi,
I need help on Oracle Reports. I am generating a report in excel sheet. I have a column which is 13 digit number (In database it is CHAR datatype). In excel sheet it showing some thing like 9.78381E+12. I want to show complete number like 9783805591331.
Also sometimes leading zero's are not showing when my column values is something like 0098794859583. I need to show the leading zero's as well in excel without losing them.
Below are the parameters i am using for the report
DESFORMAT=SPREADSHEET AND DESTYPE=FILE
My Oracle 9i developer version.
Any help on this would be much appreciated.
Thanks
KishoreAn additional quote string ' character with the number field will solve this problem but if u want to display this field in report then it will look ugly
'''||yourfield from table; check ur regional settings also
plz mark it helpful correct if it is -
Need help Connecting Crystal Reports 8.5 with GBS Agency Expert 6.7.6c
Need help Connecting Crystal Reports 8.5 with GBS Agency Expert 6.7.6c. I need assistance on connecting these together so I can run a report. I am not an IT person so if someone could dumb it down it would be great.
Thanks,
NBGHealthHello,
I assume GBS Agency Expert 6.7.6c is some sort of database or data source? If you have an ODBC driver then create or use a System DSN to the database. Then you can create a report using that DSN.
Otherwise I suggest you contact the makers of GBS Agency Expert 6.7.6c and ask them how to connect to the database.
Let them know CR is ANSII 92 ODBC 3 compliant.
Thank you
Don -
When BELNR field is double clicked it is not going to F1 document in FB03
Could anybody help on this , plz help
Here is the code,
*& Report YALV_1
REPORT YALV_1.
TABLES : BKPF,BSEG.
Data for ALV display
TYPE-POOLS: SLIS.
data : int_fcat type SLIS_T_FIELDCAT_ALV,
fieldcatalog type slis_t_fieldcat_alv with header line.
DATA: wa_sortinfo TYPE slis_sortinfo_alv,
i_sortcat TYPE slis_t_sortinfo_alv.
TYPES : BEGIN OF T_BKPF,
BUKRS TYPE BKPF-BUKRS,
BELNR TYPE BKPF-BELNR,
GJAHR TYPE BKPF-GJAHR,
BLART TYPE BKPF-BLART,
BLDAT TYPE BKPF-BLDAT,
BUDAT TYPE BKPF-BUDAT,
BUZEI TYPE BSEG-BUZEI,
END OF T_BKPF.
types: begin of t_bseg,
BUZEI TYPE BSEG-BUZEI,
end of t_bseg.
DATA : it_bkpf TYPE STANDARD TABLE OF t_bkpf with header line,
wa_bkpf TYPE t_bkpf,
it_bseg type standard table of t_bseg.
wa_bseg type t_bseg.
field to store report name
DATA : i_repid like sy-repid.
select bukrs belnr gjahr blart bldat budat from bkpf into table
it_bkpf where blart = 'AA'.
field to check table length
*data i_lines like sy-tabix.
*Start-of-selection.
START-OF-SELECTION.
perform data_retrieval.
perform build_fieldcatalog.
PERFORM sortcat_init CHANGING i_sortcat.
perform display_alv_report.
*& Form BUILD_FIELDCATALOG
Build Fieldcatalog for ALV Report
form build_fieldcatalog.
There are a number of ways to create a fieldcat.
For the purpose of this example i will build the fieldcatalog manualy
by populating the internal table fields individually and then
appending the rows. This method can be the most time consuming but
*can
also allow you more control of the final product.
Beware though, you need to ensure that all fields required are
populated. When using some of functionality available via ALV, such
*as
total. You may need to provide more information than if you were
simply displaying the result
I.e. Field type may be required in-order for
the 'TOTAL' function to work.
fieldcatalog-fieldname = 'BUKRS'.
fieldcatalog-seltext_m = 'Company Code'.
fieldcatalog-col_pos = 0.
fieldcatalog-outputlen = 4.
fieldcatalog-do_sum = 'X'.
fieldcatalog-no_zero = 'X'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'BELNR'.
fieldcatalog-seltext_m = 'Doc No'.
fieldcatalog-hotspot = 'X'.
fieldcatalog-col_pos = 1.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'GJAHR'.
fieldcatalog-seltext_m = 'Fiscal Year'.
fieldcatalog-col_pos = 2.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'BLART'.
fieldcatalog-seltext_m = 'DOC Type'.
fieldcatalog-col_pos = 3.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'BLDAT'.
fieldcatalog-seltext_m = 'Doc Date'.
fieldcatalog-col_pos = 4.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'BUDAT'.
fieldcatalog-seltext_m = 'Popsting Date'.
fieldcatalog-col_pos = 5.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'BUZEI'.
fieldcatalog-seltext_m = 'Line Items'.
fieldcatalog-col_pos = 6.
fieldcatalog-do_sum = 'X'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
endform. " BUILD_FIELDCATALOG
FORM sortcat_init CHANGING i_sortcat TYPE slis_t_sortinfo_alv.
CLEAR wa_sortinfo.
wa_sortinfo-fieldname = 'BUKRS'.
wa_sortinfo-tabname = 'T_BKPF'.
wa_sortinfo-spos = 1. " First sort by this field.
wa_sortinfo-up = 'X'. " Ascending
wa_sortinfo-subtot = 'X'. " Subtotal at Name1
APPEND wa_sortinfo TO i_sortcat.
CLEAR wa_sortinfo.
wa_sortinfo-fieldname = 'BELNR'.
wa_sortinfo-tabname = 'T_BKPF'.
wa_sortinfo-spos = 2. " Sec sort by this field.
wa_sortinfo-up = 'X'. " Ascending
wa_sortinfo-subtot = 'X'. " Subtotal at Name1
APPEND wa_sortinfo TO i_sortcat.
ENDFORM. " sortcat_init
*& Form DISPLAY_ALV_REPORT
Display report using ALV grid
form display_alv_report.
i_repid = sy-repid.
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
i_callback_program = i_repid
i_callback_top_of_page = 'TOP-OF-PAGE' "see FORM
i_callback_user_command = 'USER_COMMAND'
i_grid_title = outtext
is_layout = gd_layout
it_fieldcat = fieldcatalog[]
it_sort = i_sortcat
it_special_groups = gd_tabgroup
IT_EVENTS = GT_XEVENTS
i_save = 'X'
is_variant = z_template
tables
t_outtab = IT_bkpf
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_ALV_REPORT
*& Form DATA_RETRIEVAL
form data_retrieval.
IF it_bkpf[] IS NOT INITIAL.
select buzei from bseg into
table it_bseg for all entries in it_bkpf
where bukrs = it_bkpf-bukrs
and belnr = it_bkpf-belnr
and gjahr = it_bkpf-gjahr.
endif.
endform. " DATA_RETRIEVAL.
FORM USER_COMMAND
FORM user_command USING u_com LIKE sy-ucomm sel_lin TYPE slis_selfield.
CASE u_com.
WHEN '&IC1'.
CASE sel_lin.
WHEN 'BELNR'.
read TABLE IT_BKPF INDEX sel_lin-tabindex.
SET PARAMETER ID 'BLN' FIELD IT_BKPF-BELNR.
SET PARAMETER ID 'BUK' FIELD IT_BKPF-BUKRS.
SET PARAMETER ID 'GJR' FIELD IT_BKPF-GJAHR.
CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
ENDCASE.
CLEAR u_com.
ENDCASE.
ENDFORM. "USER_COMMANDPl. do this change in ur code...
FORM user_command USING u_com LIKE sy-ucomm sel_lin TYPE slis_selfield.
CASE u_com.
WHEN '&IC1'.
CASE sel_lin-FIELDNAME.
WHEN 'BELNR'.
read TABLE IT_BKPF INDEX sel_lin-tabindex.
SET PARAMETER ID 'BLN' FIELD IT_BKPF-BELNR.
SET PARAMETER ID 'BUK' FIELD IT_BKPF-BUKRS.
SET PARAMETER ID 'GJR' FIELD IT_BKPF-GJAHR.
CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
ENDCASE.
CLEAR u_com.
ENDCASE.
ENDFORM. "USER_COMMAND
Regards,
Joy. -
Need Help XML Publisher Report
Hi Friends
I need to generate a report in xml publisher responsibility .
I have create and designed the RTF file using word , And i have genetared an XML file(template )
I have some doubt please clarify by doubts
In RTF template i have some 4columns
For EXample i Give some column name
Invoice Number , Invoice Line Number ,Tax Type ,Tax Code Name etc....
In my RTF I have done like this
I have created two 2 row and 4column
In the 1st row i have all the 4 column heading
In the 2nd row i have done like this
Developer tab> Design mode > In the legacy tool i have selected text Form field
Once i double click the text form field in the default text i have Given C1 Then in the Add help text button i have given <?C_INVOICE_NUMBER?> like this i have done for alls the columns
My RTF design is completed
Now i need load the XML is it?
In the XMl data query i have placed my sql statement
Here my doubt starts
wether all the column in the RTF should be in the XML sql statement ha?
2)In the top of my RTF i need to add date and page No how to add that ?
Thanks In advance
ATHi Friend
Iam saying this is my XML file
<LIST_G_TAX_NAME>
<G_TAX_NAME>
<C_SORT_TAX_NAME>USE TAX</C_SORT_TAX_NAME>
<C_TAX_NAME>Use Tax</C_TAX_NAME>
<C_TAX_RATE>8.25</C_TAX_RATE>
<C_TAX_TYPE>USE</C_TAX_TYPE>
<C_PERIOD_NAME>OCT-11</C_PERIOD_NAME>
<LIST_G_VENDOR>
<G_VENDOR>
<C_SORT_VENDOR_NAME/>
<C_SORT_SITE_CODE/>
<C_VENDOR_ID>851</C_VENDOR_ID>
<C_VENDOR_NAME>ORACLE CORPORATION</C_VENDOR_NAME>
<C_SITE_CODE>CHICAGO</C_SITE_CODE>
<LIST_G_INVOICE>
<G_INVOICE>
<C_INVOICE_DATE>17-OCT-11</C_INVOICE_DATE>
<C_SORT_INVOICE_NUMBER>1308</C_SORT_INVOICE_NUMBER>
<C_INVOICE_ID>350889</C_INVOICE_ID>
<C_INVOICE_NUMBER>1308</C_INVOICE_NUMBER>
<C_INVOICE_LINE_NUMBER>1</C_INVOICE_LINE_NUMBER>
<C_PO_NUMBER>256388</C_PO_NUMBER>
<C_DESCRIPTION>TEST</C_DESCRIPTION>
<C_GL_DATE>17-OCT-11</C_GL_DATE>
<C_INVOICE_LINE_AMOUNT>15</C_INVOICE_LINE_AMOUNT>
<C_CHARGE_ACCOUNT>412.00.6410.7831.1076.1001.00.000.0000</C_CHARGE_ACCOUNT>
<C_LIABILITY_ACCOUNT>412.00.0000.2152.1208.1001.00.000.0000</C_LIABILITY_ACCOUNT>
<C_BATCH_NAME>101711</C_BATCH_NAME>
<C_SITE_CODE2>CHICAGO</C_SITE_CODE2>
<C_INVOICE_AMOUNT>15</C_INVOICE_AMOUNT>
<LIST_G_DIST>
<G_DIST>
<C_INVOICE_TAX_ID>10061</C_INVOICE_TAX_ID>
<C_LINE_TYPE>ITEM</C_LINE_TYPE>
</G_DIST>
</LIST_G_DIST>
<C_TAXABLE_AMOUNT>15</C_TAXABLE_AMOUNT>
<C_TAX_AMOUNT>1.24</C_TAX_AMOUNT>
<C_INVOICE_AMOUNT_DISP> 15.00 </C_INVOICE_AMOUNT_DISP>
<C_TAXABLE_AMOUNT_DISP> 15.00 </C_TAXABLE_AMOUNT_DISP>
<C_TAX_AMOUNT_DISP> 1.24 </C_TAX_AMOUNT_DISP>
</G_INVOICE>
</LIST_G_INVOICE>
<C_INVOICE_SITE_SUM>124.9</C_INVOICE_SITE_SUM>
<C_INVOICE_SITE_SUM_DISP> 124.90 </C_INVOICE_SITE_SUM_DISP>
<C_TAX_SITE_SUM>5.4</C_TAX_SITE_SUM>
<C_TAX_SITE_SUM_DISP> 5.40 </C_TAX_SITE_SUM_DISP>
<C_TAXABLE_SITE_SUM>65.66</C_TAXABLE_SITE_SUM>
<C_TAXABLE_SITE_SUM_DISP> 65.66 </C_TAXABLE_SITE_SUM_DISP>
</G_VENDOR>
</LIST_G_VENDOR>
<C_OLD_VENDOR_ID>0</C_OLD_VENDOR_ID>
<C_INVOICE_SUM>124.9</C_INVOICE_SUM>
<C_INVOICE_SUM_DISP> 124.90 </C_INVOICE_SUM_DISP>
<C_TAX_SUM>5.4</C_TAX_SUM>
<C_TAX_SUM_DISP> 5.40 </C_TAX_SUM_DISP>
<C_TAXABLE_SUM>65.66</C_TAXABLE_SUM>
<C_TAXABLE_SUM_DISP> 65.66 </C_TAXABLE_SUM_DISP>
</G_TAX_NAME>
</LIST_G_TAX_NAME>
And if i need all the column to be displayed in my report
1)Invoice Number
2)Invoice Line Number
3)Tax Type
4)Tax Code Name
5)Tax Rate Percent
6)Supplier Name
7)Description
8)Gl Date
9)Invoive Line Amount
10)Taxable Line Amount
11)Tax Liability
12)Po Number
13)Charge Account
14)Liability Account
Which tag do i need to use fro grouping
For ex
Instead of this <?for-each:G_TAX_NAME?> <?end for-each?>
which one i need to use
Please help
Thanks
AT -
Need help in dynamic report for a range of year and period
Dear all,
I need help in creating an ALV report with dynamic columns based on the Year and period entered on the selection screen. for example if in the year we enter 2002 and period range from 10 to 12 then we should get the 3 columns display for cost(example) for period 10/2002, 11/2002 and 12/2002.
Can anyone help me in achieving this dynamically since the user can enter the year also in intervals along with the period and data also needs to be populated in the corresponding columns.
An example code would be of great help.
Thanks,
AmitHi,
Use field symbols as follows.
TYPE-POOLS : SLIS.
TABLES : MARC,T001W.
DATA : BEGIN OF ITAB OCCURS 0,
MATNR LIKE MARC-MATNR,
END OF ITAB.
DATA : FIELDSTAB TYPE LVC_T_FCAT,
STAB TYPE LVC_S_FCAT,
T_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
S_FIELDCAT TYPE SLIS_FIELDCAT_ALV,
NEW_LINE TYPE REF TO DATA,
NEW_TABLE TYPE REF TO DATA,
INDEX(3) TYPE C,
STR(70),
TEXT(6),
CNT(1),
TEXT1(16),
REPID LIKE SY-REPID.
FIELD-SYMBOLS : <FS> TYPE STANDARD TABLE,
<WA> TYPE ANY.
SELECT-OPTIONS : S_WERKS FOR MARC-WERKS NO INTERVALS,
S_MATNR FOR MARC-MATNR NO INTERVALS.
INITIALIZATION.
REPID = SY-REPID.
START-OF-SELECTION.
SELECT * FROM MARC
INTO CORRESPONDING FIELDS OF TABLE ITAB
WHERE MATNR IN S_MATNR
AND WERKS IN S_WERKS.
SORT ITAB BY MATNR.
DELETE ADJACENT DUPLICATES FROM ITAB COMPARING MATNR.
STAB-FIELDNAME = 'MATNR'.
STAB-DATATYPE = 'CHAR'.
STAB-INTLEN = '18'.
APPEND STAB TO FIELDSTAB.
CLEAR CNT.
LOOP AT S_WERKS.
CLEAR TEXT.
CNT = CNT + 1.
CONCATENATE 'EISLO' CNT INTO TEXT.
STAB-FIELDNAME = TEXT.
STAB-DATATYPE = 'CHAR'.
STAB-INTLEN = '16'.
APPEND STAB TO FIELDSTAB.
CLEAR S_WERKS.
ENDLOOP.
CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE
EXPORTING
IT_FIELDCATALOG = FIELDSTAB
IMPORTING
EP_TABLE = NEW_TABLE.
ASSIGN NEW_TABLE->* TO <FS>.
CREATE DATA NEW_LINE LIKE LINE OF <FS>.
ASSIGN NEW_LINE->* TO <WA>.
PERFORM MOVE_DATA.
CLEAR S_FIELDCAT.
S_FIELDCAT-FIELDNAME = 'MATNR'.
S_FIELDCAT-TABNAME = ITAB.
S_FIELDCAT-SELTEXT_M = 'Part Number'.
S_FIELDCAT-NO_ZERO = 'X'.
S_FIELDCAT-DDICTXT = 'M'.
APPEND S_FIELDCAT TO T_FIELDCAT.
CLEAR CNT.
LOOP AT S_WERKS.
CLEAR T001W.
CNT = CNT + 1.
SELECT SINGLE * FROM T001W WHERE WERKS = S_WERKS-LOW AND SPRAS = SY-LANGU.
CLEAR TEXT.
CONCATENATE 'EISLO' CNT INTO TEXT.
S_FIELDCAT-FIELDNAME = TEXT.
S_FIELDCAT-SELTEXT_M = T001W-NAME2.
S_FIELDCAT-NO_ZERO = 'X'.
S_FIELDCAT-DDICTXT = 'M'.
APPEND S_FIELDCAT TO T_FIELDCAT.
CLEAR S_WERKS.
ENDLOOP.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
IT_FIELDCAT = T_FIELDCAT[]
TABLES
T_OUTTAB = <FS>.
*& Form MOVE_DATA
text
FORM MOVE_DATA.
LOOP AT ITAB.
CLEAR STR.
CONCATENATE ITAB-MATNR ' ' INTO STR SEPARATED BY SPACE.
LOOP AT S_WERKS.
CLEAR MARC.
SELECT SINGLE * FROM MARC WHERE MATNR = ITAB-MATNR AND WERKS = S_WERKS-LOW.
IF SY-SUBRC EQ 0.
CLEAR TEXT1.
TEXT1 = MARC-EISLO.
CONCATENATE STR TEXT1 INTO STR SEPARATED BY SPACE.
ELSE.
CONCATENATE STR '0' INTO STR SEPARATED BY SPACE.
ENDIF.
ENDLOOP.
<WA> = STR.
APPEND <WA> TO <FS>.
CLEAR ITAB.
ENDLOOP.
ENDFORM. "MOVE_DATA
Reward points if helpful.
Regards,
Sankar.. -
I need help in Custom Reporting
Hi,
i need help in auditing, SCOM 2012 R2 is deployed in 2 servers with ACS, i have 2 file server that has some shared folder in which users work on some certain document i need to have a report that i can run on certain file that will show me who access that
file when he access what he did like (read write, delete). i don't think we have this type of capability in default report. let me know if someone can help me in that. (free/paid) i know its a bit customized. let me know if u need any more info.
Syed KasifHi,
As far as I know, to audit file access, we should Enable Audit Policy, and then Set up Audit System Access Control List (SACL).
After that, we can make sure that under security event logs there are auditing logs for file access.
Please refer to the below link for more details about auditing file access on file server:
http://blogs.technet.com/b/mspfe/archive/2013/08/27/auditing-file-access-on-file-servers.aspx
And for Collecting Security Events Using Audit Collection Services in Operations Manager:
http://technet.microsoft.com/en-us/library/hh212908.aspx
Regards,
Yan Li
Regards, Yan Li -
Need Help on calling report in OAF Page
Hi,
At present i am wokring EAM Module. Here i need to call one report.
In my OAF Page one button is there("The name of the button is *Issue*"). After clicking this button i need to fire one report(The name of the report is "Maintenance Picking Slip Issued Report").
Please help me how to call report? I don't have any idea how to proceed for this.please explain clearly.
Thanks in advance..
Thanks,
Somasekhar.Somasekhar,
you want to call PLSQL Report or XML Publisher report or you want to submit the concurrent request.
If this XML Publisher report then refer following code for your refrence
public BlobDomain getXMLData(String as[], String s, String s1, String s2, String s3, String s4, String s5,
String s6, String s7, String s8, String s9, String s10)
throws Throwable
int i;
int j;
int k;
int l;
int i1;
int j1;
int k1;
int l1;
int i2;
int j2;
int k2;
OracleCallableStatement oraclecallablestatement;
ARRAY array;
int ai[] = new int[as.length];
i = 0;
j = 0;
k = 0;
l = 0;
i1 = 0;
j1 = 0;
k1 = 0;
l1 = 0;
i2 = 0;
j2 = 0;
k2 = 0;
for(int l2 = 0; l2 < as.length; l2++)
ai[l2] = Integer.parseInt(as[l2]);
if(s.equals("Y"))
i = 1;
if(s1.equals("Y"))
j = 1;
if(s2.equals("Y"))
k = 1;
if(s3.equals("Y"))
l = 1;
if(s4.equals("Y"))
i1 = 1;
if(s5.equals("Y"))
j1 = 1;
if(s6.equals("Y"))
k1 = 1;
if(s7.equals("Y"))
l1 = 1;
if(s8.equals("Y"))
j2 = 1;
if(s10.equals("Y"))
k2 = 1;
i2 = Integer.parseInt(s9);
DBTransaction dbtransaction = getDBTransaction();
String s11 = "BEGIN :1 :=EAM_WorkOrderRep_PVT.getWoReportXML(:2, :3, :4, :5, :6, :7, :8, :9,:10,:11,:12,:13); END;";
oraclecallablestatement = (OracleCallableStatement)dbtransaction.createCallableStatement(s11, 1);
java.sql.Connection connection = oraclecallablestatement.getConnection();
ArrayDescriptor arraydescriptor = ArrayDescriptor.createDescriptor("SYSTEM.EAM_WIPID_TAB_TYPE", connection);
array = new ARRAY(arraydescriptor, connection, ai);
BlobDomain blobdomain;
oraclecallablestatement.registerOutParameter(1, 2005);
oraclecallablestatement.setArray(2, array);
oraclecallablestatement.setInt(3, i);
oraclecallablestatement.setInt(4, j);
oraclecallablestatement.setInt(5, k);
oraclecallablestatement.setInt(6, l);
oraclecallablestatement.setInt(7, k1);
oraclecallablestatement.setInt(8, l1);
oraclecallablestatement.setInt(10, i1);
oraclecallablestatement.setInt(11, j1);
oraclecallablestatement.setInt(9, j2);
oraclecallablestatement.setInt(12, i2);
oraclecallablestatement.setInt(13, k2);
oraclecallablestatement.execute();
CLOB clob = ((OracleCallableStatement)oraclecallablestatement).getCLOB(1);
blobdomain = new BlobDomain();
OutputStream outputstream = blobdomain.getBinaryOutputStream();
long l3 = clob.length();
byte abyte0[] = new byte[(int)l3];
String s12 = clob.getSubString(1L, (int)l3);
abyte0 = s12.getBytes("UTF-8");
outputstream.write(abyte0);
outputstream.close();
return blobdomain;
SQLException sqlexception;
sqlexception;
try
oraclecallablestatement.close();
catch(Exception exception) { }
throw OAException.wrapperException(sqlexception);
public void initSearchCriteria()
log(this, "init search crieria", 1);
getWorkPlanSearchCriteriaVO().executeQuery();
Let me know you got your point or not.
Thanks,
Kumar -
Need help to create report with jpeg/gif image
Hello,
I need help with creating a form with a special jpeg/gif seal. I never done this Java. Until now, I created all forms with ansi C++ with HP escape characters to draw lines, boxs, and text. This form will contain boxes which is populated with database information read from a text file.
Since this form contains a special seal on the upper right, I don't think it can be done with old fashion ansi C++. How can I create a form with Java and create it as a simple exe to just print the form to a specified printer.
Thanks,
JohnHi,
I am creating a form with boxes (lines and text). What is special about this form is that it has an image jpeg or gif at the top right corner. Is is a state department seal. Up to this form, I had used ansi C++ and print out escape HP character to print out the lines, boxes, and text. I have no idea how to print out the image. I am new to JAVA and only 1 class in it. Is there sample code out there to create this type of form with the image? I need a starting point.
Thanks,
John -
HT1923 need help itunes store not open
i need help opening itunes store
Does it show any errors? If not just go on the uninstaller and look for itunes and click repair. It worked for me
-
Need help with simple report built in CR in Eclipse
I'm using the Java SDK in Eclipse to be able to leverage a function that does not appear to be native in Crystal Reports - auto refresh. Looking at the SDK, it appears straight forward to create a viewer on an existing report (built via Crystal Reports) and then refresh the data in a loop. First glance at the SDK it appeared CrystalReportViewer would be the right class, but I didn't find that in the CR Java Runtime Library that comes with cr4e download. So, I used ReportViewerBean, at least to prove out the concept. Here's the prototype code (high-level), using the bean:
public static void main (...) throws ReportSDKException
ReportViewerBean viewer = new ReportViewerBean();
viewer.setReportSource(path to the .rpt file);
viewer.init();
viewer.start();
while (...) {
viewer.refreshReport();
What else is needed to display the report?
Thanks,
RogerI'm using the Java SDK in Eclipse to be able to leverage a function that does not appear to be native in Crystal Reports - auto refresh. Looking at the SDK, it appears straight forward to create a viewer on an existing report (built via Crystal Reports) and then refresh the data in a loop. First glance at the SDK it appeared CrystalReportViewer would be the right class, but I didn't find that in the CR Java Runtime Library that comes with cr4e download. So, I used ReportViewerBean, at least to prove out the concept. Here's the prototype code (high-level), using the bean:
public static void main (...) throws ReportSDKException
ReportViewerBean viewer = new ReportViewerBean();
viewer.setReportSource(path to the .rpt file);
viewer.init();
viewer.start();
while (...) {
viewer.refreshReport();
What else is needed to display the report?
Thanks,
Roger -
Need help in executing report in OIM 10g
Hi,
I am getting error while executing a stored procedure for a report. The error is :
ERROR,10 May 2012 00:25:07,649,[XELLERATE.WEBAPP],Class/Method: ReportAction/displayTabularReport encounter some problems: {1}
Thor.API.Exceptions.tcColumnNotFoundException
at Thor.API.tcMetaDataSet.getColumnType(Unknown Source)
at com.thortech.xl.webclient.util.ReportUtilities.populateTableDataForTabularDisplay(Unknown Source)
at com.thortech.xl.webclient.util.ReportUtilities.displayReportWithTabularLayout(Unknown Source)
at com.thortech.xl.webclient.util.ReportUtilities.displayReportWithLayout(Unknown Source)
at com.thortech.xl.webclient.actions.ReportAction.displayTabularReport(Unknown Source)
at com.thortech.xl.webclient.actions.ReportAction.displayReport(Unknown Source)
at com.thortech.xl.webclient.actions.ReportAction.handleInputParameters(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
for 2 days I am trying to solve this issue by trying different permutation and conbination but its not working. The table takes values from only two tables. Also I tried removing the othertable values and fetch value only from one table but still I am getting above error.
Please help if anybody knows the solution for this.
Thanks,
Kalpana.I created my own report by copying from existing stored procedure. I just changed the select, from & where clause. I am not using any java program. Just changed the stored procedure, created the xml file, saved the parameter mappings in properties file, bounced the server but when I run the report I get this error.
This is the xml file:
<Report layout="tabular">
<StoredProcedure>
<InputParameters>
<InputParameter name="struserlogin_in" order="1" fieldType="TextField" fieldLabel="report.contractorextension.label.reportDateRange" required="true" />
</InputParameters>
</StoredProcedure>
<ReturnColumns>
<ReturnColumn name="Contractor_Id" label="report.contractorextension.label.Contractor_Id" position="Table" order ="1"/>
<ReturnColumn name="Contractor_Name" label="report.contractorextension.label.Contractor_Name" position="Table" order ="2"/>
<ReturnColumn name="Contractor_NTLogon" label="report.contractorextension.label.Contractor_NTLogon" position="Table" order ="3"/>
<ReturnColumn name="USR_STATUS" label="report.contractorextension.label.USR_STATUS" position="Table" order ="4"/>
<ReturnColumn name="USR_END_DATE" label="report.contractorextension.label.USR_END_DATE" position="Table" order ="5"/>
<ReturnColumn name="Supervisor_Name" label="report.contractorextension.label.Supervisor_Name" position="Table" order ="6"/>
<ReturnColumn name="Supervisor_NTLogon" label="report.contractorextension.label.Supervisor_NTLogon" position="Table" order ="7"/>
<ReturnColumn name="Supervsior_EmailId" label="report.contractorextension.label.Supervsior_EmailId" position="Table" order ="8"/>
<ReturnColumn name="Notification_Send_Date" label="report.contractorextension.label.Notification_Send_Date" position="Table" order ="9"/>
<ReturnColumn name="Extension_Date" label="report.contractorextension.label.Extension_Date" position="Table" order ="10"/>
</ReturnColumns>
</Report>
this is the stored procedure:
create or replace
PROCEDURE "XL_SP_CONTRACTOREXTENSION" (
csrresultset_inout IN OUT sys_refcursor,
intuserkey_in IN NUMBER,
strsortcolumn_in IN VARCHAR2,
strsortorder_in IN VARCHAR2,
intstartrow_in IN NUMBER,
intpagesize_in IN NUMBER,
intdocount_in IN NUMBER,
inttotalrows_out OUT NUMBER,
strfiltercolumnlist_in IN VARCHAR2,
strfiltercolumnvaluelist_in IN VARCHAR2,
strudfcolumnlist_in IN VARCHAR2,
strudfcolumnvaluelist_in IN VARCHAR2,
struserlogin_in IN VARCHAR2
AS
BEGIN
Declare
whereclause VARCHAR2(8000);
select_stmt VARCHAR2(8000);
strColumnList VARCHAR2(4000);
strFromClause VARCHAR2(4000);
strWhereClause VARCHAR2(4000);
strOrderByClause VARCHAR2(2000);
intSortDirection_in PLS_INTEGER;
userkey NUMBER(30);
str_row EXCEPTION;
do_cnt EXCEPTION;
no_logged_in_user EXCEPTION;
property_not_found EXCEPTION;
pragma exception_init(Str_row,-20001);
pragma exception_init(Do_cnt,-20002);
pragma exception_init(no_logged_in_user,-20003);
BEGIN
-- Throw exception if the start row or page size is either NULL or have
-- values less than or equal to zero
IF (intstartrow_in <= 0 OR intpagesize_in <= 0 OR intstartrow_in IS NULL
OR intpagesize_in IS NULL) THEN
RAISE str_row;
END IF;
-- Throw exception if the intdocount_in parameter is NULL or has a value
-- other than 0 and 1
IF intdocount_in NOT IN (0, 1, 2) OR intdocount_in IS NULL THEN
RAISE do_cnt;
END IF;
-- Throw exception if the intuserkey_in (logged in user) parameter is NULL
IF intuserkey_in IS NULL or intuserkey_in <= 0 THEN
RAISE no_logged_in_user;
END IF;
-- Now, we start accumulating the whereclause based on the input
-- parameters, performing error checking along the way.
IF struserlogin_in IS NOT NULL THEN
Whereclause :=
whereclause || ' extn.udf_extn_ntlogon IN ( ''' || struserlogin_in || ''')' ;
-- Perform the count query and store the result in inttotalrows_out
-- inttotalrows_out := 0;
IF intdocount_in IN (1,2)
THEN
EXECUTE IMMEDIATE ' SELECT count(*)'
|| ' FROM '
|| ' usr usr,usr usr2 '
|| ' where usr.USR_MANAGER_KEY = usr2.USR_KEY and'
|| ' extn.usr_key= usr.usr_key and '
|| whereclause INTO inttotalrows_out;
-- UI needs the SP to return result set always. The following is returned
-- when the indocount is 2 which does not return any result set but count
IF intdocount_in = 2 THEN
select_stmt := 'SELECT ''dummy'' FROM dual';
OPEN csrresultset_inout FOR select_stmt;
END IF;
END IF;
-- If intdocount_in is 2, UI just wants to get the totalrows to give
-- the warning to users if the result set exceeds the limit set by
-- UI. When ntdocount_in is 2, the following block won't be executed.
-- This is the main query for this stored procedure
If Intdocount_In In (0,1) Then
-- The value of attestation field is NA in case of GTC resource names.
-- If the GTC resource is selected, then "NA" will be displayed in the role name column
Strcolumnlist :='usr.USR_LOGIN AS Contractor_Id, '
--|| 'usr.USR_FIRST_NAME || '' '' || usr.usr_middle_name || '' '' || usr.USR_LAST_NAME AS "Contractor_NTLogon", '
|| 'usr.USR_FIRST_NAME AS Contractor_Name, '
|| 'usr.USR_UDF_NTLOGON AS Contractor_NTLogon,'
|| 'usr.USR_STATUS AS USR_STATUS, '
|| 'usr.USR_END_DATE AS USR_END_DATE, '
--|| 'usr2.usr_first_name || '' '' || usr2.usr_middle_name || '' '' || usr2.usr_last_name AS "Supervisor_Name", '
||'usr2.usr_first_name AS Supervisor_Name, '
|| 'usr2.USR_UDF_NTLOGON AS Supervisor_NTLogon, '
|| 'usr2.USR_EMAIL AS Supervsior_EmailId'
|| 'extn.UDF_EXTN_CREATED AS Notification_Send_Date, '
|| 'extn.UDF_EXTN_EXTENDED AS Extension_Date';
strFromClause :=' ud_co_extn_q extn, usr usr,usr usr2';
strWhereClause := ' usr.USR_MANAGER_KEY = usr2.USR_KEY and '
||' extn.usr_key= usr.usr_key and '
|| whereclause;
IF strsortcolumn_in IS NULL THEN
strOrderByClause := 'extn.UDF_EXTN_EXTENDED';
ELSE
strOrderByClause := strsortcolumn_in;
END IF;
IF strsortorder_in = 'DESC' THEN
intSortDirection_in := 0;
ELSE
intSortDirection_in := 1;
END IF;
XL_SPG_GetPagingSql(strColumnList,
strFromClause,
strWhereClause,
strOrderByClause,
intSortDirection_in,
intStartRow_in,
intPageSize_in,
select_stmt);
OPEN csrresultset_inout FOR select_stmt;
END IF;
END IF;
-- Exception Handling
EXCEPTION
WHEN Str_row THEN
RAISE_APPLICATION_ERROR(sqlcode,
'Start Row/Page Size cannot be NULL OR less than or equal to zero ');
WHEN Do_cnt THEN
RAISE_APPLICATION_ERROR(sqlcode,
'Do Count must be 0, 1 or 2. ');
WHEN no_logged_in_user THEN
RAISE_APPLICATION_ERROR(sqlcode,
'Logged-in User Key cannot be NULL OR less than or equal to zero ');
END;
END XL_SP_CONTRACTOREXTENSION; -
Needs Help in Backorder Report!
Good day to everyone.
I would like to ask for help in checking the Backorder Report below. The user requirement is to include the plant field in the Report. Though I already included the plant field, the program encounters ABAP runtime upon execution. Please help me correct the errors that is being encountered.
Thank you very much.
Raffee
REPORT zsdr_out_of_stock LINE-SIZE 380
LINE-COUNT 65 NO STANDARD PAGE HEADING.
TABLES: mara,
zcust,
vbrk,
vbak,
vbap.
Start of Internal tables for Out of Stock
DATA: BEGIN OF it_total_out_stock1 OCCURS 0,
fkdat LIKE vbrk-fkdat, "Billing Date
bukrs LIKE vbrk-bukrs, "Company
knumv LIKE vbrk-knumv, "No of the document condition
vbeln LIKE vbrp-vbeln, "Billing Doc
posnr LIKE vbrp-posnr, "Item
aubel LIKE vbrp-aubel, "Sales Order
aupos LIKE vbrp-aupos, "Sales Item
matnr LIKE vbrp-matnr, "Material No.
fkimg TYPE p DECIMALS 2, "Billed Quantity
auart LIKE vbak-auart,
kunnr LIKE vbak-kunnr,
vkbur LIKE vbak-vkbur, "Sales office
vkorg LIKE vbak-vkorg, "Sales organization
vkgrp LIKE vbak-vkgrp, "Sales group
zcusno LIKE zcust-zcusno,
zregion LIKE zcust-zregion,
END OF it_total_out_stock1.
DATA: BEGIN OF it_total_out_stock2 OCCURS 0,
vbeln LIKE vbak-vbeln,
auart LIKE vbak-auart,
kunnr LIKE vbak-kunnr,
vkbur LIKE vbak-vkbur, "Sales office
vkorg LIKE vbak-vkorg, "Sales organization
vkgrp LIKE vbak-vkgrp, "Sales group
zcusno LIKE zcust-zcusno,
zregion LIKE zcust-zregion,
END OF it_total_out_stock2.
DATA: BEGIN OF it_vbap OCCURS 0,
vbeln LIKE vbap-vbeln,
posnr LIKE vbap-posnr,
werks LIKE vbap-werks,
matnr LIKE vbap-matnr,
netwr LIKE vbap-netwr,
kwmeng LIKE vbap-kwmeng,
bukrs_vf LIKE vbak-bukrs_vf,
knumv LIKE vbak-knumv,
kunnr LIKE vbak-kunnr,
vkbur LIKE vbak-vkbur, "Sales office
vkorg LIKE vbak-vkorg, "Sales organization
vkgrp LIKE vbak-vkgrp, "Sales group
END OF it_vbap.
DATA: BEGIN OF it_vbap_stock OCCURS 0,
vbeln LIKE vbap-vbeln,
posnr LIKE vbap-posnr,
werks LIKE vbap-werks,
matnr LIKE vbap-matnr,
netwr LIKE vbap-netwr,
kwmeng TYPE p DECIMALS 2,
bukrs_vf LIKE vbak-bukrs_vf,
knumv LIKE vbak-knumv,
kunnr LIKE vbak-kunnr,
vkbur LIKE vbak-vkbur, "Sales office
vkorg LIKE vbak-vkorg, "Sales organization
vkgrp LIKE vbak-vkgrp, "Sales group
END OF it_vbap_stock.
DATA: BEGIN OF it_out_stock OCCURS 0,
vbeln LIKE vbap-vbeln,
posnr LIKE vbap-posnr,
werks LIKE vbap-werks,
matnr LIKE vbap-matnr,
netwr LIKE vbap-netwr,
knumv LIKE vbak-knumv,
bukrs_vf LIKE vbak-bukrs_vf,
kunnr LIKE vbak-kunnr,
vkbur LIKE vbak-vkbur, "Sales office
vkorg LIKE vbak-vkorg, "Sales organization
vkgrp LIKE vbak-vkgrp, "Sales group
fkimg TYPE p DECIMALS 2, "Billed Quantity
kwmeng LIKE vbap-kwmeng,
counter TYPE i,
END OF it_out_stock.
DATA: BEGIN OF it_mara_totals_stock OCCURS 0,
matnr LIKE mara-matnr,
matkl LIKE mara-matkl,
spart LIKE mara-spart,
END OF it_mara_totals_stock.
DATA: BEGIN OF it_tspat_totals_stock OCCURS 0,
spart LIKE tspat-spart,
vtext LIKE tspat-vtext,
END OF it_tspat_totals_stock.
DATA: BEGIN OF it_t023t_totals_stock OCCURS 0,
matkl LIKE t023t-matkl,
wgbez LIKE t023t-wgbez,
END OF it_t023t_totals_stock.
DATA: BEGIN OF it_konv_totals_stock OCCURS 0,
knumv LIKE konv-knumv,
kposn LIKE konv-kposn,
kschl LIKE konv-kschl,
kawrt LIKE konv-kawrt,
kwert LIKE konv-kwert,
kbetr LIKE konv-kbetr,
END OF it_konv_totals_stock.
DATA: BEGIN OF it_total_stock_final OCCURS 0,
cnt1 TYPE i,
cnt2 TYPE i, "DPM Category
werks LIKE vbap-werks, "Plant
spart LIKE mara-spart, "Division Description
matkl LIKE mara-matkl, "Material Type
vbeln LIKE vbrk-vbeln, "Billing Doc
aubel LIKE vbrp-aubel, "Sales document
aupos LIKE vbrp-aupos, "Sales document item
vkbur LIKE vbak-vkbur, "Sales office
vkorg LIKE vbak-vkorg, "Sales organization
vkgrp LIKE vbak-vkgrp, "Sales group
kunnr LIKE vbak-kunnr, "Customer
matnr LIKE vbrp-matnr, "Material
vtext LIKE tspat-vtext, "Material Group Desc
kbetr1 LIKE konv-kbetr,
kbetr2 LIKE konv-kbetr,
kawrt LIKE konv-kawrt, "Condition Rate
kwert1 LIKE konv-kwert, "Volume Discount
kwert2 LIKE konv-kwert, "Promo Discount
fkimg TYPE p DECIMALS 2, "Billed Quantity
kwmeng LIKE vbap-kwmeng,
counter TYPE i,
END OF it_total_stock_final.
Start of Internal tables for Held
DATA: BEGIN OF it_total_held1 OCCURS 0,
erdat LIKE vbak-erdat,
bukrs_vf LIKE vbak-bukrs_vf,
knumv LIKE vbak-knumv,
kunnr LIKE vbak-kunnr,
werks LIKE vbap-werks, "Plant
vkbur LIKE vbak-vkbur, "Sales office
vkorg LIKE vbak-vkorg, "Sales organization
vkgrp LIKE vbak-vkgrp, "Sales group
vbeln LIKE vbap-vbeln,
posnr LIKE vbap-posnr,
matnr LIKE vbap-matnr,
kwmeng LIKE vbap-kwmeng, "Order Quantity
cmgst LIKE vbuk-cmgst,
END OF it_total_held1.
DATA: BEGIN OF it_total_held2 OCCURS 0,
zcusno LIKE zcust-zcusno,
zregion LIKE zcust-zregion,
END OF it_total_held2.
DATA: BEGIN OF it_mara_totals_held OCCURS 0,
matnr LIKE mara-matnr,
matkl LIKE mara-matkl,
spart LIKE mara-spart,
END OF it_mara_totals_held.
DATA: BEGIN OF it_tspat_totals_held OCCURS 0,
spart LIKE tspat-spart,
vtext LIKE tspat-vtext,
END OF it_tspat_totals_held.
DATA: BEGIN OF it_t023t_totals_held OCCURS 0,
matkl LIKE t023t-matkl,
wgbez LIKE t023t-wgbez,
END OF it_t023t_totals_held.
DATA: BEGIN OF it_konv_totals_held OCCURS 0,
knumv LIKE konv-knumv,
kposn LIKE konv-kposn,
kschl LIKE konv-kschl,
kawrt LIKE konv-kawrt,
kwert LIKE konv-kwert,
END OF it_konv_totals_held.
DATA: BEGIN OF it_total_held_final OCCURS 0,
cnt1 TYPE i,
cnt2 TYPE i, "DPM Category
werks LIKE vbap-werks, "Plant
spart LIKE mara-spart, "Division Description
matkl LIKE mara-matkl, "Material Type
vbeln LIKE vbrk-vbeln, "Billing Doc
aubel LIKE vbrp-aubel, "Sales document
aupos LIKE vbrp-aupos, "Sales document item
erdat LIKE vbak-erdat,
vkbur LIKE vbak-vkbur, "Sales office
vkorg LIKE vbak-vkorg, "Sales organization
vkgrp LIKE vbak-vkgrp, "Sales group
kunnr LIKE vbak-kunnr, "Customer
matnr LIKE vbrp-matnr, "Material
vtext LIKE tspat-vtext, "Material Group Desc
kwmeng LIKE vbap-kwmeng, "Order Quantity
kawrt LIKE konv-kawrt, "Condition Rate
kwert1 LIKE konv-kwert, "Volume Discount
kwert2 LIKE konv-kwert, "Promo Discount
END OF it_total_held_final.
End of Internal tables for Held
DATA: l_quantity LIKE vbap-kwmeng.
DATA: g_div(20), "Division
g_mat(20), "Material Group
g_maktx(40),
g_name1(40),
v_net_value TYPE p DECIMALS 2.
CONSTANTS DECLARATION
Constants are named data objects that you create statically using
a declarative statement. They allow you to store data under a
particular name within the memory area of a program.
The value of a constant cannot be changed during the execution of
the program.
CONSTANTS: header01(10) TYPE c VALUE 'Invoice #',
header02(06) TYPE c VALUE 'Item',
header03(10) TYPE c VALUE 'Sales Doc.',
header04(03) TYPE c VALUE 'Div',
header05(20) TYPE c VALUE 'Division Desc',
header06(10) TYPE c VALUE 'Customer #',
header07(35) TYPE c VALUE 'Customer Name',
header08(18) TYPE c VALUE 'Material No.',
header09(40) TYPE c VALUE 'Material Text',
header10(09) TYPE c VALUE 'MType',
header11(20) TYPE c VALUE 'Material Grp Desc',
header12(20) TYPE c VALUE 'Condition Rate',
header13(20) TYPE c VALUE 'Vol Discount',
header14(20) TYPE c VALUE 'Promo Discount',
header15(12) TYPE c VALUE 'Date Created',
header16(12) TYPE c VALUE 'Invoice Date',
header17(20) TYPE c VALUE 'Net Value',
header18(12) TYPE c VALUE 'Sales office',
header19(10) TYPE c VALUE 'Sales Org',
header20(10) TYPE c VALUE 'Sales Grp',
header21(20) TYPE c VALUE 'Quantity',
header22(04) TYPE c VALUE 'Plnt'.
End of Internal tables for Out of Stock
Start of selection screen criteria
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: s_zreg FOR zcust-zregion, "Region
s_matkl FOR mara-matkl, "Material Group
s_spart FOR mara-spart, "Division
s_vkorg FOR vbak-vkorg, "Sales Org
s_vkbur FOR vbak-vkbur, "Sales Office
s_class FOR zcust-zaclass. "Account Class
SELECT-OPTIONS: s_curr FOR vbrk-fkdat OBLIGATORY. "Date
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
PARAMETERS p0 RADIOBUTTON GROUP radi.
PARAMETERS p1 RADIOBUTTON GROUP radi.
SELECTION-SCREEN END OF BLOCK b2.
Start of Selection
START-OF-SELECTION.
IF p0 = 'X'.
****Get the Out of Stock
PERFORM out_stock.
PERFORM write_report.
ELSEIF p1 = 'X'.
PERFORM held_order.
PERFORM write_report1.
ENDIF.
*& Form out_stock
text
--> p1 text
<-- p2 text
FORM out_stock.
DATA: l_cnt1 TYPE i,
l_cnt2 TYPE i,
l_spart LIKE mara-spart,
l_matkl LIKE mara-matkl,
l_text LIKE tspat-vtext,
l_amount TYPE p DECIMALS 2,
l_aupos LIKE vbrp-aupos,
l_aubel LIKE vbrp-aubel.
SELECT vbrk~fkdat
vbrk~bukrs
vbrk~knumv
vbrp~vbeln
vbrp~posnr
vbrp~aubel
vbrp~aupos
vbrp~matnr
vbrp~fkimg
vbap~werks
vbak~auart
vbak~kunnr
vbak~vkbur "Sales office
vbak~vkorg "Sales organization
vbak~vkgrp "Sales group
zcust~zcusno
zcust~zregion
INTO TABLE it_total_out_stock1
FROM vbrk
INNER JOIN vbrp
ON vbrkvbeln = vbrpvbeln
INNER JOIN vbak
ON vbrpaubel = vbakvbeln
INNER JOIN zcust
ON vbakkunnr = zcustzcusno
WHERE vbrk~fkdat IN s_curr
AND vbrp~matkl IN s_matkl
AND vbrp~spart IN s_spart
AND vbak~auart IN ('ZDOA', 'ZDTO', 'ZQOA', 'ZDTA', 'ZQTO')
AND zcust~zregion IN s_zreg
AND zcust~zaclass IN s_class
AND vbak~vkorg IN s_vkorg
AND vbak~vkbur IN s_vkbur
AND vbak~bukrs_vf IN ('5116', '5106')
AND vbak~vkbur <> '5100'.
IF sy-subrc = 0.
IF NOT it_total_out_stock1[] IS INITIAL.
***Check if the Order is Out of Stock compare to billing invoice
SELECT vbap~vbeln
vbap~posnr
vbap~matnr
vbap~netwr
vbap~kwmeng
vbak~bukrs_vf
vbak~knumv
vbak~kunnr
vbap~werks
vbak~vkbur "Sales office
vbak~vkorg "Sales organization
vbak~vkgrp "Sales group
INTO TABLE it_vbap
FROM vbap
INNER JOIN vbak
ON vbapvbeln = vbakvbeln
FOR ALL entries IN it_total_out_stock1
WHERE vbap~vbeln = it_total_out_stock1-aubel
AND vbap~posnr <> it_total_out_stock1-aupos
AND vbak~auart IN ('ZDOA', 'ZDTO', 'ZQOA',
'ZDTA', 'ZQTO')
AND vbak~vkorg IN s_vkorg
AND vbak~vkbur IN s_vkbur
AND vbap~matkl IN s_matkl
AND vbap~spart IN s_spart.
***Check if the Order is Out of Stock by Quantity
SELECT vbap~vbeln
vbap~posnr
vbap~matnr
vbap~netwr
vbap~kwmeng
vbak~bukrs_vf
vbak~knumv
vbak~kunnr
vbap~werks
vbak~vkbur "Sales office
vbak~vkorg "Sales organization
vbak~vkgrp "Sales group
INTO TABLE it_vbap_stock
FROM vbap
INNER JOIN vbak
ON vbapvbeln = vbakvbeln
FOR ALL entries IN it_total_out_stock1
WHERE vbap~posnr = it_total_out_stock1-aupos
AND vbap~vbeln = it_total_out_stock1-aubel
AND vbap~kwmeng NE it_total_out_stock1-fkimg
AND vbak~auart IN ('ZDOA', 'ZDTO', 'ZQOA',
'ZDTA', 'ZQTO')
AND vbak~vkorg IN s_vkorg
AND vbak~vkbur IN s_vkbur
AND vbap~matkl IN s_matkl
AND vbap~spart IN s_spart.
ENDIF.
IF NOT it_vbap[] IS INITIAL.
SORT it_vbap BY vbeln posnr.
SORT it_total_out_stock1 BY aubel aupos.
LOOP AT it_vbap.
READ TABLE it_total_out_stock1
WITH KEY aubel = it_vbap-vbeln
aupos = it_vbap-posnr.
IF sy-subrc NE 0.
it_out_stock-vbeln = it_vbap-vbeln.
it_out_stock-posnr = it_vbap-posnr.
it_out_stock-matnr = it_vbap-matnr.
it_out_stock-netwr = it_vbap-netwr.
it_out_stock-knumv = it_vbap-knumv.
it_out_stock-bukrs_vf = it_vbap-bukrs_vf.
it_out_stock-kunnr = it_vbap-kunnr.
it_out_stock-werks = it_vbap-werks.
it_out_stock-vkbur = it_vbap-vkbur. "Sales office
it_out_stock-vkorg = it_vbap-vkorg. "Sales organization
it_out_stock-vkgrp = it_vbap-vkgrp. "Sales group
it_out_stock-kwmeng = it_vbap-kwmeng.
APPEND it_out_stock.
ENDIF.
ENDLOOP.
ENDIF.
IF NOT it_vbap_stock[] IS INITIAL.
SORT it_vbap_stock BY vbeln posnr.
SORT it_total_out_stock1 BY aubel aupos.
LOOP AT it_vbap_stock.
LOOP AT it_total_out_stock1 WHERE aubel = it_vbap_stock-vbeln
AND aupos = it_vbap_stock-posnr
AND fkimg NE it_vbap_stock-kwmeng.
it_out_stock-vbeln = it_vbap_stock-vbeln.
it_out_stock-posnr = it_vbap_stock-posnr.
it_out_stock-matnr = it_vbap_stock-matnr.
it_out_stock-netwr = it_vbap_stock-netwr.
it_out_stock-knumv = it_vbap_stock-knumv.
it_out_stock-bukrs_vf = it_vbap_stock-bukrs_vf.
it_out_stock-kunnr = it_vbap_stock-kunnr.
it_out_stock-werks = it_vbap_stock-werks.
it_out_stock-vkbur = it_vbap_stock-vkbur. "Sales office
it_out_stock-vkorg = it_vbap_stock-vkorg. "Sales org
it_out_stock-vkgrp = it_vbap_stock-vkgrp. "Sales group
****Begin Insert by Ron
it_out_stock-kwmeng = it_vbap_stock-kwmeng.
it_out_stock-fkimg = it_total_out_stock1-fkimg.
it_out_stock-counter = 1.
****End Insert
APPEND it_out_stock.
ENDLOOP.
ENDLOOP.
ENDIF.
ENDIF. "it_total_out_stock1
IF NOT it_out_stock[] IS INITIAL.
***get the value of material and material group
SELECT matnr
matkl
spart
INTO TABLE it_mara_totals_stock
FROM mara
FOR ALL ENTRIES IN it_out_stock
WHERE matnr = it_out_stock-matnr.
ENDIF.
***Get the Value of Division Description
IF NOT it_mara_totals_stock[] IS INITIAL.
SELECT spart
vtext
INTO TABLE it_tspat_totals_stock
FROM tspat
FOR ALL ENTRIES IN it_mara_totals_stock
WHERE spart = it_mara_totals_stock-spart AND
spras = sy-langu.
ENDIF.
***Get the Material Group Description
IF NOT it_mara_totals_stock[] IS INITIAL.
SELECT matkl
wgbez
INTO TABLE it_t023t_totals_stock
FROM t023t
FOR ALL ENTRIES IN it_mara_totals_stock
WHERE matkl = it_mara_totals_stock-matkl AND
spras = sy-langu.
ENDIF.
***Get the Value of Condition Type
IF NOT it_out_stock[] IS INITIAL.
SELECT knumv
kposn
kschl
kawrt
kwert
kbetr
INTO TABLE it_konv_totals_stock
FROM konv
FOR ALL ENTRIES IN it_out_stock
WHERE knumv = it_out_stock-knumv
AND kposn = it_out_stock-posnr
AND kschl IN ('ZQPR', 'ZQD3', 'ZQP3',
'ZDPR', 'ZDD3', 'ZDP3').
ENDIF.
SORT it_out_stock BY vbeln posnr.
SORT it_mara_totals_stock BY matnr.
SORT it_tspat_totals_stock BY spart.
SORT it_t023t_totals_stock BY matkl.
SORT it_konv_totals_stock BY knumv kposn.
LOOP AT it_out_stock.
CLEAR: it_total_stock_final-kawrt, it_total_stock_final-kwert1,
it_total_stock_final-kwert2, it_total_stock_final-vtext,
it_total_stock_final-matkl, it_total_stock_final-spart,
it_total_stock_final-aubel, it_total_stock_final-aupos,
it_total_stock_final-cnt1, it_total_stock_final-cnt2.
***Begin Insert by RONCR
CLEAR: it_total_stock_final-kwmeng, it_total_stock_final-fkimg,
it_total_stock_final-counter.
***End Insert by RONCR
CLEAR: it_mara_totals_stock, it_tspat_totals_stock,
it_t023t_totals_stock, it_konv_totals_stock,
l_cnt1, l_cnt2.
**Counter for Total Orders Column
l_cnt1 = 4.
READ TABLE it_mara_totals_stock
WITH KEY matnr = it_out_stock-matnr.
IF sy-subrc EQ 0.
it_total_stock_final-matnr = it_mara_totals_stock-matnr.
it_total_stock_final-matkl = it_mara_totals_stock-matkl.
it_total_stock_final-spart = it_mara_totals_stock-spart.
***DPM
IF it_total_stock_final-matkl EQ 'DPM' OR
it_total_stock_final-matkl EQ 'SSN'.
READ TABLE it_tspat_totals_stock
WITH KEY spart = it_mara_totals_stock-spart.
IF sy-subrc EQ 0.
it_total_stock_final-vtext = it_tspat_totals_stock-vtext.
ENDIF.
***Non Dole
ELSE.
READ TABLE it_t023t_totals_stock
WITH KEY matkl = it_mara_totals_stock-matkl.
IF sy-subrc EQ 0.
it_total_stock_final-vtext = it_t023t_totals_stock-wgbez.
ENDIF.
ENDIF.
ENDIF.
IF it_total_stock_final-matkl = 'DPM' OR
it_total_stock_final-matkl = 'SSN'.
l_cnt2 = 1.
ELSE.
l_cnt2 = 2.
ENDIF.
***Condition Value for Comapny Code 5116
IF it_out_stock-bukrs_vf EQ '5116'.
READ TABLE it_konv_totals_stock
WITH KEY knumv = it_out_stock-knumv
kposn = it_out_stock-posnr
kschl = 'ZQPR'.
IF sy-subrc EQ 0.
it_total_stock_final-kawrt = it_konv_totals_stock-kawrt.
ENDIF.
READ TABLE it_konv_totals_stock
WITH KEY knumv = it_out_stock-knumv
kposn = it_out_stock-posnr
kschl = 'ZQD3'.
IF sy-subrc EQ 0.
it_konv_totals_stock-kwert = it_konv_totals_stock-kwert * -1.
it_total_stock_final-kwert1 = it_konv_totals_stock-kwert.
it_total_stock_final-kbetr1 = it_konv_totals_stock-kbetr.
it_total_stock_final-kbetr1 = it_total_stock_final-kbetr1 * -1.
ENDIF.
READ TABLE it_konv_totals_stock
WITH KEY knumv = it_out_stock-knumv
kposn = it_out_stock-posnr
kschl = 'ZQP3'.
IF sy-subrc EQ 0.
it_konv_totals_stock-kwert = it_konv_totals_stock-kwert * -1.
it_total_stock_final-kwert2 = it_konv_totals_stock-kwert.
it_total_stock_final-kbetr2 = it_konv_totals_stock-kbetr.
it_total_stock_final-kbetr2 = it_total_stock_final-kbetr2 * -1.
ENDIF.
ENDIF.
***Condition Value for Company Code 5106
IF it_out_stock-bukrs_vf EQ '5106'.
READ TABLE it_konv_totals_stock
WITH KEY knumv = it_out_stock-knumv
kposn = it_out_stock-posnr
kschl = 'ZDPR'. "Base price
IF sy-subrc EQ 0.
it_total_stock_final-kawrt = it_konv_totals_stock-kawrt.
ENDIF.
READ TABLE it_konv_totals_stock
WITH KEY knumv = it_out_stock-knumv
kposn = it_out_stock-posnr
kschl = 'ZDD3'. "Volume Discount
IF sy-subrc EQ 0.
it_konv_totals_stock-kwert = it_konv_totals_stock-kwert * -1.
it_total_stock_final-kwert1 = it_konv_totals_stock-kwert.
it_total_stock_final-kbetr1 = it_konv_totals_stock-kbetr.
it_total_stock_final-kbetr2 = it_total_stock_final-kbetr2 * -1.
ENDIF.
READ TABLE it_konv_totals_stock
WITH KEY knumv = it_out_stock-knumv
kposn = it_out_stock-posnr
kschl = 'ZDP3'. "Promo Discount
IF sy-subrc EQ 0.
it_konv_totals_stock-kwert = it_konv_totals_stock-kwert * -1.
it_total_stock_final-kwert2 = it_konv_totals_stock-kwert.
it_total_stock_final-kbetr2 = it_konv_totals_stock-kbetr.
it_total_stock_final-kbetr2 = it_total_stock_final-kbetr2 * -1.
ENDIF.
ENDIF.
it_total_stock_final-cnt1 = l_cnt1.
it_total_stock_final-cnt2 = l_cnt2.
it_total_stock_final-aubel = it_out_stock-vbeln.
it_total_stock_final-aupos = it_out_stock-posnr.
it_total_stock_final-kunnr = it_out_stock-kunnr.
it_total_stock_final-werks = it_out_stock-werks.
it_total_stock_final-vkbur = it_out_stock-vkbur. "Sales office
it_total_stock_final-vkorg = it_out_stock-vkorg. "Sales org
it_total_stock_final-vkgrp = it_out_stock-vkgrp. "Sales group
***Begin Insert by RONCR
it_total_stock_final-kwmeng = it_out_stock-kwmeng.
it_total_stock_final-fkimg = it_out_stock-fkimg.
it_total_stock_final-counter = it_out_stock-counter.
**End of Insert by RONCR
APPEND it_total_stock_final.
ENDLOOP.
ENDFORM. " out_stock
*& Form write_report
text
--> p1 text
<-- p2 text
FORM write_report.
ULINE (360).
FORMAT COLOR 1.
WRITE: / sy-vline, header01,
12 sy-vline, header02,
19 sy-vline, header03,
30 sy-vline, header04,
35 sy-vline, header05,
55 sy-vline, header18,
75 sy-vline, header19,
87 sy-vline, header20,
100 sy-vline, header06,
112 sy-vline, header07,
150 sy-vline, header08,
170 sy-vline, header09,
215 sy-vline, header10,
225 sy-vline, header11,
247 sy-vline, header21,
271 sy-vline, header12,
293 sy-vline, header13,
315 sy-vline, header14,
337 sy-vline, header17,
360 sy-vline, header22,
363 sy-vline.
ULINE (360).
FORMAT COLOR 2.
SORT it_total_stock_final BY cnt2 cnt1 spart aubel aupos.
LOOP AT it_total_stock_final.
CLEAR: g_div, g_mat, g_maktx, g_name1, v_net_value.
SELECT SINGLE vtext INTO g_div
FROM tspat
WHERE spart = it_total_stock_final-spart
AND spras = sy-langu.
SELECT SINGLE wgbez INTO g_mat
FROM t023t
WHERE matkl = it_total_stock_final-matkl
AND spras = sy-langu.
SELECT SINGLE maktx INTO g_maktx
FROM makt
WHERE matnr = it_total_stock_final-matnr
AND spras = sy-langu.
SELECT SINGLE name1 INTO g_name1
FROM kna1
WHERE kunnr = it_total_stock_final-kunnr.
IF it_total_stock_final-counter = 1.
CLEAR: l_quantity.
l_quantity = it_total_stock_final-kwmeng -
it_total_stock_final-fkimg.
it_total_stock_final-kawrt = it_total_stock_final-kawrt /
it_total_stock_final-kwmeng.
it_total_stock_final-kawrt = it_total_stock_final-kawrt *
l_quantity.
it_total_stock_final-kbetr1 = it_total_stock_final-kbetr1 /
1000.
it_total_stock_final-kbetr2 = it_total_stock_final-kbetr2 /
1000.
it_total_stock_final-kwert1 = it_total_stock_final-kawrt *
it_total_stock_final-kbetr1.
it_total_stock_final-kwert2 = it_total_stock_final-kawrt *
it_total_stock_final-kbetr2.
clear: it_total_stock_final-kawrt,
it_total_stock_final-kbetr1,
it_total_stock_final-kbetr2,
it_total_stock_final-kwert1,
it_total_stock_final-kwert2.
ENDIF.
v_net_value = it_total_stock_final-kawrt -
it_total_stock_final-kwert1 -
it_total_stock_final-kwert2.
WRITE: / sy-vline, it_total_stock_final-vbeln,
12 sy-vline, it_total_stock_final-aupos,
19 sy-vline, it_total_stock_final-aubel,
30 sy-vline, it_total_stock_final-spart,
35 sy-vline, g_div,
55 sy-vline, it_total_stock_final-vkbur,
75 sy-vline, it_total_stock_final-vkorg,
87 sy-vline, it_total_stock_final-vkgrp,
100 sy-vline, it_total_stock_final-kunnr,
112 sy-vline, g_name1,
150 sy-vline, it_total_stock_final-matnr,
170 sy-vline, g_maktx,
215 sy-vline, it_total_stock_final-matkl,
225 sy-vline, it_total_stock_final-vtext.
IF it_total_stock_final-counter = 1.
WRITE: 247 sy-vline, l_quantity,
271 sy-vline, it_total_stock_final-kawrt,
293 sy-vline, it_total_stock_final-kwert1,
315 sy-vline, it_total_stock_final-kwert2,
337 sy-vline, v_net_value,
360 sy-vline, it_total_stock_final-werks,
363 sy-vline.
ELSE.
WRITE: 247 sy-vline, it_total_stock_final-kwmeng,
271 sy-vline, it_total_stock_final-kawrt,
293 sy-vline, it_total_stock_final-kwert1,
315 sy-vline, it_total_stock_final-kwert2,
337 sy-vline, v_net_value,
360 sy-vline, it_total_stock_final-werks,
363 sy-vline.
ENDIF.
ENDLOOP.
ULINE (360).
ENDFORM. " write_report
*& Form held_order
text
--> p1 text
<-- p2 text
FORM held_order.
DATA: l_cnt1 TYPE i,
l_cnt2 TYPE i,
l_spart LIKE mara-spart,
l_matkl LIKE mara-matkl,
l_text LIKE tspat-vtext,
l_amount TYPE p DECIMALS 2,
l_aupos LIKE vbrp-aupos,
l_aubel LIKE vbrp-aubel.
SELECT vbak~erdat
vbak~bukrs_vf
vbak~knumv
vbak~kunnr
vbap~werks
vbak~vkbur "Sales office
vbak~vkorg "Sales organization
vbak~vkgrp "Sales group
vbap~vbeln
vbap~posnr
vbap~matnr
vbap~kwmeng "Order Quantity
vbuk~cmgst
INTO TABLE it_total_held1
FROM vbak
INNER JOIN vbap
ON vbakvbeln = vbapvbeln
INNER JOIN vbuk
ON vbapvbeln = vbukvbeln
WHERE vbak~erdat IN s_curr
AND vbak~vkorg IN s_vkorg
AND vbak~vkbur IN s_vkbur
AND vbap~matkl IN s_matkl
AND vbak~bukrs_vf IN ('5116', '5106')
AND vbak~vkbur NE '5100'
AND vbak~auart IN ('ZDOA', 'ZDTO', 'ZQOA', 'ZDTA', 'ZQTO')
AND vbak~kkber = '5116'
AND vbuk~cmgst = 'B'
AND vbap~spart IN s_spart.
IF sy-subrc = 0.
SELECT zcusno
zregion
INTO TABLE it_total_held2
FROM zcust
FOR ALL ENTRIES IN it_total_held1
WHERE zcusno = it_total_held1-kunnr
AND zcust~zregion IN s_zreg
AND zcust~zaclass IN s_class.
IF sy-subrc EQ 0.
***get the value of material and material group
SELECT matnr
matkl
spart
INTO TABLE it_mara_totals_held
FROM mara
FOR ALL ENTRIES IN it_total_held1
WHERE matnr = it_total_held1-matnr.
***Get the Value of Division Description
IF NOT it_mara_totals_held[] IS INITIAL.
SELECT spart
vtext
INTO TABLE it_tspat_totals_held
FROM tspat
FOR ALL ENTRIES IN it_mara_totals_held
WHERE spart = it_mara_totals_held-spart AND
spras = sy-langu.
ENDIF.
***Get the Material Group Description
IF NOT it_mara_totals_held[] IS INITIAL.
SELECT matkl
wgbez
INTO TABLE it_t023t_totals_held
FROM t023t
FOR ALL ENTRIES IN it_mara_totals_held
WHERE matkl = it_mara_totals_held-matkl AND
spras = sy-langu.
ENDIF.
***Get the Value of Condition Type
IF NOT it_total_held1[] IS INITIAL.
SELECT knumv
kposn
kschl
kawrt
kwert
INTO TABLE it_konv_totals_held
FROM konv
FOR ALL ENTRIES IN it_total_held1
WHERE knumv = it_total_held1-knumv
AND kposn = it_total_held1-posnr
AND kschl IN ('ZQPR', 'ZQD3', 'ZQP3',
'ZDPR', 'ZDD3', 'ZDP3').
ENDIF.
ENDIF.
ENDIF.
SORT it_total_held1 BY vbeln posnr.
SORT it_total_held2 BY zcusno zregion.
SORT it_mara_totals_held BY matnr.
SORT it_tspat_totals_held BY spart.
SORT it_t023t_totals_held BY matkl.
SORT it_konv_totals_held BY knumv kposn.
LOOP AT it_total_held1.
CLEAR: it_total_held_final-kawrt, it_total_held_final-kwert1,
it_total_held_final-kwert2, it_total_held_final-vtext,
it_total_held_final-matkl, it_total_held_final-spart,
it_total_held_final-aubel, it_total_held_final-aupos,
it_total_held_final-cnt1, it_total_held_final-cnt2.
CLEAR: it_mara_totals_held, it_tspat_totals_held,
it_t023t_totals_held, it_konv_totals_held,
l_cnt1, l_cnt2.
READ TABLE it_total_held2
WITH KEY zcusno = it_total_held1-kunnr.
IF sy-subrc = 0.
**Counter for Total Orders Column
l_cnt1 = 3.
READ TABLE it_mara_totals_held
WITH KEY matnr = it_total_held1-matnr.
IF sy-subrc EQ 0.
it_total_held_final-matnr = it_mara_totals_held-matnr.
it_total_held_final-matkl = it_mara_totals_held-matkl.
it_total_held_final-spart = it_mara_totals_held-spart.
***Dole
IF it_total_held_final-matkl EQ 'DPM' OR
it_total_held_final-matkl EQ 'SSN'.
READ TABLE it_tspat_totals_held
WITH KEY spart = it_mara_totals_held-spart.
IF sy-subrc EQ 0.
it_total_held_final-vtext = it_tspat_totals_held-vtext.
ENDIF.
***Non Dole
ELSE.
READ TABLE it_t023t_totals_held
WITH KEY matkl = it_mara_totals_held-matkl.
IF sy-subrc EQ 0.
it_total_held_final-vtext = it_t023t_totals_held-wgbez.
ENDIF.
ENDIF.
ENDIF.
IF it_total_held_final-matkl = 'DPM' OR
it_total_held_final-matkl = 'SSN'.
l_cnt2 = 1.
ELSE.
l_cnt2 = 2.
ENDIF.
***Condition Value for Comapny Code 5116
IF it_total_held1-bukrs_vf EQ '5116'.
READ TABLE it_konv_totals_held
WITH KEY knumv = it_total_held1-knumv
kposn = it_total_held1-posnr
kschl = 'ZQPR'.
IF sy-subrc EQ 0.
it_total_held_final-kawrt = it_konv_totals_held-kawrt.
ENDIF.
READ TABLE it_konv_totals_held
WITH KEY knumv = it_total_held1-knumv
kposn = it_total_held1-posnr
kschl = 'ZQD3'.
IF sy-subrc EQ 0.
it_konv_totals_held-kwert = it_konv_totals_held-kwert * -1.
it_total_held_final-kwert1 = it_konv_totals_held-kwert.
ENDIF.
READ TABLE it_konv_totals_held
WITH KEY knumv = it_total_held1-knumv
kposn = it_total_held1-posnr
kschl = 'ZQP3'.
IF sy-subrc EQ 0.
it_konv_totals_held-kwert = it_konv_totals_held-kwert * -1.
it_total_held_final-kwert2 = it_konv_totals_held-kwert.
ENDIF.
ENDIF.
***Condition Value for Comapny Code 5106
IF it_total_held1-bukrs_vf EQ '5106'.
READ TABLE it_konv_totals_held
WITH KEY knumv = it_total_held1-knumv
kposn = it_total_held1-posnr
kschl = 'ZDPR'. "Base price
IF sy-subrc EQ 0.
it_total_held_final-kawrt = it_konv_totals_held-kawrt.
ENDIF.
READ TABLE it_konv_totals_held
WITH KEY knumv = it_total_held1-knumv
kposn = it_total_held1-posnr
kschl = 'ZDD3'. "Volume Discount
IF sy-subrc EQ 0.
it_konv_totals_held-kwert = it_konv_totals_held-kwert * -1.
it_total_held_final-kwert1 = it_konv_totals_held-kwert.
ENDIF.
READ TABLE it_konv_totals_held
WITH KEY knumv = it_total_held1-knumv
kposn = it_total_held1-posnr
kschl = 'ZDP3'. "Promo Discount
IF sy-subrc EQ 0.
it_konv_totals_held-kwert = it_konv_totals_held-kwert * -1.
it_total_held_final-kwert2 = it_konv_totals_held-kwert.
ENDIF.
ENDIF.
it_total_held_final-cnt1 = l_cnt1.
it_total_held_final-cnt2 = l_cnt2.
it_total_held_final-aubel = it_total_held1-vbeln.
it_total_held_final-aupos = it_total_held1-posnr.
it_total_held_final-kunnr = it_total_held1-kunnr.
it_total_held_final-erdat = it_total_held1-erdat.
it_total_held_final-werks = it_total_held1-werks.
it_total_held_final-vkbur = it_total_held1-vkbur. "Sales office
it_total_held_final-vkorg = it_total_held1-vkorg. "Sales Org
it_total_held_final-vkgrp = it_total_held1-vkgrp. "Sales group
it_total_held_final-kwmeng = it_total_held1-kwmeng. "Order qty
APPEND it_total_held_final.
ENDIF. "it_total_held2
ENDLOOP.
ENDFORM. " held_order
*& Form write_report1
text
--> p1 text
<-- p2 text
FORM write_report1.
ULINE (360).
FORMAT COLOR 1.
WRITE: / sy-vline, header01,
12 sy-vline, header02,
19 sy-vline, header03,
30 sy-vline, header15,
45 sy-vline, header04,
50 sy-vline, header05,
75 sy-vline, header18,
90 sy-vline, header19,
103 sy-vline, header20,
115 sy-vline, header06,
127 sy-vline, header07,
167 sy-vline, header08,
184 sy-vline, header09,
227 sy-vline, header10,
237 sy-vline, header11,
260 sy-vline, header21,
282 sy-vline, header12,
306 sy-vline, header13,
330 sy-vline, header14,
354 sy-vline, header17,
376 sy-vline, header22,
380 sy-vline.
ULINE (376).
FORMAT COLOR 2.
SORT it_total_held_final BY cnt2 cnt1 spart aubel aupos.
LOOP AT it_total_held_final.
CLEAR: g_div, g_mat, g_maktx, g_name1, v_net_value.
SELECT SINGLE vtext INTO g_div
FROM tspat
WHERE spart = it_total_held_final-spart
AND spras = sHi,
790072 wrote:
Hi Gurus,
Need your help in writing an sql to search records which has length of 4000 bytes from an varchar2(4000) column and inserting the same records to another table by truncating the record to 3500 bytes .Something like this:
INSERT INTO new_table (txt_column)
SELECT SUBSTRB (txt_column, 1, 3500)
FROM old_table;SUBSTR returns a string with a specified number of characters , SUBSTR<b>B</b> has a specified number of bytes . -
Need help to develop report with column chart
Hi
I am new to SAP BO world.Could anyone please help me to design report with column chart.Please guide me how to develop report for the following requirement.I am not aware of variance columns and variance labels.Please provide some guidance or some tutorials(for column Chart) so that I can complete the task. Please reply me as soon as possible.Waiting for reply.Thanks in advance.
Type: Column Chart
u2022 Rows: Banking Asset Margin (%)
u2022 Start / End Columns: PY YTD Act(Prior year year to date); CY YTD Act(Current year Year to date)
u2022 Variance Columns: # Var (CY-PY Act) for GOLM; Volume; Rate; Non Banking NII; Banking Volatility in NII; Banking Volatility in OOI; Fees/One Offs/Other; Volatile Items; Sophie
u2022 Sub-total columns: PY YTD Underlying; CY YTD Underlying.
u2022 Variance Labels: % Var (CY-PY Act) for Total Income and Underlying Income
u2022 Sub-Total Labels: # Var (CY-PY Act) for Net Insurance Income; Banking Volatility; Other Operating Income
Additional information
u2022 Variance columns (bar) colours: Red = Adverse to Prior Year; Green = Favourable to Prior Year
u2022 Columns to show values. Adverse values to be shown in red text in brackets. Favourable results in black text.
u2022 All values in Black, but adverse to be shown below the bar.Hi,
This type of question is almost impossible to answer over a forum .
You need to work with your business to understand what these requirements mean in terms of data modelling and relationships between object entities.
- Some of these metrics should be delegated to source, and calculated in the update routines to your datatargets (aka Cubes/Tables)
- Others could be resolved in the semantic layer (Universe)
- Other will be calculated in the presentation layer as local formulae or variables.
whilst BusinessObjects is a fairly intuitive tool, it may be unreasonble to expect a new learner to deliver an advanced report with conditional formatting.
Regards,
H
Maybe you are looking for
-
VT02n : User Exit (Urgent)
Hi all, I have a requirement where in i need to incorporate some logic when the user presses the Exit and Cancel Button in VT02N based on the function code for eg. for Exit FC (MM_BEEN) and For Cancel (MM_ABBR).Can anyone tell me the user exit which
-
Itunes and Quicktime won't start, error
my itunes/Quicktime suddenly failed to open. I get a message saying iTunes needs to close. This happened after it would not close by itself one time. I've tried to remove programs from my pc then readd them but the same error keeps happening. Can any
-
[nForce] New motherboard not POSTing/booting (MSI K7N2GM2-ILSR)
You peeps seem like a knowledgeable lot so should be able to help with my problem. I've just got a new motherboard (MSI K7N2GM2-ILSR) to replace my old one (which was a bit iffy in the USB department). I assembled the new motherboard and all the orig
-
Do I really have to use the dock or can I use the headphone jack as a line out and just put the stereo cable there? Thanks
-
Has anyone experienced this? I am using analog stereo output of nForce on-board audio and I get a hissing sound on my Creative 2.1 analog speakers when I turn the volume all the way up. It's not there when I pull the speakers out from the jack so it'