‎2006 Sep 26 9:08 PM
the following piece of code is not giving any o/p. can any one debug the code and make it work..
code:
REPORT ZINVDUMP MESSAGE-ID 00.
$Workfile: $
$Archive: $
$Revision: $
$Date: $
Routine to export Invoice Numbers to text file for use by ICIS.
Designed for orders after posting into invoices.
Main Loop through vbrk (Billing: Header Data)
Based on a date range of inserts or updated to vbrk
Determines vbrk-vbeln (invoice Number)
Inner Loop through related vbfa (Sales Doc Flow)
Determines xvbfa-vbelv (Order Number) and doctype
*
Change log:
$Log: $
*
EdR 5-Nov-2002 added preceeding Document Type L:Debit Memo Request
*
edr 27-Nov-2001 Added Create Date and Create time and ChangeDate
*
Edr 30-Aug-2001 added B - Quotation as a valid
preceeding document VBFA-VBTYP_V
Corrected AUDAT and ERDAT where restriction
*
Edr 13-Jul-2001 removed default directory for non-NT4
set starting date back two days.
*
Edr 14-Dec-98 included include zauth001. "Author
*
Edr 10-28-97 Change vbfa if from: xvbfa-posnv = '000010'
to: xvbfa-vbeln <> oldvbeln
*
Edr 6-13-97
Removed Sales Office, Sales District, & Cust Group from text file
Added subsequent doc & preceding doc to text file
Modified Name of text file from invhdr.txt to invnum.txt
Added additional types for:
vbrk-vbtyp_n (subsequent doc) was just M & N
vbrk-vbtyp_v (preceding doc) was just C & G
C - Order G - Contract H - Return
K - CM Request M - Invoice N - Cancel Doc
O - Crdt Memo P - Dbt Memo S - CM Cancel
L - DM Request (added 5-Nov-2002)
*
Edr 5-7-97
Add Sales District and Customer Group based on related ShipTo.
Added parameters passed from INI file
*
*
TABLES: VBRK, " Billing Header Data
VBFA. " Sales Document Flow
DATA: LASTDATE LIKE SYST-DATUM,
MAXDATE LIKE SYST-DATUM,
STARTDATE LIKE SYST-DATUM,
STARTTIME LIKE SYST-UZEIT.
DATA: BEGIN OF INI_REC_IN,
LASTDATE LIKE SYST-DATUM,
MAXDATE LIKE SYST-DATUM,
DEBUGWRITE(2),
DEBUGLIMIT(8),
MSG(80),
END OF INI_REC_IN.
DATA: BEGIN OF INI_REC_OUT.
INCLUDE STRUCTURE INI_REC_IN.
DATA: END OF INI_REC_OUT.
DATA: FILE1(50) VALUE 'invnum.txt',
FILE2(50) VALUE 'invnum.ini',
CLIENT LIKE SYST-MANDT,
COUNTREC TYPE I VALUE 0, " counter of records to export
COUNTINV TYPE I VALUE 0, " count of invoices
DEBUGLIMIT TYPE I, "
DEBUGWRITE TYPE I , " detail level of debug writes
ORDRCURRINVC TYPE I, " Orders with current Invoice
CNTZEROORD TYPE I VALUE 0, " Num Invoice with 0 orders
CNTOVERONE TYPE I VALUE 0 , " Num Invoice with > 1 orders
CNTONLYONE TYPE I VALUE 0, " Num Invoice with 1 order
ORDER LIKE VBAK-VBELN, " order number (salesDoc no)
OLDVBELV LIKE VBFA-VBELV. " last order number
DATA: BEGIN OF XVBRK OCCURS 0.
INCLUDE STRUCTURE VBRK. DATA: END OF XVBRK.
DATA: BEGIN OF XVBFA OCCURS 0.
INCLUDE STRUCTURE VBFA. DATA: END OF XVBFA.
DATA: BEGIN OF HDR_REC,
SYSID LIKE SYST-SYSID, "box id
MANDT LIKE SYST-MANDT, "Client(03)
INVNO LIKE VBRK-VBELN, "Invoice Number
VBELN LIKE VBAK-VBELN, "Sales Order Nbr (10).
AUART LIKE VBAK-AUART, "Document type(4)
BSTNK LIKE VBAK-BSTNK, "Purchase order number(20)
VKBUR LIKE VBAK-VKBUR, "Sales office(4)
AUDAT LIKE VBAK-AUDAT, "Document date (08).
ERNAM LIKE VBAK-ERNAM, "Order Entry User (12).
NETWR(10), "Net Order Value (10).
WAERK LIKE VBAK-WAERK, "Document Currency (05).
VKORG LIKE VBAK-VKORG, "Sales Organization (04).
VTWEG LIKE VBAK-VTWEG, "Distribution Channel (02).
SPART LIKE VBAK-SPART, "Sales Division (02).
FKARA LIKE VBAK-FKARA, "Billing Type (04).
SUBSEQ LIKE VBFA-VBTYP_N, "subsequent doc
PRECED LIKE VBFA-VBTYP_V, "preceding doc
FILLER(1), "filler to avoid bcp error
ERDAT LIKE VBFA-ERDAT, " create date
ERZET LIKE VBFA-ERZET, " create time
AEDAT LIKE VBFA-AEDAT, " modified date
FILLR2(1), "filler to avoid bcp error
END OF HDR_REC.
DATA: SRVRPATH(40) .
*CONCATENATE '
' SYST-HOST '\export\bcpsap\Invoice\' INTO SRVRPATH. "<< Before move to QA (check with CBI BEFORE uncomment)
CONCATENATE '
' SYST-HOST '\export\bcpsap\' INTO SRVRPATH. "CAUTION FOR ECC5.0 TESTING ONLY!!!!!!!!!
CONCATENATE SRVRPATH FILE1 INTO FILE1.
CONCATENATE SRVRPATH FILE2 INTO FILE2.
INCLUDE ZAUTH001. "Authorization check NT9K904519
STARTDATE = SYST-DATUM.
STARTTIME = SYST-UZEIT.
MOVE SYST-MANDT TO CLIENT.
*if syst-sysid ne 'NT6' and syst-mandt eq '055'.
move '013' to client.
*endif.
*if syst-sysid eq 'NT4'.
move: 'c:/tmp/zdcm/invnum.txt' to file1,
'c:/tmp/zdcm/invnum.ini' to file2.
*endif.
IF DEBUGWRITE GT 0.
WRITE : / ' Header Output file:', FILE1.
WRITE : / 'File with last export date:', FILE2.
ENDIF.
*BEIGN ECC5.O DEVK900351.
CHANGES MADE " ENCODING DEFAULT ADDED".
*OPEN DATASET FILE1 FOR OUTPUT IN TEXT MODE.
OPEN DATASET FILE1 FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
*END OF DEVK900351.
IF SY-SUBRC <> 0.
WRITE: / 'error opening', FILE1, 'for output error:', SY-SUBRC.
EXIT.
ENDIF.
*CLOSE DATASET FILE1. "SREERAM
*OPEN DATASET FILE2 FOR INPUT IN TEXT MODE ENCODING DEFAULT. " SREERAM
*READ: DATASET FILE2 INTO INI_REC_IN.
*IF SY-SUBRC <> 0.
WRITE: / 'error opening', FILE2, 'for output error:', SY-SUBRC.
exit.
*ENDIF.
*
*INI_REC_OUT-MAXDATE = INI_REC_IN-MAXDATE.
*INI_REC_OUT-DEBUGWRITE = INI_REC_IN-DEBUGWRITE.
*INI_REC_OUT-DEBUGLIMIT = INI_REC_IN-DEBUGLIMIT.
*INI_REC_OUT-MAXDATE = '20451215'.
**ini_rec_out-debugwrite = '0'.
**ini_rec_out-debuglimit = '98765'.
*
*INI_REC_OUT-MSG =
'File invnum.ini LastDate(8) MaxDate(8) Debugwrite(2) Limit(8) '.
*INI_REC_OUT-LASTDATE = SYST-DATUM - 2.
*BEIGN ECC5.O DEVK900351.
CHANGES MADE " ENCODING DEFAULT ADDED".
*OPEN DATASET FILE2 FOR OUTPUT IN TEXT MODE.
OPEN DATASET FILE2 FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
OPEN DATASET FILE2 FOR INPUT IN TEXT MODE encoding DEFAULT. "SREERAM
READ: DATASET FILE2 INTO INI_REC_IN.
IF SY-SUBRC <> 0.
WRITE: / 'error opening', FILE2, 'for output error:', SY-SUBRC.
exit.
ENDIF.
INI_REC_OUT-MAXDATE = INI_REC_IN-MAXDATE.
INI_REC_OUT-DEBUGWRITE = INI_REC_IN-DEBUGWRITE.
INI_REC_OUT-DEBUGLIMIT = INI_REC_IN-DEBUGLIMIT.
INI_REC_OUT-MAXDATE = '20451215'.
*ini_rec_out-debugwrite = '0'.
*ini_rec_out-debuglimit = '98765'.
INI_REC_OUT-MSG =
'File invnum.ini LastDate(8) MaxDate(8) Debugwrite(2) Limit(8) '.
INI_REC_OUT-LASTDATE = SYST-DATUM - 2.
CLOSE DATASET FILE2. "SREERAM
*END OF DEVK900351.
*OPEN DATASET FILE2 FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
OPEN DATASET FILE2 FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
IF SY-SUBRC <> 0 AND SY-SUBRC <> 4.
WRITE: / 'error opening file2 for output error:', SY-SUBRC.
EXIT.
ENDIF.
TRANSFER INI_REC_OUT TO FILE2.
LASTDATE = INI_REC_IN-LASTDATE.
MAXDATE = INI_REC_IN-MAXDATE.
DEBUGWRITE = INI_REC_IN-DEBUGWRITE.
DEBUGLIMIT = INI_REC_IN-DEBUGLIMIT.
*CLOSE DATASET FILE2.
IF DEBUGWRITE GT 0.
WRITE : / ' Header Output file:', FILE1.
WRITE : / 'File with last export date:', FILE2.
WRITE: / 'Invoices created-modified from', LASTDATE,
'to', MAXDATE, 'will export'.
WRITE: / 'DebugLimit =', DEBUGLIMIT LEFT-JUSTIFIED
,' DebugWrite =', DEBUGWRITE LEFT-JUSTIFIED.
WRITE: AT /1(3) SYST-SYSID,
AT 8 SYST-MANDT, ' Program', SYST-REPID,
' Exported Client#', CLIENT,' host', SYST-HOST.
ENDIF.
REFRESH: XVBRK. CLEAR: XVBRK.
main loop through vbrk - load internal structure xvbrk
SELECT VBELN FKART FKTYP WAERK VKORG FKDAT ERNAM VTWEG FKART_RL
NETWR KUNRG KUNAG SPART XBLNR BSTNK_VF
INTO CORRESPONDING FIELDS OF VBRK FROM VBRK
WHERE: ( ( ERDAT GE LASTDATE AND ERDAT LE MAXDATE ) "create date
OR
( AEDAT GE LASTDATE AND AEDAT LE MAXDATE ) "changed on date
).
( erdat ge lastdate or "create date
aedat ge lastdate ) and "changed on date
( erdat le maxdate or aedat le maxdate )
MOVE VBRK TO XVBRK. APPEND XVBRK.
ENDSELECT.
LOOP AT XVBRK.
COUNTINV = COUNTINV + 1.
IF DEBUGWRITE GT 1.
WRITE: / COUNTINV,XVBRK-VBELN, XVBRK-FKDAT, XVBRK-ERNAM,
XVBRK-FKART.
ENDIF.
REFRESH XVBFA. CLEAR XVBFA.
SELECT VBELV POSNV VBTYP_N VBTYP_V ERDAT ERZET AEDAT
INTO CORRESPONDING FIELDS OF VBFA FROM VBFA
WHERE: VBELN = XVBRK-VBELN ORDER BY VBELV.
MOVE VBFA TO XVBFA. APPEND XVBFA.
ENDSELECT.
ORDER = ' '. ORDRCURRINVC = 0. OLDVBELV = 'xxx'.
OPEN DATASET FILE1 FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
LOOP AT XVBFA.
IF XVBFA-VBELV <> OLDVBELV
C - Order G - Contract H - Return
K - CM Request M - Invoice N - Cancel Doc
O - Crdt Memo P - Dbt Memo S - CM Cancel
B - Quotation
btyp_n = subsequent document
AND ( XVBFA-VBTYP_N = 'C' OR XVBFA-VBTYP_N = 'G' OR
XVBFA-VBTYP_N = 'H' OR XVBFA-VBTYP_N = 'K' OR
XVBFA-VBTYP_N = 'M' OR XVBFA-VBTYP_N = 'N' OR
XVBFA-VBTYP_N = 'O' OR XVBFA-VBTYP_N = 'P' OR
XVBFA-VBTYP_N = 'S' )
vbtyp_v = preceeding document
AND
( XVBFA-VBTYP_V = 'C' OR XVBFA-VBTYP_V = 'G' OR
XVBFA-VBTYP_V = 'H' OR XVBFA-VBTYP_V = 'K' OR
XVBFA-VBTYP_V = 'M' OR XVBFA-VBTYP_V = 'N' OR
XVBFA-VBTYP_V = 'O' OR XVBFA-VBTYP_V = 'P' OR
XVBFA-VBTYP_V = 'S' OR XVBFA-VBTYP_V = 'L' ).
.
ORDER = XVBFA-VBELV. OLDVBELV = XVBFA-VBELV.
PERFORM MOVE_INVC_DATA.
TRANSFER HDR_REC TO FILE1.
ORDRCURRINVC = ORDRCURRINVC + 1.
IF DEBUGWRITE GT 1. WRITE: XVBFA-VBELV. ENDIF.
ENDIF.
ENDLOOP.
IF ORDRCURRINVC EQ 0. CNTZEROORD = CNTZEROORD + 1.
ORDER = ' '.
PERFORM MOVE_INVC_DATA.
TRANSFER HDR_REC TO FILE1.
ENDIF.
IF ORDRCURRINVC EQ 1. CNTONLYONE = CNTONLYONE + 1. ENDIF.
IF ORDRCURRINVC GT 1. CNTOVERONE = CNTOVERONE + 1. ENDIF.
IF COUNTINV GE DEBUGLIMIT. EXIT. ENDIF.
COMMIT WORK.
ENDLOOP. " loop through xvbrk
*CLOSE DATASET FILE1.
*
Get Quote into Order/Contract Numbers
*
REFRESH XVBFA. CLEAR XVBFA. REFRESH: XVBRK. CLEAR: XVBRK.
SELECT VBELV VBELN POSNV ERDAT VBTYP_N VBTYP_V ERDAT ERZET AEDAT
INTO CORRESPONDING FIELDS
OF VBFA FROM VBFA
WHERE: ( ( ERDAT GE LASTDATE AND ERDAT LE MAXDATE ) "create date
OR
( AEDAT GE LASTDATE AND AEDAT LE MAXDATE ) "changed on date
) AND VBTYP_V = 'B'
AND ( VBTYP_N = 'C' OR VBTYP_N = 'G' ).
MOVE VBFA TO XVBFA. APPEND XVBFA.
ENDSELECT.
ORDER = ' '. ORDRCURRINVC = 0. OLDVBELV = 'xxx'.
*OPEN DATASET FILE1 FOR INPUT IN TEXT MODE ENCODING DEFAULT.
LOOP AT XVBFA.
IF XVBFA-VBELV <> OLDVBELV.
ORDER = XVBFA-VBELV. OLDVBELV = XVBFA-VBELV.
PERFORM MOVE_QUOTE_DATA.
TRANSFER HDR_REC TO FILE1.
ORDRCURRINVC = ORDRCURRINVC + 1.
IF DEBUGWRITE GT 1. WRITE: XVBFA-VBELV. ENDIF.
ENDIF.
ENDLOOP.
Summary information
IF DEBUGWRITE GT 0.
WRITE: /, / 'Done - Started', STARTDATE, STARTTIME.
WRITE: / ' Finished', SYST-DATUM, SYST-UZEIT.
WRITE: / 'invoices', COUNTINV, ' one order', CNTONLYONE,
' > one order', CNTOVERONE.
ENDIF.
CLOSE DATASET FILE1.
******************************************************
S U B R O U T I N E S ****
******************************************************
FORM MOVE_INVC_DATA.
MOVE: SYST-SYSID TO HDR_REC-SYSID,
CLIENT TO HDR_REC-MANDT,
XVBRK-VBELN TO HDR_REC-INVNO,
ORDER TO HDR_REC-VBELN,
XVBRK-FKDAT TO HDR_REC-AUDAT,
XVBRK-FKART_RL TO HDR_REC-AUART, "Document type
XVBRK-BSTNK_VF TO HDR_REC-BSTNK, " PO number
XVBRK-ERNAM TO HDR_REC-ERNAM,
XVBRK-NETWR TO HDR_REC-NETWR,
XVBRK-WAERK TO HDR_REC-WAERK,
XVBRK-VKORG TO HDR_REC-VKORG, " Sales Organization
XVBRK-VTWEG TO HDR_REC-VTWEG, " Distribution channel
XVBRK-SPART TO HDR_REC-SPART, " sales division
XVBRK-FKART TO HDR_REC-FKARA, " billing type
XVBFA-VBTYP_N TO HDR_REC-SUBSEQ, " subsequent doc
XVBFA-VBTYP_V TO HDR_REC-PRECED, " preceding doc
'Z' TO HDR_REC-FILLER,
XVBFA-ERDAT TO HDR_REC-ERDAT,
XVBFA-ERZET TO HDR_REC-ERZET,
XVBFA-AEDAT TO HDR_REC-AEDAT,
'Z' TO HDR_REC-FILLR2 .
.
ENDFORM.
FORM MOVE_QUOTE_DATA.
CLEAR HDR_REC.
MOVE: SYST-SYSID TO HDR_REC-SYSID,
CLIENT TO HDR_REC-MANDT,
XVBFA-VBELN TO HDR_REC-INVNO,
ORDER TO HDR_REC-VBELN,
XVBFA-ERDAT TO HDR_REC-AUDAT,
XVBFA-VBTYP_N TO HDR_REC-AUART, "Document type
xvbrk-bstnk_vf to hdr_rec-bstnk, " PO number
xvbrk-ernam to hdr_rec-ernam,
xvbrk-netwr to hdr_rec-netwr,
xvbrk-waerk to hdr_rec-waerk,
xvbrk-vkorg to hdr_rec-vkorg, " Sales Organization
xvbrk-vtweg to hdr_rec-vtweg, " Distribution channel
xvbrk-spart to hdr_rec-spart, " sales division
xvbrk-fkart to hdr_rec-fkara, " billing type
XVBFA-VBTYP_N TO HDR_REC-SUBSEQ, " subsequent doc
XVBFA-VBTYP_V TO HDR_REC-PRECED, " preceding doc
'Z' TO HDR_REC-FILLER,
XVBFA-ERDAT TO HDR_REC-ERDAT,
XVBFA-ERZET TO HDR_REC-ERZET,
XVBFA-AEDAT TO HDR_REC-AEDAT,
'Z' TO HDR_REC-FILLR2 .
ENDFORM.
‎2006 Sep 26 9:23 PM
‎2006 Sep 26 10:00 PM
Have you debugged this to see if you are selecting data or not?
Rob
‎2006 Sep 26 10:11 PM
the o/p i'm getting is
error opening
ord-sapdev\export\bcpsap\invnum.ini for output error: 4
‎2006 Sep 26 10:27 PM
I would guess that it doesn't like the two slashes at the beginning of the file name. I didn't see in the program where that is being populated. Can you tell me please?
Rob
‎2006 Sep 26 10:36 PM
it is in concatenate statement. the file file2 is present. there should be some mistake with open dataset and close dataset.
‎2006 Sep 26 10:37 PM
> the o/p i'm getting is
> error opening
ord-sapdev\export\bcpsap\invnum.ini
> for output error: 4
So, this mean your file path is not correct. Did you make sure that you are giving the correct filepath?
‎2006 Sep 26 10:48 PM
Yes - you:
CONCATENATE srvrpath file2 INTO file2.
But I don't see where srvpath is initialized.
Rob