SAP ABAP 顾问(开发工程师)能力模型_企业数字化建设者的博客-CSDN博客目标:基于对SAP abap 顾问能力模型的梳理,给一年左右经验的abaper 快速成长为三年经验提参考ALV/REPORT|SMARTFROM|SCREEN|OLE|BAPI|BDC|PI|IDOC|RFC|API|WEBSERVICE|Enhancement|UserExits|Badi|Debughttps://blog.csdn.net/java_zhong1990/article/details/132469977
目标: 掌握SAP MM模块,主要流程相关的BAPI 函数的使用,主要有如下模块:
询价 报价 货源清单 配额安排 采购信息记录 框架协议-合同 框架协议-计划协议 采购订单 采购收货 发票校验 发票过账
BAPI是SAP系统标准函数,比如:采购申请创建函数、采购订单创建函数等等。
采购信息记录修改 | SAP_ABAP_MM_BAPI清单案例教程——采购信息记录_企业数字化建设者的博客-CSDN博客 |
框架协议-合同创建 | SAP_ABAP_MM_BAPI清单案例教程——框架协议-合同_企业数字化建设者的博客-CSDN博客 |
框架协议-合同修改 | SAP_ABAP_MM_BAPI清单案例教程——框架协议-合同_企业数字化建设者的博客-CSDN博客 |
框架协议-计划协议创建 | SAP_ABAP_MM_BAPI清单案例教程——框架协议-计划协议_企业数字化建设者的博客-CSDN博客 |
采购申请创建 | SAP_ABAP_MM_BAPI清单案例教程——采购申请_企业数字化建设者的博客-CSDN博客 |
采购订单创建 | SAP_ABAP_MM_BAPI清单案例教程——采购订单_企业数字化建设者的博客-CSDN博客 |
采购订单收货创建 | SAP_ABAP_MM_BAPI清单案例教程——采购订单收货_企业数字化建设者的博客-CSDN博客 |
采购发票预制 | SAP_ABAP_MM_BAPI清单案例教程——采购发票校验_企业数字化建设者的博客-CSDN博客 |
采购发票过账 | SAP_ABAP_MM_BAPI清单案例教程——采购发票校验_企业数字化建设者的博客-CSDN博客 |
ME_INFORECORD_MAINTAIN | 采购信息记录修改 |
BAPI_CONTRACT_CREATE | 框架协议-合同创建 |
BAPI_CONTRACT_CHANGE | 框架协议-合同修改 |
BAPI_SAG_CREATE | 框架协议-计划协议创建 |
BAPI_PR_CREATE | 采购申请创建 |
BAPI_PO_CREATE1 | 采购订单创建 |
BAPI_GOODSMVT_CREATE | 采购订单收货创建 |
BAPI_INCOMINGINVOICE_PARK | 采购发票预制 |
BAPI_INCOMINGINVOICE_POST | 采购发票过账 |
1.3.1 创建
1.3.2 修改
抬头、抬头条件、抬头时间、增强、行项目、行项目条件
BAPI_CONTRACT_CHANGE
BAPI_CONTRACT_CREATE
FUNCTION zfm_contract.
*"----------------------------------------------------------------------
*"*"本地接口:
*"----------------------------------------------------------------------
DATA:l_flag TYPE c.
DATA:l_ebeln TYPE bapimeoutheader-number, "#EC NEEDED
ls_ekko TYPE ekko,
extensionin LIKE bapiparex OCCURS 0 WITH HEADER LINE,
lt_extensionout TYPE bapiparex_t,
ls_header TYPE bapimeoutheader, "抬头数据框架协议
ls_headerx TYPE bapimeoutheaderx,
ls_head_cond_validity TYPE bapimeoutheadvalidity,
lt_head_cond_validity TYPE TABLE OF bapimeoutheadvalidity,
ls_head_cond_validityx TYPE bapimeoutheadvalidityx,
lt_head_cond_validityx TYPE TABLE OF bapimeoutheadvalidityx,
ls_head_condition TYPE bapimeoutheadercond,
lt_head_condition TYPE TABLE OF bapimeoutheadercond,
ls_head_conditionx TYPE bapimeoutheadercondx,
lt_head_conditionx TYPE TABLE OF bapimeoutheadercondx,
ls_item TYPE bapimeoutitem, "合同的项目数据
lt_item TYPE bapimeout_t_item, "表类型:项目数据框架协议
ls_itemx TYPE bapimeoutitemx,
lt_itemx TYPE bapimeout_t_itemx,
ls_item_condition TYPE bapimeoutcondition,
ls_item_conditionx TYPE bapimeoutconditionx,
lt_item_condition TYPE TABLE OF bapimeoutcondition,
lt_item_conditionx TYPE TABLE OF bapimeoutconditionx,
lt_return TYPE bapiret2_t,
ls_return TYPE bapiret2
.
*--------------------------------------------------------------------*
* Header赋值
*--------------------------------------------------------------------*
CLEAR: ls_header,ls_headerx,l_flag.
REFRESH: lt_return, lt_item, lt_itemx.
ls_header-number = ''. "合同号
ls_header-vendor = '0000100234'. "供应商
ls_header-doc_type = 'WK'. "协议类型
ls_header-comp_code = '2010'. "公司代码
ls_header-doc_date = '20230725'. "协议日期
ls_header-vper_start = '20230725'. "协议起始日期
ls_header-vper_end = '20230930'. "协议截至日期
ls_header-purch_org = '2010'. "采购组织
ls_header-pur_group = '100'. "采购组
ls_header-acum_value = '10000'. "目标值
ls_header-currency = 'CNY'. "货币
ls_header-langu = sy-langu. "ABAP 系统字段:文本环境的语言码
ls_headerx-number = 'X'. "合同号
ls_headerx-vendor = 'X'. "供应商
ls_headerx-doc_type = 'X'. "协议类型
ls_headerx-comp_code = 'X'. "公司代码
ls_headerx-doc_date = 'X'. "协议日期
ls_headerx-vper_start = 'X'. "协议起始日期
ls_headerx-vper_end = 'X'. "协议截至日期
ls_headerx-purch_org = 'X'. "采购组织
ls_headerx-pur_group = 'X'. "采购组
ls_headerx-acum_value = 'X'. "目标值
ls_headerx-currency = 'X'. "货币
ls_headerx-langu = 'X'. "ABAP 系统字段:文本环境的语言码
*--------------------------------------------------------------------*
* Header 自定义字段赋值
*--------------------------------------------------------------------*
*** DATA: ls_bapi_te_meoutheaderx LIKE bapi_te_meoutheaderx,
*** ls_bapi_te_meoutheader LIKE bapi_te_meoutheader.
***
*** CLEAR extensionin.
*** ls_bapi_te_meoutheader-number = gwa_out-ebeln.
*** ls_bapi_te_meoutheader-zhtnum = gwa_out-zhtnum. "外部合同号
*** ls_bapi_te_meoutheader-zlotno = gwa_out-zlotno. "LOT包号
*** ls_bapi_te_meoutheader-zcgblx = gwa_out-zcgblx. "采购包类型
*** ls_bapi_te_meoutheader-zhtbz = gwa_out-zhtbz. "采购立项号
*** ls_bapi_te_meoutheader-zcgnum = gwa_out-zcgnum. "采购任务
*** extensionin-structure = 'BAPI_TE_MEOUTHEADER'.
*** CALL METHOD cl_abap_container_utilities=>fill_container_c
*** EXPORTING
*** im_value = ls_bapi_te_meoutheader
*** IMPORTING
*** ex_container = extensionin-valuepart1
*** EXCEPTIONS
*** illegal_parameter_type = 1
*** OTHERS = 2.
*** APPEND extensionin.
***
*** CLEAR extensionin.
*** ls_bapi_te_meoutheaderx-number = gwa_out-ebeln.
*** ls_bapi_te_meoutheaderx-zhtnum = 'X'. "外部合同号
*** ls_bapi_te_meoutheaderx-zlotno = 'X'. "LOT包号
*** ls_bapi_te_meoutheaderx-zcgblx = 'X'. "采购包类型
*** ls_bapi_te_meoutheaderx-zhtbz = 'X'. "采购立项号
*** ls_bapi_te_meoutheaderx-zcgnum = 'X'. "采购任务
*** extensionin-structure = 'BAPI_TE_MEOUTHEADERX'.
*** CALL METHOD cl_abap_container_utilities=>fill_container_c
*** EXPORTING
*** im_value = ls_bapi_te_meoutheaderx
*** IMPORTING
*** ex_container = extensionin-valuepart1
*** EXCEPTIONS
*** illegal_parameter_type = 1
*** OTHERS = 2.
**** EXTENSIONIN-VALUEPART1 = LS_BAPI_TE_MEOUTHEADERX.
*** APPEND extensionin.
*--------------------------------------------------------------------*
* Item赋值
*--------------------------------------------------------------------*
CLEAR: ls_item,ls_itemx,lt_item[],lt_itemx[].
CLEAR: ls_item, ls_itemx.
ls_item-item_no = '10'. "行号
ls_item-short_text = '镀锡25mm2 test by zhong1'. "端文本
ls_item-material = '000003005003000051'.
ls_item-matl_group = '3202007'."物料组
ls_item-plant = '2012'. "工厂
ls_item-target_qty = '1000'. "目标数量
ls_item-po_unit = 'KG'.
ls_item-po_unit_iso = 'KG'.
ls_item-net_price = 10. "净价
ls_item-price_unit = '1'. "价格单位
ls_item-conv_num1 = '1'. "订单价格单位转换为订单单位的分子
ls_item-conv_den1 = '1'. "订单价格单位转换为订单单位的分母
ls_item-orderpr_un = 'KG'. "订单价格单位(采购)
ls_item-orderpr_un_iso = 'KG'. "订单价格单位(采购)
* ls_item-acctasscat = 'U'. "科目分配类别 U 未知
"ls_item-item_cat = 0. "项目类别
APPEND ls_item TO lt_item.
ls_itemx-item_no = '10'. "行号
ls_itemx-item_nox = 'X'. "行号
ls_itemx-short_text = 'X'. "端文本
ls_itemx-material = 'X'. "物料号
ls_itemx-matl_group = 'X'. "物料组
ls_itemx-plant = 'X'. "工厂
ls_itemx-target_qty = 'X'. "目标数量
ls_itemx-po_unit = 'X'.
ls_itemx-po_unit_iso = 'X'.
ls_itemx-net_price = 'X'. "净价
ls_itemx-price_unit = 'X'. "价格单位
* ls_itemx-conv_num1 = 'X'.
* ls_itemx-conv_den1 = 'X'.
ls_itemx-orderpr_un = 'X'.
ls_itemx-orderpr_un_iso = 'X'.
* ls_itemx-acctasscat = 'X'. "科目分配类别
"ls_itemx-item_cat = 'X'. "项目类别
APPEND ls_itemx TO lt_itemx.
ls_item_condition-item_no = 10."采购凭证的项目编号
ls_item_condition-cond_type = 'RA01'."条件类型
ls_item_condition-cond_value = '-10'."条件金额
ls_item_condition-cond_p_unt = '-1.0'."条件定价单位
ls_item_condition-cond_unit = '%'."条件单位
APPEND ls_item_condition TO lt_item_condition.
ls_item_conditionx-item_no = '10'."采购凭证的项目编号
ls_item_conditionx-cond_type = 'X'."条件类型
ls_item_conditionx-cond_value = 'X'."条件金额
ls_item_conditionx-cond_p_unt = 'X'."条件定价单位
ls_item_conditionx-cond_unit = 'X'."条件单位
APPEND ls_item_conditionx TO lt_item_conditionx.
ls_head_cond_validity-serial_id = ''.
ls_head_cond_validity-valid_from = '20230727'.
ls_head_cond_validity-valid_to = '99991231'.
APPEND ls_head_cond_validity TO lt_head_cond_validity.
* ls_head_cond_validityx-serial_id = 'X'.
ls_head_cond_validityx-valid_from = 'X'.
ls_head_cond_validityx-valid_to = 'X'.
APPEND ls_head_cond_validityx TO lt_head_cond_validityx.
ls_head_condition-cond_type = 'RA01'.
ls_head_condition-cond_count = '01'.
ls_head_condition-scale_type = 'A'.
ls_head_condition-calctypcon = 'A'.
ls_head_condition-cond_value = -10.
ls_head_condition-currency = '%'.
APPEND ls_head_condition TO lt_head_condition.
ls_head_conditionx-cond_type = 'X'.
ls_head_conditionx-cond_count = 'X'.
ls_head_conditionx-scale_type = 'X'.
ls_head_conditionx-calctypcon = 'X'.
ls_head_conditionx-cond_value = 'X'.
ls_head_conditionx-currency = 'X'.
APPEND ls_head_conditionx TO lt_head_conditionx.
*--------------------------------------------------------------------*
* Create contract
*--------------------------------------------------------------------*
IF ls_header-number IS INITIAL.
"无合同号,新建
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
extensionin = extensionin
* item_condition = lt_item_condition
* item_conditionx = lt_item_conditionx
head_cond_validity = lt_head_cond_validity
head_cond_validityx = lt_head_cond_validityx
head_condition = lt_head_condition
head_conditionx = lt_head_conditionx.
DATA: head_cond_validity TYPE TABLE OF bapimeoutheadvalidity.
DATA: head_condition TYPE TABLE OF bapimeoutheadercond.
ELSE.
" 有合同号,修改
l_ebeln = ls_header-number.
CALL FUNCTION 'BAPI_CONTRACT_CHANGE'
EXPORTING
purchasingdocument = l_ebeln
header = ls_header
headerx = ls_headerx
* TESTRUN = PA_TEST
IMPORTING
exp_header = ls_header
TABLES
return = lt_return
item = lt_item
itemx = lt_itemx
extensionin = extensionin
item_condition = lt_item_condition
item_conditionx = lt_item_conditionx.
ENDIF.
l_flag = 'S'.
LOOP AT lt_return INTO ls_return WHERE type = 'E' OR type = 'A'.
l_flag = 'E'.
EXIT.
ENDLOOP.
IF l_flag EQ 'S'.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ENDIF.
IF NOT lt_return IS INITIAL.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_structure_name = 'BAPIRET2'
TABLES
t_outtab = lt_return
EXCEPTIONS
OTHERS = 0.
ENDIF.
ENDFUNCTION.
1.3.3 删除
框架协议-合同在SAP MM模块中的业务作用是优化和简化采购管理,提高采购效率,降低采购成本,稳定供应链,同时提供更好的供应商关系管理。这种方法适用于那些需要定期采购相同或类似物料或服务的企业,特别是对于长期供应关系的建立和管理。通过SAP MM模块,企业可以有效地创建、维护和监控框架协议,以支持其采购和供应链策略
采购计划和管理: 框架协议允许企业与供应商建立长期协议,规定了一段时间内需要采购的物料或服务的数量和条件。这有助于企业更好地规划和管理采购需求。
减少采购复杂性: 框架协议减少了每次采购交易的繁琐程度。企业无需每次都创建新的采购订单,而是可以使用现有的框架协议来采购所需物料或服务。
价格协商和稳定性: 框架协议通常包括价格协商,允许企业与供应商协商和锁定一段时间内的物料或服务价格。这有助于稳定采购成本,并提供了价格预测的可行性。
库存控制: 通过框架协议,企业可以更好地控制物料的库存水平,因为它们可以按计划定期获得物料,而不会因过多或过少的库存而产生成本。
供应链透明度: 框架协议增强了企业与供应商之间的合作和沟通,使供应链变得更加透明。供应商能够更好地了解客户的需求,客户则可以更好地掌握供应链的进展。
灵活性: 框架协议通常具有一定程度的灵活性,允许企业根据需求进行一定程度的变更,例如更改交付数量或交货时间。
合同履行监控: 通过SAP MM模块,企业可以监控和跟踪框架协议的履行情况,包括已交付数量、未交付数量、交付进度等。这有助于确保供应商遵守合同条款。
采购效率: 使用框架协议可以提高采购效率,减少了不必要的文档工作和采购流程的复杂性。
4.1 基于Tcode的顺序排列
供应商主数据 | 物料主数据 | 货源清单 | 配额安排 | 采购信息记录 | 采购订单 | 框架协议 | 采购询价/报价 | 采购申请 | 订单收货 | 发票校验 | 物料需求计划 |
BP-供应商主数据 | MM01 - 物料主数据新增 | ME01 - 维护 | MEQ1 - 维护 | ME11 - 创建 | ME21N - 创建 | 框架协议-合同: | 询价: | ME51N - 创建采购申请 | MIGO - 货物移动 | MIRO - 发票校验 | MD01 - 联机 |
XK01 - 创建 | MM02 - 物料主数据修改 | ME03 - 显示 | MEQ3 - 显示 | ME12 - 修改 | ME22N - 更改 | ME31K - 创建 | ME41 - 创建 | ME52N - 更改采购申请 | MB03 - 显示物料凭证 | MD04 - 显示库存/需求状况 | |
XK02 - 更改 | MM03 - 物料主数据查询 | ME0M - 清单查询 | MEQ4 - 更改 | ME13 - 查询 | ME23N - 显示 | ME32K - 更改 | ME42 - 更改 | ME53N - 显示采购申请 | MB51 - 物料凭证清单 | ||
XK03 - 显示 | MM04 - 物料主数据冻结与解冻 | ME04 - 修改记录查询 | MEQM - 按物料 (清单显示) | ME14 - 修改记录查询 | ME29N - 审批 | ME33K - 显示 | ME43 - 显示 | ME54N - 批准采购请求 | MMBE - 库存总览 | ||
XK04 - 修改 | MM50 - 扩充物料视图 | ME15 - 删除 | ME34K - 维护补充 | ME44 - 维护补充 | ME5A - 清单查询 | MB52 - 现有仓库库存清单 | |||||
XK05 - 冻结 | MM06 - 删除物料标记 | ME1L - 清单查询 | ME35K - 审批 | ME45 - 审批 | |||||||
XK06 - 删除标记 | MM60 - 物料清单 | 框架协议-计划协议: | 报价: | ||||||||
XK07 - 科目组改变 | MM17 - 成批维护 | ME31L - 已知供应商 | ME47 - 维护 | ||||||||
ME37 - 库存传送计划协议 | ME48 - 显示 | ||||||||||
ME32L - 更改 | ME49 - 价格比较 | ||||||||||
ME33L - 显示 | |||||||||||
ME34L - 维护补充 | |||||||||||
ME35L - 审批 |
鸣谢:感谢查阅,请多多指教,有用请收藏、点赞哦 !