Hello Gurus,
I am facing following problem in bellow program.program calls the transaction FB10 and update all the table such as BKPF, BSEG.
In next step it is updating the TOA01 table . my problem is after updating the table BKPF in call transaction FB10, i have to select the belnr ( document number ) from BKPF and insert in TOA01. So i dont have any key field to retrive the retive.
key field is company code 1000 and year 2008. so how i can retrvie the belnr ( document number) and update to TOA01 without key field.
Please tell me this is urgent. i have attached the code.
Thanks in advance .
Best Regds,
zubera
&----
*& Report ZFB4
*&
&----
*&
*&
&----
REPORT ZFB4.
TABLES : TOA01, TOA02, TOA03, TOADL.
DATA : BEGIN OF FTAB OCCURS 0.
INCLUDE STRUCTURE BDCDATA.
DATA : END OF FTAB.
DATA : BEGIN OF C_TABLE OCCURS 0.
INCLUDE STRUCTURE TOA01.
DATA : END OF C_TABLE.
DATA : BEGIN OF F_STRING.
INCLUDE STRUCTURE TOA01.
DATA : END OF F_STRING.
DATA : BEGIN OF PL_TABLE OCCURS 0.
INCLUDE STRUCTURE TOADL.
DATA : END OF PL_TABLE.
DATA : BEGIN OF PL_FIELDS.
INCLUDE STRUCTURE TOADL.
DATA : END OF PL_FIELDS.
DATA : BEGIN OF BTAB OCCURS 0,
BUKRS LIKE BKPF-BUKRS,
BELNR LIKE BKPF-BELNR,
GJAHR LIKE BKPF-GJAHR,
DMBTR LIKE BSEG-DMBTR,
END OF BTAB.
DATA : BEGIN OF ITAB OCCURS 0,
N1 type i,
BUKRS LIKE BKPF-BUKRS,
BLART LIKE BKPF-BLART,
NEWKO LIKE RF05A-NEWKO,
WRBTR(13),
BUDAT LIKE BKPF-BUDAT,
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 : BEGIN OF MTAB OCCURS 0.
INCLUDE STRUCTURE BDCMSGCOLL.
DATA : END OF MTAB.
SELECTION-SCREEN : BEGIN OF BLOCK B1.
PARAMETER : N TYPE I,
BUK LIKE BKPF-BUKRS,
NEWK(13),
WRBTR(13),
ARCHIV LIKE TOA01-ARCHIV_ID,
OBJECT LIKE TOA01-SAP_OBJECT,
CONTAB(5),
START TYPE I.
SELECTION-SCREEN : END OF BLOCK B1.
WA-N1 = 1.
WA-BUKRS = BUK.
WA-BLART = 'AB'.
WA-NEWKO = NEWK.
WA-WRBTR = WRBTR.
DO N TIMES.
ITAB-N1 = WA-N1.
ITAB-BUKRS = WA-BUKRS.
ITAB-BLART = WA-BLART.
ITAB-BUDAT = SY-DATUM.
ITAB-NEWKO = WA-NEWKO.
ITAB-WRBTR = WA-WRBTR.
APPEND ITAB.
ITAB-N1 = WA-N1.
IF WA-N1 LE N.
WA-N1 = WA-N1 + 1.
WA-WRBTR = WA-WRBTR + 10.
ENDIF.
ENDDO.
*ITAB-N1 = 2.
*ITAB-BUKRS = BUK.
*ITAB-BLART = 'AB'.
*ITAB-NEWKO = NEWK.
*ITAB-WRBTR = 02.
*APPEND ITAB.
*ITAB-N1 = 3.
*ITAB-BUKRS = BUK.
*ITAB-BLART = 'AB'.
*ITAB-NEWKO = NEWK.
*ITAB-WRBTR = 03.
*APPEND ITAB.
*ITAB-N1 = 4.
*ITAB-BUKRS = BUK.
*ITAB-BLART = 'AB'.
*ITAB-NEWKO = NEWK.
*ITAB-WRBTR = 04.
*APPEND ITAB.
*ITAB-N1 = 5.
*ITAB-BUKRS = BUK.
*ITAB-BLART = 'AB'.
*ITAB-NEWKO = NEWK.
*ITAB-WRBTR = 05.
*APPEND ITAB.
*ITAB-N1 = 6.
*ITAB-BUKRS = BUK.
*ITAB-BLART = 'AB'.
*ITAB-NEWKO = NEWK.
*ITAB-WRBTR = 06.
*APPEND ITAB.
*ITAB-N1 = 7.
*ITAB-BUKRS = BUK.
*ITAB-BLART = 'AB'.
*ITAB-NEWKO = NEWK.
*ITAB-WRBTR = 07.
*APPEND ITAB.
*ITAB-N1 = 8.
*ITAB-BUKRS = BUK.
*ITAB-BLART = 'AB'.
*ITAB-NEWKO = NEWK.
*ITAB-WRBTR = 08.
*APPEND ITAB.
*ITAB-N1 = 9.
*ITAB-BUKRS = BUK.
*ITAB-BLART = 'AB'.
*ITAB-NEWKO = NEWK.
*ITAB-WRBTR = 09.
*APPEND ITAB.
*ITAB-N1 = 10.
*ITAB-BUKRS = BUK.
*ITAB-BLART = 'AB'.
*ITAB-NEWKO = NEWK.
*ITAB-WRBTR = 10.
*APPEND ITAB.
PERFORM FILL_BDCDATA.
CALL TRANSACTION 'FB10' USING FTAB MODE 'N' UPDATE 'S' MESSAGES INTO MTAB.
DO N TIMES.
SELECT BUKRS BELNR GJAHR FROM BKPF INTO TABLE BTAB WHERE BUKRS = '1000'
AND GJAHR = '2008'.
ENDDO.
LOOP AT ITAB.
WRITE : / BTAB-BUKRS, BTAB-BELNR, btab-gjahr.
ENDLOOP.
BREAK-POINT.
IF CONTAB EQ 'TOA01' OR
CONTAB EQ 'TOA02' OR
CONTAB EQ 'TOA03'.
PERFORM CREATE_DATA2 TABLES C_TABLE USING N
ARCHIV
OBJECT
START.
CLEAR C_TABLE.
LOOP AT C_TABLE.
MOVE C_TABLE TO F_STRING.
DO N TIMES.
IF CONTAB EQ 'TOA01'.
INSERT INTO TOA01 VALUES F_STRING.
ELSEIF CONTAB EQ 'TOA02'.
INSERT INTO TOA02 VALUES F_STRING.
ELSEIF CONTAB EQ 'TOA03'.
INSERT INTO TOA03 VALUES F_STRING.
ENDIF.
ENDDO.
ENDLOOP.
ELSEIF CONTAB EQ 'TOADL'.
PERFORM CREATE_PL_DATA2 TABLES PL_TABLE USING N
ARCHIV
OBJECT
START.
LOOP AT PL_TABLE.
MOVE PL_TABLE TO PL_FIELDS.
INSERT INTO TOADL VALUES PL_FIELDS.
CLEAR PL_FIELDS.
ENDLOOP.
PERFORM CREATE_DATA2 TABLES C_TABLE USING N
ARCHIV
OBJECT
START.
CLEAR C_TABLE.
LOOP AT C_TABLE.
MOVE C_TABLE TO F_STRING.
INSERT INTO TOA01 VALUES F_STRING.
ENDLOOP.
CLEAR C_TABLE.
ENDIF.
FORM FILL_BDCDATA.
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' '02.01.2008'.
PERFORM BDC_FIELD USING 'BKPF-MONAT' '1'.
PERFORM BDC_FIELD USING 'BKPF-WAERS' 'EUR'.
PERFORM BDC_FIELD USING 'BKPF-BLDAT' '02.01.2008'.
PERFORM BDC_DYNPRO USING 'SAPMF05A' '127'.
PERFORM BDC_FIELD USING 'BDC_CURSOR' 'BSEG-WRBTR'.
PERFORM BDC_FIELD USING 'BKPF-BLDAT' '02.01.2008'.
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 N.
EXIT.
ENDIF.
ENDLOOP.
ENDFORM.
FORM BDC_DYNPRO USING P_PROGRAM P_DYNPRO.
CLEAR FTAB.
FTAB-PROGRAM = P_PROGRAM.
FTAB-DYNPRO = P_DYNPRO.
FTAB-DYNBEGIN = 'X'.
APPEND FTAB.
ENDFORM.
FORM BDC_FIELD USING P_FNAM P_FVAL.
CLEAR FTAB.
FTAB-FNAM = P_FNAM.
FTAB-FVAL = P_FVAL.
APPEND FTAB.
ENDFORM.
FORM CREATE_DATA2 TABLES INT_TAB STRUCTURE TOA01 USING N
ARCHIV
OBJECT
START.
DATA : BEGIN OF F_STRING.
INCLUDE STRUCTURE INT_TAB.
DATA : END OF F_STRING.
DATA : BUK LIKE BKPF-BUKRS,
GJA LIKE BKPF-GJAHR,
OBJID(50).
BUK = 1000.
GJA = 2008.
DATA : TOA(18) TYPE N,
INDEX(10) TYPE N.
DATA : N5 TYPE I .
DATA : N6 TYPE I VALUE 1.
DO N TIMES.
IF START IS INITIAL.
INDEX = SY-INDEX.
ELSE.
INDEX = START + SY-INDEX - 1.
ENDIF.
F_STRING-MANDT = SY-MANDT.
F_STRING-SAP_OBJECT = OBJECT.
F_STRING-ARCHIV_ID = ARCHIV.
CONCATENATE BUK INDEX GJA INTO OBJID.
F_STRING-OBJECT_ID = OBJID.
F_STRING-ARC_DOC_ID = INDEX.
APPEND F_STRING TO INT_TAB.
CLEAR F_STRING.
ENDDO.
ENDFORM.
FORM CREATE_PL_DATA2 TABLES INT_TAB STRUCTURE TOADL USING N
ARCHIV
OBJECT
START.
DATA : BEGIN OF F_STRING.
INCLUDE STRUCTURE INT_TAB.
DATA : END OF F_STRING.
DATA : BUK LIKE BKPF-BUKRS,
GJA LIKE BKPF-GJAHR,
OBJID(50).
BUK = 1000.
GJA = 2007.
DATA : TOA(18) TYPE N,
INDEX(10) TYPE N.
DO N TIMES.
IF START IS INITIAL.
INDEX = SY-INDEX.
ELSE.
INDEX = START + SY-INDEX - 1.
ENDIF.
F_STRING-MANDANT = SY-MANDT.
F_STRING-SAP_OBJECT = OBJECT.
F_STRING-ARCHIV_ID = ARCHIV.
F_STRING-ARC_DOC_ID = INDEX.
F_STRING-AR_OBJECT = 'TEST'.
F_STRING-BENUTZER = SY-UNAME.
F_STRING-DATALENGTH = 0.
F_STRING-DATUM = SY-DATUM.
F_STRING-DESCLENGTH = 0.
F_STRING-DRUCKER = 'LP01'.
F_STRING-FORMULAR = 'X_65_132'.
F_STRING-INFO = 'TST'.
F_STRING-KURZTEXT = 'AUTOMATISH GENERATED DRUCKLIST'.
F_STRING-LNR = INDEX.
F_STRING-REPORT = 'F.YYY'.
F_STRING-AR_TIME = SY-UZEIT.
APPEND F_STRING TO INT_TAB.
CLEAR F_STRING.
ENDDO.
ENDFORM.