‎2007 Nov 19 5:32 PM
Hi All,
I am using call Transaction method to upload data for FB50. The data is being populated into the bdcdata internal table. But the docuement is getting posted with only 2 line item entries. Where as the document contains 4 line item entries.
Can anyone please help me out in this? I am attaching the code which i am using
LOOP AT it_data ASSIGNING <wa_data>.
w_d = sy-tabix.
W_TAB = SY-TABIX MOD 2.
IF sy-tabix EQ 1 OR ( W_TAB NE 0 or w_y eq 'x' ) .
get parameter id 'BUK' field w_bukrs.
if w_bukrs is initial.
set parameter id 'BUK' field w_bukrs_initial.
perform bdc_dynpro using 'SAPLACHD' '1000'.
perform bdc_field using 'BDC_CURSOR'
'BKPF-BUKRS'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
perform bdc_field using 'BKPF-BUKRS'
<wa_data>-bukrs.
write <wa_data>-budat to w_date.
perform bdc_dynpro using 'SAPMF05A' '1001'.
perform bdc_field using 'ACGL_HEAD-BLDAT'
w_date.
perform bdc_field using 'ACGL_HEAD-BUDAT'
w_date.
perform bdc_field using 'BDC_OKCODE'
'/00'.
else.
PERFORM bdc_dynpro USING 'SAPMF05A' '1001'.
WRITE <wa_data>-BUDAT TO W_DATE.
PERFORM bdc_field USING 'ACGL_HEAD-BLDAT'
W_DATE.
PERFORM bdc_dynpro USING 'SAPMF05A' '1001'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'ACGL_HEAD-BLDAT'
W_DATE.
PERFORM bdc_field USING 'ACGL_HEAD-BUDAT'
w_date.
Endif.
PERFORM bdc_field USING 'ACGL_HEAD-WAERS'
<wa_data>-WAERS.
PERFORM bdc_field USING 'ACGL_HEAD-XBLNR'
<wa_data>-xblnr.
PERFORM bdc_field USING 'BDC_CURSOR'
'ACGL_ITEM-ZUONR(01)'.
PERFORM bdc_field USING 'ACGL_ITEM-HKONT(01)'
<wa_data>-hkont.
WRITE <WA_DATA>-wrbtr TO w_bdc_data .
SHIFT w_bdc_data LEFT DELETING LEADING ' '.
PERFORM bdc_field USING 'ACGL_ITEM-WRBTR(01)'
w_bdc_data.
PERFORM bdc_field USING 'ACGL_ITEM-TXJCD(01)'
<wa_data>-txjcd.
PERFORM bdc_field USING 'ACGL_ITEM-ZUONR(01)'
<wa_data>-zuonr.
PERFORM bdc_field USING 'ACGL_ITEM-SGTXT(01)'
<wa_data>-sgtxt.
PERFORM bdc_dynpro USING 'SAPMF05A' '1001'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=FIKP'.
PERFORM bdc_field USING 'BDC_CURSOR'
'ACGL_ITEM-HKONT(02)'.
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'
<wa_data>-bschl.
PERFORM bdc_field USING 'RF05A-NEWKO'
<wa_data>-hkont.
PERFORM bdc_dynpro USING 'SAPMF05A' '0300'.
PERFORM bdc_field USING 'BDC_CURSOR'
'BSEG-MEINS'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=BU'.
WRITE <wa_data>-wrbtr TO w_amt .
PERFORM bdc_field USING 'BSEG-WRBTR'
w_amt.
WRITE <wa_data>-menge TO w_bdc_data.
SHIFT w_bdc_data LEFT DELETING LEADING ' '.
PERFORM bdc_field USING 'BSEG-MENGE'
w_bdc_data.
PERFORM bdc_field USING 'BSEG-MEINS'
<wa_data>-meins.
WRITE <wa_data>-valut TO w_date.
PERFORM bdc_field USING 'BSEG-VALUT'
w_date.
PERFORM bdc_field USING 'DKACB-FMORE'
'X'.
PERFORM bdc_dynpro USING 'SAPLKACB' '0002'.
PERFORM bdc_field USING 'BDC_CURSOR'
'COBL-PRCTR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTE'.
PERFORM bdc_field USING 'COBL-PRCTR'
<wa_data>-prctr.
ELSE.
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'
<wa_data>-bschl.
PERFORM bdc_field USING 'RF05A-NEWKO'
<wa_data>-hkont.
PERFORM bdc_dynpro USING 'SAPMF05A' '0300'.
PERFORM bdc_field USING 'BDC_CURSOR'
'BSEG-MEINS'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=BU'.
WRITE <wa_data>-wrbtr TO w_amt .
PERFORM bdc_field USING 'BSEG-WRBTR'
w_amt.
WRITE <wa_data>-menge TO w_bdc_data.
SHIFT w_bdc_data LEFT DELETING LEADING ' '.
PERFORM bdc_field USING 'BSEG-MENGE'
w_bdc_data.
PERFORM bdc_field USING 'BSEG-MEINS'
<wa_data>-meins.
CLEAR W_DATE.
WRITE <wa_data>-valut TO w_date.
PERFORM bdc_field USING 'BSEG-VALUT'
w_date.
PERFORM bdc_field USING 'DKACB-FMORE'
'X'.
PERFORM bdc_dynpro USING 'SAPLKACB' '0002'.
PERFORM bdc_field USING 'BDC_CURSOR'
'COBL-PRCTR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTE'.
PERFORM bdc_field USING 'COBL-PRCTR'
<wa_data>-prctr.
ENDIF.
w_x = w_d mod 998.
IF w_x EQ 0 or w_ln eq w_d.
w_y = 'X'.
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'
<wa_data>-wrbtr.
PERFORM bdc_field USING 'BSEG-MENGE'
<wa_data>-menge.
PERFORM bdc_field USING 'BSEG-MEINS'
<wa_data>-meins.
CLEAR W_DATE.
WRITE <wa_data>-valut TO w_date.
PERFORM bdc_field USING 'BSEG-VALUT'
W_DATE.
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'.
PERFORM bdc_field USING 'COBL-PRCTR'
<wa_data>-prctr.
CALL TRANSACTION 'FB50' USING IT_BDCDATA
MODE 'A'
UPDATE 'S'
MESSAGES INTO IT_MESGTAB.
ENDIF.
ENDLOOP.
‎2007 Nov 19 5:35 PM
Check out the message coming in the IT_MESSTAB.
I suggest you to use the RFBIBL00 to post FI documnents, if possible.
You can read the documentaion of RFBIBL00 for more information.
Regards,
Naimesh Patel
‎2007 Nov 19 5:36 PM
FB50 is an EnjoySAP transaction and not suitable for batch input. You should use one of the BAPIs, RFBIBL00 or a batch input session based on FB01.
Rob