09-12-2008 5:08 AM
Hi All,
I have a requirement to combine 3 standard BAPI into a Custom BAPI.
What is the procedure or the steps that has to be followed to do this.
Help and Suggestions will be much Appreciated.
Thanks.
Ram.
09-12-2008 5:12 AM
Hi,
Please check the source code of a function module I have created where I have called a BAPI, please check the parameters I have I have passed in the commented format on the top.
FUNCTION zvmat_avilability_check.
*"----
""Local Interface:
*" IMPORTING
*" VALUE(SALESDOCUMENT) TYPE BAPIVBELN-VBELN
*" EXPORTING
*" VALUE(ENDLEADTME) TYPE BAPICM61M-WZTER
*" VALUE(AV_QTY_PLT) TYPE BAPICM61V-WKBST
*" VALUE(DIALOGFLAG) TYPE BAPICM61V-DIAFL
*" TABLES
*" WMDVSX STRUCTURE BAPIWMDVS
*" WMDVEX STRUCTURE BAPIWMDVE
*"----
DATA : p_ans TYPE c,
v_txt1 TYPE char35,
v_txt2 TYPE char10,
v_txt TYPE char50,
v_txt3 TYPE char35,
v_txt4 TYPE char10,
v_txt5 TYPE char50.
parameters LIKE spar OCCURS 0 WITH HEADER LINE.
DATA: v_usrlines TYPE i,
v_begrow TYPE sy-curow VALUE 1,
v_ans LIKE sy-tabix.
TYPES: BEGIN OF ty_wf,
plant TYPE werks_d,
material TYPE matnr,
unit TYPE meinh,
lgort TYPE lgort_d,
KWMENG TYPE KWMENG,
END OF ty_wf.
TYPES: BEGIN OF ty_final,
material TYPE matnr,
plant TYPE werks_d,
unit TYPE meinh,
KWMENG TYPE KWMENG,
av_qty_plt TYPE bapicm61v-wkbst,
END OF ty_final.
DATA: wa_wf TYPE ty_wf,
wa_final TYPE ty_final.
DATA: it_wf TYPE STANDARD TABLE OF ty_wf,
it_final TYPE STANDARD TABLE OF ty_final.
CLEAR wa_wf.
SELECT werks
matnr
meins
lgort
KWMENG
FROM vbap
INTO TABLE it_wf
WHERE vbeln EQ salesdocument.
IF sy-subrc EQ 0.
LOOP AT it_wf INTO wa_wf.
CALL FUNCTION 'BAPI_MATERIAL_AVAILABILITY'
EXPORTING
plant = wa_wf-plant
material = wa_wf-material
unit = wa_wf-unit
CHECK_RULE =
stge_loc = wa_wf-lgort
BATCH =
CUSTOMER =
DOC_NUMBER =
ITM_NUMBER =
WBS_ELEM =
STOCK_IND =
DEC_FOR_ROUNDING =
DEC_FOR_ROUNDING_X =
READ_ATP_LOCK =
READ_ATP_LOCK_X =
MATERIAL_EVG =
IMPORTING
endleadtme = endleadtme
av_qty_plt = av_qty_plt
dialogflag = dialogflag
RETURN =
TABLES
wmdvsx = wmdvsx
wmdvex = wmdvex .
wa_final-plant = wa_wf-plant.
wa_final-material = wa_wf-material.
wa_final-unit = wa_wf-unit.
wa_final-av_qty_plt = av_qty_plt.
wa_final-KWMENG = wa_wf-KWMENG.
APPEND wa_final TO it_final.
ENDLOOP.
DESCRIBE TABLE it_final LINES v_usrlines.
v_usrlines = v_begrow + v_usrlines.
CALL FUNCTION 'POPUP_WITH_TABLE_DISPLAY'
EXPORTING
endpos_col = 60
endpos_row = v_usrlines
startpos_col = 1
startpos_row = v_begrow
titletext = 'USER DISPLAY'
IMPORTING
choise = v_ans
TABLES
valuetab = it_final
EXCEPTIONS
break_off = 1
OTHERS = 2.
IF sy-subrc EQ 0.
READ TABLE it_final INTO wa_final INDEX v_ans.
v_txt1 = 'MATERIAL QUANTITY AVAILABLE IS'.
v_txt2 = wa_final-av_qty_plt.
v_txt3 = 'MATERIAL QUANTITY ORDERED'.
v_txt4 = wa_final-KWMENG.
CONCATENATE v_txt1 v_txt2 INTO v_txt.
CONCATENATE v_txt3 v_txt4 INTO v_txt5.
CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT'
EXPORTING
titel = 'MATERIAL AVAILABILTY STATUS'
textline1 = v_txt5
TEXTLINE2 = v_txt
start_column = 25
start_row = 6.
ENDIF.
ELSE.
MESSAGE i001(zd) WITH 'No material ordered for for the current sales order'.
ENDIF.
ENDFUNCTION.
____________________________________________________________________________
With best wishes,
Murthy.
09-12-2008 5:12 AM
Hi,
Please check the source code of a function module I have created where I have called a BAPI, please check the parameters I have I have passed in the commented format on the top.
FUNCTION zvmat_avilability_check.
*"----
""Local Interface:
*" IMPORTING
*" VALUE(SALESDOCUMENT) TYPE BAPIVBELN-VBELN
*" EXPORTING
*" VALUE(ENDLEADTME) TYPE BAPICM61M-WZTER
*" VALUE(AV_QTY_PLT) TYPE BAPICM61V-WKBST
*" VALUE(DIALOGFLAG) TYPE BAPICM61V-DIAFL
*" TABLES
*" WMDVSX STRUCTURE BAPIWMDVS
*" WMDVEX STRUCTURE BAPIWMDVE
*"----
DATA : p_ans TYPE c,
v_txt1 TYPE char35,
v_txt2 TYPE char10,
v_txt TYPE char50,
v_txt3 TYPE char35,
v_txt4 TYPE char10,
v_txt5 TYPE char50.
parameters LIKE spar OCCURS 0 WITH HEADER LINE.
DATA: v_usrlines TYPE i,
v_begrow TYPE sy-curow VALUE 1,
v_ans LIKE sy-tabix.
TYPES: BEGIN OF ty_wf,
plant TYPE werks_d,
material TYPE matnr,
unit TYPE meinh,
lgort TYPE lgort_d,
KWMENG TYPE KWMENG,
END OF ty_wf.
TYPES: BEGIN OF ty_final,
material TYPE matnr,
plant TYPE werks_d,
unit TYPE meinh,
KWMENG TYPE KWMENG,
av_qty_plt TYPE bapicm61v-wkbst,
END OF ty_final.
DATA: wa_wf TYPE ty_wf,
wa_final TYPE ty_final.
DATA: it_wf TYPE STANDARD TABLE OF ty_wf,
it_final TYPE STANDARD TABLE OF ty_final.
CLEAR wa_wf.
SELECT werks
matnr
meins
lgort
KWMENG
FROM vbap
INTO TABLE it_wf
WHERE vbeln EQ salesdocument.
IF sy-subrc EQ 0.
LOOP AT it_wf INTO wa_wf.
CALL FUNCTION 'BAPI_MATERIAL_AVAILABILITY'
EXPORTING
plant = wa_wf-plant
material = wa_wf-material
unit = wa_wf-unit
CHECK_RULE =
stge_loc = wa_wf-lgort
BATCH =
CUSTOMER =
DOC_NUMBER =
ITM_NUMBER =
WBS_ELEM =
STOCK_IND =
DEC_FOR_ROUNDING =
DEC_FOR_ROUNDING_X =
READ_ATP_LOCK =
READ_ATP_LOCK_X =
MATERIAL_EVG =
IMPORTING
endleadtme = endleadtme
av_qty_plt = av_qty_plt
dialogflag = dialogflag
RETURN =
TABLES
wmdvsx = wmdvsx
wmdvex = wmdvex .
wa_final-plant = wa_wf-plant.
wa_final-material = wa_wf-material.
wa_final-unit = wa_wf-unit.
wa_final-av_qty_plt = av_qty_plt.
wa_final-KWMENG = wa_wf-KWMENG.
APPEND wa_final TO it_final.
ENDLOOP.
DESCRIBE TABLE it_final LINES v_usrlines.
v_usrlines = v_begrow + v_usrlines.
CALL FUNCTION 'POPUP_WITH_TABLE_DISPLAY'
EXPORTING
endpos_col = 60
endpos_row = v_usrlines
startpos_col = 1
startpos_row = v_begrow
titletext = 'USER DISPLAY'
IMPORTING
choise = v_ans
TABLES
valuetab = it_final
EXCEPTIONS
break_off = 1
OTHERS = 2.
IF sy-subrc EQ 0.
READ TABLE it_final INTO wa_final INDEX v_ans.
v_txt1 = 'MATERIAL QUANTITY AVAILABLE IS'.
v_txt2 = wa_final-av_qty_plt.
v_txt3 = 'MATERIAL QUANTITY ORDERED'.
v_txt4 = wa_final-KWMENG.
CONCATENATE v_txt1 v_txt2 INTO v_txt.
CONCATENATE v_txt3 v_txt4 INTO v_txt5.
CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT'
EXPORTING
titel = 'MATERIAL AVAILABILTY STATUS'
textline1 = v_txt5
TEXTLINE2 = v_txt
start_column = 25
start_row = 6.
ENDIF.
ELSE.
MESSAGE i001(zd) WITH 'No material ordered for for the current sales order'.
ENDIF.
ENDFUNCTION.
____________________________________________________________________________
With best wishes,
Murthy.
09-12-2008 5:15 AM
Hi
I hope the inputs for the second BAPI will be from First BAPI and inputs for Third BAPI will be from Second BAPI.
If my assumption is correct
Create a new BAPI with import and export structure of First BAPI.
If my assumptions is wrong.
Create a new BAPI with import and export structure of all the BAPI's
Inside the BAPI call the first BAPI and perform the BAPI_TRANSACTION_COMMIT and repeat te same for other 2 BAPI's
Regards
MD