2008 Jan 22 1:27 PM
Hi,
My program was using BDC session for MIR4 transaction ,but as it is not working in background,I am supposed to replace BDC session Code with BAPI for MIR4.
Can any one let me know the suitable BAPI for MIR4.
Thanks in advance.
Edited by: Alvaro Tejada Galindo on Jan 22, 2008 5:28 PM
Hi,
My program was using BDC session for MIR4 transaction ,but as it is not working in background,I am supposed to replace BDC session Code with BAPI for MIR4.
Can any one let me know the suitable BAPI for MIR4.
Thanks in advance.
Edited by: Alvaro Tejada Galindo on Jan 22, 2008 5:28 PM
2008 Jan 22 1:47 PM
Hi,
If its for display only, try using the below BAPI
BAPI_INCOMINGINVOICE_GETDETAIL
Pass the invoice number and the fiscal year.
Thanks,
Rangaraju
2008 Jan 22 2:14 PM
Hi
I am psting my code ,could u suggest me the possible changes to be done in my code,i feel the BAPI u refered is correct.
I am selectin second radio button in the selection screen
REPORT zfiap_park_docs MESSAGE-ID zfiap NO STANDARD PAGE HEADING
LINE-SIZE 255.
*
* Title (english) : Year End Job for AP Parked *
* Description : Batch Program - Year End Job for AP Parked Docs *
* DESCRIPTION *
* *
* Automatically changing the posting date for all Parked documents *
* at Year End to the begining of the following Year. *
* Modif.description : *
* Automatically changing the posting date for all Parked documents *
* at Year End to the begining of the following Year. Automatic *
* numbering for trade deals invoices and for incoices posted with *
* reference to purchase order. *
***********************************************************catalog_end**
*----------------------------------------------------------------------*
* SAP TABLES
*----------------------------------------------------------------------*
TABLES : vbkpf, "Document Header for Document Parking
t001, "Company Codes
zsd_settle_rebat, " Rebate settlement table "@001
rbkp, "Document Header: Invoice Receipt "@001
t100. "Message texts
* Begin of insert @001
TYPES : BEGIN OF ty_belnr,
o_belnr TYPE vbkpf-belnr,
n_belnr TYPE vbkpf-belnr,
END OF ty_belnr.
* End of insert @001
*----------------------------------------------------------------------*
* Constants
*----------------------------------------------------------------------*
DATA: c_periv LIKE t009b-periv VALUE 'A1'. "Fiscal year variant
* Begin of Insert @001
DATA: c_checked VALUE 'X',
c_r1(2) VALUE 'R1',
c_r2(2) VALUE 'R2',
c_r3(2) VALUE 'R3'.
* End of Insert @001
*----------------------------------------------------------------------*
*--- Internal tables
*----------------------------------------------------------------------*
*--- Batchinputdata of single transaction
DATA: BEGIN OF t_bdcdata OCCURS 0.
INCLUDE STRUCTURE bdcdata.
DATA: END OF t_bdcdata.
*--- Records from vbkpf table to change fiscal year
DATA: BEGIN OF t_vbkpf OCCURS 0,
belnr LIKE vbkpf-belnr,
ausbk LIKE vbkpf-ausbk,
tcode LIKE vbkpf-tcode,
bktxt LIKE vbkpf-bktxt, "@001
END OF t_vbkpf.
* Begin opf insert @001
* Internal table for data for MIR7
DATA : t_rbkp LIKE TABLE OF rbkp,
wa_rbkp LIKE LINE OF t_rbkp.
DATA : t_belnr TYPE TABLE OF ty_belnr,
wa_belnr LIKE LINE OF t_belnr.
DATA : wa_rebat LIKE zsd_settle_rebat.
* End of insert @001
*--- Messages
DATA: t_messtab LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.
*----------------------------------------------------------------------*
* Variables
*----------------------------------------------------------------------*
DATA: w_date LIKE sy-datum, "dummy
w_ptdt(8) TYPE n, "New Posting Date
w_group_opened. "Session group opened
DATA w_rad(2) TYPE c. "For radio button values "@001
*----------------------------------------------------------------------*
* Selection Parameters
*----------------------------------------------------------------------*
SELECT-OPTIONS s_blart FOR vbkpf-blart OBLIGATORY NO-EXTENSION.
SELECT-OPTIONS s_belnr FOR vbkpf-belnr. "@001
PARAMETERS:
* Company code
p_bukrs LIKE vbkpf-bukrs OBLIGATORY VALUE CHECK,
* Fiscal Year
p_gjahr LIKE vbkpf-gjahr DEFAULT sy-datum(4) OBLIGATORY,
* New Posting Date
p_budat LIKE vbkpf-budat OBLIGATORY,
* Run mode
p_ctumod LIKE ctu_params-dismode DEFAULT 'N' OBLIGATORY,
"A: show all dynpros
"E: show dynpro on error only
"N: do not display dynpro
* Update mode
p_cupdat LIKE ctu_params-updmode DEFAULT 'L' OBLIGATORY,
"S: synchronously
"A: asynchronously
"L: local
* Session Name
p_groupi LIKE apqi-groupid OBLIGATORY DEFAULT sy-repid,
* Batch Input User
p_userid LIKE apqi-userid OBLIGATORY DEFAULT sy-uname,
* Session Locked untill specified date
p_strtdt LIKE apqi-startdate,
* Keep Batch Session
p_qerase AS CHECKBOX DEFAULT 'X'.
* Begin of insert @001
* Renumbering of vendor invoices without PO.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS p_r1 RADIOBUTTON GROUP rad.
SELECTION-SCREEN COMMENT 3(50) text-006.
SELECTION-SCREEN END OF LINE.
* Renumbering of vendor invoices with PO.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS p_r2 RADIOBUTTON GROUP rad.
SELECTION-SCREEN COMMENT 3(50) text-007.
SELECTION-SCREEN END OF LINE.
* Renumbering of trade deals vendor invoices.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS p_r3 RADIOBUTTON GROUP rad.
SELECTION-SCREEN COMMENT 3(50) text-008.
SELECTION-SCREEN END OF LINE.
* End of insert @001
INITIALIZATION.
*set default value for Parameter Session Lock
CALL FUNCTION 'MONTH_PLUS_DETERMINE'
EXPORTING
months = 1
olddate = sy-datum
IMPORTING
newdate = p_strtdt.
*set default value for parameter New Posting Date
CALL FUNCTION 'FIRST_AND_LAST_DAY_IN_YEAR_GET'
EXPORTING
i_gjahr = sy-datum(4)
i_periv = c_periv
IMPORTING
e_first_day = w_date
e_last_day = p_budat.
CALL FUNCTION 'ADD_TIME_TO_DATE'
EXPORTING
i_idate = p_budat
i_time = 1
i_iprkz = ' '
IMPORTING
o_idate = p_budat.
*--- AT SELECTION SCREEN
AT SELECTION-SCREEN ON p_bukrs.
* Validation for Company Code
SELECT SINGLE * FROM t001 WHERE bukrs = p_bukrs.
IF sy-subrc NE 0.
MESSAGE e065.
ENDIF.
AT SELECTION-SCREEN.
*Validation for Records exits
SELECT SINGLE * FROM vbkpf WHERE ausbk = p_bukrs
AND gjahr = p_gjahr
AND blart IN s_blart.
IF sy-subrc NE 0.
MESSAGE e066 WITH p_bukrs p_gjahr.
ENDIF.
* Begin of insert @001
AT SELECTION-SCREEN ON RADIOBUTTON GROUP rad.
CLEAR w_rad.
IF p_r1 = c_checked.
w_rad = c_r1.
ELSEIF p_r2 = c_checked.
w_rad = c_r2.
ELSE.
w_rad = c_r3.
ENDIF.
* End of insert @001
*----------------------------------------------------------------------*
*--- START-OF-SELECTION
*----------------------------------------------------------------------*
START-OF-SELECTION.
* authority check
PERFORM check_aurthority.
* format date
PERFORM format_date.
CASE w_rad. "@001
WHEN c_r1 OR c_r3. "@001
* select records from table vbkpf with selection creteria given
CLEAR t_vbkpf.
REFRESH t_vbkpf.
*Begin of changes - @001
* SELECT belnr ausbk tcode FROM vbkpf
* INTO CORRESPONDING FIELDS OF TABLE t_vbkpf
* WHERE belnr = p_belnr
* AND ausbk = p_bukrs
* AND gjahr = p_gjahr
* AND blart IN s_blart.
SELECT belnr ausbk tcode bktxt FROM vbkpf
INTO CORRESPONDING FIELDS OF TABLE t_vbkpf
WHERE belnr IN s_belnr
AND ausbk = p_bukrs
AND gjahr = p_gjahr
AND blart IN s_blart.
*End of changes - @001
SORT t_vbkpf.
LOOP AT t_vbkpf.
wa_belnr-o_belnr = t_vbkpf-belnr. "@001
* build up bdcdata
REFRESH t_bdcdata.
PERFORM bdc_dynpro USING 'SAPMF05V' '0100'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RF05V-GJAHR'.
PERFORM bdc_field USING 'RF05V-BUKRS'
t_vbkpf-ausbk.
PERFORM bdc_field USING 'RF05V-BELNR'
t_vbkpf-belnr.
PERFORM bdc_field USING 'RF05V-GJAHR'
p_gjahr.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
* for tcodes FBV1 or FB01
* IF T_VBKPF-TCODE = 'FBV1' OR T_VBKPF-TCODE = 'FB01'. "@001
IF t_vbkpf-tcode = 'FBV1' OR t_vbkpf-tcode = 'FB01' "@001
OR t_vbkpf-tcode = 'YFV6'."@001
PERFORM bdc_dynpro USING 'SAPLF040' '0600'.
PERFORM bdc_field USING 'BDC_CURSOR'
'BKPF-BUDAT'.
PERFORM bdc_field USING 'BKPF-BUDAT'
w_ptdt.
PERFORM bdc_field USING 'BKPF-BKTXT'
t_vbkpf-belnr.
* for tcodes FV60 or FV65 or FB60
ELSEIF t_vbkpf-tcode = 'FV60' OR t_vbkpf-tcode = 'FV65'
OR t_vbkpf-tcode = 'FB60'.
PERFORM bdc_dynpro USING 'SAPMF05A' '1100'.
PERFORM bdc_field USING 'BDC_CURSOR'
'INVFO-BUDAT'.
PERFORM bdc_field USING 'INVFO-BUDAT'
w_ptdt .
PERFORM bdc_field USING 'BDC_OKCODE'
'=MORE'.
PERFORM bdc_dynpro USING 'SAPMF05A' '1100'.
PERFORM bdc_field USING 'BDC_CURSOR'
'INVFO-BKTXT'.
*Begin of changes - @001
* PERFORM bdc_field USING 'INVFO-BKTXT'
* t_vbkpf-belnr.
PERFORM bdc_field USING 'INVFO-BKTXT'
t_vbkpf-bktxt.
*End of changes - @001
* for tcodes FB50 or FV50
ELSEIF t_vbkpf-tcode = 'FB50' OR t_vbkpf-tcode = 'FV50'.
PERFORM bdc_dynpro USING 'SAPMF05A' '1001'.
PERFORM bdc_field USING 'BDC_CURSOR'
'ACGL_HEAD-BUDAT'.
PERFORM bdc_field USING 'ACGL_HEAD-BUDAT'
w_ptdt.
PERFORM bdc_field USING 'ACGL_HEAD-BKTXT'
t_vbkpf-belnr.
ENDIF.
PERFORM bdc_field USING 'BDC_OKCODE'
'=BP'.
*Begin of insert - @001
IF w_rad = c_r3.
PERFORM bdc_dynpro USING 'SAPMF05A' '1100'.
PERFORM bdc_field USING 'BDC_CURSOR'
'INVFO-BKTXT'.
*BDC data for the popup screen
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
ENDIF.
*End of insert - @001
IF NOT t_bdcdata[] IS INITIAL.
PERFORM bdc_transaction USING 'FBV4' p_ctumod p_cupdat.
ENDIF.
ENDLOOP.
* Begin of insert @001
IF w_rad = c_r3.
CLEAR wa_belnr.
LOOP AT t_belnr INTO wa_belnr.
PERFORM update_table.
ENDLOOP.
ENDIF.
WHEN c_r2.
IF s_belnr[] IS INITIAL.
SELECT * FROM rbkp INTO TABLE t_rbkp
WHERE gjahr = p_gjahr
AND blart IN s_blart
AND bukrs = p_bukrs
AND ( rbstat = 'A' OR
rbstat = 'B' OR
rbstat = 'C' ).
ELSE.
SELECT * FROM rbkp INTO TABLE t_rbkp
WHERE belnr IN s_belnr
AND gjahr = p_gjahr
AND blart IN s_blart
AND bukrs = p_bukrs
AND ( rbstat = 'A' OR
rbstat = 'B' OR
rbstat = 'C' ).
ENDIF.
IF sy-subrc = 0.
LOOP AT t_rbkp INTO wa_rbkp.
REFRESH t_bdcdata.
PERFORM bdc_dynpro USING 'SAPLMR1M' '6150'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RBKP-BELNR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=RBAN'.
PERFORM bdc_field USING 'RBKP-BELNR'
wa_rbkp-belnr.
PERFORM bdc_field USING 'RBKP-GJAHR'
wa_rbkp-gjahr.
PERFORM bdc_dynpro USING 'SAPLMR1M' '6000'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/EPPCH'.
IF wa_rbkp-rbstat = 'A' OR wa_rbkp-rbstat = 'B'.
* Park
PERFORM bdc_dynpro USING 'SAPLMR1M' '6000'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=PARK'.
ELSE.
* Store
PERFORM bdc_dynpro USING 'SAPLMR1M' '6000'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=STORE'.
ENDIF.
PERFORM bdc_field USING 'INVFO-BUDAT'
w_ptdt.
IF NOT t_bdcdata[] IS INITIAL.
*PERFORM bdc_transaction USING 'MIR4' p_ctumod* p_cupdat.
ENDIF.
CLEAR wa_rbkp.
ENDLOOP.
ELSE.
MESSAGE i066 WITH p_bukrs p_gjahr.
STOP.
ENDIF.
ENDCASE.
* End of insert @001
* Close batch input session
IF w_group_opened = 'X'.
PERFORM close_group.
ENDIF.
* Release memory of internal table
FREE: t_bdcdata, t_vbkpf, t_messtab.
*----------------------------------------------------------------------*
* create batchinput session *
*----------------------------------------------------------------------*
FORM open_group.
* CALL FUNCTION 'BDC_OPEN_GROUP'
* EXPORTING
* client = sy-mandt
* group = p_groupi
* user = p_userid
* keep = p_qerase
* holddate = p_strtdt.
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
CLIENT = SY-MANDT
* DEST = FILLER8
GROUP = p_groupi
HOLDDATE = p_strtdt
KEEP = p_qerase
USER = p_userid
* RECORD = FILLER1
* PROG = SY-CPROG
EXCEPTIONS
CLIENT_INVALID = 1
DESTINATION_INVALID = 2
GROUP_INVALID = 3
GROUP_IS_LOCKED = 4
HOLDDATE_INVALID = 5
INTERNAL_ERROR = 6
QUEUE_ERROR = 7
RUNNING = 8
SYSTEM_LOCK_ERROR = 9
USER_INVALID = 10
OTHERS = 11
.
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. "OPEN_GROUP
*----------------------------------------------------------------------*
* end batchinput session *
*----------------------------------------------------------------------*
FORM close_group.
CALL FUNCTION 'BDC_CLOSE_GROUP'.
ENDFORM. "CLOSE_GROUP
*----------------------------------------------------------------------*
* Start new transaction *
*----------------------------------------------------------------------*
FORM bdc_transaction USING tcode ctumode cupdate.
DATA: wl_mstring(480). "String to print messages
DATA: wl_subrc LIKE sy-subrc. "sub-rc
DATA : lwa_options TYPE ctu_params. "@001
* clear message table
REFRESH t_messtab.
*Begin of insert - @001
IF w_rad = c_r3.
lwa_options-racommit = c_checked.
lwa_options-dismode = ctumode.
lwa_options-updmode = cupdate.
* Call Tcode for updating doc
CALL TRANSACTION tcode USING t_bdcdata
OPTIONS FROM lwa_options
MESSAGES INTO t_messtab.
ELSE.
*End of insert - @001
* Call Tcode for updating doc
CALL TRANSACTION tcode USING t_bdcdata
MODE ctumode
UPDATE cupdate
MESSAGES INTO t_messtab.
ENDIF. "@001
wl_subrc = sy-subrc.
* write status
WRITE: / 'CALL_TRANSACTION', tcode,
'returncode:'(i05), wl_subrc,
'RECORD:',sy-index.
WRITE : / text-009, t_vbkpf-belnr, p_gjahr, "@001
text-010. "@001
* write messages
LOOP AT t_messtab.
* Begin of insert @001
IF t_messtab-msgtyp = 'S' AND t_messtab-msgv2 = p_bukrs
AND w_rad = c_r3.
wa_belnr-n_belnr = t_messtab-msgv1.
APPEND wa_belnr TO t_belnr.
ENDIF.
* End of insert @001
SELECT SINGLE * FROM t100 WHERE sprsl = t_messtab-msgspra
AND arbgb = t_messtab-msgid
AND msgnr = t_messtab-msgnr.
IF sy-subrc = 0.
wl_mstring = t100-text.
IF wl_mstring CS '&1'.
REPLACE '&1' WITH t_messtab-msgv1 INTO wl_mstring.
REPLACE '&2' WITH t_messtab-msgv2 INTO wl_mstring.
REPLACE '&3' WITH t_messtab-msgv3 INTO wl_mstring.
REPLACE '&4' WITH t_messtab-msgv4 INTO wl_mstring.
ELSE.
REPLACE '&' WITH t_messtab-msgv1 INTO wl_mstring.
REPLACE '&' WITH t_messtab-msgv2 INTO wl_mstring.
REPLACE '&' WITH t_messtab-msgv3 INTO wl_mstring.
REPLACE '&' WITH t_messtab-msgv4 INTO wl_mstring.
ENDIF.
CONDENSE wl_mstring.
WRITE: / t_messtab-msgtyp, wl_mstring(250).
ELSE.
WRITE: / t_messtab.
ENDIF.
ENDLOOP.
SKIP.
* if subrc is not 0, generate session
IF wl_subrc <> 0 AND p_groupi <> space.
IF w_group_opened = ' '.
PERFORM open_group.
w_group_opened = 'X'.
ENDIF.
CALL FUNCTION 'BDC_INSERT'
EXPORTING
tcode = tcode
TABLES
dynprotab = t_bdcdata.
ENDIF.
ENDFORM. "BDC_TRANSACTION
*----------------------------------------------------------------------*
* Start new screen *
*----------------------------------------------------------------------*
FORM bdc_dynpro USING program dynpro.
CLEAR t_bdcdata.
t_bdcdata-program = program.
t_bdcdata-dynpro = dynpro.
t_bdcdata-dynbegin = 'X'.
APPEND t_bdcdata.
ENDFORM. "BDC_DYNPRO
*----------------------------------------------------------------------*
* Insert field *
*----------------------------------------------------------------------*
FORM bdc_field USING fnam fval.
CLEAR t_bdcdata.
t_bdcdata-fnam = fnam.
t_bdcdata-fval = fval.
APPEND t_bdcdata.
ENDFORM. "BDC_FIELD
*---------------------------------------------------------------------*
* Date format
*---------------------------------------------------------------------*
FORM format_date.
w_ptdt+0(2) = p_budat+6(2).
w_ptdt+2(2) = p_budat+4(2).
w_ptdt+4(4) = p_budat+0(4).
ENDFORM. "FORMAT_DATE
*&---------------------------------------------------------------------*
*& Form check_aurthority
*&---------------------------------------------------------------------*
FORM check_aurthority.
AUTHORITY-CHECK OBJECT 'F_BKPF_BUK'
ID 'BUKRS' FIELD p_bukrs "Company code
ID 'ACTVT' FIELD '03'. "Display
IF sy-subrc <> 0.
AUTHORITY-CHECK OBJECT 'F_BKPF_BUK'
ID 'BUKRS' FIELD p_bukrs "Company code
ID 'ACTVT' FIELD '08'. "Display/changing
IF sy-subrc <> 0.
MESSAGE e067 WITH p_bukrs.
STOP.
ENDIF.
ENDIF.
ENDFORM. " check_aurthority
* Begin of insert @001
*&---------------------------------------------------------------------
*
*& Form update_table
*&---------------------------------------------------------------------
*
FORM update_table.
SELECT SINGLE * FROM zsd_settle_rebat INTO wa_rebat
WHERE belnr = wa_belnr-o_belnr
AND gjahr = p_gjahr.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = wa_belnr-n_belnr
IMPORTING
output = wa_belnr-n_belnr.
wa_rebat-belnr = wa_belnr-n_belnr.
wa_rebat-budat = p_budat.
SELECT SINGLE gjahr FROM bkpf
INTO wa_rebat-gjahr
WHERE belnr = wa_belnr-n_belnr
AND wwert = p_budat.
MODIFY zsd_settle_rebat FROM wa_rebat.
IF sy-subrc = 0.
COMMIT WORK.
MESSAGE s605(01).
ELSE.
ROLLBACK WORK.
ENDIF.
ENDFORM. " entry_table
* End of insert @001
Code Formatted by: Alvaro Tejada Galindo on Jan 22, 2008 5:30 PM
2008 Jan 22 2:07 PM
Hi Madhavi,
check this, may help u.
LMR1M001 User exits in Logistics Invoice Verification
LMR1M002 Account grouping for GR/IR account maintenance
LMR1M003 Number assignment in Logistics Invoice Verification
LMR1M004 Logistics Invoice Verification: item text for follow-on docs
LMR1M005 Logistics Inv. Verification: Release Parked Doc. for Posting
LMR1M006 Logistics Invoice Verification: Process XML Invoice
MRMH0001 Logistics Invoice Verification: ERS procedure
MRMH0002 Logistics Invoice Verification: EDI inbound
MRMH0003 Logistics Invoice Verification: Revaluation/RAP
MRMN0001 Message output and creation: Logistics Invoice Verification
<REMOVED BY MODERATOR>
cheers,
Hema.
Edited by: Alvaro Tejada Galindo on Jan 22, 2008 5:29 PM
2008 Jan 22 2:16 PM
2008 Jan 23 9:47 PM
Hi ,
You use the BAPI
BAPI_INCOMINGINVOICE_SAVE or BAPI_INCOMINGINVOICE_PARK
in this you have pass the data for Header and Item.
Regards,
Venkat
2020 Dec 09 3:30 AM
The BAPI is MRM_INVOICE_PREPARE_AND_POST. Don`t forget commit.I had used it.
| User | Count |
|---|---|
| 6 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |