FUNCTION zmm_jsd_creatpo. *"---------------------------------------------------------------------- *"*"Local interface: *" IMPORTING *" VALUE(JSD) TYPE ZMM_YS_JSD_HEAD-JSD *" EXPORTING *" VALUE(E_FLAG) TYPE CHAR1 *" VALUE(E_INFO) TYPE TEXT60 *" VALUE(EBELN) TYPE EBELN *"---------------------------------------------------------------------- * 根据结算单生成采购订单 根据税码、物料组 分成多个行项目 *"---------------------------------------------------------------------- DATA : header LIKE bapimepoheader,
headerx LIKE bapimepoheaderx.
DATA: it_return TYPE TABLE OF bapiret2 WITH HEADER LINE,
it_poitem TYPE TABLE OF bapimepoitem WITH HEADER LINE,
it_poitemx TYPE TABLE OF bapimepoitemx WITH HEADER LINE,
it_poschedule TYPE TABLE OF bapimeposchedule WITH HEADER LINE,
it_poschedulex TYPE TABLE OF bapimeposchedulx WITH HEADER LINE,
it_poaccount TYPE TABLE OF bapimepoaccount WITH HEADER LINE,
it_poaccountx TYPE TABLE OF bapimepoaccountx WITH HEADER LINE,
it_polimits TYPE TABLE OF bapiesuhc WITH HEADER LINE,
it_povalues TYPE TABLE OF bapiesklc WITH HEADER LINE,
it_poservice TYPE TABLE OF bapiesllc WITH HEADER LINE.
DATA ext_line TYPE n LENGTH 10. DATA line_no TYPE n LENGTH 10. DATA pckg_no TYPE n LENGTH 10. DATA po_item TYPE n LENGTH 5. "行项目编号 DATA serial_no TYPE n LENGTH 2. DATA short_text TYPE c LENGTH 40. "项目短文本 DATA head_zterm TYPE lfm1-zterm. "付款条件
DATA: gw_jsd_head LIKE zmm_ys_jsd_head,
gw_jsd_item LIKE zmm_ys_jsd_item,
gt_jsd_item LIKE TABLE OF zmm_ys_jsd_item.
"结算单暂存结构 TYPES: BEGIN OF ty_ys_jsd,
beznk LIKE zmm_ys_jsd_item-beznk, "税码
matkl LIKE asmd-matkl, "物料组
asnum LIKE zmm_ys_jsd_item-asnum, "服务编号
jsd LIKE zmm_ys_jsd_item-jsd,
jsdhh LIKE zmm_ys_jsd_item-jsdhh,
qd LIKE zmm_ys_jsd_item-qd,
zd LIKE zmm_ys_jsd_item-zd,
smatnr LIKE zmm_ys_jsd_item-smatnr,
kostl LIKE zmm_ys_jsd_item-kostl,
shdw LIKE zmm_ys_jsd_item-shdw,
ctype LIKE zmm_ys_jsd_item-ctype,
menge LIKE zmm_ys_jsd_item-menge,
meins LIKE zmm_ys_jsd_item-meins,
hsdj LIKE zmm_ys_jsd_item-hsdj,
bhsdj LIKE zmm_ys_jsd_item-bhsdj,
cbckk LIKE zmm_ys_jsd_item-cbckk,
se LIKE zmm_ys_jsd_item-se,
bhsj LIKE zmm_ys_jsd_item-bhsj,
hsj LIKE zmm_ys_jsd_item-hsj,
beizhu LIKE zmm_ys_jsd_item-beizhu. TYPES: END OF ty_ys_jsd.
DATA: gw_jsd_date TYPE ty_ys_jsd,
gt_jsd_date TYPE TABLE OF ty_ys_jsd.
DATA: g_jsdlx TYPE zmm_ys_jsd_head-jsdlx, "结算单类型
g_lxms TYPE zmm_ys_jsdlx-lxms. "类型描述
"结算单抬头 SELECT * FROM zmm_ys_jsd_head INTO gw_jsd_head WHERE jsd = jsd. IF sy-subrc NE 0.
e_flag = ‘1‘.
e_info = ‘该结算单不存在!‘. ELSE. IF gw_jsd_head-ebeln IS NOT INITIAL.
e_flag = ‘2‘.
e_info = ‘该结算单已经创建采购订单!‘. ENDIF. ENDIF.
"取得结算单类型描述
g_jsdlx = gw_jsd_head-jsdlx. SELECT SINGLE lxms FROM zmm_ys_jsdlx INTO g_lxms WHERE jsdlx EQ g_jsdlx. "结算单行项目 SELECT * FROM zmm_ys_jsd_item INTO TABLE gt_jsd_item WHERE jsd = jsd. "根据 供应商 与采购组织 找到付款条件 SELECT SINGLE zterm FROM lfm1 INTO head_zterm WHERE lifnr = gw_jsd_head-lifnr AND ekorg = ‘1000‘. ENDSELECT.
IF e_flag NE ‘0‘. RETURN. ENDIF. CLEAR:gw_jsd_item, gt_jsd_date.
"数据库数据存入自建结构 LOOP AT gt_jsd_item INTO gw_jsd_item. CLEAR: gw_jsd_date,gw_jsd_date-matkl. MOVE-CORRESPONDING gw_jsd_item TO gw_jsd_date. "根据服务编号取得物料组 SELECT SINGLE matkl FROM asmd INTO gw_jsd_date-matkl WHERE asnum EQ gw_jsd_date-asnum. IF sy-subrc <> 0.
gw_jsd_date-matkl = ‘无物料组‘. ENDIF. APPEND gw_jsd_date TO gt_jsd_date. ENDLOOP. "根据税码、物料组排序。 SORT gt_jsd_date BY beznk matkl.
DATA: str TYPE c LENGTH 60. LOOP AT it_return WHERE type = ‘E‘ .
e_flag = ‘2‘. * str = e_info. CLEAR e_info. CONCATENATE str it_return-message INTO e_info. ENDLOOP.
IF e_flag = ‘0‘.
e_info = ‘采购订单创建成功!‘. CALL FUNCTION ‘BAPI_TRANSACTION_COMMIT‘ . ENDIF.