Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Inconsistencey in BAPI

Former Member
0 Likes
1,186

Hi,

I have implemented a BAPI call "BAPI_GOODSMVT_CREATE" in the ABAP program to have the goods issue.

I have tried the function in SE37 to test the parameters provided, it is successful and a document no. created.

However an error message always returned that the cost centre does not exist on 05.03.2006, actually this period is opened and I have post the records in the SE37 in the same period.

The posting date and the document date is entered in the BAPI2017_GM_HEAD_01.

Any hints or experince on that?

Message was edited by: Chung Angus

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
1,105

Check whether you are providing the cost center value with leading zeroes? If not, you need to do so.

Use the function CONVERSION_EXIT_ALPHA_INPUT to add leading zeroes.

-Kiran

*Please reward useful answers

9 REPLIES 9
Read only

Former Member
0 Likes
1,105

bapi will check the validity of that cost centre on that given date.

so check that one in KS03.

u have to check VALID FROM , not VALID TO

Regards

Prabhu

Message was edited by: Prabhu Peram

Read only

Former Member
0 Likes
1,105

In KS03, the cost center is valid to '31.12.9999', it should be ok to post in any time.

I have tried to remove the cost center from the BAPI and it works.

Once the cost center is provided, any other information should be entered in order to let the function works?

Read only

Former Member
0 Likes
1,105
Read only

Former Member
0 Likes
1,105

Check the below code:

&----


*& Report YTESTLOSS *

*& *

&----


*& *

*& *

&----


REPORT ytestloss .

***********data declarations*******************

TYPES : BEGIN OF ty_lgort_sum,

lgort LIKE mseg-lgort,

menge1 LIKE mseg-menge,

menge2 LIKE mseg-menge,

lossquantity LIKE mseg-menge,

umlgo like mseg-menge.

TYPES : END OF ty_lgort_sum.

TYPES : BEGIN OF ty_gds,

lgort LIKE mseg-lgort,

menge1 LIKE mseg-menge,

menge2 LIKE mseg-menge,

lossquantity LIKE mseg-menge,

bwart LIKE mseg-bwart,

matnr LIKE mseg-matnr,

umlgo like mseg-menge,

werks LIKE mseg-werks.

TYPES : END OF ty_gds.

*********internal tables***********

DATA : i_mseg LIKE TABLE OF mseg WITH HEADER LINE,

i_mseg1 TYPE STANDARD TABLE OF ty_lgort_sum WITH HEADER LINE,

i_mkpf LIKE TABLE OF mkpf WITH HEADER LINE.

*********Work areas***********

DATA : wa_mseg LIKE mseg,

wa_mseg1 TYPE ty_gds,

wa_mkpf LIKE mkpf,

wa_lgort_sum TYPE ty_lgort_sum,

wa_loss_data LIKE zpesloss,

wa_zpesloss LIKE zpesloss.

*******Varaiables************

DATA : ws_zolorg LIKE zocmtpa-zolorg.

DATA : ws_date LIKE sy-datum.

***********bapi declaration*************

TYPES : BEGIN OF t_return .

INCLUDE STRUCTURE bapiret2.

TYPES : END OF t_return.

TYPES : BEGIN OF t_items.

INCLUDE STRUCTURE bapi2017_gm_item_create.

TYPES: END OF t_items.

DATA: i_items TYPE STANDARD TABLE OF t_items,

i_return_goods TYPE STANDARD TABLE OF t_return.

DATA: wa_items TYPE t_items.

DATA : i_bapireturn LIKE TABLE OF zpesloss,

wa_bapireturn LIKE zpesloss.

DATA : i_bapi LIKE TABLE OF bapi2017_gm_head_ret-mat_doc.

DATA : v_header LIKE bapi2017_gm_head_01,

v_gm_code LIKE bapi2017_gm_code.

DATA: wa_headret LIKE bapi2017_gm_head_ret,

wa_matdoc TYPE bapi2017_gm_head_ret-mat_doc,

wa_matdocyr TYPE bapi2017_gm_head_ret-doc_year.

************************************************************

SELECT *

FROM mseg

INTO

CORRESPONDING FIELDS OF TABLE i_mseg

WHERE ( bwart = '101'

OR bwart = '102' )

AND werks = 'SP01'

AND ( lgort = 'BA01'

OR lgort = 'CA01'

OR lgort = 'HU01' )

AND matnr = 'LNGES1'.

                • 31 days from sy-datum********

CALL FUNCTION 'RM_GO_BACK_N_DAYS'

EXPORTING

start_date = sy-datum

n_days = 31

  • KALENDER =

IMPORTING

hist_date = ws_date

EXCEPTIONS

negative_days = 1

initial_start_date = 2

OTHERS = 3

.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

**********selecting from mkpf

SELECT mblnr

xabln

budat

mjahr

FROM mkpf

INTO CORRESPONDING FIELDS OF TABLE i_mkpf

FOR ALL ENTRIES IN i_mseg

WHERE mblnr = i_mseg-mblnr AND

( budat >= ws_date AND

budat <= sy-datum ).

******Selecting for percentage**********

SELECT SINGLE zolorg

INTO ws_zolorg

FROM zocmtpa.

IF sy-subrc = 0.

ENDIF.

break invvi2.

LOOP AT i_mseg .

CLEAR : wa_lgort_sum,i_mseg1.

SELECT SINGLE * FROM zpesloss

INTO CORRESPONDING FIELDS OF wa_zpesloss

WHERE mblnr = i_mseg-mblnr

AND lgort = i_mseg-lgort.

IF sy-subrc EQ 0.

DELETE i_mseg.

CONTINUE.

ENDIF.

*********movement type 101***********

IF sy-subrc NE 0.

wa_lgort_sum-lgort = i_mseg-lgort.

wa_lgort_sum-umlgo = i_mseg-umlgo.

IF i_mseg-bwart = '101'.

wa_lgort_sum-menge1 = i_mseg-menge.

COLLECT wa_lgort_sum INTO i_mseg1.

*********movement type 102***********

ELSE.

wa_lgort_sum-menge2 = i_mseg-menge.

COLLECT wa_lgort_sum INTO i_mseg1.

ENDIF.

ENDIF.

ENDLOOP.

LOOP AT i_mseg1.

wa_mseg1-lossquantity = ( i_mseg1-menge1 - i_mseg1-menge2 ) * ws_zolorg

/ 100.

IF wa_mseg1-lossquantity > 0.

wa_mseg1-bwart = '551'.

wa_mseg1-matnr = 'LNGES1'.

wa_mseg1-lgort = i_mseg1-lgort.

wa_mseg1-werks = 'SP01'.

ELSE.

wa_mseg1-bwart = '552'.

ENDIF.

***********Bapi************************

CLEAR : v_header, v_gm_code.

  • Header Data

v_header-pstng_date = sy-datum.

v_header-doc_date = sy-datum.

  • Code Group

v_gm_code-gm_code = '03'.

CLEAR i_items[].

wa_items-material = wa_mseg1-matnr.

wa_items-plant = wa_mseg1-werks.

wa_items-stge_loc = wa_mseg1-umlgo.

wa_items-move_type = wa_mseg1-bwart.

wa_items-entry_qnt = wa_mseg1-lossquantity.

APPEND wa_items TO i_items.

CALL FUNCTION 'BAPI_GOODSMVT_CREATE'

EXPORTING

goodsmvt_header = v_header

goodsmvt_code = v_gm_code

  • TESTRUN = ' '

IMPORTING

goodsmvt_headret = wa_headret

materialdocument = wa_matdoc

matdocumentyear = wa_matdocyr

TABLES

goodsmvt_item = i_items

  • GOODSMVT_SERIALNUMBER =

return = i_return_goods .

IF i_return_goods IS INITIAL .

COMMIT WORK.

wa_bapireturn-mblnr = wa_matdoc.

wa_bapireturn-lgort = wa_mseg1-lgort.

APPEND wa_bapireturn TO i_bapireturn.

ELSE.

ROLLBACK WORK.

ENDIF.

ENDLOOP.

  • refresh : i_items.

*******update database table zpesloss*********

break invvi2.

LOOP AT i_mseg INTO wa_mseg .

READ TABLE i_mkpf WITH KEY mblnr = wa_mseg-mblnr BINARY SEARCH INTO

wa_mkpf.

IF sy-subrc EQ 0.

wa_loss_data-budat = wa_mkpf-budat.

READ TABLE i_bapireturn INTO wa_bapireturn

WITH KEY lgort = wa_mseg-lgort.

IF sy-subrc EQ 0.

wa_loss_data-type = wa_mseg-matnr.

wa_loss_data-mblnr = wa_mseg-mblnr.

wa_loss_data-budat = wa_mkpf-budat.

wa_loss_data-bwart = wa_mseg-bwart.

wa_loss_data-loss_doc = wa_bapireturn-mblnr.

wa_loss_data-losspostdt = sy-datum.

wa_loss_data-lgort = wa_mseg-lgort.

MODIFY zpesloss FROM wa_loss_data.

CLEAR : wa_mseg,wa_mkpf,wa_loss_data.

ENDIF.

ENDIF.

ENDLOOP.

Regards,

Prakash.

Read only

Former Member
0 Likes
1,105

Hi Chung,

Check Prabhu's post.

he is right , you have to check the "valid from" (not valid till) date for the cost center you have used.

Regards,

ravi

Read only

Former Member
0 Likes
1,105

I have seen both examples and I have the similar program.

But the difference is the cost center is provided in the GOODSMVT_ITEM. Once it is provided, error "Cost center ABC /1101019 does not exist on 05.03.2006 .", ABC is the controlling area that is the company name. The posting period either for FI and MM is opened.

Any one has tried to have the BAPI_GOODSMVT_CREATE with cost center?

Read only

Former Member
0 Likes
1,105

Hi Ravi,

The 'valid from' of the cost center is 01.01.2000 and 'to' 31.12.9999.

Read only

Former Member
0 Likes
1,106

Check whether you are providing the cost center value with leading zeroes? If not, you need to do so.

Use the function CONVERSION_EXIT_ALPHA_INPUT to add leading zeroes.

-Kiran

*Please reward useful answers

Read only

Former Member
0 Likes
1,105

Hi Kiran,

Really thousand thanks to your answer, excellent!

My program works.