采购申请的BAPI
...
主要介绍采购申请bapi增强字段如何传入
采购申请的BAPI
BAPI_PR_CHANGE
BAPI_PR_CREATE
BAPI_REQUISITION_CREATE
*&---------------------------------------------------------------------*
*& Report ZTEST_057
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ztest_057.
DATA gs_pritem TYPE bapimereqitemimp.
DATA gt_pritem LIKE TABLE OF bapimereqitemimp.
DATA gs_pritemx TYPE bapimereqitemx.
DATA gt_pritemx LIKE TABLE OF bapimereqitemx.
DATA ls_extensionin TYPE bapiparex.
DATA lt_extensionin LIKE TABLE OF bapiparex.
DATA: ls_req_item TYPE bapi_te_mereqitem,
ls_req_itemx TYPE bapi_te_mereqitemx.
DATA gt_return LIKE TABLE OF bapiret2.
gs_pritem-preq_item = '00010'.
gs_pritem-tax_code = 'J4'.
APPEND gs_pritem TO gt_pritem.
gs_pritemx-preq_item = '00010'.
gs_pritemx-tax_code = 'X'.
APPEND gs_pritemx TO gt_pritemx.
*GS_EXTENSIONIN-STRUCTURE = ''.
*GS_EXTENSIONIN-VALUEPART1 = ''.
*GS_EXTENSIONIN-VALUEPART2 = ''.
*GS_EXTENSIONIN-VALUEPART3 = ''.
*GS_EXTENSIONIN-VALUEPART4 = ''.
*APPEND GS_EXTENSIONIN TO GT_EXTENSIONIN.
"---- 1. 拼 960 位 -------------------------------------------------
CLEAR ls_extensionin.
CLEAR ls_req_item.
ls_req_item-preq_item = '00010'.
ls_req_item-zbrand = '23'.
ls_req_item-zlowestpr = '4.00'.
ls_req_item-zlowestdt = sy-datum.
ls_req_item-zlastpr = '5.00'.
ls_extensionin-structure = 'BAPI_TE_MEREQITEM'.
PERFORM transfer_to_extensionin USING ls_req_item CHANGING ls_extensionin.
ls_extensionin-valuepart1+181(11) = ls_req_item-zlowestpr.
ls_extensionin-valuepart1+192(8) = ls_req_item-zlowestdt.
ls_extensionin-valuepart1+200(11) = ls_req_item-zlastpr.
ls_extensionin-valuepart1+211(8) = ls_req_item-zlastdt.
APPEND ls_extensionin TO lt_extensionin.
CLEAR ls_extensionin.
CLEAR ls_req_itemx.
ls_req_itemx-preq_item = '00010'.
ls_req_itemx-zbrand = 'X'.
ls_req_itemx-zlowestpr = 'X'.
ls_req_itemx-zlastpr = 'X'.
ls_req_itemx-zlowestdt = 'X'.
ls_extensionin-structure = 'BAPI_TE_MEREQITEMX'.
PERFORM transfer_to_extensionin USING ls_req_itemx CHANGING ls_extensionin.
APPEND ls_extensionin TO lt_extensionin.
CALL FUNCTION 'BAPI_PR_CHANGE'
EXPORTING
number = '0010014144'
* PRHEADER =
* PRHEADERX =
* TESTRUN =
* IMPORTING
* PRHEADEREXP =
TABLES
return = gt_return
pritem = gt_pritem
pritemx = gt_pritemx
* PRITEMEXP =
* PRITEMSOURCE =
* PRACCOUNT =
* PRACCOUNTPROITSEGMENT =
* PRACCOUNTX =
* PRADDRDELIVERY =
* PRITEMTEXT =
* PRHEADERTEXT =
extensionin = lt_extensionin
* EXTENSIONOUT =
* PRVERSION =
* PRVERSIONX =
* ALLVERSIONS =
* PRCOMPONENTS =
* PRCOMPONENTSX =
* SERVICEOUTLINE =
* SERVICEOUTLINEX =
* SERVICELINES =
* SERVICELINESX =
* SERVICELIMIT =
* SERVICELIMITX =
* SERVICECONTRACTLIMITS =
* SERVICECONTRACTLIMITSX =
* SERVICEACCOUNT =
* SERVICEACCOUNTX =
* SERVICELONGTEXTS =
* SERIALNUMBER =
* SERIALNUMBERX =
.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
* EXPORTING
* WAIT =
* IMPORTING
* RETURN =
.
FORM transfer_to_extensionin
USING
is_bapi_extensionin TYPE any
CHANGING
cs_bapiparex TYPE bapiparex.
DATA l_distance_characters TYPE i.
FIELD-SYMBOLS <any> TYPE any.
DESCRIBE DISTANCE BETWEEN cs_bapiparex-structure
AND cs_bapiparex-valuepart1
INTO l_distance_characters
IN CHARACTER MODE.
ASSIGN cs_bapiparex+l_distance_characters(*) TO <any>
CASTING LIKE is_bapi_extensionin.
<any> = is_bapi_extensionin.
ENDFORM.增强
METHOD if_ex_me_bapi_pr_create_02~map2i_extensionin.
* define local data
DATA: lr_struct TYPE REF TO cl_abap_structdescr,
lt_comp TYPE cl_abap_structdescr=>component,
lf_done TYPE mmpur_bool. "conversion done
* define local field symbol
FIELD-SYMBOLS: <comp> LIKE LINE OF cl_abap_structdescr=>components.
* perform mapping only if there is at least one packed field
CHECK im_error EQ cl_mmpur_constants=>yes.
* get type for name
lr_struct ?= cl_abap_typedescr=>describe_by_name( im_name ).
FIELD-SYMBOLS:<fs> TYPE bapi_te_mereqitem.
CHECK lr_struct IS BOUND.
LOOP AT lr_struct->components ASSIGNING <comp>.
CHECK <comp>-type_kind EQ lr_struct->typekind_packed.
* perform conversion...
* needes to be implemented
lf_done = cl_mmpur_constants=>yes.
ENDLOOP.
* MOVE-CORRESPONDING IM_CONTAINER TO CH_STRUC.
* conversion has been done successful -> prevent system to do any
* conversion
IF im_name EQ 'CI_EBANDB'.
ASSIGN ch_struc TO <fs>.
<fs>-preq_item = im_container+0(5).
<fs>-zbrand = im_container+5(5).
<fs>-zcontract = im_container+10(1).
<fs>-zbudget = im_container+11(10).
<fs>-zreason = im_container+21(80).
<fs>-zshychx = im_container+101(40).
<fs>-zshyshb = im_container+141(40).
TRY.
<fs>-zlowestpr = im_container+181(11).
CATCH cx_sy_conversion_error.
ENDTRY.
<fs>-zlowestdt = im_container+192(8).
TRY.
<fs>-zlastpr = im_container+200(11).
CATCH cx_sy_conversion_error.
ENDTRY.
<fs>-zlastdt = im_container+211(8).
ENDIF.
CHECK lf_done EQ cl_mmpur_constants=>yes.
RAISE EXCEPTION TYPE cx_mmpur_root.
ENDMETHOD.
参数要都是CHAR类型,不然会报错吗测下
EXTENSIONIN-STRUCTURE在BAPI里查看选哪个

你认为这篇文章怎么样?
0
0
0
0
0
0





