几个函数的使用例子:更新VBRK-XBLNR,IB01设备BOM创建,LI11N输入库存盘点 ...

打印 上一主题 下一主题

主题 539|帖子 539|积分 1617

最近用到一些函数,网上的相关资料不多,这里记录一下。
本文链接:https://www.cnblogs.com/hhelibeb/p/17012303.html
 
1,使用 RV_INVOICE_HEAD_MAINTAIN 更新VBRK-ZUNOR和VBRK-XBLNR等字段。

场景:金税发票接口需要更新发票相关字段,如VBRK-ZUNOR,VBRK-XBLNR和其它增强字段。
代码示例:
  1.   DATA:
  2.     xkomfk TYPE STANDARD TABLE OF komfk,
  3.     xkomv  TYPE STANDARD TABLE OF komv,
  4.     xthead TYPE STANDARD TABLE OF theadvb,
  5.     xvbfs  TYPE STANDARD TABLE OF vbfs,
  6.     xvbpa  TYPE STANDARD TABLE OF vbpavb,
  7.     xvbrk  TYPE STANDARD TABLE OF vbrkvb,
  8.     xvbrp  TYPE STANDARD TABLE OF vbrpvb,
  9.     xvbss  TYPE STANDARD TABLE OF vbss.
  10.   SELECT SINGLE * FROM vbrk
  11.     WHERE vbeln = @is_nvbrk-vbeln
  12.     INTO @ls_vbrk.
  13.   CALL FUNCTION 'RV_INVOICE_DOCUMENT_READ'
  14.     EXPORTING
  15.       konv_read    = 'X'
  16.       vbrk_i       = ls_vbrk
  17.     TABLES
  18.       xkomv        = xkomv
  19.       xvbpa        = xvbpa
  20.       xvbrk        = xvbrk
  21.       xvbrp        = xvbrp
  22.       xkomfk       = xkomfk
  23.       xvbfs        = xvbfs
  24.       xthead       = xthead
  25.       xvbss        = xvbss
  26.     EXCEPTIONS
  27.       no_authority = 1
  28.       OTHERS       = 2.
  29.   IF sy-subrc <> 0.
  30. * Implement suitable error handling here
  31.   ENDIF.
  32.   ls_vbrk-xblnr       = '123'.
  33.   ls_vbrk-zuonr       = '321'.
  34.   CALL FUNCTION 'RV_INVOICE_HEAD_MAINTAIN'
  35.     EXPORTING
  36.       vbrk_i = ls_vbrk
  37.     TABLES
  38.       xkomfk = xkomfk
  39.       xkomv  = xkomv
  40.       xthead = xthead
  41.       xvbfs  = xvbfs
  42.       xvbpa  = xvbpa
  43.       xvbrk  = xvbrk
  44.       xvbrp  = xvbrp
  45.       xvbss  = xvbss.
  46.   IF sy-subrc <> 0.
  47.     MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH
  48.     sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 INTO DATA(lv_dummy).
  49.   ENDIF.
  50.   DATA: ls_vbsk TYPE vbsk.
  51.   ls_vbsk-mandt = sy-mandt.
  52.   ls_vbsk-ernam = ls_vbrk-ernam.
  53.   ls_vbsk-erdat = ls_vbrk-erdat.
  54.   ls_vbsk-uzeit = ls_vbrk-erzet.
  55.   CALL FUNCTION 'RV_INVOICE_DOCUMENT_ADD'
  56.     EXPORTING
  57.       vbsk_i = ls_vbsk
  58.     TABLES
  59.       xkomfk = xkomfk
  60.       xkomv  = xkomv
  61.       xthead = xthead
  62.       xvbfs  = xvbfs
  63.       xvbpa  = xvbpa
  64.       xvbrk  = xvbrk
  65.       xvbrp  = xvbrp
  66.       xvbss  = xvbss.
复制代码
2,用 CSAI_BOM_MAINTAIN 实现IB01设备BOM创建、IB02设备BOM修改

