2007 Sep 04 11:07 AM
Hi All,
If any body used BAPI_CONTRACT_CREATE for creating contract in MM then
Please provide some sample programs for using this BAPI for the transaction ME31k.
Thanks in advance,
esh
Hi All,
If any body used BAPI_CONTRACT_CREATE for creating contract in MM then
Please provide some sample programs for using this BAPI for the transaction ME31k.
Thanks in advance,
esh
2007 Sep 04 1:13 PM
Hi Rajesh,
Please find the sample coding for the BAPI.
<b>BAPI_CONTRACT_CREATE
BAPI_CONTRACT_GETDETAIL
BAPI_SAG_CREATE
BAPI_SAG_GETDETAIL</b>
This program reads the outline agreement via the selection parameter "outline agreement" (technical name PA_DOC) and generates a new agreement as a copy of the existing one in each case using the data read.
If you set the "Test run?" parameter (technical name PA_TEST), the copying is only simulated and no changes are made to the database.
&----
*& Report MMPUR_BAPI_OUT_TEST1
&----
*& Read a contract or scheduling agreement via BAPI and create a new
*& one, again via BAPI.
& -
REPORT mmpur_bapi_meout_test1.
define local data
DATA: l_ebeln TYPE bapimeoutheader-number, "#EC NEEDED
ls_ekko TYPE ekko,
----
Define BAPI parameters
----
ls_header TYPE bapimeoutheader,
ls_headerx TYPE bapimeoutheaderx,
ls_item TYPE bapimeoutitem,
lt_item TYPE bapimeout_t_item,
ls_itemx TYPE bapimeoutitemx,
lt_itemx TYPE bapimeout_t_itemx,
ls_account TYPE bapimeoutaccount,
lt_account TYPE bapimeout_t_account,
ls_accountx TYPE bapimeoutaccountx,
lt_accountx TYPE bapimeout_t_accountx,
lt_delivery_address TYPE bapimeout_t_addrdel,
----
For scheduling agreements only
----
ls_schedule TYPE bapimeoutschedule,
lt_schedule TYPE bapimeout_t_schedule,
ls_schedulex TYPE bapimeoutschedulex,
lt_schedulex TYPE bapimeout_t_schedulex,
ls_shipping TYPE bapimeoutshipp,
lt_shipping TYPE bapimeout_t_shipp,
ls_shippingx TYPE bapimeoutshippx,
lt_shippingx TYPE bapimeout_t_shippx, "#EC NEEDED
ls_sc_component TYPE bapimeoutcomponent,
lt_sc_component TYPE bapimeout_t_component,
ls_sc_componentx TYPE bapimeoutcomponentx,
lt_sc_componentx TYPE bapimeout_t_componentx,
----
Master conditions on item level
----
ls_item_cond_validity TYPE bapimeoutvalidity,
ls_item_condition TYPE bapimeoutcondition,
lt_item_cond_validity TYPE bapimeout_t_validity,
lt_item_condition TYPE bapimeout_t_cond,
ls_item_cond_validityx TYPE bapimeoutvalidityx,
ls_item_conditionx TYPE bapimeoutconditionx,
lt_item_cond_validityx TYPE bapimeout_t_validityx,
lt_item_conditionx TYPE bapimeout_t_condx,
lt_item_cond_scale_val TYPE bapimeout_t_scalevalue,
lt_item_cond_scale_quan TYPE bapimeout_t_scalequant,
----
Master conditions on header level
----
ls_head_cond_validity TYPE bapimeoutheadvalidity,
ls_head_condition TYPE bapimeoutheadercond,
lt_head_cond_validity TYPE bapimeout_t_headvalid,
lt_head_condition TYPE bapimeout_t_headcond,
ls_head_cond_validityx TYPE bapimeoutheadvalidityx,
ls_head_conditionx TYPE bapimeoutheadercondx,
lt_head_cond_validityx TYPE bapimeout_t_headvalidx,
lt_head_conditionx TYPE bapimeout_t_headcondx,
lt_head_cond_scale_val TYPE bapimeout_t_valuescale,
lt_head_cond_scale_quan TYPE bapimeout_t_quantscale,
----
Other data ...
----
ls_export_import TYPE bapimeouteipo,
ls_export_importx TYPE bapimeouteipox,
lt_export_import TYPE bapimeout_t_eipo,
lt_export_importx TYPE bapimeout_t_eipox,
lt_item_text TYPE bapimeout_t_itemtext,
lt_header_text TYPE bapimeout_t_text,
ls_partner TYPE bapimeoutpartner, "#EC NEEDED
ls_partnerx TYPE bapimeoutpartnerx,
lt_partner TYPE bapimeout_t_partner,
lt_partnerx TYPE bapimeout_t_partnerx,
lt_release_docu TYPE bapimeout_t_release,
lt_extensionout TYPE bapiparex_t,
lt_return TYPE bapiret2_t,
lt_return_all TYPE bapiret2_t.
----
at selection screen
----
PARAMETERS: pa_doc TYPE ebeln,
pa_test AS CHECKBOX.
----
START-OF-SELECTION.
----
CALL FUNCTION 'ME_EKKO_SINGLE_READ'
EXPORTING
pi_ebeln = pa_doc
IMPORTING
po_ekko = ls_ekko
EXCEPTIONS
no_records_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
----
Read contract or scheduling agreement
----
IF ls_ekko-bstyp = cl_mmpur_constants=>mmpur_sag.
----
read schedule agreement
----
CALL FUNCTION 'BAPI_SAG_GETDETAIL'
EXPORTING
purchasingdocument = ls_ekko-ebeln
item_data = cl_mmpur_constants=> yes
account_data = cl_mmpur_constants=> yes
schedule_data = cl_mmpur_constants=> yes
shipping_data = cl_mmpur_constants=>yes
sc_component_data = cl_mmpur_constants=> yes
export_data = cl_mmpur_constants=> yes
condition_data = cl_mmpur_constants=>yes
text_data = cl_mmpur_constants=> yes
partner_data = cl_mmpur_constants=>yes
IMPORTING
header = ls_header
TABLES
item = lt_item
account = lt_account
schedule = lt_schedule
delivery_address = lt_delivery_address
sc_component = lt_sc_component
item_cond_validity = lt_item_cond_validity
item_condition = lt_item_condition
item_cond_scale_value = lt_item_cond_scale_val
item_cond_scale_quan = lt_item_cond_scale_quan
export_import = lt_export_import
item_text = lt_item_text
header_text = lt_header_text
head_cond_validity = lt_head_cond_validity
head_condition = lt_head_condition
head_cond_scale_val = lt_head_cond_scale_val
head_cond_scale_quan = lt_head_cond_scale_quan
partner = lt_partner
extensionout = lt_extensionout
return = lt_return.
ELSE.
----
read purchasing contract
----
CALL FUNCTION 'BAPI_CONTRACT_GETDETAIL'
EXPORTING
purchasingdocument = ls_ekko-ebeln
item_data = cl_mmpur_constants=> yes
account_data = cl_mmpur_constants=> yes
condition_data = cl_mmpur_constants=>yes
text_data = cl_mmpur_constants=> yes
partner_data = cl_mmpur_constants=> yes
release_data = cl_mmpur_constants=>yes
IMPORTING
header = ls_header
TABLES
item = lt_item
account = lt_account
delivery_address = lt_delivery_address
item_cond_validity = lt_item_cond_validity
item_condition = lt_item_condition
item_cond_scale_value = lt_item_cond_scale_val
item_cond_scale_quan = lt_item_cond_scale_quan
item_text = lt_item_text
header_text = lt_header_text
head_cond_validity = lt_head_cond_validity
head_condition = lt_head_condition
head_cond_scale_val = lt_head_cond_scale_val
head_cond_scale_quan = lt_head_cond_scale_quan
partner = lt_partner
release_docu = lt_release_docu
extensionout = lt_extensionout
return = lt_return.
ENDIF.
APPEND LINES OF lt_return TO lt_return_all.
IF ls_header IS NOT INITIAL.
----
Fill all the x-tables and delete the document numbers
----
Header
----
PERFORM fill_x_structure CHANGING ls_headerx.
CLEAR ls_header-number.
----
Items
----
REFRESH lt_itemx.
PERFORM fill_x_structure CHANGING ls_itemx.
LOOP AT lt_item INTO ls_item.
ls_itemx-item_no = ls_item-item_no.
APPEND ls_itemx TO lt_itemx.
ENDLOOP.
----
Item condition records
----
REFRESH lt_item_conditionx.
PERFORM fill_x_structure CHANGING ls_item_conditionx.
LOOP AT lt_item_condition INTO ls_item_condition.
ls_item_conditionx-item_no = ls_item_condition-item_no.
ls_item_conditionx-serial_id = ls_item_condition-serial_id.
ls_item_conditionx-cond_count = ls_item_condition-cond_count.
APPEND ls_item_conditionx TO lt_item_conditionx.
ENDLOOP.
REFRESH lt_item_cond_validityx.
PERFORM fill_x_structure CHANGING ls_item_cond_validityx.
LOOP AT lt_item_cond_validity INTO ls_item_cond_validity.
ls_item_cond_validityx-item_no = ls_item_cond_validity-item_no.
ls_item_cond_validityx-serial_id = ls_item_cond_validity-serial_id.
APPEND ls_item_cond_validityx TO lt_item_cond_validityx.
ENDLOOP.
----
Header condition records
----
REFRESH lt_head_conditionx.
PERFORM fill_x_structure CHANGING ls_head_conditionx.
LOOP AT lt_head_condition INTO ls_head_condition.
ls_head_conditionx-serial_id = ls_head_condition-serial_id.
ls_head_conditionx-cond_count = ls_head_condition-cond_count.
APPEND ls_head_conditionx TO lt_head_conditionx.
ENDLOOP.
REFRESH lt_head_cond_validityx.
PERFORM fill_x_structure CHANGING ls_head_cond_validityx.
LOOP AT lt_head_cond_validity INTO ls_head_cond_validity.
ls_head_cond_validityx-serial_id = ls_head_cond_validity-serial_id.
APPEND ls_head_cond_validityx TO lt_head_cond_validityx.
ENDLOOP.
----
Accounting
----
REFRESH lt_accountx.
PERFORM fill_x_structure CHANGING ls_accountx.
LOOP AT lt_account INTO ls_account.
ls_accountx-item_no = ls_account-item_no.
ls_accountx-serial_no = ls_account-serial_no.
APPEND ls_accountx TO lt_accountx.
ENDLOOP.
----
Schedule lines
----
REFRESH lt_schedulex.
PERFORM fill_x_structure CHANGING ls_schedulex.
LOOP AT lt_schedule INTO ls_schedule.
ls_schedulex-item_no = ls_schedule-item_no.
ls_schedulex-sched_line = ls_schedule-sched_line.
APPEND ls_schedulex TO lt_schedulex.
ENDLOOP.
----
Subcontracting
----
REFRESH lt_sc_componentx.
PERFORM fill_x_structure CHANGING ls_sc_componentx.
LOOP AT lt_sc_component INTO ls_sc_component.
ls_sc_componentx-item_no = ls_sc_component-item_no.
ls_sc_componentx-sched_line = ls_sc_component-sched_line.
ls_sc_componentx-res_item_key = ls_sc_component-res_item.
ls_sc_component-change_id = 'R'. "replace existing BOM
ls_sc_componentx-change_id = cl_mmpur_constants=>yes.
APPEND ls_sc_componentx TO lt_sc_componentx.
ENDLOOP.
----
Partner
----
REFRESH lt_partnerx.
PERFORM fill_x_structure CHANGING ls_partnerx.
LOOP AT lt_partner INTO ls_partner.
APPEND ls_partnerx TO lt_partnerx.
ENDLOOP.
----
Export/Import
----
REFRESH lt_export_importx.
PERFORM fill_x_structure CHANGING ls_export_importx.
LOOP AT lt_export_import INTO ls_export_import.
ls_export_importx-item_no = ls_export_import-item_no.
APPEND ls_export_importx TO lt_export_importx.
ENDLOOP.
----
Shipping
----
REFRESH lt_shippingx.
PERFORM fill_x_structure CHANGING ls_shippingx.
LOOP AT lt_shipping INTO ls_shipping.
ls_shippingx-item_no = ls_shipping-item_no.
APPEND ls_shippingx TO lt_shippingx.
ENDLOOP.
----
Create a new outline agreement.
----
IF ls_ekko-bstyp = cl_mmpur_constants=>mmpur_sag.
----
Create schedule agreement
----
CALL FUNCTION 'BAPI_SAG_CREATE'
EXPORTING
header = ls_header
headerx = ls_headerx
testrun = pa_test
IMPORTING
purchasingdocument = l_ebeln
TABLES
return = lt_return
item = lt_item
itemx = lt_itemx
account = lt_account
accountx = lt_accountx
schedule = lt_schedule
schedulex = lt_schedulex
sc_component = lt_sc_component
sc_componentx = lt_sc_componentx
delivery_address = lt_delivery_address
item_cond_validity = lt_item_cond_validity
item_cond_validityx = lt_item_cond_validityx
item_condition = lt_item_condition
item_conditionx = lt_item_conditionx
item_cond_scale_value = lt_item_cond_scale_val
item_cond_scale_quan = lt_item_cond_scale_quan
export_import = lt_export_import
export_importx = lt_export_importx
item_text = lt_item_text
header_text = lt_header_text
head_cond_validity = lt_head_cond_validity
head_cond_validityx = lt_head_cond_validityx
head_condition = lt_head_condition
head_conditionx = lt_head_conditionx
head_cond_scale_val = lt_head_cond_scale_val
head_cond_scale_quan = lt_head_cond_scale_quan
partner = lt_partner
partnerx = lt_partnerx.
ELSE.
----
Create contract
----
CALL FUNCTION 'BAPI_CONTRACT_CREATE'
EXPORTING
header = ls_header
headerx = ls_headerx
testrun = pa_test
IMPORTING
purchasingdocument = l_ebeln
TABLES
return = lt_return
item = lt_item
itemx = lt_itemx
account = lt_account
accountx = lt_accountx
delivery_address = lt_delivery_address
item_cond_validity = lt_item_cond_validity
item_cond_validityx = lt_item_cond_validityx
item_condition = lt_item_condition
item_conditionx = lt_item_conditionx
item_cond_scale_value = lt_item_cond_scale_val
item_cond_scale_quan = lt_item_cond_scale_quan
item_text = lt_item_text
header_text = lt_header_text
head_cond_validity = lt_head_cond_validity
head_cond_validityx = lt_head_cond_validityx
head_condition = lt_head_condition
head_conditionx = lt_head_conditionx
head_cond_scale_val = lt_head_cond_scale_val
head_cond_scale_quan = lt_head_cond_scale_quan
partner = lt_partner
partnerx = lt_partnerx.
ENDIF.
----
store messages
----
APPEND LINES OF lt_return TO lt_return_all.
----
Commit Work if requested.
----
IF pa_test = cl_mmpur_constants=>no.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
ENDIF.
ENDIF. "of IF ls_header IS NOT INITIAL
----
Display error protocol
----
IF NOT lt_return_all IS INITIAL.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_structure_name = 'BAPIRET2'
TABLES
t_outtab = lt_return_all
EXCEPTIONS
OTHERS = 0.
ENDIF.
&----
*& Form fill_x_structure
& -
create x-bar per requested parameter
all fields will be marked with an 'X' -> change relevant
----
FORM fill_x_structure CHANGING cs_x_structure TYPE any.
DATA: lr_struct TYPE REF TO cl_abap_structdescr,
lr_field TYPE REF TO cl_abap_elemdescr.
FIELD-SYMBOLS: <comp> LIKE LINE OF cl_abap_structdescr=> components,
<x> TYPE ANY.
lr_struct ?= cl_abap_typedescr=>describe_by_data( cs_x_structure ).
CHECK lr_struct IS BOUND.
LOOP AT lr_struct->components ASSIGNING <comp>.
UNASSIGN <x>.
take only x fields into consideration, if unicode is active C1 takes 2 bytes
CHECK <comp>-type_kind EQ lr_struct->typekind_char.
ASSIGN COMPONENT <comp>-name OF STRUCTURE cs_x_structure TO <x>.
CHECK <x> IS ASSIGNED.
get element description
lr_field ?= cl_abap_typedescr=>describe_by_data( <x> ).
CHECK lr_field->absolute_name EQ '\TYPE=BAPIUPDATE'.
<x> = cl_mmpur_constants=>yes.
ENDLOOP.
ENDFORM. " fill_x_structure
<b>Reward Points if Useful</b>
Regards
Gokul
2007 Sep 04 3:53 PM
| User | Count |
|---|---|
| 6 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |