最近用到一些函数,网上的相关资料不多,这里记录一下。

本文链接:https://www.cnblogs.com/hhelibeb/p/17012303.html

1,使用 RV_INVOICE_HEAD_MAINTAIN 更新VBRK-ZUNOR和VBRK-XBLNR等字段。

场景:金税发票接口需要更新发票相关字段,如VBRK-ZUNOR,VBRK-XBLNR和其它增强字段。

代码示例:

  DATA:
xkomfk TYPE STANDARD TABLE OF komfk,
xkomv TYPE STANDARD TABLE OF komv,
xthead TYPE STANDARD TABLE OF theadvb,
xvbfs TYPE STANDARD TABLE OF vbfs,
xvbpa TYPE STANDARD TABLE OF vbpavb,
xvbrk TYPE STANDARD TABLE OF vbrkvb,
xvbrp TYPE STANDARD TABLE OF vbrpvb,
xvbss TYPE STANDARD TABLE OF vbss. SELECT SINGLE * FROM vbrk
WHERE vbeln = @is_nvbrk-vbeln
INTO @ls_vbrk. CALL FUNCTION 'RV_INVOICE_DOCUMENT_READ'
EXPORTING
konv_read = 'X'
vbrk_i = ls_vbrk
TABLES
xkomv = xkomv
xvbpa = xvbpa
xvbrk = xvbrk
xvbrp = xvbrp
xkomfk = xkomfk
xvbfs = xvbfs
xthead = xthead
xvbss = xvbss
EXCEPTIONS
no_authority = 1
OTHERS = 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF. ls_vbrk-xblnr = '123'.
ls_vbrk-zuonr = '321'. CALL FUNCTION 'RV_INVOICE_HEAD_MAINTAIN'
EXPORTING
vbrk_i = ls_vbrk
TABLES
xkomfk = xkomfk
xkomv = xkomv
xthead = xthead
xvbfs = xvbfs
xvbpa = xvbpa
xvbrk = xvbrk
xvbrp = xvbrp
xvbss = xvbss.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH
sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 INTO DATA(lv_dummy).
ENDIF. DATA: ls_vbsk TYPE vbsk.
ls_vbsk-mandt = sy-mandt.
ls_vbsk-ernam = ls_vbrk-ernam.
ls_vbsk-erdat = ls_vbrk-erdat.
ls_vbsk-uzeit = ls_vbrk-erzet. CALL FUNCTION 'RV_INVOICE_DOCUMENT_ADD'
EXPORTING
vbsk_i = ls_vbsk
TABLES
xkomfk = xkomfk
xkomv = xkomv
xthead = xthead
xvbfs = xvbfs
xvbpa = xvbpa
xvbrk = xvbrk
xvbrp = xvbrp
xvbss = xvbss.

2,用 CSAI_BOM_MAINTAIN 实现IB01设备BOM创建、IB02设备BOM修改

场景:批量上传维护设备BOM

下面的代码可以用于创建和新增设备BOM,但不能删除已有设备BOM。如要删除已有设备BOM,需设置t_stpob中的删除标记。

  DATA: ecsin         LIKE  csin,
estkob LIKE stkob,
estzub LIKE stzub,
emastb LIKE mastb,
items TYPE sgt_t_bom_comp,
t_stpob TYPE tt_stpo.
DATA: fl_warning LIKE capiflag-flwarning. ecsin-stlty = 'E' . "设备
ecsin-stlan = lr_data->stlan .
ecsin-datuv = sy-datum. ecsin-werks = lr_data->werks.
ecsin-equnr = lr_data->equnr1. CALL FUNCTION 'CSAI_BOM_READ'
EXPORTING
ecsin = ecsin
IMPORTING
fl_warning = fl_warning
TABLES
t_stpob = t_stpob
EXCEPTIONS
error = 1
OTHERS = 2. t_stpob = VALUE #( BASE t_stpob
( posnr = lv_posnr postp = lr_data->postp idnrk = lr_data->idnrk menge = lr_data->menge )
). CALL FUNCTION 'CSAI_BOM_MAINTAIN'
EXPORTING
fl_bom_create = 'X'
ecsin = ecsin
estkob = estkob
estzub = estzub
fl_commit_and_wait = 'X'
IMPORTING
fl_warning = fl_warning
TABLES
t_stpob = t_stpob
EXCEPTIONS
error = 1
OTHERS = 2.

3,使用 L_INV_COUNT_EXT 实现LI11N输入库存盘点。

上传盘点数据,程序实现LI01N, LI11N, LI20, LI21盘点过账功能。

其中LI01N, LI20, LI21可以用BDC实现,LI11N通过函数实现。

数据来自表LQUA,需要注意如果数量为0,则要设置零库存标识。

DATA: lt_linv TYPE STANDARD TABLE OF e1linvx.
DATA: ls_linv TYPE e1linvx. ls_linv-lgnum = '120'.
ls_linv-lqnum = '752'.
ls_linv-lgort = 'B021'.
ls_linv-ivnum = '0000000030'. "LI01N生成的盘点记录
ls_linv-idatu = sy-datum.
ls_linv-wdatu = sy-datum.
ls_linv-lgpla = 'B05-123'.
ls_linv-plpos = '1'.
ls_linv-lgtyp = 'B05'.
ls_linv-matnr = '000000000020000214'.
ls_linv-werks = '1000'.
ls_linv-charg = '212922123'.
ls_linv-lsonr = '12345'.
ls_linv-letyp = 'IP'.
ls_linv-menga = 2.
ls_linv-lenum = '12345'. ls_linv-altme = 'BOT'.
IF ls_linv-menga = 0.
ls_linv-kznul = 'X'.
ENDIF.
INSERT ls_linv INTO TABLE lt_linv. CALL FUNCTION 'L_INV_COUNT_EXT'
EXPORTING
i_check_only = i_check_only
i_commit = 'X'
TABLES
s_linv = lt_linv
EXCEPTIONS
either_quantity_or_empty_bin = 1
ivnum_not_found = 2
check_problem = 3
no_count_allowed = 4
l_inv_read = 5
bin_not_in_ivnum = 6
counts_not_updated = 7
lock_error = 8.

需要注意这三个功能涉及的函数都是未发布状态,如果有其它已发布函数可以实现相同功能,请优先考虑已发布函数。

SPAN { font-family: "Fixedsys"; font-size: 12pt; color: rgba(0, 0, 0, 1); background: rgba(255, 255, 255, 1) }

SPAN { font-family: "Fixedsys"; font-size: 12pt; color: rgba(0, 0, 0, 1); background: rgba(255, 255, 255, 1) }

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

  1. pytorch常用函数总结(持续更新)

    pytorch常用函数总结(持续更新) torch.max(input,dim) 求取指定维度上的最大值,,返回输入张量给定维度上每行的最大值,并同时返回每个最大值的位置索引.比如: demo.sha ...

  2. php函数描述及例子

    /** * xml2array() will convert the given XML text to an array in the XML structure. * Link: http://w ...

  3. go每个函数写代码例子

    https://github.com/astaxie/gopkg 由于目前golang的手册里面针对函数的例子太少了,很多时候不知道怎么使用,好多人都是看源代码才明白怎么用,这个给我们快速开发gola ...

  4. OpenGL glMatrixMode() 函数解释与例子

    概述 glMatrixMode() 用以指定当前要操作的矩阵,可选值有 GL_MODELVIEW(模型视图,默认值),GL_PROJECTION(投影),GL_TEXTURE(纹理),GL_COLOR ...

  5. CopyU!下一次更新将增加对设备厂商及型号的识别!

    CopyU!下一版本的更新将加入对设备厂商及型号的识别功能,当用户连接设备时,CopyU!将能够辨别出设备的详细型号等,能够在一定程度上帮助用户发现问题设备或仿冒设备. 敬请期待即将到来的新更新!

  6. (转)platform_driver_register,什么时候调用PROBE函数 注册后如何找到驱动匹配的设备

     platform_driver_register,什么时候调用PROBE函数 注册后如何找到驱动匹配的设备 2011-10-24 19:47:07 分类: LINUX   kernel_init中d ...

  7. sql查询,如果有更新时间则按更新时间倒序,没有则按创建时间倒序排列

    原文:sql查询,如果有更新时间则按更新时间倒序,没有则按创建时间倒序排列 ORDER BY IFNULL(update_time,create_time) DESC IFNULL(expr1,exp ...

  8. python基于函数替换的热更新原理介绍

    热更新即在不重启进程或者不离开Python interpreter的情况下使得被编辑之后的python源码能够直接生效并按照预期被执行新代码.平常开发中,热更能极大提高程序开发和调试的效率,在修复线上 ...

  9. POI刷新数据后的函数(公式)更新问题

    使用POI将Excel模板中的数据进行更新,这应该是很常见的操作 下面就贴上我的一小段代码 public class ModifyExcel { /** * @param fileName Excel ...

  10. C/C++ 不带参数的回调函数 与 带参数的回调函数 函数指针数组 例子

    先来不带参数的回调函数例子 #include <iostream> #include <windows.h> void printFunc() { std::cout<& ...

随机推荐

  1. verilog设计知识集合(2)

    verilog设计知识集合(2) 1.阻塞与非阻塞 阻塞赋值是存在先后关系的,非阻塞是不存在先后关系的.一般而言,阻塞用于组合逻辑,非阻塞用于时序逻辑(不一定).阻塞的执行时逐步赋值,非阻塞是同步赋值 ...

  2. verilog之时钟信号的编写2

    verilog之时钟信号的编写2 1.时钟信号的特点 时钟信号除了可以根据时序一个个变化列举出来,还可以利用其循环的变化的特点,使用循环执行语句always来实现.这种方法实现的时钟信号可以一直执行且 ...

  3. 基于ARM联合ZYNQ的设计小结

    基于ARM联合ZYNQ的设计小结 1.硬件设计 硬件设计就是使用PS的自带硬核,外接其他可以连接AXI的IP核,构成一个自定义的硬件平台.如果简单理解,可以把这些操作统称为底层.这部分的设计还是比较方 ...

  4. https://codeforces.com/gym/496962

    A略. B最大最小即为答案. C略. DE记录 t 的每个字母 在 s 中出现的最左和最右,特判端点. FG先贪心后反悔 or 背包. *H:不会.AC自动机.

  5. 【Java】使用位运算完成数组中两个变量交换位置

    1 /** 2 * 3 */ 4 package com.raliable.chapter_0; 5 /** 6 * @author : Administrator 7 * @date :2022年4 ...

  6. MySQL数据过滤和搜索

    操作符 AND操作符 mysql> SELECT prod_id,prod_price,prod_name FROM products WHERE vend_id=1003 AND prod_p ...

  7. #单调队列#JZOJ 1753 锻炼身体

    题目 一个\(n*m\)的矩阵,有些格子不能经过,有\(k\)个时段, 要么停留某个格子,要么沿时段规定的方向移动,问最多能够移动多少次 \(n,m,k\leq 200\) 分析 题目已经提示了\(O ...

  8. 如何知道 window 的 load 事件已经触发

    背景 为了使页面加载更快,常常将一些不重要的第三方脚本在页面完成加载后进行懒加载. // 做一些不影响业务的事情 window.addEventListener('load', () => { ...

  9. 使用CMake启用RUNPATH特性

    使用CMake,启用RUNPATH特性,可以参考官方帖子. 如下源码来自于上述帖子. CMAKE_MINIMUM_REQUIRED(VERSION 2.8 FATAL_ERROR) PROJECT(R ...

  10. 深入学习 XML 解析器及 DOM 操作技术

    所有主要的浏览器都内置了一个XML解析器,用于访问和操作XML XML 解析器 在访问XML文档之前,必须将其加载到XML DOM对象中 所有现代浏览器都有一个内置的XML解析器,可以将文本转换为XM ...