‎2008 Nov 01 6:49 AM
REPORT zcbdc_f02_n5
NO STANDARD PAGE HEADING LINE-SIZE 255.
DATA : BEGIN OF itab3 OCCURS 0,
bldat(010) TYPE c,
budat(010) TYPE c,
blart(002) TYPE c,
monat(002) TYPE c,
waers(003) TYPE c,
xblnr(016) TYPE c,
newbs(002) TYPE c,
newko(017) TYPE c,
wrbtr1(013) TYPE c,
bupla(004) TYPE c,
zuonr(018) TYPE c,
sgtxt(050) TYPE c,
newbs1(002) TYPE c,
newko1(017) TYPE c,
gsber1(006) TYPE c,
wrbtr2(013) TYPE c,
newbs2(002) TYPE c,
newko2(017) TYPE c,
gsber2(006) TYPE c,
wrbtr3(013) TYPE c,
newbs3(002) TYPE c,
newko3(017) TYPE c,
gsber3(006) TYPE c,
wrbtr4(013) TYPE c,
newbs4(002) TYPE c,
newko4(017) TYPE c,
gsber4(006) TYPE c,
wrbtr5(013) TYPE c,
newbs5(002) TYPE c,
newko5(017) TYPE c,
gsber5(006) TYPE c,
wrbtr6(013) TYPE c,
newbs6(002) TYPE c,
newko6(017) TYPE c,
gsber6(006) TYPE c,
name1(035) TYPE c,
name2(035) TYPE c,
name3(035) TYPE c,
ort01(035) TYPE c,
land1(003) TYPE c,
banks(003) TYPE c,
wrbtr7(013) TYPE c,
gsber7(006) TYPE c,
END OF itab3.
DATA : bdcdata LIKE bdcdata OCCURS 1 WITH HEADER LINE.
DATA : count(02) TYPE c,
count1(02) TYPE c,
text(013) TYPE c,
text1(013) TYPE c,
text3(013) TYPE c,
text4(013) TYPE c.
FIELD-SYMBOLS : <f1>,
<f2>,
<f3>,
<f4>.
START-OF-SELECTION.
PERFORM upload.
LOOP AT itab3.
REFRESH: bdcdata.
CLEAR : bdcdata.
CLEAR : count, count1.
PERFORM bdc_dynpro USING 'SAPMF05A' '0100'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RF05A-NEWKO'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BKPF-BLDAT'
itab3-bldat.
PERFORM bdc_field USING 'BKPF-BLART'
itab3-blart.
PERFORM bdc_field USING 'BKPF-BUKRS'
'1800'.
PERFORM bdc_field USING 'BKPF-BUDAT'
itab3-budat.
PERFORM bdc_field USING 'BKPF-MONAT'
itab3-monat.
PERFORM bdc_field USING 'BKPF-WAERS'
itab3-waers.
PERFORM bdc_field USING 'BKPF-XBLNR'
itab3-xblnr.
PERFORM bdc_field USING 'FS006-DOCID'
'*'.
PERFORM bdc_field USING 'RF05A-NEWBS'
itab3-newbs.
PERFORM bdc_field USING 'RF05A-NEWKO'
itab3-newko.
IF itab3-newbs IS NOT INITIAL.
count = 1.
IF itab3-newbs1 EQ itab3-newbs AND itab3-newbs1 IS NOT INITIAL.
count = count + 1.
IF itab3-newbs2 EQ itab3-newbs1 AND itab3-newbs2 IS NOT
INITIAL.
count = count + 1.
IF itab3-newbs3 EQ itab3-newbs2 AND itab3-newbs3 IS NOT
INITIAL.
count = count + 1.
IF itab3-newbs4 EQ itab3-newbs3 AND itab3-newbs4 IS NOT
INITIAL.
count = count + 1.
IF itab3-newbs5 EQ itab3-newbs4 AND itab3-newbs5 IS NOT
INITIAL.
count = count + 1.
IF itab3-newbs6 EQ itab3-newbs5 AND itab3-newbs6 IS NOT
INITIAL.
count = count + 1.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
DO count TIMES.
count1 = count1 + 1.
PERFORM bdc_dynpro USING 'SAPMF05A' '0300'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RF05A-NEWKO'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
CONCATENATE 'itab3-wrbtr' count1 INTO text.
ASSIGN (text) TO <f1>.
PERFORM bdc_field USING 'BSEG-WRBTR'
<f1>.
CLEAR text.
PERFORM bdc_field USING 'BSEG-BUPLA'
'1800'.
PERFORM bdc_field USING 'BSEG-ZUONR'
itab3-zuonr.
PERFORM bdc_field USING 'BSEG-SGTXT'
itab3-sgtxt.
CONCATENATE 'itab3-NEWBS' count1 INTO text3.
ASSIGN (text3) TO <f3>.
IF <f3> IS NOT INITIAL.
PERFORM bdc_field USING 'RF05A-NEWBS'
<f3>.
CLEAR text3.
ELSE.
MOVE itab3-newbs6 TO <f3>.
PERFORM bdc_field USING 'RF05A-NEWBS'
<f3>.
CLEAR text3.
ENDIF.
CONCATENATE 'itab3-NEWKO' count1 INTO text4.
ASSIGN (text4) TO <f4>.
IF <f4> IS NOT INITIAL.
PERFORM bdc_field USING 'RF05A-NEWKO'
<f4>.
CLEAR text4.
ELSE.
MOVE itab3-newko6 TO <f4>.
PERFORM bdc_field USING 'RF05A-NEWKO'
<f4>.
CLEAR text4.
ENDIF.
PERFORM bdc_field USING 'DKACB-FMORE'
'X'.
PERFORM bdc_dynpro USING 'SAPLKACB' '0002'.
PERFORM bdc_field USING 'BDC_CURSOR'
'COBL-GSBER'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTE'.
CONCATENATE 'itab3-gsber' count1 INTO text1.
ASSIGN (text1) TO <f2>.
IF <f2> IS NOT INITIAL.
PERFORM bdc_field USING 'COBL-GSBER'
<f2>.
CLEAR text1.
ELSE.
MOVE itab3-gsber6 TO <f2>.
PERFORM bdc_field USING 'COBL-GSBER'
<f2>.
ENDIF.
ENDDO.
PERFORM bdc_dynpro USING 'SAPLFCPD' '0100'.
PERFORM bdc_field USING 'BDC_CURSOR'
'BSEC-ORT01'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BSEC-NAME1'
itab3-name1.
PERFORM bdc_field USING 'BSEC-NAME2'
itab3-name2.
PERFORM bdc_field USING 'BSEC-NAME3'
itab3-name3.
PERFORM bdc_field USING 'BSEC-ORT01'
itab3-ort01.
PERFORM bdc_field USING 'BSEC-LAND1'
itab3-land1.
PERFORM bdc_field USING 'BSEC-BANKS'
itab3-banks.
PERFORM bdc_dynpro USING 'SAPMF05A' '0302'.
PERFORM bdc_field USING 'BDC_CURSOR'
'BSEG-SGTXT'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BSEG-WRBTR'
itab3-wrbtr7.
PERFORM bdc_field USING 'BSEG-MWSKZ'
'**'.
PERFORM bdc_field USING 'BSEG-BUPLA'
'1800'.
PERFORM bdc_field USING 'BSEG-GSBER'
itab3-gsber7.
PERFORM bdc_field USING 'BSEG-ZUONR'
itab3-zuonr.
PERFORM bdc_field USING 'BSEG-SGTXT'
itab3-sgtxt.
PERFORM bdc_dynpro USING 'SAPLFCPD' '0100'.
PERFORM bdc_field USING 'BDC_CURSOR'
'BSEC-ANRED'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BSEC-NAME1'
itab3-name1.
PERFORM bdc_field USING 'BSEC-NAME2'
itab3-name2.
PERFORM bdc_field USING 'BSEC-NAME3'
itab3-name3.
PERFORM bdc_field USING 'BSEC-ORT01'
itab3-ort01.
PERFORM bdc_field USING 'BSEC-LAND1'
itab3-land1.
PERFORM bdc_field USING 'BSEC-BANKS'
itab3-banks.
PERFORM bdc_dynpro USING 'SAPMF05A' '0302'.
PERFORM bdc_field USING 'BDC_CURSOR'
'BSEG-WRBTR4'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=AB'.
PERFORM bdc_field USING 'BSEG-WRBTR'
itab3-wrbtr7.
PERFORM bdc_field USING 'BSEG-MWSKZ'
'**'.
PERFORM bdc_field USING 'BSEG-BUPLA'
'1800'.
PERFORM bdc_field USING 'BSEG-GSBER'
itab3-gsber7.
PERFORM bdc_field USING 'BSEG-ZUONR'
itab3-zuonr.
PERFORM bdc_field USING 'BSEG-SGTXT'
itab3-sgtxt.
PERFORM bdc_dynpro USING 'SAPMF05A' '0700'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RF05A-NEWBS'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=BU'.
CALL TRANSACTION 'F-02' USING bdcdata MODE 'A'.
ENDLOOP.
&----
*& Form upload
&----
text
----
--> p1 text
<-- p2 text
----
FORM upload .
CALL FUNCTION 'UPLOAD'
EXPORTING
CODEPAGE = ' '
filename = 'c:\'
filetype = 'DAT'
ITEM = ' '
FILEMASK_MASK = ' '
FILEMASK_TEXT = ' '
FILETYPE_NO_CHANGE = ' '
FILEMASK_ALL = ' '
FILETYPE_NO_SHOW = ' '
LINE_EXIT = ' '
USER_FORM = ' '
USER_PROG = ' '
SILENT = 'S'
IMPORTING
FILESIZE =
CANCEL =
ACT_FILENAME =
ACT_FILETYPE =
TABLES
data_tab = itab3
EXCEPTIONS
CONVERSION_ERROR = 1
INVALID_TABLE_WIDTH = 2
INVALID_TYPE = 3
NO_BATCH = 4
UNKNOWN_ERROR = 5
GUI_REFUSE_FILETRANSFER = 6
OTHERS = 7
.
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. " upload
*&----
*
*& Form bdc_dynpro
*&----
*
text
*----
*
-->P_0015 text
-->P_0016 text
*----
*
FORM bdc_dynpro USING program dynpro.
CLEAR bdcdata.
bdcdata-program = program.
bdcdata-dynpro = dynpro.
bdcdata-dynbegin = 'X'.
APPEND bdcdata.
CLEAR bdcdata.
ENDFORM. " bdc_dynpro
*&----
*
*& Form bdc_field
*&----
*
text
*----
*
-->P_0740 text
-->P_0741 text
*----
*
FORM bdc_field USING fnam fval.
CLEAR bdcdata.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
APPEND bdcdata.
CLEAR bdcdata.
ENDFORM. "bdc_field
This is the Bdc i developed for f-02 but for this program my flat file should be in one line (header and item).now i want header should appear once and based on the debit/ credit the line items must run .my flat file should be in multiple rows
‎2008 Nov 01 6:55 AM
use control break statement
on change <header value>
endon.
at end
endat.