Skip to content

Instantly share code, notes, and snippets.

@tfoldi
Created December 6, 2011 09:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tfoldi/1437535 to your computer and use it in GitHub Desktop.
Save tfoldi/1437535 to your computer and use it in GitHub Desktop.
KONV extract SAP Download
REPORT ZAL_ABAP message-id 26 line-size 255
no standard page heading.
* Y_XI_G00D_KONV_FASTFULL_2.
PARAMETER $PARAM1 TYPE I.
PARAMETER DOWNLOAD(1) DEFAULT 'N' lower case. "N-svr,Y-clnt
PARAMETER EXECMODE(1) DEFAULT 'B' lower case. "D-dlg,B-btch
PARAMETER OUT_DIR(48) DEFAULT "output file dir
'/dwacta/out/LD2' lower case.
PARAMETER IN_DIR(48) DEFAULT "input file dir
'/dwacta/out/LD2' lower case.
PARAMETER P_DF_VK(40) DEFAULT "ABAP data flow object key
'' lower case.
PARAMETER P_DI_GEN(40) DEFAULT "DI version that generated ABAP
'' lower case.
*** Machine generated ABAP. Do not modify. ***
*** © Copyright Business Objects S.A. All rights reserved. ***
*
* Date Time:
* 08/03/11 13:12:42
* SAP used for generated this ABAP:
* Release: 620
* Host : 3.117.244.56
*
* ABAP Dataflow Name:
* R3_ZKONV_FAST_FULL_LOAD
* ABAP program name in SAP:
* Y_XI_G00D_KONV_FASTFULL_2
* Generated ABAP file name:
* /data/abap/Y_XI_G00D_KONV_FASTFULL_2
TABLES KONV.
DATA: begin of ITAB2 occurs 0,
KNUMV(10) TYPE C,
KPOSN(6) TYPE N,
STUNR(3) TYPE N,
ZAEHK(2) TYPE N,
KSCHL(4) TYPE C,
KBETR(16) TYPE P DECIMALS 2,
KPEIN(16) TYPE P DECIMALS 0,
MWSK1(2) TYPE C,
KWERT(16) TYPE P DECIMALS 2,
KRECH(1) TYPE C,
WAERS(5) TYPE C,
KMEIN(3) TYPE C,
KAPPL(2) TYPE C,
KINAK(1) TYPE C,
CDHDR_UDATE(14) TYPE C,
SAP_ROW_COUNT TYPE I,
KAWRT(16) TYPE P DECIMALS 2,
KDATU TYPE D,
KGRPE(1) TYPE C,
KSTEU(1) TYPE C.
DATA: end of ITAB2.
data: append_flag(1) value ' ',
cntbuf type i,
delimleng type i.
CONSTANTS C_DF_VK(40) VALUE '22655'.
CONSTANTS C_DI_GEN(40) VALUE '12.2.0.0'.
DATA WARN_MSG(50).
start-of-selection.
PERFORM FORM2.
PERFORM FORM3.
FREE ITAB2.
end-of-selection.
CLEAR WARN_MSG.
IF NOT P_DF_VK IS INITIAL.
IF P_DF_VK <> C_DF_VK.
CONCATENATE '$$Warning$'
C_DF_VK
'$' INTO WARN_MSG.
ENDIF.
ENDIF.
IF NOT P_DI_GEN IS INITIAL.
IF P_DI_GEN <> C_DI_GEN.
IF WARN_MSG IS INITIAL.
CONCATENATE '$$Warning$$'
C_DI_GEN
INTO WARN_MSG.
ELSE.
CONCATENATE WARN_MSG
C_DI_GEN
INTO WARN_MSG.
ENDIF.
ENDIF.
ENDIF.
IF NOT WARN_MSG IS INITIAL.
IF EXECMODE = 'D'.
WRITE WARN_MSG.
NEW-LINE.
ELSE.
MESSAGE S000 with WARN_MSG.
ENDIF.
ENDIF.
write '* Program Complete *'.
write '© Copyright Business Objects S.A. All rights reserved.'.
FORM FORM2.
DATA ALTMP3113(10) TYPE C.
DATA ALTMP3114(6) TYPE N.
DATA ALTMP3115(3) TYPE N.
DATA ALTMP3116(2) TYPE N.
DATA ALTMP3117(4) TYPE C.
DATA ALTMP3118(16) TYPE P DECIMALS 2.
DATA ALTMP3119(16) TYPE P DECIMALS 0.
DATA ALTMP3120(2) TYPE C.
DATA ALTMP3121(16) TYPE P DECIMALS 2.
DATA ALTMP3122(1) TYPE C.
DATA ALTMP3123(5) TYPE C.
DATA ALTMP3124(3) TYPE C.
DATA ALTMP3125(2) TYPE C.
DATA ALTMP3126(1) TYPE C.
DATA ALTMP3127 TYPE D.
DATA ALTMP3128 TYPE T.
DATA ALTMP3129(512) TYPE C.
DATA ALTMP3130 TYPE I.
DATA ALTMP3131(16) TYPE P DECIMALS 2.
DATA ALTMP3132 TYPE D.
DATA ALTMP3133(1) TYPE C.
DATA ALTMP3134(1) TYPE C.
ALTMP3127 = sy-datum.
ALTMP3128 = sy-uzeit.
concatenate ALTMP3127 ALTMP3128 into ALTMP3129.
ALTMP3130 = $PARAM1.
SELECT
KNUMV
KPOSN
STUNR
ZAEHK
KSCHL
KBETR
KPEIN
MWSK1
KWERT
KRECH
WAERS
KMEIN
KAPPL
KINAK
KAWRT
KDATU
KGRPE
KSTEU
INTO CORRESPONDING FIELDS OF KONV
FROM KONV
WHERE KSCHL IN ('ZACA',
'ZACP',
'ZASA',
'ZASP',
'ZBCA',
'ZBCP',
'ZBSA',
'ZBSP',
'ZCCA',
'ZCCP',
'ZCSA',
'ZCSP',
'ZGCA',
'ZGCP',
'ZGSA',
'ZGSP',
'ZJCA',
'ZJCP',
'ZJSA',
'ZJSP',
'ZNSA',
'ZNSP',
'ZPCA',
'ZPCP',
'ZPSA',
'ZPSP',
'ZFRE',
'HD00',
'ZSCL',
'ZSIN',
'ZSPL',
'ZETD',
'ZEKL',
'ZEDF',
'ZELF',
'ZNCP',
'ZNSA',
'ZNSP',
'SKTO',
'VPRS',
'MWST',
'ZMWL',
'ZMWF',
'ZML3',
'ZMLT',
'ZMOV').
ALTMP3113 = KONV-KNUMV.
ALTMP3114 = KONV-KPOSN.
ALTMP3115 = KONV-STUNR.
ALTMP3116 = KONV-ZAEHK.
ALTMP3117 = KONV-KSCHL.
ALTMP3118 = KONV-KBETR.
ALTMP3119 = KONV-KPEIN.
ALTMP3120 = KONV-MWSK1.
ALTMP3121 = KONV-KWERT.
ALTMP3122 = KONV-KRECH.
ALTMP3123 = KONV-WAERS.
ALTMP3124 = KONV-KMEIN.
ALTMP3125 = KONV-KAPPL.
ALTMP3126 = KONV-KINAK.
ALTMP3131 = KONV-KAWRT.
ALTMP3132 = KONV-KDATU.
ALTMP3133 = KONV-KGRPE.
ALTMP3134 = KONV-KSTEU.
move ALTMP3113 to ITAB2-KNUMV.
move ALTMP3114 to ITAB2-KPOSN.
move ALTMP3115 to ITAB2-STUNR.
move ALTMP3116 to ITAB2-ZAEHK.
move ALTMP3117 to ITAB2-KSCHL.
move ALTMP3118 to ITAB2-KBETR.
move ALTMP3119 to ITAB2-KPEIN.
move ALTMP3120 to ITAB2-MWSK1.
move ALTMP3121 to ITAB2-KWERT.
move ALTMP3122 to ITAB2-KRECH.
move ALTMP3123 to ITAB2-WAERS.
move ALTMP3124 to ITAB2-KMEIN.
move ALTMP3125 to ITAB2-KAPPL.
move ALTMP3126 to ITAB2-KINAK.
move ALTMP3129 to ITAB2-CDHDR_UDATE.
move ALTMP3130 to ITAB2-SAP_ROW_COUNT.
move ALTMP3131 to ITAB2-KAWRT.
move ALTMP3132 to ITAB2-KDATU.
move ALTMP3133 to ITAB2-KGRPE.
move ALTMP3134 to ITAB2-KSTEU.
append ITAB2.
cntbuf = cntbuf + 1.
if download = 'N'.
if cntbuf > 5000.
perform FORM3.
clear cntbuf.
refresh ITAB2.
append_flag = 'A'.
endif.
endif.
ENDSELECT.
ENDFORM.
FORM FORM3.
data: outfile(128), ldfile(50).
ldfile = 'ZKONVF'.
concatenate out_dir ldfile into outfile
separated by '/'.
data dlmtlen type i value '1'.
data xdlmtlen type i value '1'.
data:
ht(1) type c,
xht(1) type x,
conv type ref to cl_abap_conv_in_ce.
xht = '7F'.
conv = cl_abap_conv_in_ce=>create(
encoding = '1100'
input = xht
).
call method conv->read(
exporting n = xdlmtlen
importing data = ht
len = dlmtlen
).
data return_code type i.
perform write_delimited_file
tables ITAB2
using outfile
append_flag
ht
dlmtlen
download
changing return_code.
case return_code.
when 1.
IF EXECMODE = 'D'.
WRITE: /5 'No line selected'.
ELSE.
MESSAGE E098.
ENDIF.
when 2.
IF EXECMODE = 'D'.
WRITE: /5 'Open File Error -- ', 25 OUTFILE.
ELSE.
MESSAGE E107 WITH OUTFILE.
ENDIF.
when 3.
IF EXECMODE = 'D'.
WRITE: /5 'Data exceed length limit (8192) '.
ELSE.
MESSAGE E000 WITH
'Data exceed length limit (8192) '.
ENDIF.
when 4.
IF EXECMODE = 'D'.
WRITE: /5 'Call function WS_DOWNLOAD error'.
ELSE.
MESSAGE E000 WITH
'Call function WS_DOWNLOAD error'.
ENDIF.
endcase.
ENDFORM.
FORM SUBSTRING USING SRC BEG LEN CHANGING RET.
DATA: VA1 TYPE I.
DATA: VA2 TYPE I.
DATA: VA3 TYPE I.
VA3 = STRLEN( SRC ).
IF BEG = 0. VA1 = 0.
ELSE.
IF BEG < 0.
VA1 = VA3 + BEG.
IF VA1 < 0. VA1 = 0.
ENDIF.
ELSE. VA1 = BEG - 1.
ENDIF.
ENDIF.
IF LEN < 0. VA2 = 0.
ELSE. VA2 = VA3 - VA1.
ENDIF.
IF VA2 > LEN. VA2 = LEN.
ENDIF.
IF VA2 < 1. MOVE '' TO RET.
ELSE. MOVE SRC+VA1(VA2) TO RET.
ENDIF.
ENDFORM.
form write_delimited_file
tables datatab
using file
append
delimit
dlength
dwnload
changing rc.
data: type1,
appd(1),
temp(32),
time1(8),
date1(10),
output(8192),
rcount type i,
offset type i,
tablen type i,
maxlen type i value '8192'.
data: begin of clientab occurs 0,
output(8192),
end of clientab.
field-symbols: <f>.
field-symbols <delim1>.
data delim2(16).
data l_filename type string.
appd = append.
if appd is not initial.
appd = 'X'.
endif.
move file to l_filename.
describe table datatab lines tablen.
if dwnload = 'Y'.
clear clientab. refresh clientab.
rcount = 0.
else.
if appd = space.
open dataset file for output in text mode ENCODING DEFAULT.
else.
open dataset file for appending in text mode ENCODING DEFAULT.
endif.
if sy-subrc <> 0.
rc = 2. exit.
endif.
endif.
loop at datatab.
clear: tablen, offset, output.
do.
assign component sy-index of
structure datatab to <f>.
if sy-subrc <> 0. exit. endif.
if sy-index > 1.
assign delimit(dlength) TO <delim1> CASTING TYPE C.
delim2 = <delim1>.
write delim2(dlength) to output+offset(dlength).
add dlength to offset.
endif.
describe field <f> type type1.
if type1 = 'I' or type1 = 'N'.
type1 = 'P'.
endif.
case type1.
when 'D'.
if <f> = '00000000'.
<f> = ' '.
else.
move <f> to time1.
assign time1 to <f>.
endif.
when 'F'.
if <f> = '0.0'.
temp = '0.0'.
else.
write <f> to temp exponent 0.
endif.
condense temp no-gaps.
translate temp using ',.'.
assign temp to <f>.
when 'P'.
if <f> < 0.
write '-' to output+offset(1).
add 1 to offset.
<f> = <f> * ( -1 ).
endif.
move <f> to temp.
condense temp no-gaps.
translate temp using ',.'.
assign temp to <f>.
endcase.
sy-fdpos = strlen( <f> ).
tablen = offset + sy-fdpos.
if tablen > maxlen.
rc = 3. exit.
endif.
write <f> to output+offset(sy-fdpos).
add sy-fdpos to offset.
enddo.
if dwnload = 'Y'.
clientab-output = output.
append clientab.
rcount = rcount + 1.
if rcount >= 50.
SY-BATCH = SPACE.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
FILENAME = l_filename
FILETYPE = 'ASC'
APPEND = appd
WRITE_FIELD_SEPARATOR = 'X'
* IMPORTING
* FILELENGTH =
TABLES
DATA_TAB = clientab
EXCEPTIONS
OTHERS = 1.
if sy-subrc <> 0.
rc = 4.
endif.
clear clientab. refresh clientab.
rcount = 0. appd = 'A'.
endif.
else.
transfer output to file.
endif.
endloop.
if dwnload = 'Y'.
SY-BATCH = SPACE.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
FILENAME = l_filename
FILETYPE = 'ASC'
APPEND = appd
WRITE_FIELD_SEPARATOR = 'X'
* IMPORTING
* FILELENGTH =
TABLES
DATA_TAB = clientab
EXCEPTIONS
OTHERS = 1.
if sy-subrc <> 0.
rc = 4.
endif.
else.
close dataset file.
endif.
endform.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment