2007 Feb 25 10:10 AM
REPORT zgl_rept_automaticclearing_e_3
LINE-COUNT 64(1)
LINE-SIZE 260
NO STANDARD PAGE HEADING.
TYPES: BEGIN OF t_bsis,
bldat LIKE bsis-bldat,
budat LIKE bsis-budat,
bukrs LIKE bsis-bukrs,
waers LIKE bsis-waers,
monat LIKE bsis-monat,
blart LIKE bsis-blart,
hkont LIKE bsis-hkont,
belnr LIKE bsis-belnr,
bschl LIKE bsis-bschl,
wrbtr LIKE bsis-wrbtr,
pswbt LIKE bsis-pswbt,
valut LIKE bsis-valut,
END OF t_bsis.
Internal table declaration.
DATA: it_bsis TYPE TABLE OF t_bsis INITIAL SIZE 0 WITH HEADER LINE.
DATA: BEGIN OF it_docno OCCURS 0,
belnr LIKE bsis-belnr,
END OF it_docno.
DATA: BEGIN OF it_bseg OCCURS 0,
belnr LIKE bseg-belnr,
augbl LIKE bseg-augbl,
augdt LIKE bseg-augdt,
valut LIKE bseg-valut,
pswbt LIKE bseg-pswbt,
wrbtr LIKE bseg-wrbtr,
bschl LIKE bseg-bschl,
END OF it_bseg.
DATA: BEGIN OF it_final OCCURS 0,
blart LIKE bsis-blart,
budat LIKE bsis-budat,
bldat LIKE bsis-bldat,
AMT(20),
belnr LIKE bseg-belnr,
augdt LIKE bseg-augdt,
augbl LIKE bseg-augbl,
valut LIKE bsis-valut,
END OF it_final.
data: begin of it_ermsg occurs 0,
belnr like bsis-belnr,
ertxt(120),
end of it_ermsg.
DATA: bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE,
it_bdcmsgcoll LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.
varible decalration
data: v_ertxt(120),
V_AMT(20).
Selection-screen
PARAMETERS: p_bukrs LIKE bsis-bukrs DEFAULT '3100',
p_hkont LIKE bsis-hkont DEFAULT '101046',
p_cacno LIKE bsis-hkont DEFAULT '101047',
p_bldat LIKE bsis-bldat .
INITIALIZATION.
DATA: v_end_date LIKE sy-datum.
CALL FUNCTION 'LAST_DAY_OF_MONTHS'
EXPORTING
day_in = sy-datum
IMPORTING
last_day_of_month = v_end_date
EXCEPTIONS
day_in_no_date = 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.
p_bldat = v_end_date.
START-OF-SELECTION.
*DATA: V_AMT LIKE TCURC-waers VALUE 'USD'.
*WRITE itab-curr CURRENCY v_waers.
SELECT bldat
budat
bukrs
waers
monat
blart
hkont
belnr
bschl
pswbt
wrbtr
valut
FROM bsis
INTO TABLE it_bsis
WHERE bukrs EQ p_bukrs
AND hkont EQ p_hkont.
AND valut GE p_bldat.
delete it_bsis where belnr ='4200000072'.
*
IF NOT it_bsis[] IS INITIAL.
LOOP AT it_bsis.
PERFORM fill_screen_data.
CALL TRANSACTION 'F-04' USING bdcdata MODE 'N' UPDATE 'S'
MESSAGES INTO it_bdcmsgcoll.
IF sy-subrc EQ 0.
it_docno-belnr = it_bsis-belnr.
APPEND it_docno.
CLEAR it_docno.
ELSE.
perform error_msg_text.
it_ermsg-belnr = it_bsis-belnr.
it_ermsg-ertxt = v_ertxt.
append it_ermsg.
clear: it_ermsg, it_bdcmsgcoll.
endif.
REFRESH bdcdata.
CLEAR BDCDATA.
CLEAR it_bsis.
ENDLOOP.
ENDIF.
*SORT it_docno BY belnr.
*
IF NOT it_docno[] IS INITIAL.
SELECT belnr
augbl
augdt
valut
pswbt
wrbtr
bschl
INTO TABLE it_bseg
FROM bseg
FOR ALL ENTRIES IN it_docno
WHERE BELNR EQ it_docno-belnr.
*
ENDIF.
*
SORT it_bsis BY belnr.
SORT it_bseg BY BELNR.
*
IF NOT it_bseg[] IS INITIAL.
DELETE IT_BSEG WHERE BSCHL <> 40 AND BSCHL <> 50 OR WRBTR = 0.
LOOP AT it_bseg.
READ TABLE it_bsis WITH KEY belnr = it_bseg-BELNR.
IF IT_BSEG-BSCHL = 25.
V_AMT = IT_BSEG-WRBTR.
CONCATENATE V_AMT '-' INTO V_AMT.
ELSEIF IT_BSEG-BSCHL = 50.
V_AMT = IT_BSEG-WRBTR.
ENDIF.
IT_FINAL-BLART = IT_BSIS-BLART.
IT_FINAL-BUDAT = IT_BSIS-BUDAT.
IT_FINAL-BLDAT = IT_BSIS-BLDAT.
IT_FINAL-AMT = V_AMT.
IT_FINAL-BELNR = IT_BSis-BELNR.
IT_FINAL-AUGDT = IT_BSEG-AUGDT.
IT_FINAL-AUGBL = IT_BSEG-AUGBL.
IT_FINAL-VALUT = IT_BSIS-VALUT.
APPEND IT_FINAL.
CLEAR IT_FINAL.
ENDLOOP.
ENDIF.
top-of-page.
write : /1 'G/L Account No.', p_hkont.
write : /1 'Company Code ' , p_bukrs.
skip 2.
write :/3'DocumentType', 18 'posted on', 31'Document Date',
51 'amount', 66'DocumentNo',79 'clearing Date',
97 'clearingDocumentnumber',123 'Value date'.
end-of-selection.
IF NOT IT_FINAL[] IS INITIAL.
LOOP AT IT_FINAL.
WRITE:/7 IT_FINAL-BLART, 18 IT_FINAL-BUDAT, 31 IT_FINAL-BLDAT, 41 IT_FINAL-AMT, 66 IT_FINAL-BELNR, 82 IT_FINAL-AUGDT, 101 IT_FINAL-AUGBL,123 IT_FINAL-VALUT.
ENDLOOP.
ENDIF.
if not it_ermsg[] is initial.
loop at it_ermsg.
write:/ it_ermsg-belnr, IT_ERMSG-ERTXT.
endloop.
endif.
&----
*& Form fill_screen_data
&----
text
----
FORM fill_screen_data .
DATA: l_dat1(8),
l_dat2(8),
l_dat3(8),
s1(2),
s2(2),
s3(4).
clear v_amt.
DATA : p_amt TYPE p DECIMALS 2,
v_amt(15).
p_amt = it_bsis-wrbtr.
clear v_amt.
v_amt = p_amt.
REPLACE '.' IN v_amt WITH space.
CONDENSE v_amt.
DATA : p_amt TYPE p DECIMALS 2,
v_amt(15).
*
p_amt = it_bsis-wrbtr.
v_amt = p_amt.
*
SEARCH v_amt FOR '.'.
IF sy-subrc EQ 0.
CLEAR v_amt+sy-fdpos(1).
ENDIF.
CONDENSE v_amt.
WRITE : v_amt.
s1 = it_bsis-bldat+6(2).
s2 = it_bsis-bldat+4(2).
s3 = it_bsis-bldat+0(4).
CONCATENATE s2 s1 s3 INTO l_dat1.
s1 = it_bsis-budat+6(2).
s2 = it_bsis-budat+4(2).
s3 = it_bsis-budat+0(4).
CONCATENATE s2 s1 s3 INTO l_dat2.
s1 = it_bsis-valut+6(2).
s2 = it_bsis-valut+4(2).
s3 = it_bsis-valut+0(4).
CONCATENATE s2 s1 s3 INTO l_dat3.
PERFORM bdc_dynpro USING 'SAPMF05A' '0122'.
PERFORM bdc_field USING 'BDC_CURSOR'
'BKPF-WAERS'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=SL'.
PERFORM bdc_field USING 'BKPF-BLDAT'
l_dat1.
PERFORM bdc_field USING 'BKPF-BLART'
it_bsis-blart .
PERFORM bdc_field USING 'BKPF-BUKRS'
p_bukrs.
PERFORM bdc_field USING 'BKPF-BUDAT'
l_dat2.
PERFORM bdc_field USING 'BKPF-MONAT'
it_bsis-monat.
PERFORM bdc_field USING 'BKPF-WAERS'
it_bsis-waers.
PERFORM bdc_field USING 'FS006-DOCID'
'*'.
PERFORM bdc_dynpro USING 'SAPMF05A' '0710'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RF05A-XPOS1(03)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=PA'.
PERFORM bdc_field USING 'RF05A-AGBUK'
p_bukrs.
PERFORM bdc_field USING 'RF05A-AGKON'
p_hkont.
PERFORM bdc_field USING 'RF05A-AGKOA'
'S'.
PERFORM bdc_field USING 'RF05A-XNOPS'
'X'.
PERFORM bdc_field USING 'RF05A-XPOS1(01)'
''.
PERFORM bdc_field USING 'RF05A-XPOS1(03)'
'X'.
PERFORM bdc_dynpro USING 'SAPMF05A' '0731'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RF05A-SEL01(01)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=PA'.
PERFORM bdc_field USING 'RF05A-SEL01(01)'
it_bsis-belnr.
PERFORM bdc_dynpro USING 'SAPDF05X' '3100'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=AB'.
PERFORM bdc_field USING 'BDC_SUBSCR'
'SAPDF05X'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RF05A-ABPOS'.
PERFORM bdc_field USING 'RF05A-ABPOS'
'1'.
PERFORM bdc_dynpro USING 'SAPMF05A' '0700'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RF05A-NEWKO'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'RF05A-NEWBS'
'50'.
PERFORM bdc_field USING 'RF05A-NEWKO'
'101047'.
PERFORM bdc_dynpro USING 'SAPMF05A' '0300'.
PERFORM bdc_field USING 'BDC_CURSOR'
'BSEG-WRBTR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=BU'.
PERFORM bdc_field USING 'BSEG-WRBTR'
v_amt.
PERFORM bdc_field USING 'BSEG-VALUT'
l_dat3.
PERFORM bdc_field USING 'BDC_SUBSCR'
'SAPLKACB'.
PERFORM bdc_field USING 'DKACB-FMORE'
'X'.
PERFORM bdc_dynpro USING 'SAPLKACB' '0002'.
PERFORM bdc_field USING 'BDC_CURSOR'
'COBL-ANLN1'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTE'.
PERFORM bdc_field USING 'BDC_SUBSCR'
'SAPLKACB'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTE'.
PERFORM bdc_dynpro USING 'SAPMF05A' '0300'.
*
PERFORM bdc_field USING 'BDC_OKCODE'
'/01'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTE'.
ENDFORM. " fill_screen_data
&----
*& Form bdc_field
&----
text
----
-->FNAM text
-->FVAL text
----
FORM bdc_field USING fnam fval.
IF FVAL <> NODATA.
CLEAR bdcdata.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
APPEND bdcdata.
ENDIF.
ENDFORM. "BDC_FIELD
&----
*& Form bdc_dynpro
&----
text
----
-->PROGRAM text
-->DYNPRO text
----
FORM bdc_dynpro USING program dynpro.
CLEAR bdcdata.
bdcdata-program = program.
bdcdata-dynpro = dynpro.
bdcdata-dynbegin = 'X'.
APPEND bdcdata.
ENDFORM. "BDC_DYNPRO
&----
*& Form error_msg_text
&----
form error_msg_text .
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
ID = it_bdcmsgcoll-MSGID
LANG = sy-langu
NO = it_bdcmsgcoll-msgnr
V1 = it_bdcmsgcoll-MSGV1
V2 = it_bdcmsgcoll-MSGV2
V3 = it_bdcmsgcoll-MSGV3
V4 = it_bdcmsgcoll-MSGV4
IMPORTING
MSG = v_ertxt
EXCEPTIONS
NOT_FOUND = 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. " error_msg_text
Problem aim facing :
1. amount conversion (output iam expecting 1,245 ) - iam getting 12.34
2. iam not able to display AUGDT AND AUGBL in line item.
Pls any one can help.
REPORT zgl_rept_automaticclearing_e_3
LINE-COUNT 64(1)
LINE-SIZE 260
NO STANDARD PAGE HEADING.
TYPES: BEGIN OF t_bsis,
bldat LIKE bsis-bldat,
budat LIKE bsis-budat,
bukrs LIKE bsis-bukrs,
waers LIKE bsis-waers,
monat LIKE bsis-monat,
blart LIKE bsis-blart,
hkont LIKE bsis-hkont,
belnr LIKE bsis-belnr,
bschl LIKE bsis-bschl,
wrbtr LIKE bsis-wrbtr,
pswbt LIKE bsis-pswbt,
valut LIKE bsis-valut,
END OF t_bsis.
Internal table declaration.
DATA: it_bsis TYPE TABLE OF t_bsis INITIAL SIZE 0 WITH HEADER LINE.
DATA: BEGIN OF it_docno OCCURS 0,
belnr LIKE bsis-belnr,
END OF it_docno.
DATA: BEGIN OF it_bseg OCCURS 0,
belnr LIKE bseg-belnr,
augbl LIKE bseg-augbl,
augdt LIKE bseg-augdt,
valut LIKE bseg-valut,
pswbt LIKE bseg-pswbt,
wrbtr LIKE bseg-wrbtr,
bschl LIKE bseg-bschl,
END OF it_bseg.
DATA: BEGIN OF it_final OCCURS 0,
blart LIKE bsis-blart,
budat LIKE bsis-budat,
bldat LIKE bsis-bldat,
AMT(20),
belnr LIKE bseg-belnr,
augdt LIKE bseg-augdt,
augbl LIKE bseg-augbl,
valut LIKE bsis-valut,
END OF it_final.
data: begin of it_ermsg occurs 0,
belnr like bsis-belnr,
ertxt(120),
end of it_ermsg.
DATA: bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE,
it_bdcmsgcoll LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.
varible decalration
data: v_ertxt(120),
V_AMT(20).
Selection-screen
PARAMETERS: p_bukrs LIKE bsis-bukrs DEFAULT '3100',
p_hkont LIKE bsis-hkont DEFAULT '101046',
p_cacno LIKE bsis-hkont DEFAULT '101047',
p_bldat LIKE bsis-bldat .
INITIALIZATION.
DATA: v_end_date LIKE sy-datum.
CALL FUNCTION 'LAST_DAY_OF_MONTHS'
EXPORTING
day_in = sy-datum
IMPORTING
last_day_of_month = v_end_date
EXCEPTIONS
day_in_no_date = 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.
p_bldat = v_end_date.
START-OF-SELECTION.
*DATA: V_AMT LIKE TCURC-waers VALUE 'USD'.
*WRITE itab-curr CURRENCY v_waers.
SELECT bldat
budat
bukrs
waers
monat
blart
hkont
belnr
bschl
pswbt
wrbtr
valut
FROM bsis
INTO TABLE it_bsis
WHERE bukrs EQ p_bukrs
AND hkont EQ p_hkont.
AND valut GE p_bldat.
delete it_bsis where belnr ='4200000072'.
*
IF NOT it_bsis[] IS INITIAL.
LOOP AT it_bsis.
PERFORM fill_screen_data.
CALL TRANSACTION 'F-04' USING bdcdata MODE 'N' UPDATE 'S'
MESSAGES INTO it_bdcmsgcoll.
IF sy-subrc EQ 0.
it_docno-belnr = it_bsis-belnr.
APPEND it_docno.
CLEAR it_docno.
ELSE.
perform error_msg_text.
it_ermsg-belnr = it_bsis-belnr.
it_ermsg-ertxt = v_ertxt.
append it_ermsg.
clear: it_ermsg, it_bdcmsgcoll.
endif.
REFRESH bdcdata.
CLEAR BDCDATA.
CLEAR it_bsis.
ENDLOOP.
ENDIF.
*SORT it_docno BY belnr.
*
IF NOT it_docno[] IS INITIAL.
SELECT belnr
augbl
augdt
valut
pswbt
wrbtr
bschl
INTO TABLE it_bseg
FROM bseg
FOR ALL ENTRIES IN it_docno
WHERE BELNR EQ it_docno-belnr.
*
ENDIF.
*
SORT it_bsis BY belnr.
SORT it_bseg BY BELNR.
*
IF NOT it_bseg[] IS INITIAL.
DELETE IT_BSEG WHERE BSCHL <> 40 AND BSCHL <> 50 OR WRBTR = 0.
LOOP AT it_bseg.
READ TABLE it_bsis WITH KEY belnr = it_bseg-BELNR.
IF IT_BSEG-BSCHL = 25.
V_AMT = IT_BSEG-WRBTR.
CONCATENATE V_AMT '-' INTO V_AMT.
ELSEIF IT_BSEG-BSCHL = 50.
V_AMT = IT_BSEG-WRBTR.
ENDIF.
IT_FINAL-BLART = IT_BSIS-BLART.
IT_FINAL-BUDAT = IT_BSIS-BUDAT.
IT_FINAL-BLDAT = IT_BSIS-BLDAT.
IT_FINAL-AMT = V_AMT.
IT_FINAL-BELNR = IT_BSis-BELNR.
IT_FINAL-AUGDT = IT_BSEG-AUGDT.
IT_FINAL-AUGBL = IT_BSEG-AUGBL.
IT_FINAL-VALUT = IT_BSIS-VALUT.
APPEND IT_FINAL.
CLEAR IT_FINAL.
ENDLOOP.
ENDIF.
top-of-page.
write : /1 'G/L Account No.', p_hkont.
write : /1 'Company Code ' , p_bukrs.
skip 2.
write :/3'DocumentType', 18 'posted on', 31'Document Date',
51 'amount', 66'DocumentNo',79 'clearing Date',
97 'clearingDocumentnumber',123 'Value date'.
end-of-selection.
IF NOT IT_FINAL[] IS INITIAL.
LOOP AT IT_FINAL.
WRITE:/7 IT_FINAL-BLART, 18 IT_FINAL-BUDAT, 31 IT_FINAL-BLDAT, 41 IT_FINAL-AMT, 66 IT_FINAL-BELNR, 82 IT_FINAL-AUGDT, 101 IT_FINAL-AUGBL,123 IT_FINAL-VALUT.
ENDLOOP.
ENDIF.
if not it_ermsg[] is initial.
loop at it_ermsg.
write:/ it_ermsg-belnr, IT_ERMSG-ERTXT.
endloop.
endif.
&----
*& Form fill_screen_data
&----
text
----
FORM fill_screen_data .
DATA: l_dat1(8),
l_dat2(8),
l_dat3(8),
s1(2),
s2(2),
s3(4).
clear v_amt.
DATA : p_amt TYPE p DECIMALS 2,
v_amt(15).
p_amt = it_bsis-wrbtr.
clear v_amt.
v_amt = p_amt.
REPLACE '.' IN v_amt WITH space.
CONDENSE v_amt.
DATA : p_amt TYPE p DECIMALS 2,
v_amt(15).
*
p_amt = it_bsis-wrbtr.
v_amt = p_amt.
*
SEARCH v_amt FOR '.'.
IF sy-subrc EQ 0.
CLEAR v_amt+sy-fdpos(1).
ENDIF.
CONDENSE v_amt.
WRITE : v_amt.
s1 = it_bsis-bldat+6(2).
s2 = it_bsis-bldat+4(2).
s3 = it_bsis-bldat+0(4).
CONCATENATE s2 s1 s3 INTO l_dat1.
s1 = it_bsis-budat+6(2).
s2 = it_bsis-budat+4(2).
s3 = it_bsis-budat+0(4).
CONCATENATE s2 s1 s3 INTO l_dat2.
s1 = it_bsis-valut+6(2).
s2 = it_bsis-valut+4(2).
s3 = it_bsis-valut+0(4).
CONCATENATE s2 s1 s3 INTO l_dat3.
PERFORM bdc_dynpro USING 'SAPMF05A' '0122'.
PERFORM bdc_field USING 'BDC_CURSOR'
'BKPF-WAERS'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=SL'.
PERFORM bdc_field USING 'BKPF-BLDAT'
l_dat1.
PERFORM bdc_field USING 'BKPF-BLART'
it_bsis-blart .
PERFORM bdc_field USING 'BKPF-BUKRS'
p_bukrs.
PERFORM bdc_field USING 'BKPF-BUDAT'
l_dat2.
PERFORM bdc_field USING 'BKPF-MONAT'
it_bsis-monat.
PERFORM bdc_field USING 'BKPF-WAERS'
it_bsis-waers.
PERFORM bdc_field USING 'FS006-DOCID'
'*'.
PERFORM bdc_dynpro USING 'SAPMF05A' '0710'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RF05A-XPOS1(03)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=PA'.
PERFORM bdc_field USING 'RF05A-AGBUK'
p_bukrs.
PERFORM bdc_field USING 'RF05A-AGKON'
p_hkont.
PERFORM bdc_field USING 'RF05A-AGKOA'
'S'.
PERFORM bdc_field USING 'RF05A-XNOPS'
'X'.
PERFORM bdc_field USING 'RF05A-XPOS1(01)'
''.
PERFORM bdc_field USING 'RF05A-XPOS1(03)'
'X'.
PERFORM bdc_dynpro USING 'SAPMF05A' '0731'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RF05A-SEL01(01)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=PA'.
PERFORM bdc_field USING 'RF05A-SEL01(01)'
it_bsis-belnr.
PERFORM bdc_dynpro USING 'SAPDF05X' '3100'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=AB'.
PERFORM bdc_field USING 'BDC_SUBSCR'
'SAPDF05X'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RF05A-ABPOS'.
PERFORM bdc_field USING 'RF05A-ABPOS'
'1'.
PERFORM bdc_dynpro USING 'SAPMF05A' '0700'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RF05A-NEWKO'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'RF05A-NEWBS'
'50'.
PERFORM bdc_field USING 'RF05A-NEWKO'
'101047'.
PERFORM bdc_dynpro USING 'SAPMF05A' '0300'.
PERFORM bdc_field USING 'BDC_CURSOR'
'BSEG-WRBTR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=BU'.
PERFORM bdc_field USING 'BSEG-WRBTR'
v_amt.
PERFORM bdc_field USING 'BSEG-VALUT'
l_dat3.
PERFORM bdc_field USING 'BDC_SUBSCR'
'SAPLKACB'.
PERFORM bdc_field USING 'DKACB-FMORE'
'X'.
PERFORM bdc_dynpro USING 'SAPLKACB' '0002'.
PERFORM bdc_field USING 'BDC_CURSOR'
'COBL-ANLN1'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTE'.
PERFORM bdc_field USING 'BDC_SUBSCR'
'SAPLKACB'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTE'.
PERFORM bdc_dynpro USING 'SAPMF05A' '0300'.
*
PERFORM bdc_field USING 'BDC_OKCODE'
'/01'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTE'.
ENDFORM. " fill_screen_data
&----
*& Form bdc_field
&----
text
----
-->FNAM text
-->FVAL text
----
FORM bdc_field USING fnam fval.
IF FVAL <> NODATA.
CLEAR bdcdata.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
APPEND bdcdata.
ENDIF.
ENDFORM. "BDC_FIELD
&----
*& Form bdc_dynpro
&----
text
----
-->PROGRAM text
-->DYNPRO text
----
FORM bdc_dynpro USING program dynpro.
CLEAR bdcdata.
bdcdata-program = program.
bdcdata-dynpro = dynpro.
bdcdata-dynbegin = 'X'.
APPEND bdcdata.
ENDFORM. "BDC_DYNPRO
&----
*& Form error_msg_text
&----
form error_msg_text .
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
ID = it_bdcmsgcoll-MSGID
LANG = sy-langu
NO = it_bdcmsgcoll-msgnr
V1 = it_bdcmsgcoll-MSGV1
V2 = it_bdcmsgcoll-MSGV2
V3 = it_bdcmsgcoll-MSGV3
V4 = it_bdcmsgcoll-MSGV4
IMPORTING
MSG = v_ertxt
EXCEPTIONS
NOT_FOUND = 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. " error_msg_text
Problem aim facing :
1. amount conversion (output iam expecting 1,245 ) - iam getting 12.34
2. iam not able to display AUGDT AND AUGBL in line item.
Pls any one can help.
2007 Feb 25 11:42 AM
Hi,
Iam able to see BELNR in it_bdcmsgcoll strucutre, how to populae that instead of it_docno.
Thanks,
Veeru
2007 Feb 27 8:28 AM
u need to do the decimal correction.
before the data is moved to the BDC correction, format and insert the below code. This should work.
pls see the extract of the code below :
***********
SELECT currkey currdec FROM tcurx INTO TABLE tbl_tcurx
FOR ALL ENTRIES IN tbl_bsik1
WHERE currkey = tbl_bsik1-waers.
IF sy-subrc = 0.
SORT tbl_tcurx BY currkey.
ENDIF.
READ TABLE tbl_tcurx WITH KEY currkey = tbl_bsik-waers
BINARY SEARCH.
IF sy-subrc = 0.
currency corrections
IF tbl_tcurx-currdec = 0.
tbl_final-wrbtr = tbl_bsik-wrbtr * 100.
ELSEIF tbl_tcurx-currdec = 1.
tbl_final-wrbtr = tbl_bsik-wrbtr * 10.
ELSEIF tbl_tcurx-currdec = 3.
tbl_final-wrbtr = tbl_bsik-wrbtr / 10.
ELSEIF tbl_tcurx-currdec = 5.
tbl_final-wrbtr = tbl_bsik-wrbtr / 1000.
ENDIF.
start
ELSE.
tbl_final-wrbtr = tbl_bsik-wrbtr.
end
ENDIF.
if found useful reward with points
| User | Count |
|---|---|
| 4 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |