‎2008 Jan 24 12:55 PM
Hello Gurus,
Can I give the Value for input screen of transaction using BDC in Function Module.
My Requiremet is i have to create function Module which should call transaction FB10 in backgroung and provide all the values to transaction and Update SAP Tables.
Thanks in advance.
Best Regards,
zubera
‎2008 Jan 24 12:59 PM
Hi Zubera,
yes, It is possible, just call ur bdc code in function module sourcecode.
Tell me what exactly the requirement is.
regards,
ravi shankar reddy
‎2008 Jan 24 1:13 PM
Hi Reddy,
Thanks for your reply.
I have called the BDC Program which calls transaction FB10 in background and input the values for transaction and
creates entries in SAP TablesBKPF and BSEG. So program works fine.
Now When i Create Function Modoule for same requirement it is not updating the value for data base.
When i debugged the program by CALL TRANSACTION FB10 MODE A , in fore mode it is not providing any input value for transaction FB10.
So whether i have to any changes in function module in order to provide input values.
here is my code
FUNCTION ZCALL.
*"----
""Local Interface:
*" IMPORTING
*" VALUE(NO) TYPE I
*" VALUE(BUKRS) TYPE BKPF-BUKRS
*" VALUE(ACCOUNT) TYPE CHAR13
*" VALUE(AMOUNT) TYPE CHAR13
*" VALUE(ARCHIV) TYPE TOA01-ARCHIV_ID
*" VALUE(PREFIX) TYPE CHAR4
*" VALUE(START) TYPE I
*" VALUE(CONTAB) TYPE CHAR5
*" VALUE(ADATE) TYPE D
*"----
Table Declaration
TABLES : TOA01, TOA02, TOA03, TOADL.
Internal table declaration for BDCDATA
DATA : BEGIN OF FTAB OCCURS 0.
INCLUDE STRUCTURE BDCDATA.
DATA : END OF FTAB.
Internal table declaration for TOA01.
DATA : BEGIN OF C_TABLE OCCURS 0.
INCLUDE STRUCTURE TOA01.
DATA : END OF C_TABLE.
Work Area Declaration for TOA01
DATA : BEGIN OF F_STRING.
INCLUDE STRUCTURE TOA01.
DATA : END OF F_STRING.
Internal table declaration for TOADL.
DATA : BEGIN OF PL_TABLE OCCURS 0.
INCLUDE STRUCTURE TOADL.
DATA : END OF PL_TABLE.
Work Area declaration for TOADL.
DATA : BEGIN OF PL_FIELDS.
INCLUDE STRUCTURE TOADL.
DATA : END OF PL_FIELDS.
Internal table declaration for BKPF.
DATA : BEGIN OF BTAB OCCURS 0.
INCLUDE STRUCTURE BSEG.
DATA : END OF BTAB.
Internal table declaration
DATA : BEGIN OF ITAB OCCURS 0,
N1 type i,
BUKRS LIKE BKPF-BUKRS,
BLART LIKE BKPF-BLART,
NEWKO LIKE RF05A-NEWKO,
WRBTR(13),
BUDAT TYPE DATS,
NEWBS LIKE RF05A-NEWBS,
END OF ITAB.
Work Area declaration for BKPF
DATA : BEGIN OF WA,
N1 TYPE I,
BUKRS LIKE BKPF-BUKRS,
BLART LIKE BKPF-BLART,
NEWKO LIKE RF05A-NEWKO,
WRBTR(13),
NEWBS LIKE RF05A-NEWBS,
END OF WA.
*DATA : PDATE TYPE DATS.
*PDATE = SY-DATUM.
Internal table declaration for message table
DATA : BEGIN OF MTAB OCCURS 0.
INCLUDE STRUCTURE BDCMSGCOLL.
DATA : END OF MTAB.
DATA : OBJECT LIKE TOA01-SAP_OBJECT VALUE 'BKPF'.
DATA : PWRBTR LIKE BSEG-WRBTR.
DATA : ACL(10).
DATA : DD(2),
DM(2),
DY(4).
DD = 01.
DM = 01.
DY = 1970.
CONCATENATE DD '.' DM '.' DY INTO ACL.
DATA : PDATE(8) .
DATA : PDATE1(10).
DATA : PD(2),
PM(2),
PY(4).
PDATE = SY-DATUM.
PD = PDATE+6(2).
PM = PDATE+4(2).
PY = PDATE+0(4).
CONCATENATE PD '.' PM '.' PY INTO PDATE1.
WA-N1 = 1.
WA-BUKRS = BUKRS.
WA-BLART = 'AB'.
WA-NEWKO = ACCOUNT.
WA-WRBTR = AMOUNT.
Updating Entries for Screen
DO NO TIMES.
ITAB-N1 = WA-N1.
ITAB-BUKRS = WA-BUKRS.
ITAB-BLART = WA-BLART.
ITAB-BUDAT = PDATE.
ITAB-NEWKO = WA-NEWKO.
ITAB-WRBTR = WA-WRBTR.
APPEND ITAB.
ITAB-N1 = WA-N1.
IF WA-N1 LE NO.
WA-N1 = WA-N1 + 1.
WA-WRBTR = WA-WRBTR + 10.
ENDIF.
ENDDO.
PERFORM FILL_BDCDATA USING NO
BUKRS
ACCOUNT
AMOUNT.
Call the transaction FB10 in Background
CALL TRANSACTION 'FB10' USING FTAB MODE 'A' UPDATE 'S' MESSAGES INTO
MTAB.
ENDFUNCTION.
FORM FILL_BDCDATA USING NO
BUKRS
ACCOUNT
AMOUNT.
DATA : BEGIN OF FTAB OCCURS 0.
INCLUDE STRUCTURE BDCDATA.
DATA : END OF FTAB.
DATA : BEGIN OF ITAB OCCURS 0,
N1 type i,
BUKRS LIKE BKPF-BUKRS,
BLART LIKE BKPF-BLART,
NEWKO LIKE RF05A-NEWKO,
WRBTR(13),
BUDAT TYPE DATS,
NEWBS LIKE RF05A-NEWBS,
END OF ITAB.
DATA : BEGIN OF WA,
N1 TYPE I,
BUKRS LIKE BKPF-BUKRS,
BLART LIKE BKPF-BLART,
NEWKO LIKE RF05A-NEWKO,
WRBTR(13),
NEWBS LIKE RF05A-NEWBS,
END OF WA.
DATA : PDATE(8) .
DATA : PDATE1(10).
DATA : PD(2),
PM(2),
PY(4).
PDATE = SY-DATUM.
PD = PDATE+6(2).
PM = PDATE+4(2).
PY = PDATE+0(4).
CONCATENATE PD '.' PM '.' PY INTO PDATE1.
WA-N1 = 1.
WA-BUKRS = BUKRS.
WA-BLART = 'AB'.
WA-NEWKO = ACCOUNT.
WA-WRBTR = AMOUNT.
Updating Entries for Screen
DO NO TIMES.
ITAB-N1 = WA-N1.
ITAB-BUKRS = WA-BUKRS.
ITAB-BLART = WA-BLART.
ITAB-BUDAT = PDATE.
ITAB-NEWKO = WA-NEWKO.
ITAB-WRBTR = WA-WRBTR.
APPEND ITAB.
ITAB-N1 = WA-N1.
IF WA-N1 LE NO.
WA-N1 = WA-N1 + 1.
WA-WRBTR = WA-WRBTR + 10.
ENDIF.
ENDDO.
REFRESH FTAB.
LOOP AT ITAB.
PERFORM BDC_DYNPRO USING 'SAPMF05A' '127'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '/ENV'.
PERFORM BDC_FIELD USING 'BDC_CURSOR' 'BKPF-BLDAT'.
PERFORM BDC_DYNPRO USING 'SAPMF05A' '126'.
PERFORM BDC_FIELD USING 'BDC_CURSOR' 'BKPF-BUKRS'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=RE'.
PERFORM BDC_FIELD USING 'BKPF-BUKRS' ITAB-BUKRS.
PERFORM BDC_FIELD USING 'BKPF-BLART' ITAB-BLART.
PERFORM BDC_FIELD USING 'BKPF-BUDAT' PDATE1.
PERFORM BDC_FIELD USING 'BKPF-MONAT' '1'.
PERFORM BDC_FIELD USING 'BKPF-WAERS' 'EUR'.
PERFORM BDC_FIELD USING 'BKPF-BLDAT' PDATE1.
PERFORM BDC_DYNPRO USING 'SAPMF05A' '127'.
PERFORM BDC_FIELD USING 'BDC_CURSOR' 'BSEG-WRBTR'.
PERFORM BDC_FIELD USING 'BKPF-BLDAT' PDATE1.
PERFORM BDC_FIELD USING 'BKPF-WAERS' 'EUR'.
PERFORM BDC_FIELD USING 'RF05A-NEWKO' ITAB-NEWKO.
PERFORM BDC_FIELD USING 'BSEG-WRBTR' ITAB-WRBTR.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=BU'.
PERFORM BDC_DYNPRO USING 'SAPMF05A' '700'.
PERFORM BDC_FIELD USING 'BDC_CURSOR' 'RF05A-NEWKO'.
PERFORM BDC_FIELD USING 'RF05A-NEWBS' '01'.
PERFORM BDC_FIELD USING 'RF05A-NEWKO' '3471'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=BU'.
PERFORM BDC_DYNPRO USING 'SAPMF05A' '301'.
PERFORM BDC_FIELD USING 'BDC_CURSOR' 'BSEG-WMWST'.
PERFORM BDC_FIELD USING 'BSEG-WRBTR' ITAB-WRBTR .
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=BU'.
IF ITAB-N1 EQ NO.
EXIT.
ENDIF.
ENDLOOP.
ENDFORM.
FORM BDC_DYNPRO USING P_PROGRAM P_DYNPRO.
DATA : BEGIN OF FTAB OCCURS 0.
INCLUDE STRUCTURE BDCDATA.
DATA : END OF FTAB.
CLEAR FTAB.
FTAB-PROGRAM = P_PROGRAM.
FTAB-DYNPRO = P_DYNPRO.
FTAB-DYNBEGIN = 'X'.
APPEND FTAB.
ENDFORM.
FORM BDC_FIELD USING P_FNAM P_FVAL.
DATA : BEGIN OF FTAB OCCURS 0.
INCLUDE STRUCTURE BDCDATA.
DATA : END OF FTAB.
CLEAR FTAB.
FTAB-FNAM = P_FNAM.
FTAB-FVAL = P_FVAL.
APPEND FTAB.
ENDFORM.
but it is not taking input values, for screen FB10.
Please let me know if i have to do any changes.
Thanks and regards,
zubera