Best code to sanitize table_name and schema_name
If one writes utility programs that take typically a table_name and a schema_name and one uses execute immediate then it
is not using bind variables and subject to sql injection. So what should I do to cleanse table_name and schema_name?
I see that names of tables are way more flexible than I thought:
http://docs.oracle.com/cd/B28359_01/server.111/b28286/sql_elements008.htm#SQLRF51109
Well we aren't doing quoted identifiers around here for our tables we created so I'm thinking of going for it in terms of
cleansing those parameters in utility programs solely designed to work on our creations. As a very legacy type, I would not create a table name that was not A-Z 0-9 and _ Unfortunately I totally forgot how to write a regex or whatever to get rid of anything not in A-Z 0-9 and _ .
Anyone care to remind me? (I never was good at regex :-( I know, dumb question...
/* Prints how many distinct values there are in each field in the
given table for only fields that are varchar2,date or number
If the number <= 20 it prints each distinct value and count.
create or replace procedure
value_freq (intable in varchar2, inschema in varchar2 default null) is
distinct_count integer;
mystmt varchar2(500) := null;
mytable varchar2(70) := null;
good_name varchar2(40) := '^[[:alpha:]][[:alnum:]_]{0,29}$';
dateformat varchar2(25) := 'mm/dd/yyyy';
clean_table varchar2(30) := null;
clean_schema varchar2(30) := null;
TYPE num_rec IS RECORD
(value number,
value_count integer);
TYPE vchar_rec IS RECORD
(value varchar2(2000),
value_count integer);
TYPE date_rec IS RECORD
(value date,
value_count integer);
TYPE num_table is TABLE OF num_rec INDEX BY binary_integer;
nums num_table;
TYPE vchar_table is TABLE OF vchar_rec INDEX BY binary_integer;
vchars vchar_table;
TYPE date_table is TABLE OF date_rec INDEX BY binary_integer;
dates date_table;
BEGIN
/* This assumes A-Z 0-9 _ table and schema names */
if regexp_like(intable,good_name) then
clean_table := upper(intable);
end if;
if regexp_like(inschema,good_name) then
clean_schema := upper(inschema);
end if;
if clean_schema is null then
mytable := upper(clean_table);
else
mytable := upper(clean_schema) || '.' || upper(clean_table);
end if;
dbms_output.put_line('Distinct value stats for ' || mytable);
FOR mycol IN (SELECT column_name,data_type FROM all_tab_columns where
TABLE_NAME = upper(clean_table)
order by COLUMN_ID ) LOOP
mystmt := 'SELECT COUNT(*) FROM (select distinct ' || mycol.column_name ||
' from ' || mytable || ')';
EXECUTE IMMEDIATE mystmt into distinct_count;
/* thanks to Burleson http://www.dba-oracle.com/plsql/t_plsql_dynamic.htm */
if (mycol.data_type = 'NUMBER') then
if (distinct_count > 20) then
dbms_output.put_line(mycol.column_name || ': ' || distinct_count || ' distinct values too many to print');
else
dbms_output.put(mycol.column_name||': ' ||distinct_count || ' distinct values' );
mystmt := 'select ' || mycol.column_name || ', count(*) from ' || mytable
|| ' group by ' || mycol.column_name || ' order by nvl(' || mycol.column_name || ',-99999)';
--dbms_output.put_line(mystmt);
EXECUTE IMMEDIATE mystmt BULK COLLECT into nums;
dbms_output.put_line(chr(9));
FOR i in nums.FIRST .. nums.LAST LOOP
dbms_output.put(nums(i).value || ': ' ||
nums(i).value_count || chr(9));
END LOOP;
dbms_output.put_line('');
end if;
elsif mycol.data_type = 'VARCHAR2' then
if (distinct_count > 20) then
dbms_output.put_line(mycol.column_name || ': ' || distinct_count || ' distinct values too many to print');
else
dbms_output.put(mycol.column_name||': ' ||distinct_count || ' distinct values' );
mystmt := 'select ' || mycol.column_name || ', count(*) from ' || mytable
|| ' group by ' || mycol.column_name || ' order by nvl(' || mycol.column_name || ','' '')';
--dbms_output.put_line(mystmt);
EXECUTE IMMEDIATE mystmt BULK COLLECT into vchars;
dbms_output.put_line(chr(9));
FOR i in vchars.FIRST .. vchars.LAST LOOP
dbms_output.put(vchars(i).value || ': ' ||
vchars(i).value_count || chr(9));
END LOOP;
dbms_output.put_line('');
end if;
elsif mycol.data_type = 'DATE' then
if (distinct_count > 20) then
dbms_output.put_line(mycol.column_name || ': ' || distinct_count || ' distinct values too many to print');
else
dbms_output.put(mycol.column_name||': ' ||distinct_count || ' distinct values' );
mystmt := 'select ' || mycol.column_name || ', count(*) from ' || mytable
|| ' group by ' || mycol.column_name || ' order by ' || mycol.column_name;
--dbms_output.put_line(mystmt);
EXECUTE IMMEDIATE mystmt BULK COLLECT into dates;
dbms_output.put_line(chr(9));
FOR i in dates.FIRST .. dates.LAST LOOP
dbms_output.put(to_char(dates(i).value,dateformat) || ': ' ||
dates(i).value_count || chr(9));
END LOOP;
dbms_output.put_line('');
end if;
end if; /* is date */
END LOOP;
END;
show errors;
Similar Messages
-
Best Buy is about to and Elite Plus customer
I've been an extremely loyal Best Buy customer for over 20 years. I've been an Elite rewards member for 6 years, and Elite Plus since the new tier was created. I've already re-qualified for Elite Plus for next year. Needless to say, I shop at BBY several times per week.
That may all change unless they can fix this colossal f$#k-up that is placing several of my pre-orders in jeopardy.
Long story short: I've placed 6 orders that consist of video game pre-orders for limited edition versions, which are now fully reserved at all retailers, as well as several other pre-orders for pretty much every A-list release coming in Q4/Q1. Some of these orders were placed as far back as February, right when the items became available for pre-order.
My BBY credit card was recently updated from the in-store card to the BBY Platinum Mastercard. The old card--which I used for all of those orders--has now been deactivated. I've updated my account to include my new card as primary payment, but there is no self-help option to specifically update your payment on existing orders.
I hit a snag when two of my orders that released yesterday went to process, and were denied payment, since they tried to ping the old card. These orders were then cancelled for invalid payment before I had a chance to respond to the email regarding a payment problem.
I called support today, to see if they could manually update the payment information on my outstanding orders, and we found in a conference call with Citibank support that even though my new card is valid, since the process of updating existing orders doesn't provide a way to enter the CVV code of my new card (since it's not required by .com's systems), when they go to enter the order, it registers as a CVV mismatch and the payment is denied. After a few tries with one of my orders for a common-stock item, the order hit enough denied payments to be automatically cancelled.
After being on the phone with them for 3 HOURS, I was essentially told that they had no way of fixing this. The problem is, that when these limited-edition pre-orders hit their release date, they will encounter the same payment error and then be automatically cancelled. But, if that happens, or if we cancel the existing orders and I attempt to re-order them, THEY WILL BE OUT OF STOCK AND UNAVAILABLE!! Essentially, unless this error is fixed, I will lose all of my limited-edition pre-orders and since I can't order them anywhere else, I won't be able to replace the order anywhere, unless I shell out a ton of money on the secondary market.
Obviously, I don't find this satisfactory. I've entrusted Best Buy with thousands of dollars of pre-orders, and because of a stupid glitch in their system, they have now essentially told me that this is an inevitable problem that even their top tier of support cannot correct, and they offered nothing to fix the situation to ensure that I will receive the items that I had ordered several months in advance.
This is absolutely outrageous, and it's the last straw. If someone from Best Buy is reading this and can help fix the situation before my first LE pre-order of Q4 enters processing on 11/3/14, I would ask that they please contact me. Otherwise, this screw-up is enough to finally end my two decades of loyalty at Best Buy.
I am very serious about this. If no solution is found, and my orders continue to get auto-cancelled, I intend to cancel all remaining pre-orders (over 15 pending items), cash out my $500 worth of banked points, then cancel my Best Buy accounts and never set foot in a store or visit them online again.
I know people often make these claims of "never again" to be hyperbolic and blow off steam, but this is not just idle talk or grandstanding. With Amazon Prime giving me release-day delivery and competitive prices, and 3 GameStops and 2 Apple stores within a 10 mile radius, I could very easily get by without ever giving Best Buy my business again, and I am fully prepared to do so if these orders cannot be rectified.
I would figure that Best Buy would go the extra mile to take care of their most loyal customers. Heck, with how the customer base has eroded, I would figure they'd bend over backwards for ANY customer. I can't imagine Best Buy can afford to lose too many more customers like me, but they're about to, unless something gets fixed and fast.
Ball is in your court, Best Buy.Good afternoon zsciaeount,
Thank you for being a loyal Elite Plus customer. I am terribly disappointed to read about all the wasted time and frustration you have been through regarding your pre-orders. Updating your credit card information on these orders should not be so difficult, and I am truly very sorry for all the inconvenience and frustration you have encountered.
According to our records, I see you are working with our Executive Resolution team. I encourage you to continue to work with them to get this resolved immediately to avoid any more pre-orders from being impacted. Should you still need my assistance please do not hesitate to let me know. I assure you it is my goal to help our loyal customers in any way I can. I will also be documenting your experience for further review.
Once again, I am truly very sorry for any disappointment this has caused, and I hope we are fortunate to continue to have you as a loyal Best Buy customer.
Sincerely,
Maria|Social Media Specialist | Best Buy® Corporate
Private Message -
K450e motherboard replaced now says error code 00ce machine type and serial number invalid
Hey guys i just got a replacement motherboard, after motherboard was replaced on bootup the computer says error code 00ce: machine type and serial number are invalid. How do i get rid of this error it was replaced by the same motherboard type that was previously in the system. How can i reset the bios or enter the serial etc? Lenovo tech support was no help.
Hi Qjafri829,
Welcome to Lenovo Community!
As per the query we understood that you are facing issue with serial number invalid error in your k450e desktop.
As the motherboard been replaced the serial number and MTM number must be updated this is a new motherboard, you can visit to the nearest authorized service center for the serial number update in the BIOS.
Click here to open a link where you can select the country and get the exact contact support number. I’m sure
they will be a great help.
Hope this helps. Do post back if issue persists!
Best regards,
Ashwin.S
Did someone help you today? Press the star on the left to thank them with a Kudo!
If you find a post helpful and it answers your question, please mark it as an "Accepted Solution"! This will help the rest of the Community with similar issues identify the verified solution and benefit from it.
Follow @LenovoForums on Twitter! -
I've only had my iphone 5s for a week. I keep getting an error message of "Server has stopped responding." I need the server to work. Does anyone know if there is a "fix" for the problem? Other wise, I probably best return for a refund and get a Samsung. Thanks
sandyzotz wrote:
Other wise, I probably best return for a refund and get a Samsung.
Unlikely. Based on the complete lack of detail of the issue provided it is entirely possible the same issue would occur.
Unless and until the user provides some actual details of the problem, there is nothing the indicate that the issue is with the iPhone. -
What is the best way to open emails and attachments without using wifi?
For I-phone and I-pad, what is the best way to open emails and attachments without using wifi? I turned off wifi in my settings but my boss thinks there may be another way and a better way to use something else instead of wifi. Any help would be appreciated! Thank you!
Thanks! That is a very good question you post. My boss asked me that and I am assuming that he is having issues with using wifi wherever he is at. My boss is the kind of person that when he asks something you look into it and ask him no questions...he's the only one asking questions! But thank you for your response I will tell him the information you told me and hopefully that will help!
-
Retreive company code data from t001k and plants from t001w based on bwkey
here is my sample code pls.
pls look into the perform <b>PERFORM F_GET_COMPANY_CODE</b>.
and also the link between the tables (custom) like ysda_exp_prtlog,
Purpose: The Monthly export declaration summarizes all SAD *
export documents produced by the system. For each *
plant in France this declaration has to be handed to *
the Customs Authorities, together with copies of all *
invoices mentioned in the report. *
Preds/Successors : - *
External Datasets: - *
INCLUDE PROGRAM : YYSDFORM *
MODIFICATION LOG
Date | Change Number | Initials | Description
*01/10/03| G9DK943416 | AXJIRAP | INITIAL PROGRAM *
*03/10/03| G9DK943416 | TXHONGP | CREATE PRINT-PROGRAM FOR ACCELIO *
*26/10/03| G9DK943416 | KXSAWAS | Merge all Accelio forms into one *
*02/02/04| G9DK959869 | KXSAWAS | Bug fix for Intercompany invoice *
| | | and updating printing no. in *
| | | YSDA_DOC_NUMBER.
*09/02/04| G9DK960368 | KXSAWAS | TICKET AM6219029 various fix *
| G9DK960972 | KXUMNAUY | -Add yuei for download file *
| G9DK961073 | | -Calculate invoice in case *
| G9DK961190 | | invoce is not yet made *
| G9DK961211 | | -Fixed message type when there is*
| | | no data found *
*18/02/04| G9DK961418 | PXSOPHO | -Shift the position in download *
| | | file
*26/02/04| G9DK962077 | kxumnauy | TICKET AM6219029 various fix *
| G9DK962238 | | TICKET AM6289971 fix export file *
| G9DK962271 | |
*18/03/04| G9DK963806 | PXSOPHO | TICKET AM6442955,AM6384438
| G9DK964432 | | - print only 4 chars of the
| G9DK964590 | | export procedure *
| | KXUMNAUY | - Fix internal report
| | KXSAWAS | - Fix invoice currency to EUR.
| | | - Fix SUASUNIC probelm when
| | | download file
*09/06/04| G9DK968994 | KXUMNAUY |TICKET AM6789203
| G9DK969188 | |- Fix box 4 to print the department
| G9DK969246 | |code(first 2 char of the postal)
| G9DK969319 | |- Fix to print all invoice numbers
| G9DK969345 | |reported in the section 3
| G9DK969466 | |- Fix in case invoice currency is
| | |not EUR, use local currency from
| | |accounting document
| | |- Fix in case there are different
| | |codes are loaded on one truck
| | |- Fix the invoice amount in column
| | |27 has to be the amount relating to
| | |the line item
| | |- Fix the issue that Pro forma
| | |invoice for STO (ZF8)shouldn't be
| | |counted to be the final Interco
| | |invoice
*20/08/04| G9DK972875 | KXUMNAUY |AM7387219
| G9DK973032 | |-Exclude samples from the internal
| | |sections 1 and 2
| | |-Data pages: Column 11. When the
| | |invoice amount is less then 1.000
| | |EUR and the quantity is less then.
| | |1.000 then "******" (6 x *) has to
| | |be printed
*07/02/05| G9DK983160 | RXBOONG |AM8522207
| G9DK983168 | |Fix download to unix file
*17/08/06| G9DK9A02DZ | NKONGNG |AM1983727:
| G9DK9A02IK | |-do not show sample orders
| | | (order type FD or ZFD)
| | |AM2985407:
| | |-skip all T2L* documents
*15/12/06| G9DK9A05GB | ZZPWANA | AM10208238
| | The Monthly Export Declaration for plant FR95
| | is showing invoice amounts in SGD in column
| | 27, where amounts in EUR should be shown. As
| | the amounts are labeled as EUR in column 26
| | this is unacceptable.The second issue is that
| | there are no invoice numbers shown in column
| | REM.
| | >> ZZPWANA:AM10208238:G9DK9A05GB <<
| | >> ZZPWANA:AM10208238:G9DK9A05GJ <<
*05/02/07| G9BK900812 | PPATTAN |AM10687113
| G9DK9A0661 | |Correction to the Monthly Export
| | |Declaration alpha character to
| | |numeric field
| |
*09/07/07| G9DK9A09ND |VSRKODA Replace plant with companycode,add
new column plant ,add new logic to
verify that we had received * *
BAEcOMPLETE RESPONSE (fROM FC)
for all the export transactions
REPORT YSDF5092 LINE-SIZE 310
LINE-COUNT 65
NO STANDARD PAGE HEADING
MESSAGE-ID YSD_GENERAL.
INCLUDE PROGRAM FOR ACCELIO *
INCLUDE YYSDFORM. "Include for Accelio Print Process
INCLUDE YSDF006B_INCLUDE.
T A B L E S *
TABLES: NAST.
T Y P E S *
TYPES : BEGIN OF TY_RAW,
WERKS LIKE YSDA_EXP_PRTLOG-YY_PLANT,
*-->Begin of G9DK9A09ND -VSRKODA -09/07/2007
BWKEY LIKE YSDA_EXP_PRTLOG-YY_PLANT,
VALUE_FROM LIKE YCACEDI-VALUE_FROM,
*<-- End of G9DK9A09ND
HEADER_SHT LIKE YSDA_EXP_PRTLOG-YY_HEADER_TYP,
INTERNAL_NO LIKE YSDA_EXP_PRTLOG-YY_INTERNAL_NO, "G9DK962238
PRINT_DATE LIKE YSDA_EXP_PRTLOG-YY_PRINT_DATE,
PRINT_TIME LIKE YSDA_EXP_PRTLOG-YY_PRINT_TIME,
DOCUMENT_CODE LIKE YSDA_EXP_PRTLOG-YY_DOCUMENT_CODE,
HEADER_TYP LIKE YSDA_EXP_PRTLOG-YY_HEADER_TYP,
DELIVERY LIKE YSDA_EXP_PRTLOG-YY_DELIVERY,
INVOICE_AMT LIKE YSDA_EXP_PRTLOG-YY_INVOICE_AMT,
EX_RATE LIKE YSDA_EXP_PRTLOG-YY_EX_RATE,
CURRENCY LIKE YSDA_EXP_PRTLOG-YY_CURRENCY,
INTERNAL_NO LIKE YSDA_EXP_PRTLOG-YY_INTERNAL_NO, "G9DK962238
EXTERNAL_NO LIKE YSDA_EXP_PRTLOG-YY_EXTERNAL_NO,
COMMODITY LIKE YSDA_EXP_PRTLOG-YY_COMMODITY,
REPORT_FLAG LIKE YSDA_EXP_PRTLOG-YY_REPORT_FLAG, "G9DK962077
END OF TY_RAW.
TYPES : BEGIN OF TY_DATA,
HEADER_TYP LIKE YSDA_EXP_PRTLOG-YY_HEADER_TYP,
INTERNAL_NO LIKE YSDA_EXP_PRTLOG-YY_INTERNAL_NO,
PRINT_DATE LIKE YSDA_EXP_PRTLOG-YY_PRINT_DATE,
ZOLLA LIKE EIKP-ZOLLA,
STGBE LIKE EIKP-STGBE,
EXPVZ LIKE EIKP-EXPVZ,
CONTA LIKE EIKP-CONTA,
IEVER LIKE EIKP-IEVER,
PDEST LIKE KNA1-LAND1,
1DEST LIKE KNA1-LAND1,
COMMODITY LIKE YSDA_EXP_PRTLOG-YY_COMMODITY,
STATISTIC TYPE I,
LFIMG LIKE LIPS-LFIMG,
L15 TYPE I,
REGFI(2),
CURRENCY LIKE YSDA_EXP_PRTLOG-YY_CURRENCY,
INVOICE_AMT TYPE I,
ZDELN LIKE VBRK-VBELN,
LIVRE(4),
EXPRF LIKE EIPO-EXPRF,
EXART LIKE EIPO-EXART,
NTGEW LIKE LIKP-NTGEW,
YY_SEQTAXNO LIKE VBRK-YY_SEQTAXNO, "G9DK959869
END OF TY_DATA.
TYPES : BEGIN OF TY_HEADER,
HEADER_SHT LIKE YSDA_EXP_PRTLOG-YY_HEADER_TYP,
HEADER_TYP LIKE YSDA_EXP_PRTLOG-YY_HEADER_TYP,
PRINT_NO LIKE YSDA_DOC_NUMBER-YY_PRINT_NO,
WERKS LIKE T001W-WERKS,
*-->Begin of G9DK9A09ND -VSRKODA -09/07/2007
BUKRS LIKE T001K-BUKRS,
BWKEY LIKE T001K-BWKEY,
VALUE_FROM LIKE YCACEDI-VALUE_FROM,
*<-- End of G9DK9A09ND
NAME1 LIKE T001W-NAME1,
COM_NAME LIKE YSDA_DOC_FIXTEXT-YY_TEXT,
POST_LOC LIKE YSDA_DOC_FIXTEXT-YY_TEXT,
CUST_OFFICE LIKE YSDA_DOC_FIXTEXT-YY_TEXT,
POST_CODE LIKE YSDA_DOC_FIXTEXT-YY_TEXT,
DATE(25),
ETAB LIKE YSDA_DOC_FIXTEXT-YY_TEXT,
NO_SIREN LIKE YSDA_DOC_FIXTEXT-YY_TEXT,
TEXT2 LIKE YSDA_DOC_FIXTEXT-YY_TEXT,
TEXT5 LIKE YSDA_DOC_FIXTEXT-YY_TEXT,
TEXT7A LIKE YSDA_DOC_FIXTEXT-YY_TEXT,
TEXT7B LIKE YSDA_DOC_FIXTEXT-YY_TEXT,
TEXT8 LIKE YSDA_DOC_FIXTEXT-YY_TEXT,
END OF TY_HEADER.
TYPES : BEGIN OF TY_DELIVERY,
VBELN LIKE LIKP-VBELN,
POSNR LIKE LIPS-POSNR, "G9DK961190
VBUND LIKE LIKP-VBUND,
LFIMG LIKE LIPS-LFIMG,
MEINS LIKE LIPS-MEINS,
EXNUM LIKE LIKP-EXNUM,
KUNNR LIKE LIKP-KUNNR,
KUNAG LIKE LIKP-KUNAG,
L15 LIKE LIPS-LFIMG,
WADAT_IST LIKE LIKP-WADAT_IST,
LDDAT LIKE LIKP-LDDAT,
NTGEW LIKE LIKP-NTGEW,
MATNR LIKE MARA-MATNR,
VRKME LIKE LIPS-VRKME, "G9DK960368
VGBEL LIKE LIPS-VGBEL, "G9DK961190
VGPOS LIKE LIPS-VGPOS, "G9DK961190
UECHA LIKE LIPS-UECHA, "G9DK961190
END OF TY_DELIVERY.
TYPES : BEGIN OF TY_INVOICE,
ZDELN LIKE VBRK-VBELN,
NETWR LIKE VBRK-NETWR,
WAERK LIKE VBRK-WAERK,
KURRF LIKE VBRK-KURRF,
FKIMG LIKE VBRP-FKIMG,
VRKME LIKE VBRP-VRKME,
END OF TY_INVOICE.
TYPES : BEGIN OF TY_INVOICE_TEMP,
ZDELN LIKE VBRK-VBELN,
FKART LIKE VBRK-FKART,
YY_SEQTAXNO LIKE VBRK-YY_SEQTAXNO,
END OF TY_INVOICE_TEMP.
TYPES : BEGIN OF TY_EXPORT,
EXNUM LIKE EIKP-EXNUM,
ZOLLA LIKE EIKP-ZOLLA,
STGBE LIKE EIKP-STGBE,
EXPVZ LIKE EIKP-EXPVZ,
CONTA LIKE EIKP-CONTA,
IEVER LIKE EIKP-IEVER,
EXPRF LIKE EIPO-EXPRF,
EXART LIKE EIPO-EXART,
EXPOS LIKE EIPO-EXPOS, "G9DK961190
STAWN LIKE EIPO-STAWN, "G9DK961190
END OF TY_EXPORT.
TYPES : BEGIN OF TY_HFILE,
POS1(8),
POS2(4),
POS3(2),
POS4,
POS5(8),
POS6(4),
POS7(14),
POS8(20),
POS9(20),
POS10(20),
POS11(8),
END OF TY_HFILE.
TYPES : BEGIN OF TY_DFILE,
pos1(18), "G9DK961418
POS1(19), "G9DK961418
POS1(18), "G9DK962238
POS2(4),
POS3(8),
POS4(6),
POS5(6),
POS5A(4),
POS6(9),
POS6A(5), "G9DK962238
POS7(5),
POS8(5),
POS8A(22),
POS9,
POS10,
POS11,
POS12,
POS13(5),
POS13A,
POS14(13),
POS14A(31),
POS15(2),
POS16(2),
POS16A(3),
POS17(4),
POS17A(3),
POS18(3),
POS18A(9), "G9DK962238
POS19,
POS20(11),
POS21(11),
POS22(10),
POS23(10),
POS23A(40),
POS24(4),
POS25(3),
POS26,
POS26A,
POS27,
POS28(3),
POS29,
END OF TY_DFILE,
BEGIN OF TY_TVKO, "G9DK959869
VKORG LIKE TVKO-VKORG, "G9DK959869
BUKRS LIKE TVKO-BUKRS, "G9DK959869
KUNNR LIKE TVKO-KUNNR, "G9DK959869
END OF TY_TVKO. "G9DK959869
D A T A *
DATA: GV_CUST_NUM LIKE YSDA_DOC_FIXTEXT-YY_TEXT,
GV_SIREN LIKE YSDA_DOC_FIXTEXT-YY_TEXT,
GV_REP_NO LIKE YSDA_DOC_NUMBER-YY_PRINT_NO,
GV_SEQ_NO TYPE I VALUE 0,
GV_PRNTER LIKE TSP01-RQDEST, "Printer Name
GV_DATE(8) TYPE C, "DATE
GV_MONTH(2) TYPE C, "MONTH
GV_DAY(2) TYPE C, "DAY
GV_YEAR(4) TYPE C, "YEAR
GV_ADD1(30) TYPE C, "TEXT-SIMBOL H01A
GV_ADD2(30) TYPE C, "TEXT-SIMBOL H01B
GV_COUNT TYPE I, "COUNT SEQUENCE
GV_SEQUENCE(5) TYPE C, "SEQUENCE
GV_COPYNO TYPE C, "NUMBER OF COPY
GV_DATETEMP(10) TYPE C, "DATE
GV_SECTIONPAGE(2) TYPE C, "NO. OF PAGE IN SECTION
GV_ITEM TYPE I, "NO. OF ITEM
GV_EUR LIKE VBRK-WAERK VALUE 'EUR',
GV_INVOICE_NO LIKE VBRK-VBELN, "G9DK959869
GV_INVOICE_INTERCOM LIKE VBRK-VBELN, "G9DK959869
GV_PRO_FORMA_STO LIKE VBRK-VBELN, "G9DK969466
GV_TEXT46 LIKE YSDA_DOC_FIXTEXT-YY_TEXT. "G9DK959869
C O N S T A N T S *
CONSTANTS: GC_M VALUE 'M',
GC_J VALUE 'J',
GC_C VALUE 'C',
GC_D VALUE 'D',
GC_E VALUE 'E',
GC_F VALUE 'F',
GC_U VALUE 'U',
GC_X VALUE 'X',
GC_0 VALUE '0',
GC_2 VALUE '2',
GC_3 VALUE '3',
GC_MEXP(4) VALUE 'MEXP',
GC_ZAAD(4) VALUE 'ZAAD',
GC_ZSAD(4) VALUE 'ZSAD',
GC_CY(2) VALUE 'CY',
GC_M1(2) VALUE 'M1',
GC_M2(2) VALUE 'M2',
GC_M4(2) VALUE 'M4',
GC_M5(2) VALUE 'M5',
GC_M6(2) VALUE 'M6',
GC_M7(2) VALUE 'M7',
GC_M8(2) VALUE 'M8',
GC_M9(2) VALUE 'M9',
GC_C3(2) VALUE 'C3',
GC_00(2) VALUE '00',
GC_C1(2) VALUE 'C1',
GC_C2(2) VALUE 'C2',
GC_SI(2) VALUE 'SI',
GC_N1(2) VALUE 'N1',
GC_N2(2) VALUE 'N2',
GC_FR(2) VALUE 'FR',
GC_EN(2) VALUE 'EN',
GC_TON LIKE T006-MSEHI VALUE 'TO',
GC_L15 LIKE T006-MSEHI VALUE 'L15',
GC_GRWR(4) VALUE 'GRWR',
GC_SAISUNIC(8) VALUE 'SAISUNIC',
GC_000000(6) VALUE '000000',
GC_1 VALUE '1', "G9BK900812
GC_1 LIKE PLFH-MGVGW VALUE '1', "G9BK900812
GC_DOT(1) VALUE '.',
GC_TYP_EU(3) TYPE C VALUE 'EU ',
GC_TYP_EX(3) TYPE C VALUE 'EX ',
GC_TYP_COM(3) TYPE C VALUE 'COM',
GC_BIS(3) TYPE C VALUE 'BIS',
GC_EUR(3) TYPE C VALUE 'EUR',
GC_IV(2) TYPE C VALUE 'IV',
GC_ZTDR(4) TYPE C VALUE 'ZTDR',
GC_ZF8(3) TYPE C VALUE 'ZF8',
GC_ZIV(3) TYPE C VALUE 'ZIV',
GC_FALSE(1) TYPE C VALUE ' ', "yuie
GC_STRUCT(31) TYPE C VALUE 'DATA', "yuie
GC_TOTAL TYPE VTXTM VALUE 'TOTAL NET UNIT PRICE',"G9DK960368
GC_INTER_PERCENT TYPE VTXTM VALUE 'Inter-company %'."G9DK960368
I N T E R N A L T A B L E S *
DATA: BEGIN OF IT_DOC OCCURS 0,
VBELN LIKE LIKP-VBELN,
FKART LIKE VBRK-FKART,
ERDAT LIKE VBFA-ERDAT,
ERZET LIKE VBFA-ERZET,
ZDELN LIKE VBRK-VBELN,
END OF IT_DOC,
BEGIN OF IT_VBRK OCCURS 0,
ZDELN LIKE VBRK-VBELN,
END OF IT_VBRK,
BEGIN OF IT_SALES OCCURS 0,
VBELN LIKE LIKP-VBELN,
VBELV LIKE VBAK-VBELN, "Order Number
AUART LIKE VBAK-AUART,
KNUMV LIKE VBAK-KNUMV,
KALSM LIKE VBAK-KALSM, "G9DK960368
WAERK LIKE VBAK-KALSM, "G9DK960368
KNUMA LIKE VBAK-KNUMA, "G9DK960368
END OF IT_SALES,
*--> begin of G9DK961190 kxumnauy 13 feb 2004
BEGIN OF IT_VBAP OCCURS 0,
VBELN LIKE VBAK-VBELN, " Sale doc.
POSNR LIKE VBAP-POSNR, " Sales document item
KNUMV LIKE VBAK-KNUMV, " No. of the document cond.
KALSM LIKE VBAK-KALSM,
WAERK LIKE VBAK-KALSM,
KNUMA LIKE VBAK-KNUMA,
END OF IT_VBAP,
*<-- end of G9DK961190
BEGIN OF IT_KSCHL OCCURS 0,
KNUMV LIKE KONV-KNUMV,
KBETR LIKE KONV-KBETR,
WAERS LIKE KONV-WAERS, "G9DK960368
END OF IT_KSCHL,
BEGIN OF IT_VBKD OCCURS 0,
VBELV LIKE VBAK-VBELN,
INCO1 LIKE VBKD-INCO1,
END OF IT_VBKD,
BEGIN OF IT_COUNTRY OCCURS 0,
KUNNR LIKE KNA1-KUNNR,
LAND1 LIKE KNA1-LAND1,
END OF IT_COUNTRY,
BEGIN OF IT_CNO OCCURS 0,
HEADER_TYP LIKE YSDA_EXP_PRTLOG-YY_HEADER_TYP,
INTERNAL_NO LIKE YSDA_EXP_PRTLOG-YY_INTERNAL_NO,
PRINT_DATE LIKE YSDA_EXP_PRTLOG-YY_PRINT_DATE,
INVOICE_AMT LIKE YSDA_EXP_PRTLOG-YY_INVOICE_AMT,
CURRENCY LIKE YSDA_EXP_PRTLOG-YY_CURRENCY,
*-->Begin of G9DK9A09ND -VSRKODA -16/07/2007
PLANT LIKE YSDA_EXP_PRTLOG-YY_PLANT,
*<--End of G9DK9A09ND
END OF IT_CNO,
BEGIN OF IT_LNO OCCURS 0,
HEADER_TYP LIKE YSDA_EXP_PRTLOG-YY_HEADER_TYP,
INTERNAL_NO LIKE YSDA_EXP_PRTLOG-YY_INTERNAL_NO,
PRINT_DATE LIKE YSDA_EXP_PRTLOG-YY_PRINT_DATE,
INVOICE_AMT LIKE YSDA_EXP_PRTLOG-YY_INVOICE_AMT,
CURRENCY LIKE YSDA_EXP_PRTLOG-YY_CURRENCY,
*-->Begin of G9DK9A09ND -VSRKODA -16/07/2007
PLANT LIKE YSDA_EXP_PRTLOG-YY_PLANT,
*<--End of G9DK9A09ND
END OF IT_LNO,
BEGIN OF IT_LINV OCCURS 0,
HEADER_TYP LIKE YSDA_EXP_PRTLOG-YY_HEADER_TYP,
INTERNAL_NO LIKE YSDA_EXP_PRTLOG-YY_INTERNAL_NO,
PRINT_DATE LIKE YSDA_EXP_PRTLOG-YY_PRINT_DATE,
INVOICE_AMT LIKE YSDA_EXP_PRTLOG-YY_INVOICE_AMT,
CURRENCY LIKE YSDA_EXP_PRTLOG-YY_CURRENCY,
*-->Begin of G9DK9A09ND -VSRKODA -16/07/2007
PLANT LIKE YSDA_EXP_PRTLOG-YY_PLANT,
*<--End of G9DK9A09ND
EX_RATE LIKE YSDA_EXP_PRTLOG-YY_EX_RATE,
LFIMG LIKE LIPS-LFIMG,
ZDELN LIKE VBRK-YY_SEQTAXNO,
END OF IT_LINV,
BEGIN OF IT_DIFF OCCURS 0,
HEADER_TYP LIKE YSDA_EXP_PRTLOG-YY_HEADER_TYP,
VBELV LIKE VBAK-VBELN,
INTERNAL_NO LIKE YSDA_EXP_PRTLOG-YY_INTERNAL_NO,
PRINT_DATE LIKE YSDA_EXP_PRTLOG-YY_PRINT_DATE,
INVOICE_AMT LIKE YSDA_EXP_PRTLOG-YY_INVOICE_AMT,
CURRENCY LIKE YSDA_EXP_PRTLOG-YY_CURRENCY,
*-->Begin of G9DK9A09ND -VSRKODA -16/07/2007
PLANT LIKE YSDA_EXP_PRTLOG-YY_PLANT,
*<--End of G9DK9A09ND
EX_RATE LIKE YSDA_EXP_PRTLOG-YY_EX_RATE,
LFIMG LIKE LIPS-LFIMG,
NETWR LIKE VBRK-NETWR,
WAERK LIKE VBRK-WAERK,
KURRF LIKE VBRK-KURRF,
FKIMG LIKE VBRP-FKIMG,
ZDELN LIKE VBRK-YY_SEQTAXNO,
END OF IT_DIFF.
*-->Begin of G9DK9A09ND -VSRKODA -09/07/2007
Data :Begin of it_t001k occurs 0,
bwkey like t001k-bwkey,
bukrs like t001k-bukrs,
werks like t001w-werks,
end of it_t001k.
TABLES: T001W.
Data :Begin of it_t001w occurS 0,
bwkey like t001w-bwkey,
werks like t001w-werks,
end of it_t001w.
*<-- End of G9DK9A09ND
*-->Begin of G9DK9A09ND -VSRKODA -09/07/2007
DATA: BEGIN OF IT_SIREN OCCURS 0,
VALUE_FROM LIKE YCACEDI-VALUE_FROM,
MESTYP LIKE YCACEDI-MESTYP,
DIRECT LIKE YCACEDI-MESTYP,
ORG_LEVEL LIKE YCACEDI-ORG_LEVEL,
ORG_VALUE LIKE YCACEDI-ORG_VALUE,
FIELDNAME LIKE YCACEDI-FIELDNAME,
END OF IT_SIREN.
*<-- End of G9DK9A09ND
*--> Begin of G9DK959869 KXSAWAS 02/02/2004
DATA: BEGIN OF IT_ORDER OCCURS 0,
VBELN LIKE VBAK-VBELN, " Order no.
VKORG LIKE VBAK-VKORG, " Sale Org. of order
END OF IT_ORDER,
BEGIN OF WA_T001W,
WERKS LIKE T001W-WERKS, " Plant
BUKRS LIKE T001K-BUKRS,
*-->Begin of G9DK9A09ND -VSRKODA -09/07/2007
BWKEY LIKE T001K-BWKEY,
*<-- End of G9DK9A09ND
VKORG LIKE T001W-VKORG, " Sale Org. of plant
COUNC LIKE T001W-COUNC, " Country code
LAND1 LIKE T001W-LAND1, "
ADRNR LIKE T001W-ADRNR,
ORT01 LIKE T001W-ORT01,
END OF WA_T001W,
BEGIN OF IT_LIKP OCCURS 0,
VBELN LIKE LIKP-VBELN, " Delivery
VKORG LIKE LIKP-VKORG, " Sale organization
KUNNR LIKE LIKP-KUNNR, " Ship-to party
INCO1 LIKE LIKP-INCO1, " Incoterm part1
INCO2 LIKE LIKP-INCO2, " Incoterm part2
END OF IT_LIKP.
*<-- End of G9DK959869
DATA: IT_RAW TYPE TABLE OF TY_RAW WITH HEADER LINE,
IT_DATA TYPE TABLE OF TY_DATA WITH HEADER LINE,
IT_EXPORT TYPE TABLE OF TY_EXPORT WITH HEADER LINE,
IT_DELIVERY TYPE TABLE OF TY_DELIVERY WITH HEADER LINE,
IT_INVOICE TYPE TABLE OF TY_INVOICE WITH HEADER LINE,
IT_FILE TYPE TABLE OF TY_DFILE WITH HEADER LINE,
IT_HEADER TYPE TABLE OF TY_HEADER WITH HEADER LINE,
IT_SELTAB TYPE TABLE OF RSPARAMS WITH HEADER LINE,
IT_INVOICE_TEMP TYPE TABLE OF TY_INVOICE_TEMP WITH HEADER LINE,
IT_TVKO_ORDER TYPE TABLE OF TY_TVKO WITH HEADER LINE,"G9DK959869
IT_DEL TYPE TABLE OF TY_DELIVERY WITH HEADER LINE. "G9DK960368
*--> Begin of G9DK960368 KXSAWAS 05/02/2004
DATA: BEGIN OF YUIE_ITAB OCCURS 0,
RECID(31),
DATA(1024).
DATA: END OF YUIE_ITAB.
TYPE-POOLS: YUIEX.
*DATA : it_komv2 LIKE komv OCCURS 0 WITH HEADER LINE. "G9DK961190
*<-- End of G9DK960368
*Begin of G9DK964590 kxumnauy 30 mar 2003
DATA: BEGIN OF KEY_ZBAT01,
MANDT TYPE ZBAT01-MANDT,
REPID TYPE ZBAT01-REPID,
FUNCT TYPE ZBAT01-FUNCT,
END OF KEY_ZBAT01.
*End of G9DK964590
*--> Begin of G9DK968994 kxumnauy
DATA: BEGIN OF IT_INVOICE_ITEM OCCURS 0,
VBELN LIKE VBRP-VBELN,
POSNR LIKE VBRP-POSNR,
NETWR LIKE VBRP-NETWR,
VGBEL LIKE VBRP-VGBEL,
VGPOS LIKE VBRP-VGPOS,
MATNR LIKE VBRP-MATNR,
fkimg LIKE VBRP-fkimg, "G9DK969188
vrkme LIKE VBRP-vrkme, "G9DK969188
ntgew LIKE VBRP-ntgew, "G9DK969188
gewei LIKE VBRP-gewei, "G9DK969188
END OF IT_INVOICE_ITEM.
*<-- End of G9DK968994
RANGES: S_LAST FOR SY-DATUM,
S_PERIOD FOR SY-DATUM.
W O R K A R E A S *
DATA: WA_RAW TYPE TY_RAW,
WA_DATA TYPE TY_DATA,
WA_EXPORT TYPE TY_EXPORT,
WA_DOC LIKE IT_DOC,
WA_SALES LIKE IT_SALES,
WA_SALES1 LIKE IT_SALES, "G9DK972875
WA_KSCHL LIKE IT_KSCHL,
WA_VBKD LIKE IT_VBKD,
WA_COUNTRY LIKE IT_COUNTRY,
WA_DELIVERY TYPE TY_DELIVERY,
WA_INVOICE TYPE TY_INVOICE,
WA_LINV LIKE IT_LINV,
WA_CNO LIKE IT_CNO,
WA_LNO LIKE IT_LNO,
WA_DIFF LIKE IT_DIFF,
WA_HEADER TYPE TY_HEADER,
WA_VBRK LIKE IT_VBRK,
WA_FILE TYPE TY_DFILE,
WA_HFILE TYPE TY_HFILE,
WA_SELTAB TYPE RSPARAMS,
WA_INVOICE_TEMP TYPE TY_INVOICE_TEMP,
WA_TVKO_PLANT TYPE TY_TVKO, "G9DK959869
WA_LIKP LIKE IT_LIKP, "G9DK959869
WA_DEL LIKE IT_DELIVERY, "G9DK960368
WA_KOMK LIKE KOMK, "G9DK960368
*-->Begin of G9DK9A09ND -VSRKODA -09/07/2007
WA_T001K LIKE T001K.
*<-- End of G9DK9A09ND
S E L E C T - O P T I O N S / P A R A M E T E R S *
SELECTION-SCREEN BEGIN OF BLOCK SCR1 WITH FRAME TITLE TEXT-001.
*Begin of change VSRKODA
PARAMETERS: P_BUKRS LIKE T001K-BUKRS,
S_WERKS LIKE T001W-WERKS,
*end of change VSRKODA
P_MNR LIKE T247-MNR,
P_YEAR LIKE VBRK-GJAHR.
SELECT-OPTIONS: S_WERKS FOR T001W-WERKS.
PARAMETERS: P_PRNTER LIKE TSP01-RQDEST. "Printer Name
p_file AS CHECKBOX. "yuie
SELECTION-SCREEN END OF BLOCK SCR1.
*--> Begin of G9DK960368 KXSAWAS 05/02/2004
*--- Comment out ---
*SELECTION-SCREEN BEGIN OF BLOCK b2
WITH FRAME TITLE text-t01.
*PARAMETERS: p_fname LIKE rlgrap-filename .
*SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-T01.
PARAMETERS: P_FILE AS CHECKBOX.
PARAMETERS: P_FNAME TYPE EPSFILNAM LOWER CASE, "interface UNIX file
P_SPATH TYPE EPSDIRNAM DEFAULT
'/opt/mobil/batch/gem/other/common/data/' LOWER CASE.
SELECTION-SCREEN END OF BLOCK B2.
SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME TITLE TEXT-T03.
PARAMETERS: P_INTID TYPE YINT_IDS DEFAULT 'DCG_REPORT',
P_SUBID TYPE YINT_SUB_IDS DEFAULT 'MAIN'.
SELECTION-SCREEN END OF BLOCK B3.
*<-- End of G9DK960368
AT SELECTION SCREEN
AT SELECTION-SCREEN.
To validate the data that user entered in the selection screen
PERFORM F_VALIDATE_DATA.
PERFORM F_GET_COMPANY_CODE.
I N I T I A L I Z A T I O N *
INITIALIZATION.
P_MNR = SY-DATUM+4(2).
P_YEAR = SY-DATUM+0(4).
*--> Begin of G9DK960368 KXSAWAS 05/02/2004
*---Set default unix file name yuie
CONCATENATE 'DCG_SAISUNIC' SY-UNAME
INTO P_FNAME
SEPARATED BY '_'.
*<-- End of G9DK960368
B E G I N - O F - S E L E C T I O N *
START-OF-SELECTION.
GV_PRNTER = P_PRNTER.
PERFORM F_INIT_PERIOD.
PERFORM F_GET_CURRENT_REPORT_NUMBER.
PERFORM F_GET_COMPANY_CODE.
PERFORM F_EXTRACT_RAW_DATA.
PERFORM F_PROCESS_DATA.
IF SY-BATCH EQ GC_X.
PERFORM F_UPDATE_REPORT_NUMBER.
ENDIF.
END-OF-SELECTION.
IF NOT ( IT_HEADER[] IS INITIAL AND IT_DATA[] IS INITIAL AND
IT_CNO[] IS INITIAL AND IT_LNO[] IS INITIAL AND
IT_LINV[] IS INITIAL AND IT_DIFF[] IS INITIAL ).
PERFORM F_PRINT_ACCELIO.
ELSE.
MESSAGE ID 'YM' TYPE 'I' NUMBER '032' "G9DK961073
WITH 'No data found for entered criteria'(E01).
EXIT.
ENDIF.
*If run by batch job print invoice
IF SY-BATCH EQ GC_X.
PERFORM F_PRINT_INVOICE.
ENDIF.
B E G I N O F F O R M *
*& Form F_INIT_PERIOD
Period
FORM F_INIT_PERIOD.
DATA: LV_FIRST LIKE SY-DATUM,
LV_CURRENT LIKE SY-DATUM,
LV_LAST LIKE SY-DATUM,
LV_DTEMP_FIRST(12) TYPE C,
LV_DTEMP_LAST(12) TYPE C.
LV_FIRST+0(4) = P_YEAR.
LV_FIRST+4(2) = P_MNR.
LV_FIRST+6(2) = '01'.
LAST DAY OF CURRENT MONTH
CALL FUNCTION 'LAST_DAY_OF_MONTHS'
EXPORTING
DAY_IN = LV_FIRST
IMPORTING
LAST_DAY_OF_MONTH = LV_CURRENT
EXCEPTIONS
DAY_IN_NO_DATE = 1
OTHERS = 2.
IF SY-SUBRC = 0.
IF P_MNR < '2'.
LV_FIRST+0(4) = P_YEAR - 1.
LV_FIRST+4(2) = '12'.
LV_FIRST+6(2) = '01'.
ELSE.
LV_FIRST+0(4) = P_YEAR.
LV_FIRST+4(2) = P_MNR - 1.
LV_FIRST+6(2) = '01'.
ENDIF.
LAST DAY OF LAST MONTH
CALL FUNCTION 'LAST_DAY_OF_MONTHS'
EXPORTING
DAY_IN = LV_FIRST
IMPORTING
LAST_DAY_OF_MONTH = LV_LAST
EXCEPTIONS
DAY_IN_NO_DATE = 1
OTHERS = 2.
IF SY-SUBRC = 0.
LV_FIRST = '20040101'. "G9DK973032
LAST MONTH
S_LAST-SIGN = 'I'.
S_LAST-OPTION = 'BT'.
S_LAST-LOW = LV_FIRST.
S_LAST-HIGH = LV_LAST.
APPEND S_LAST.
LAST MONTH AND CURRENT MONTH
S_PERIOD-SIGN = 'I'.
S_PERIOD-OPTION = 'BT'.
S_PERIOD-LOW = LV_FIRST.
S_PERIOD-HIGH = LV_CURRENT.
APPEND S_PERIOD.
ENDIF.
ENDIF.
ENDFORM. " F_INIT_PERIOD
*& Form F_GET_CURRENT_REPORT_NUMBER
Get current Seq. no. from YSDA_DOC_NUMBER
FORM F_GET_CURRENT_REPORT_NUMBER.
DATA: LV_RC LIKE SY-SUBRC.
CHECK SY-BATCH = GC_X.
DO 3 TIMES.
PERFORM F_LOCK_OBJECT CHANGING LV_RC.
IF LV_RC <> 0.
PERFORM F_WAIT.
ELSE.
EXIT.
ENDIF.
ENDDO.
IF LV_RC <> 0.
PERFORM F_UNLOCK_OBJECT.
PERFORM F_LOCK_OBJECT CHANGING LV_RC.
ENDIF.
SELECT SINGLE YY_PRINT_NO
INTO GV_REP_NO
FROM YSDA_DOC_NUMBER
*-->Begin of G9DK9A09ND -VSRKODA -09/07/2007
where yy_plant = P_WERKS
*<-- End of G9DK9A09ND
WHERE YY_PLANT IN S_WERKS
AND YY_YEAR = P_YEAR
AND YY_DOCUMENT_CODE = GC_MEXP.
*--> Begin of G9DK959869 KXSAWAS 02/02/2004
IF SY-BATCH = GC_X.
GV_REP_NO = GV_REP_NO + 1.
ELSE.
GV_REP_NO = 0.
ENDIF.
*<-- End of G9DK959869
ENDFORM. " F_GET_CURRENT_REPORT_NUMBER
*& Form F_GET_COMPANY_CODE
text
--> p1 text
<-- p2 text
FORM F_GET_COMPANY_CODE.
CLEAR: it_t001k-bwkey.
Validate input data against master table of SAP
Validate company code against T001k
IF NOT P_BUKRS IS INITIAL.
SELECT T001K~BUKRS
T001K~BWKEY
T001W~WERKS
INTO CORRESPONDING FIELDS OF TABLE IT_T001K
FROM T001K
INNER JOIN T001W ON T001W~BWKEY = T001K~BWKEY
WHERE BUKRS = P_BUKRS
AND WERKS IN S_WERKS.
APPEND IT_T001K.
select t001kbukrs t001kbwkey t001w~werks
into corresponding fields of table itab
from t001w
inner join t001k
on t001kbwkey = t001wbwkey.
LOOP AT IT_T001K.
it_t001k-bwkey = it_t001w-werks.
ENDLOOP.
ENDIF.
ENDFORM. " F_GET_COMPANY_CODE
*& Form F_EXTRACT_RAW_DATA
Extract entries from YSDA_EXP_PRTLOG
FORM F_EXTRACT_RAW_DATA.
SELECT YY_PLANT
YY_HEADER_TYP
YY_INTERNAL_NO
YY_PRINT_DATE
YY_PRINT_TIME
YY_DOCUMENT_CODE
YY_HEADER_TYP
YY_DELIVERY
YY_INVOICE_AMT
YY_EX_RATE
YY_CURRENCY
YY_INTERNAL_NO "G9DK962238
YY_EXTERNAL_NO
YY_COMMODITY
YY_REPORT_FLAG "G9DK962077
INTO corresponding fields of TABLE IT_RAW
FROM YSDA_EXP_PRTLOG
WHERE YY_PLANT IN S_WERKS
**-->Begin of G9DK9A09ND -VSRKODA -09/07/2007
where yy_plant = s_werks
**<-- End of G9DK9A09ND
and YY_PRINT_DATE IN S_PERIOD+
AND YY_REPORT_FLAG <> 'X' "G9DK973032
AND YY_HEADER_TYP <> 'T2L' "G9DK9A02DZ
AND YY_ANNULATION <> 'X'.
*If run by batch job
*--> Begin of G9DK959869 KXSAWAS 02/02/2004
*--- Comment out ---
IF sy-batch EQ gc_x.
IF NOT it_raw[] IS INITIAL.
LOOP AT it_raw.
**Update YY_REPORT_FLAG EQ 'X'
UPDATE ysda_exp_prtlog SET yy_report_flag = gc_x
WHERE yy_plant = p_werks
AND yy_print_date = it_raw-print_date
AND yy_print_time = it_raw-print_time
AND yy_document_code = it_raw-document_code.
ENDLOOP.
ENDIF.
ENDIF.
*<-- End of G9DK959869
LOOP AT IT_RAW.
IT_RAW-HEADER_SHT = IT_RAW-HEADER_SHT+0(3).
MODIFY IT_RAW.
ENDLOOP.
SORT IT_RAW BY WERKS HEADER_SHT INTERNAL_NO "G9DK962271
PRINT_DATE. "G9DK962238
ENDFORM. " F_EXTRACT_RAW_DATA
*& Form F_PROCESS_DATA
Extract all required data
FORM F_PROCESS_DATA.
PERFORM F_EXTRACT_DOC_FLOW.
PERFORM F_EXTRACT_INCO_TERM.
PERFORM F_EXTRACT_DELIVERY_DATA.
PERFORM F_EXTRACT_INVOICE_DATA.
PERFORM F_EXTRACT_EXPORT_DATA.
PERFORM F_EXTRACT_HEADER_DATA.
PERFORM F_EXTRACT_COMPANY. "G9DK959869
PERFORM F_CLASSIFY_DATA.
ENDFORM. " F_PROCESS_DATA
*& Form F_EXTRACT_DOC_FLOW
Extract Sale data
FORM F_EXTRACT_DOC_FLOW.
IF NOT IT_RAW[] IS INITIAL.
SELECT VBELV
VBTYP_N
ERDAT
ERZET
VBELN
INTO TABLE IT_DOC
FROM VBFA
FOR ALL ENTRIES IN IT_RAW
WHERE VBELV = IT_RAW-DELIVERY
AND ( VBTYP_N = 'M'
OR VBTYP_N = '5' ).
SELECT A~VBELN
A~VBELV
B~AUART
B~KNUMV
B~KALSM "G9DK960368
B~WAERK "G9DK960368
B~KNUMA "G9DK960368
INTO TABLE IT_SALES
FROM VBFA AS A INNER JOIN VBAK AS B
ON AVBELV = BVBELN
FOR ALL ENTRIES IN IT_RAW
WHERE A~VBELN = IT_RAW-DELIVERY
AND A~VBTYP_N = GC_J.
ENDIF.
SORT IT_SALES BY VBELN VBELV.
DELETE ADJACENT DUPLICATES FROM IT_SALES COMPARING ALL FIELDS.
SORT IT_DOC BY VBELN ASCENDING
FKART ASCENDING
ERDAT DESCENDING
ERZET DESCENDING.
DELETE ADJACENT DUPLICATES FROM IT_DOC COMPARING ALL FIELDS.
IF NOT IT_SALES[] IS INITIAL.
SELECT KNUMV
KBETR
WAERS "G9DK960368
INTO TABLE IT_KSCHL
FROM KONV
FOR ALL ENTRIES IN IT_SALES
WHERE KNUMV = IT_SALES-KNUMV
AND KSCHL = GC_GRWR.
ENDIF.
SORT IT_KSCHL BY KNUMV.
ENDFORM. " F_EXTRACT_DOC_FLOW
*& Form F_EXTRACT_INCO_TERM
Extract inco term
FORM F_EXTRACT_INCO_TERM.
IF NOT IT_SALES[] IS INITIAL.
SELECT VBELN
What's wrong with F_GET_COMPANY_CODE ? Below is similar code - try running this and seeing what you get:
report zlocal_jc_t001w.
tables:
t001k, "Valuation area
t001w. "Plants/Branches
parameters:
p_bukrs like t001k-bukrs default '1000'.
select-options:
s_werks for t001w-werks.
start-of-selection.
perform get_data.
*& Form get_data
form get_data.
data:
begin of gt_t001k occurs 10,
bukrs like t001k-bukrs,
bwkey like t001k-bwkey,
werks like t001w-werks,
end of gt_t001k.
select
t001k~bukrs
t001k~bwkey
t001w~werks
into corresponding fields of table gt_t001k
from t001k as t001k
inner join t001w as t001w on t001w~bwkey = t001k~bwkey
where t001k~bukrs = p_bukrs
and t001w~werks in s_werks.
loop at gt_t001k.
write: /
gt_t001k-bukrs,
gt_t001k-bwkey,
gt_t001k-werks.
endloop.
endform. "get_data
As for links to locally defined database tables, that will depend on what the keys defined in SE11 are e.g. there will be a primary key plus relationships to other tables (for example "WERKS LIKE YSDA_EXP_PRTLOG-YY_PLANT" indicates YY_PLANT relates to T001W).
Jonathan -
Best report to check application and package deployment compliancy?
I am looking for the best report to check application and package deployment compliancy.
Preferably targeting a collection.
tconnersI'm recommending this one:
Software Distribution - Application Monitoring folder -
All application deployments (advanced)
It allows you to select Collections and applications
Kent Agerlund | My blogs: blog.coretech.dk/kea and
SCUG.dk/ | Twitter:
@Agerlund | Linkedin: Kent Agerlund |
Mastering ConfigMgr 2012 The Fundamentals -
Hi, my MacBook Pro cannot open Safari. It crashes and gives the message, ' Safari quit unexpectedly while using the librooksbas.dylib plug-in" the report details the exception code as 'EXC_BAD_ACCESS (SIGSEGV)' and exception codes as: 'KERN_INVALID_ADDRESS at 0x0000000920
Remove "Rapport" by following the instructions on this page.
Back up all data before making any changes. -
T-code for cancelled Invoice and cancelled Excise Invoice
Dear Guru,
kindly let me know the T-code for cancelled Invoice and cancelled Excise Invoice.
Wishes,
AbhishekHi Abhishek,
I am not aware of any T-code through which you can see the cancelled invoice. I think either you have to go for development (SQVI)
or
Extract the list of your all billing document like billing document created from 01.01.2010 to 22.04.2010
Now go to SE16 --> Table VBFA --> Give your billing document number in field "Preceding Doc." --> and in the field "Subs.doc.categ." --> choose entry "N Invoice cancellation" --> system will show you all the entries for which cancellation billing document has been created.
or
Go to SE16 --> Table VBRK --> enter your billing document list --> In the field "Posting status" --> Choose option "E Billing Document Canceled"
Hope it helps,
Regards,
MT -
Best way to create tasks and assign to sharepoint groups
Hi everyone, I have a custom list which contains newsletter info that is to be seen by around 400 groups (they are stores) and then I need them to mark each list item as 'completed'
I have been trying to figure out the best way to do this and decided to keep the custom list and somehow link it to a task for each item in the list. We have nintex so was thinking of creating a workflow to create a separate task for each group (store) so
they can mark it as completed.
Is this the best way to go about it or am I completely off track?
Basically all I need is a list which contains around 30 items and around 400 groups (stores) which contain users (store staff) to be able to mark items on the list as completed so it recognises that each store has completed each task.
ThanksHi ,
According to your description, you want to find the best way for creating tasks for 30 list items and assigning the task to around 400 groups.
For the workflow, it is heavy that you need to create around 12000 (30*400) tasks . In my opinion, the best way is to do with a custom timer job. For more information, you can refer to the
blog:
http://www.splessons.com/2013/12/create-a-timer-job-in-sharepoint-2013/
Thanks,
Eric
Forum Support
Please remember to mark the replies as answers if they help and unmark them if they provide no help. If you have feedback for TechNet Subscriber Support,
contact [email protected]
Eric Tao
TechNet Community Support -
Best practices for cleaning up and upgrading
Apologies in advance, as I know there is a wealth of info and ideas on this topic, but I'm looking for the best possible combination of simplicity and effectiveness and the community has done well by me in the past.
Situation: I have this old MacBook
Model Name: MacBook
Model Identifier: MacBook6,1
Processor Name: Intel Core 2 Duo
Processor Speed: 2.26 GHz
Number of Processors: 1
Total Number of Cores: 2
L2 Cache: 3 MB
Memory: 4 GB
Bus Speed: 1.07 GHz
Boot ROM Version: MB61.00C8.B00
System Version: OS X 10.9.5 (13F34)
Kernel Version: Darwin 13.4.0
HD- Available: 6.22 GB
Capacity: 249.2 GB
Literally the only paid software that I have on here and need to keep is Microsoft Office. I do not have the original install disk for this software.
This machine is running very very slowly, and not much hard disk space left. I'm not doing very well at cleaning up.
I have brand new Time Machine backup and I have some pretty old Time Machine backups, pre Mavericks.
I have a new 2TB external drive.
I'm looking for the most effective way to speed this one up and make it as lean as possible and, if advisable, upgrade to Yosemite.
Any recommendations?
I'm willing to spend a little money if it can make a substantial difference.
Thanks and apologies for length of post.
RWHi,
First thanks for this. This application has been really helpful. I've deleted a lot of the easy stuff (music, pics, videos) and am now getting down to some of the stuff I'm less comfortable whacking without some guidance. Here's an example. I don't use the Mail application at all (use Gmail). Here is what I see on OmniDisk Sweeper:
https://www.dropbox.com/s/6iedkj46u4jaxbf/Screenshot%202014-11-08%2010.26.33.png ?dl=0
I think the bulk of this is just messages from my gmail account, from a failed attempt to use Mail a bit years ago. So can you help with at which point I can delete? Hope question make sense. You've helped a lot so far and I've freed up about 45 gb so far.
Rob -
What are the best apps to monitor tests and emails on childs phone
what are the best apps to monitor tests and emails on childs phone?
You could simply log into your child's email with the password that the two of you agree upon, and monitor the emails manually. As for the texts, you could purchase a separate device, and use the child's Apple ID to monitor the iMessages. For SMS/MMS, no way to monitor it. You'll have to use the app called 'Random Parental Inspections'.
-
I participated in getting the free download of Mountain Lion for new Mac owners. It took me three days to finally get a code to do it and when I tried downloading it, the estimated time was 74 days 17 hours. Now an error occurred. What do I do? I am very frustrated and just want the great software to download in a resonalbe time!
Take your Mac to a location with a fast, relaible Internet connection that will be all yours during the duration of the download.
If you want to complain, PLEASE call Apple and do so.
Internet only downloads of OS X is completely stupid, it assumes everyone has reliable Internet everywhere and /or no data caps. -
How to get the table_name and its count(*) in a SQL
Hi,
Can anybody tell me how to write a sql to get the table_name and its count(*) in a SQL:
Output should be:
table_name count(*)
XXX 261723
YYY 3343
Regards,
G. Rajakumar.hello
there r a lot ways
i'll suggest u two of them
1) the following dynamic sql procedure
DECLARE
TYPE array_type IS TABLE OF VARCHAR(30);
TYPE cur_typ IS REF CURSOR;
c1 cur_typ;
count1 integer;
tab_arr array_type;
querystr varchar2(200);
begin
SELECT table_name bulk collect into tab_arr FROM sys.all_all_tables ;
FOR I IN tab_arr.first..tab_arr.last LOOP
DBMS_OUTPUT.PUT(TAB_ARR(I));
querystr := 'select count(*) from ' ||TAB_ARR(I);
open c1 for querystr;
fetch c1 into count1;
EXIT WHEN c1%NOTFOUND;
dbms_output.put_line(count1);
END LOOP;
close c1;
END;
2) or use ANALYZE to analyze the tables and get the number of rows in the NUM_ROW column of DBA_TABLES view.
if u still have any problem mail me at [email protected]
shalini -
Best Practice for Multiple iTunes and One Account?
My wife and I share our account for our iPhone Applications and Songs in iTunes.
Can someone point me to a topic that covers a best practice for multiple iTunes syncing?
I travel a lot and keep my iPhone synced to my Macbook Pro while she uses the workstation at home to sync to. We keep the addresses and contacts and calendars synced through MobileMe, however, I'm trying to find the best way of pushing applications and songs I've bought over to the other PC so they're still around while I'm traveling for her to sync with.
Thoughts?Hi Steve,
Might be trying for solution for a long time, If i understood your question clear let me clarify you few points.
You are trying to access the bex query which is designed with the exit's in the background based on the logic and trying to call the entire dimensions and key-figures in a single connection. Then you are trying to map those data in the charts.
Steve, try to make more connections based upon the logic and split them. use the same query but split them by sales per customer group, sales per day, sales per week by making three different connections and try. You can merge the prompts from all connections.
Hope this Helps!!!
Sorry if i misunderstood your question.
--SumanT
Maybe you are looking for
-
9.0.115 problems
When trying to instal KB923789 (flash player security) I get 3 messages: 1. Gen Warn: Te version of Windows (XPpro/SP2/IE7) you have installed does not match the update you are trying to install. 2. Gen Warn Flash: The version of Macromedia Flash you
-
How to view preview while rendering?
Hey everyone, Newbie to PSE 8. How do I see a preview while Elements is rendering video? I'm used to other programs like Roxio Video Wave and Cyberlink Powerdirector showing the movie as it's being rendered. Is there a way to turn this on in Elem
-
How to display icon files in mac
In JLabel how to add icon files with ext .ico from MAC OSX
-
Why cant i get java to work on windows xp and what can i do about it
I have used java before on windows 98 and windows 2k and didnt have any problems. However, now im using win xp and it just doesnt work. When i use the java command from the command prompt nothing happns..sometimes an msdos windows pops open ans close
-
When I bought my Mac Air in 2012, I transferred all my windows data to my Mac Air after I installed Parallels. Windows has run perfectly since then. However, why does the name of my old PC show up in my Shared list of computers on my Wi-Fi? Since it