生成内部订单BAPI

来源:互联网 发布:手机淘宝店铺分享链接 编辑:程序博客网 时间:2024/05/22 16:59

事务码KO01
BAPI_INTERNALORDER_CREATE
但是这个BAPI的参数很少,需要增强extensionin参数。

1.增强BAPI结构BAPI_TE_AUFK
这里写图片描述
2.传入参数,直接上代码

*-BAPI  DATA:l_subrc TYPE sy-subrc,       l_aufnr TYPE bapi2075_2-order.  DATA:ls_imaster_data TYPE bapi2075_7,       ls_emasterdata  TYPE bapi2075_2,       ls_testrun      TYPE testrun.  DATA:it_return      TYPE TABLE OF bapiret2,       ls_return      TYPE bapiret2,       lt_extensionin TYPE TABLE OF bapiparex,       ls_extensionin TYPE bapiparex.*-局部  DATA:lv_ext_ord_no TYPE aufex,       lv_msg        TYPE char255.  DATA:ls_fidm016_ds TYPE zlesfidm016_ds,       li_fidm016_ds TYPE TABLE OF zlesfidm016_ds.  DATA:lv_ivpro_length TYPE dd03l-leng. "长度  FIELD-SYMBOLS:<lfs_out> TYPE ty_out.*-为了程序速度(先抽取ivpro长度)  PERFORM frm_ivpro_length CHANGING lv_ivpro_length.*-取选中行数  LOOP AT  gt_out ASSIGNING <lfs_out> WHERE sel  = 'X'                                        AND aufnr = ''.    CLEAR:lv_ext_ord_no,lv_msg,ls_fidm016_ds.    CLEAR:ls_imaster_data,ls_emasterdata,l_aufnr.    CLEAR:ls_return,it_return,ls_extensionin,lt_extensionin.*---默认字段    ls_imaster_data-co_area    = 'CGA'.        "控制范围    ls_imaster_data-order_type = 'Z003'.       "订单类型    ls_imaster_data-comp_code  = 'B116'.       "公司代码    ls_imaster_data-requ_comp_code = 'B116'.   "成本代码申请*---传入字段    CONCATENATE <lfs_out>-asqbh <lfs_out>-pledge_name           INTO ls_imaster_data-order_name SEPARATED BY '_'.    "描述    CONDENSE ls_imaster_data-order_name.    lv_ext_ord_no = <lfs_out>-asqbh.    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'      EXPORTING        input  = lv_ext_ord_no      IMPORTING        output = lv_ext_ord_no.    ls_imaster_data-ext_ord_no = lv_ext_ord_no.        "外部订单号*  ls_imaster_data-COMP_CODE  = ts_head-aufnr.   "对象类*--增强字段赋值    PERFORM frm_extensionin_ivpro USING <lfs_out>-ivpro lv_ivpro_length                                  CHANGING lt_extensionin.    CALL FUNCTION 'BAPI_INTERNALORDER_CREATE'      EXPORTING        i_master_data = ls_imaster_data      IMPORTING        e_master_data = ls_emasterdata        orderid       = l_aufnr      TABLES        return        = it_return        extensionin   = lt_extensionin.    READ TABLE it_return INTO ls_return                         WITH KEY type = 'S' id = 'KO' number = '107'.    IF sy-subrc = 0.      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'        EXPORTING          wait = 'X'.    ELSE.      CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.    ENDIF.*&---------------------------------------------------------------------**&      Form  FRM_IVPRO_LENGTH*&---------------------------------------------------------------------**       text*----------------------------------------------------------------------*FORM frm_ivpro_length  CHANGING pc_ivpro_length TYPE dd03l-leng.  DATA:l_position LIKE dd03l-position.    "表格中区域的位置  DATA:lt_length TYPE TABLE OF ty_length,       ls_length TYPE ty_length.*-找出在结构BAPI_TE_AUFK中字段IVPRO的位置  SELECT SINGLE position INTO l_position    FROM dd03l    WHERE tabname EQ 'BAPI_TE_AUFK'    AND fieldname EQ 'IVPRO'    AND as4local EQ 'A'.  IF sy-subrc EQ 0.    "计算在结构BAPI_TE_AUFK中字段ZZTYPE(订单细分类型)前面的字段长度总和    SELECT fieldname leng      INTO CORRESPONDING FIELDS OF TABLE lt_length      FROM dd03l      WHERE tabname EQ 'BAPI_TE_AUFK'       AND position LT l_position.    LOOP AT lt_length INTO ls_length.      pc_ivpro_length = pc_ivpro_length + ls_length-leng.    ENDLOOP.  ENDIF.ENDFORM.*&---------------------------------------------------------------------**&      Form  FRM_EXTENSIONIN_IVPRO*&---------------------------------------------------------------------**       增强字段(投资概况-IVPRO*----------------------------------------------------------------------*FORM frm_extensionin_ivpro  USING pu_ivpro TYPE im_profil                                  pu_ivpro_length TYPE dd03l-leng                            CHANGING pc_extensionin TYPE ty_t_extensionin.  DATA:lv_ivpro TYPE im_profil.       "投资尺度参数文件  DATA:ls_extensionin TYPE bapiparex.  lv_ivpro = pu_ivpro.  "分配字段值到ivpro字段中  IF pu_ivpro_length <= 240.    ls_extensionin-valuepart1+pu_ivpro_length(6) = lv_ivpro.  ELSEIF pu_ivpro_length > 240 AND pu_ivpro_length <= 480.    pu_ivpro_length = pu_ivpro_length - 240 - 1.    ls_extensionin-valuepart2+pu_ivpro_length(6) = lv_ivpro.  ELSEIF pu_ivpro_length > 480 AND pu_ivpro_length <= 720.    pu_ivpro_length = pu_ivpro_length - 480 - 1.    ls_extensionin-valuepart3+pu_ivpro_length(6) = lv_ivpro.  ELSEIF pu_ivpro_length > 720 AND pu_ivpro_length <= 960.    pu_ivpro_length = pu_ivpro_length - 720 - 1.    ls_extensionin-valuepart4+pu_ivpro_length(6) = lv_ivpro.  ENDIF.  ls_extensionin-structure = 'BAPI_TE_AUFK'.  APPEND ls_extensionin TO pc_extensionin.  CLEAR:ls_extensionin.ENDFORM.
原创粉丝点击