场景:批量上传维护设备BOM
下面的代码可以用于创建和新增设备BOM,但不能删除已有设备BOM。如要删除已有设备BOM,需设置t_stpob中的删除标记。
  1.   DATA: ecsin         LIKE  csin,
  2.         estkob        LIKE  stkob,
  3.         estzub        LIKE  stzub,
  4.         emastb        LIKE  mastb,
  5.         items         TYPE sgt_t_bom_comp,
  6.         t_stpob       TYPE tt_stpo.
  7.   DATA: fl_warning LIKE  capiflag-flwarning.
  8.     ecsin-stlty = 'E' . "设备
  9.     ecsin-stlan = lr_data->stlan .
  10.     ecsin-datuv = sy-datum.
  11.     ecsin-werks = lr_data->werks.
  12.     ecsin-equnr = lr_data->equnr1.
  13.     CALL FUNCTION 'CSAI_BOM_READ'
  14.       EXPORTING
  15.         ecsin      = ecsin         
  16.       IMPORTING
  17.         fl_warning = fl_warning
  18.       TABLES
  19.         t_stpob    = t_stpob      
  20.       EXCEPTIONS
  21.         error      = 1
  22.         OTHERS     = 2.
  23.      
  24.     t_stpob = VALUE #( BASE t_stpob
  25.         ( posnr = lv_posnr postp = lr_data->postp idnrk = lr_data->idnrk menge = lr_data->menge )
  26.       ).
  27.     CALL FUNCTION 'CSAI_BOM_MAINTAIN'
  28.       EXPORTING
  29.         fl_bom_create      = 'X'
  30.         ecsin              = ecsin         
  31.         estkob             = estkob
  32.         estzub             = estzub
  33.         fl_commit_and_wait = 'X'
  34.       IMPORTING
  35.         fl_warning         = fl_warning
  36.       TABLES
  37.         t_stpob            = t_stpob
  38.       EXCEPTIONS
  39.         error              = 1
  40.         OTHERS             = 2.
复制代码
3,使用 L_INV_COUNT_EXT 实现LI11N输入库存盘点。

上传盘点数据,程序实现LI01N, LI11N, LI20, LI21盘点过账功能。
其中LI01N, LI20, LI21可以用BDC实现,LI11N通过函数实现。
数据来自表LQUA,需要注意如果数量为0,则要设置零库存标识。
  1. DATA: lt_linv TYPE STANDARD TABLE OF e1linvx.
  2. DATA: ls_linv TYPE e1linvx.
  3. ls_linv-lgnum = '120'.
  4. ls_linv-lqnum = '752'.
  5. ls_linv-lgort = 'B021'.
  6. ls_linv-ivnum = '0000000030'.  "LI01N生成的盘点记录
  7. ls_linv-idatu = sy-datum.
  8. ls_linv-wdatu = sy-datum.
  9. ls_linv-lgpla = 'B05-123'.
  10. ls_linv-plpos = '1'.
  11. ls_linv-lgtyp = 'B05'.
  12. ls_linv-matnr = '000000000020000214'.
  13. ls_linv-werks = '1000'.
  14. ls_linv-charg = '212922123'.
  15. ls_linv-lsonr = '12345'.
  16. ls_linv-letyp = 'IP'.
  17. ls_linv-menga = 2.
  18. ls_linv-lenum = '12345'.
  19. ls_linv-altme = 'BOT'.
  20. IF ls_linv-menga = 0.
  21.   ls_linv-kznul = 'X'.
  22. ENDIF.
  23. INSERT ls_linv INTO TABLE lt_linv.
  24. CALL FUNCTION 'L_INV_COUNT_EXT'
  25.   EXPORTING
  26.     i_check_only                 = i_check_only
  27.     i_commit                     = 'X'
  28.   TABLES
  29.     s_linv                       = lt_linv
  30.   EXCEPTIONS
  31.     either_quantity_or_empty_bin = 1
  32.     ivnum_not_found              = 2
  33.     check_problem                = 3
  34.     no_count_allowed             = 4
  35.     l_inv_read                   = 5
  36.     bin_not_in_ivnum             = 6
  37.     counts_not_updated           = 7
  38.     lock_error                   = 8.
复制代码
 
需要注意这三个功能涉及的函数都是未发布状态,如果有其它已发布函数可以实现相同功能,请优先考虑已发布函数。
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

石小疯

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表