MIRO

from: http://help-sap.blogspot.com/2011/01/miro.html,
http://space.itpub.net/9859323/viewspace-684596

If you want to mimic the quantity shown in MIRO (transaction) while posting incoming invoice, you need to use the following function module


CALL FUNCTION 'MRM_ASSIGNMENT'
EXPORTING
i_display = v_display
ti_drseg_old = i_drseg
TABLES
t_drseg = ti_drseg
t_rbselbest = ti_rbselbest
t_rbsellifs = ti_rbsellifs
t_rbselfrbr = ti_rbselfrbr
t_rbselwerk = ti_rbselwerk
t_rbselerfb = ti_rbselerfb
t_errprot = ti_errprot
t_ebelntab = ti_ebelntab
CHANGING
c_rbkpv = w_rbkpv
t_limit = w_limit.
IF sy-subrc = 0.
IF ti_errprot[] IS INITIAL AND ti_drseg[] IS NOT INITIAL.

LOOP AT ti_drseg ASSIGNING w_drseg WHERE koart = c_koart_initial.
w_drseg-tbtkz = w_rbkpv-tbtkz.
CALL FUNCTION 'MRM_AMOUNT_QUANTITY_PROPOSE_N'
EXPORTING
i_rbkpv = w_rbkpv
CHANGING
c_drseg = w_drseg .
ENDLOOP. "
ENDIF. "
ENDIF. "


FUNCTION Z_MME_CALLSAP_GETPOITEMS.
*"----------------------------------------------------------------------
*"*"Local interface:
*" IMPORTING
*" VALUE(IVORGANG) LIKE RM08M-VORGANG
*" VALUE(IREFERENZBELEGTYP) LIKE RM08M-REFERENZBELEGTYP
*" VALUE(IEBELN) LIKE RM08M-EBELN OPTIONAL
*" VALUE(IXWARE_BNK) LIKE RM08M-XWARE_BNK
*" VALUE(IEBELP) LIKE RM08M-EBELP OPTIONAL
*" VALUE(IBLDAT) LIKE INVFO-BLDAT OPTIONAL
*" VALUE(IBUDAT) LIKE INVFO-BUDAT
*" VALUE(IBUKRS) LIKE BKPF-BUKRS
*" VALUE(ISUPERFIELD) LIKE RM08M-SUPERFIELD OPTIONAL
*" VALUE(IXZUORDLIDELIVERY) LIKE RBKPB-XZUORDLI OPTIONAL
*" VALUE(IXZUORDLIRETURN) LIKE RBKPB-XZUORDLI OPTIONAL
*" VALUE(IDELIVERYBEGIN) LIKE RBKPB-LFDATABLI OPTIONAL
*" VALUE(IDELIVERYEND) LIKE RBKPB-LFDATBISLI OPTIONAL
*" VALUE(IRETURNBEGIN) LIKE RBKPB-LFDATABLI OPTIONAL
*" VALUE(IRETURNEND) LIKE RBKPB-LFDATBISLI OPTIONAL
*" EXPORTING
*" VALUE(RETURNMSG) LIKE ZRETURNMSG STRUCTURE ZRETURNMSG
*" TABLES
*" IDRSEG STRUCTURE DRSEG OPTIONAL
*"----------------------------------------------------------------------
TYPES: BEGIN OF MRM_RBVS.
INCLUDE STRUCTURE RBVS.
TYPES: SELKZ(1) TYPE C,
END OF MRM_RBVS.

TYPES: BEGIN OF MRM_RBKPV.
INCLUDE STRUCTURE RBKP_V.
TYPES: RBTX LIKE RBTX OCCURS 0,
THEAD TYPE THEAD, " Note header
TNOTE TYPE TLINE OCCURS 0, " Note lines
H_RBVS TYPE MRM_RBVS OCCURS 0, " vendor split
H_RBWS LIKE RBWS OCCURS 0, " extended withholding tax
* bupla LIKE accit-bupla, " Business place Korea
WWERT LIKE ACCIT-WWERT, " Umrechnungsdatum f黵 Kufix
MRM_ZLSPR TYPE MRM_ZLSPR, " Log. Zahlsperre
XCPDD TYPE XCPDD, " CPD Dialog bearbeitet
ADRNR TYPE ADRNR, " CPD Adresse
PENRC TYPE PENRC, " Cause for late Payment
"(PS/USA)
BAPI_EXTBLNR TYPE RE_BELNR,
" External doc. no. for BAPI when
BAPI_PROCESS TYPE C, " changing fiscal year / flag
" that doc. comes from BAPI
END OF MRM_RBKPV.

TYPES: BEGIN OF MMCR_DRSEG_CO.
INCLUDE STRUCTURE COBL_MRM_D.
TYPES: CR LIKE DRSEG_CR OCCURS 0,
UNPL_REFWR TYPE REFWR,
END OF MMCR_DRSEG_CO.

