01-27-2007 6:10 AM
Hi,
I am getting an error during the execution of the BDC in foreground Mode which is "Field F110O-XPOS1(7) doesnot exist in the screen SAPF110O1003".
This appears when i am trying to edit a payment proposal using BDC .
Codes used in the main program are :
PERFORM F4312_BDC_FIELD USING 'BDC_CURSOR' 'F110O-XPOS1(07)'.
PERFORM F4312_BDC_FIELD USING 'BDC_OKCODE' '=PI'.
PERFORM F4312_BDC_FIELD USING 'F110O-ABPOS' '1'.
PERFORM F4312_BDC_FIELD USING 'F110O-XPOS1(01)' ''.
PERFORM F4312_BDC_FIELD USING 'F110O-XPOS1(07)' 'X'.
Is it possible that the screen feild name has changed from server to server because these codes are copied from old server to new one?
01-27-2007 8:55 AM
Hi,
This is my sample code for F110 BDC: This is a automated process for which we have written code.
REPORT YF110_SAMPLE .
tables: lfa1,
t001,
t042z,
varid.
DATA: i_bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.
DATA: messtab TYPE TABLE OF bdcmsgcoll WITH HEADER LINE.
DATA: po_date LIKE sy-datum.
DATA: p_next LIKE sy-datum.
DATA: p_run1(10),po_date1(10), p_next1(10).
DATA: ws_laufd LIKE reguh-laufd,
ws_laufi LIKE reguh-laufi.
data: p_dele value space.
data: ws_lines.
SELECTION-SCREEN: BEGIN OF BLOCK blk1 WITH FRAME.
PARAMETERS: p_run LIKE sy-datum obligatory.
SELECTION-SCREEN: END OF BLOCK blk1.
selection-screen: begin of block blk2 with frame .
parameters: p_runid like reguh-laufi obligatory,
p_land1 like t005-land1 obligatory.
*select-options: p_bukrs for t001-bukrs no intervals obligatory.
parameters: p_bukrs like t001-bukrs obligatory.
parameters: p_hbkid like t012-hbkid ,
p_hktid like t012k-hktid ,
p_waers like tcurc-waers .
*select-options: p_rzawe for t042z-zlsch no intervals obligatory,
p_fvari for varid-variant no intervals obligatory.
parameters: p_rzawe like t042z-zlsch obligatory,
p_FVARI like varid-variant obligatory.
matchcode object zfvari1.
selection-screen: end of block blk2.
*SELECTION-SCREEN: BEGIN OF BLOCK blk3.
*PARAMETERS: p_dele AS CHECKBOX ."modif id DE.
*SELECTION-SCREEN: END OF BLOCK blk3.
*at selection-screen output.
loop at screen.
if screen-group1 = 'A1'.
screen-input = '1'.
modify screen.
endif.
*
if screen-group1 = 'DE'.
screen-active = '0'.
modify screen.
endif.
endloop.
*
start-of-selection.
ws_laufd = p_run.
po_date = sy-datum. "p_run .
perform get_next_date using po_date
changing p_next.
p_next = p_run + 30.
CONCATENATE p_run4(2) p_run6(2) p_run+0(4) INTO p_run1
SEPARATED BY '/'.
CONCATENATE po_date4(2) po_date6(2) po_date+0(4) INTO po_date1
SEPARATED BY '/'.
CONCATENATE p_next4(2) p_next6(2) p_next+0(4) INTO p_next1
SEPARATED BY '/'.
REFRESH messtab.
CLEAR messtab.
IF p_dele <> 'X'.
PERFORM bdc_data USING:
'X' 'SAPF110V' '0200',
' ' 'BDC_CURSOR' 'F110V-LAUFI',
' ' 'BDC_OKCODE' '=PAR',
' ' 'F110V-LAUFD' p_run1,
' ' 'F110V-LAUFI' p_runid,
'X' 'SAPF110V' '0200',
' ' 'BDC_OKCODE' '=LOG',
' ' 'BDC_CURSOR' 'F110V-VONKK',
' ' 'F110C-BUDAT' po_date1,
' ' 'F110C-GRDAT' po_date1,
' ' 'F110V-VONKK' s_vendor-low,
' ' 'F110V-BISKK' s_vendor-high,
' ' 'F110V-BUKLS(01)' p_bukrs,
' ' 'F110V-ZWELS(01)' p_rzawe,
' ' 'F110V-NEDAT(01)' p_next1,
'X' 'SAPF110V' '0200',
' ' 'BDC_OKCODE' '=PRI',
' ' 'BDC_CURSOR' 'F110V-VONKK(01)',
' ' 'F110V-XTRFA' 'X',
' ' 'F110V-XTRZW' 'X',
' ' 'F110V-XTRBL' 'X',
' ' 'F110V-VONKK(01)' s_vendor-low,
' ' 'F110V-BISKK(01)' s_vendor-high,
'X' 'SAPF110V' '0200',
' ' 'BDC_OKCODE' '=STA',
' ' 'BDC_CURSOR' 'F110V-VARI1(03)',
' ' 'F110V-VARI1(03)' p_fvari,
"'ZFID0060RWA218',
'X' 'SAPLSPO1' '0100',
' ' 'BDC_OKCODE' '=YES',
'X' 'SAPF110V' '0200',
' ' 'BDC_OKCODE' '/EBCK'.
'X' 'SAPF110V' '0200',
' ' 'BDC_OKCODE' '=SICH',
'X' 'SAPF110V' '0200',
' ' 'BDC_OKCODE' '/EBCK',
'X' 'SAPF110V' '0200',
' ' 'BDC_OKCODE' '/EBCK'.
'X' 'SAPLSPO1' '0100',
' ' 'BDC_OKCODE' '=YES'.
'X' 'SAPF110V' '0200',
' ' 'BDC_CURSOR' 'F110V-LAUFD',
' ' 'BDC_OKCODE' '=VOEX',
' ' 'F110V-LAUFD' p_run1,
' ' 'F110V-LAUFI' p_runid,
'X' 'SAPF110V' '1106',
' ' 'BDC_CURSOR' 'F110V-STRDT',
' ' 'BDC_OKCODE' '=EP',
' ' 'F110V-STRDT' p_run1,
' ' 'F110V-XSTRF' 'X',
' ' 'F110V-STRZT' '00:00:00'.
*
FREE MEMORY.
CALL TRANSACTION 'F110' USING i_bdcdata MODE 'A'
UPDATE 'S'
MESSAGES INTO messtab.
break-point.
if sy-subrc = 0.
CALL FUNCTION 'SCHEDULE_PAYMENT_PROPOSAL'
EXPORTING
i_laufd = p_run
i_laufi = p_runid
I_STRDT = sy-datum
I_STRZT =
I_XSTRF = 'X'
I_BHOST =
I_INKEY =
I_PTYPE = 1
I_CALLREP =
I_CALLVAR =
EXCEPTIONS
STARTDATE_WRONG = 1
PARAMETERS_MISSED = 2
LOCK_FAILED = 3
JOB_OPEN_FAILED = 4
JOB_CLOSE_FAILED = 5
OTHERS = 6 .
*
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*
write:/ 'Proposal Successfully Generated..'.
refresh i_bdcdata. clear i_bdcdata.
perform bdc_data using: 'X' 'SAPF110V' '0200',
' ' 'BDC_CURSOR' 'F110V-LAUFD',
' ' 'BDC_OKCODE' '=ZAEX',
' ' 'F110V-LAUFD' p_run1,
' ' 'F110V-LAUFI' p_runid,
'X' 'SAPLSPO1' '0100',
' ' 'BDC_OKCODE' '=YES',
'X' 'SAPF110V' '1106',
' ' 'BDC_CURSOR' 'F110V-XSTRF',
' ' 'BDC_OKCODE' '=EP',
' ' 'F110V-STRDT' p_run1,
' ' 'F110V-XSTRF' 'X',
' ' 'F110V-STRZT' '00:00:00',
' ' 'F110V-XMITD' 'X'.
break-point.
CALL TRANSACTION 'F110' USING i_bdcdata MODE 'A'
UPDATE 'S'
MESSAGES INTO messtab.
if sy-subrc = 0.
write:/ 'Payment Run Scheduled'.
endif.
endif.
endloop.
SELECT single laufd laufi INTO (ws_laufd,ws_laufi) FROM reguh
WHERE laufd = p_run
AND laufi = p_runid
AND xvorl = 'X'.
IF sy-subrc <> 0.
WRITE:/ 'Error in Proposal Run',p_runid,' dated ',p_run.
ENDIF.
ELSE.
CALL FUNCTION 'DELETE_PAYMENT_PROPOSAL'
EXPORTING
date = p_run
identification = p_runid
I_DATUM =
EXCEPTIONS
ABNORMAL_END = 1
NO_DELETE_AUTHORITY = 2
OTHERS = 3
.
if sy-subrc = 0.
write:/ 'Proposal ',p_runid, ' Successfully deleted.'.
endif.
ENDIF.
Form
FORM bdc_data USING a
b
c.
CLEAR: i_bdcdata.
IF a = 'X'.
i_bdcdata-program = b.
i_bdcdata-dynpro = c.
i_bdcdata-dynbegin = 'X'.
ELSE.
i_bdcdata-fnam = b.
i_bdcdata-fval = c.
ENDIF.
APPEND: i_bdcdata.
ENDFORM.
&----
*& Form get_next_date
&----
----
FORM get_next_date USING PO_DATE
CHANGING P_NEXT.
data: i type i,
p_date like sy-datum.
i = 0.
p_date = po_date.
while i <= 4.
p_date = p_date + 1.
CALL FUNCTION 'DATE_CHECK_WORKINGDAY'
EXPORTING
DATE = p_date
FACTORY_CALENDAR_ID = 'WY'
MESSAGE_TYPE = 'E'
EXCEPTIONS
DATE_AFTER_RANGE = 1
DATE_BEFORE_RANGE = 2
DATE_INVALID = 3
DATE_NO_WORKINGDAY = 4
FACTORY_CALENDAR_NOT_FOUND = 5
MESSAGE_TYPE_INVALID = 6
OTHERS = 7 .
IF SY-SUBRC <> 0.
continue.
else.
i = i + 1.
ENDIF.
endwhile.
p_next = p_date.
ENDFORM. " get_next_date
Regards
Subramanian
08-29-2007 4:52 PM
Subramanian,
Your automated F110 BDC code looks good. If I wanted to get multiple company codes in the company code field (F110-BUKLS), how would I do that?
Using yours, I can put only one company code. I want to do the same thing with payment method as well i.e. be able to put multiple payment methods.
Do you know?
Thanks,
Ravi.
01-27-2007 2:55 PM
Hi,
the error appears because you´re accessing a table control in the recording of the transaction.
Please do have a look at the following link:
http://www.sap-img.com/abap/bdc-example-using-table-control-in-bdc.htm
i´m sure that thre are many answers in the forum regarding "BDC and tablecontrol".
Anyway, you should do something like:
DATA : FNAM(20) TYPE C,
IDX TYPE C.
MOVE 1 TO IDX.
CONCATENATE ''F110O-XPOS1(' IDX ')' INTO FNAM.
perform F4312_BDC_FIELD using 'BDC_CURSOR'
FNAM.
and the rest of the code in the same way.
Best regards.