TYPES: BEGIN OF MMCR_DRSEG.
INCLUDE STRUCTURE DRSEG.
TYPES: CR LIKE DRSEG_CR OCCURS 0,
CO TYPE MMCR_DRSEG_CO OCCURS 0,
SM LIKE DRSEG_SM OCCURS 0,
CHARACT TYPE RBCHARACT_INSTANCE OCCURS 3,
"instances of characteristics
UEBGMAT TYPE MATNR,
UEBRBLGP TYPE RBLGP,
SELKZ_DB TYPE SELKZ,
RBLGP_OLD TYPE RBLGP, "rblgp before aggregation
END OF MMCR_DRSEG.

TYPES: MMCR_LIMIT LIKE RELIMIT.
* TYPES: MMCR_TLIMIT TYPE SORTED TABLE OF MMCR_LIMIT
* WITH UNIQUE KEY EBELN EBELP.
*
DATA: BEGIN OF MM_ERRPROT OCCURS 0,
MSGTY LIKE SY-MSGTY,
MSGID LIKE SY-MSGID,
MSGNO LIKE SY-MSGNO,
MSGV1 LIKE SY-MSGV1,
MSGV2 LIKE SY-MSGV2,
MSGV3 LIKE SY-MSGV3,
MSGV4 LIKE SY-MSGV4,
SOURCE TYPE C,
RBLGP LIKE DRSEG-RBLGP,
SHOWN LIKE BOOLE-BOOLE,
END OF MM_ERRPROT.

DATA: LIN TYPE P,
TEXT(30), "返回消息文本
MM_RBKPV TYPE MRM_RBKPV,
I_RBSELBEST LIKE RBSELBEST OCCURS 0 WITH HEADER LINE,
I_RBSELLIFS LIKE RBSELLIFS OCCURS 0 WITH HEADER LINE,
I_RBSELFRBR LIKE RBSELFRBR OCCURS 0 WITH HEADER LINE,
I_RBSELWERK LIKE RBSELWERK OCCURS 0 WITH HEADER LINE,
I_RBSELERFB LIKE RBSELERFB OCCURS 0 WITH HEADER LINE,
MM_TLIMIT TYPE SORTED TABLE OF MMCR_LIMIT
WITH UNIQUE KEY EBELN EBELP,
MM_DRSEG TYPE MMCR_DRSEG OCCURS 0 WITH HEADER LINE.

CLEAR I_RBSELBEST.
I_RBSELBEST-EBELN = IEBELN.
I_RBSELBEST-EBELP = IEBELP.
APPEND I_RBSELBEST.

MM_RBKPV-BLDAT = IBLDAT.
MM_RBKPV-BUDAT = IBUDAT.
MM_RBKPV-BUKRS = IBUKRS.

*请货款
IF IVORGANG = '1' AND IREFERENZBELEGTYP = '1' AND IXWARE_BNK = '1'.
MM_RBKPV-XRECH = 'X'. "标识: 记帐发票
MM_RBKPV-XZUORDLI = 'X'. "显示交货项目分配
MM_RBKPV-XZUORDRT = 'X'. "显示退货分配
MM_RBKPV-XBNK = ''. "计划交货成本标识
MM_RBKPV-XWARE = 'X'. "货物发票/服务标识符
MM_RBKPV-TBTKZ = ''. "标识: 后续借/贷
MM_RBKPV-XBEST = 'X'. "复选框: 分配
MM_RBKPV-XRECHL = 'S'. "交货项目的过帐逻辑(发票/贷项清单)
MM_RBKPV-XRECHR = 'H'. "交货项目的过帐逻辑(发票/贷项清单)
TEXT = '没有需要请的货款'.
*请已计划费用
ELSEIF IVORGANG = '1' AND IREFERENZBELEGTYP = '1' AND IXWARE_BNK = '2'.
MM_RBKPV-XRECH = 'X'.
MM_RBKPV-XZUORDLI = 'X'.
MM_RBKPV-XZUORDRT = 'X'.
MM_RBKPV-XBNK = 'X'.
MM_RBKPV-XWARE = ''.
MM_RBKPV-TBTKZ = ''.
MM_RBKPV-XBEST = 'X'.
MM_RBKPV-XRECHL = 'S'.
MM_RBKPV-XRECHR = 'H'.
TEXT = '没有需要请的已计划费用'.
*请未计划费用
ELSEIF IVORGANG = '3' AND IREFERENZBELEGTYP = '1' AND IXWARE_BNK = '1'.
MM_RBKPV-XRECH = 'X'.
MM_RBKPV-XZUORDLI = 'X'.
MM_RBKPV-XZUORDRT = 'X'.
MM_RBKPV-XBNK = ''.
MM_RBKPV-XWARE = 'X'.
MM_RBKPV-TBTKZ = 'X'.
MM_RBKPV-XBEST = 'X'.
MM_RBKPV-XRECHL = 'S'.
MM_RBKPV-XRECHR = 'H'.
TEXT = '没有需要请未计划费用'.
*货款、已计划费用和未计划费用同时请款
ELSEIF IVORGANG = '1' AND IREFERENZBELEGTYP = '1' AND IXWARE_BNK = '3'.
MM_RBKPV-XRECH = 'X'.
MM_RBKPV-XZUORDLI = 'X'.
MM_RBKPV-XZUORDRT = 'X'.
MM_RBKPV-XBNK = 'X'.
MM_RBKPV-XWARE = 'X'.
MM_RBKPV-TBTKZ = ''.
MM_RBKPV-XBEST = 'X'.
MM_RBKPV-XRECHL = 'S'.
MM_RBKPV-XRECHR = 'H'.
TEXT = '没有需要请的货款、已计划费用和未计划费用'.
*退货订单请款
ELSEIF IVORGANG = '2' AND IREFERENZBELEGTYP = '1' AND IXWARE_BNK = '1'.
MM_RBKPV-XRECH = ''.
MM_RBKPV-XZUORDLI = 'X'.
MM_RBKPV-XZUORDRT = 'X'.
MM_RBKPV-XBNK = ''.
MM_RBKPV-XWARE = 'X'.
MM_RBKPV-TBTKZ = ''.
MM_RBKPV-XBEST = 'X'.
MM_RBKPV-XRECHL = 'H'.
MM_RBKPV-XRECHR = 'H'.
TEXT = '没有需要请的退货货款'.
*批次请款
ELSEIF IVORGANG = '1' AND IREFERENZBELEGTYP = '5' AND IXWARE_BNK = '3'.
TEXT = '此供应商没有需要请的货款及费用'.
IF IXZUORDLIDELIVERY = 'X' AND IXZUORDLIRETURN = 'X'. "交货和退货
MM_RBKPV-LFDATABLI = IDELIVERYBEGIN.
MM_RBKPV-LFDATBISLI = IDELIVERYEND.
MM_RBKPV-LFDATABRT = IRETURNBEGIN.
MM_RBKPV-LFDATBISRT = IRETURNEND.
MM_RBKPV-XZUORDLI = 'X'.
MM_RBKPV-XZUORDRT = 'X'.
MM_RBKPV-XBNK = 'X'.
MM_RBKPV-XWARE = 'X'.
MM_RBKPV-TBTKZ = ''.
MM_RBKPV-XBEST = ''.
MM_RBKPV-SELIF = ISUPERFIELD.
MM_RBKPV-XRECHL = 'S'.
MM_RBKPV-XRECHR = 'H'.
ELSEIF IXZUORDLIDELIVERY = 'X' AND IXZUORDLIRETURN = ''. "交货
MM_RBKPV-LFDATABLI = IDELIVERYBEGIN.
MM_RBKPV-LFDATBISLI = IDELIVERYEND.
MM_RBKPV-LFDATABRT = IRETURNBEGIN.
MM_RBKPV-LFDATBISRT = IRETURNEND.
MM_RBKPV-XZUORDLI = ''.
MM_RBKPV-XZUORDRT = 'X'.
MM_RBKPV-XBNK = 'X'.
MM_RBKPV-XWARE = 'X'.
MM_RBKPV-TBTKZ = ''.
MM_RBKPV-XBEST = ''.
MM_RBKPV-SELIF = ISUPERFIELD.
MM_RBKPV-XRECHL = 'S'.
MM_RBKPV-XRECHR = 'H'.
ELSEIF IXZUORDLIDELIVERY = '' AND IXZUORDLIRETURN = 'X'. "退货
ENDIF.
ENDIF.

CALL FUNCTION 'MRM_ASSIGNMENT'
EXPORTING
I_DISPLAY = 'X'
* TI_DRSEG_OLD =
* IMPORTING
* E_CANCEL =
TABLES
T_DRSEG = MM_DRSEG
T_RBSELBEST = I_RBSELBEST
T_RBSELLIFS = I_RBSELLIFS
T_RBSELFRBR = I_RBSELFRBR
T_RBSELWERK = I_RBSELWERK
T_RBSELERFB = I_RBSELERFB
T_ERRPROT = MM_ERRPROT
* T_EBELNTAB =
* T_RBSELTRAN =
CHANGING
C_RBKPV = MM_RBKPV
T_LIMIT = MM_TLIMIT
.
LOOP AT MM_DRSEG WHERE KOART = ''.
MOVE MM_RBKPV-TBTKZ TO MM_DRSEG-TBTKZ.
CALL FUNCTION 'MRM_AMOUNT_QUANTITY_PROPOSE_N'
EXPORTING
I_RBKPV = MM_RBKPV
CHANGING
C_DRSEG = MM_DRSEG.
MODIFY MM_DRSEG.
ENDLOOP.
LOOP AT MM_DRSEG.
MOVE-CORRESPONDING MM_DRSEG TO IDRSEG.
APPEND IDRSEG.
CLEAR MM_DRSEG.
ENDLOOP.

DESCRIBE TABLE MM_DRSEG LINES LIN.
IF LIN = 0.
RETURNMSG-MTYPE = 'W'.
RETURNMSG-MTEXT = TEXT.
ENDIF.

ENDFUNCTION
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值