首页 > 其他分享 >DEMO: 获取交货单未开票数量

DEMO: 获取交货单未开票数量

时间:2022-10-14 19:04:01浏览次数:39  
标签:LFIMG DEMO 开票 VBFA LV LIPS LS 交货单 DATA



VL03N查看交货单

DEMO: 获取交货单未开票数量_小程序

交货数量为5,单位是CAR


查看已经开票凭证流:

DEMO: 获取交货单未开票数量_小程序_02


直接看表 VBFA

DEMO: 获取交货单未开票数量_小程序_03

DEMO: 获取交货单未开票数量_微信_04

DEMO: 获取交货单未开票数量_本地接口_05

开票84 单位EA

冲销76 单位EA

已开 84 - 76 = 8 EA

而咱们看交货单的时候,交货单单位 CAR.


单位转换:

DEMO: 获取交货单未开票数量_微信_06

交货单 剩余开票数量 3 CAR,VF01查看

DEMO: 获取交货单未开票数量_小程序_07


现在要做交货单开票的批导,输入交货单,物料和数量。


那现在为了防止输入数量比未开票数量多,需要校验一下。


获取交货单对应的未开票数量demo函数:

DEMO: 获取交货单未开票数量_微信_08


FUNCTION ZSD_GET_VF01_LFIMG.
*"----------------------------------------------------------------------
*"*"本地接口:
*" TABLES
*" CT_DATA STRUCTURE ZSDS_VF01
*"----------------------------------------------------------------------
DATA:LV_MEINS TYPE MEINS.

DATA:LV_LFIMG TYPE EKPO-MENGE.
DATA:LV_LFIMG_VL TYPE EKPO-MENGE.
DATA:LT_LIPS TYPE TABLE OF LIPS.
DATA:LS_LIPS TYPE LIPS.

DATA:LT_VBFA TYPE TABLE OF VBFA.
DATA:LS_VBFA TYPE VBFA.

FIELD-SYMBOLS <LS_DATA> LIKE LINE OF CT_DATA.

CHECK CT_DATA[] IS NOT INITIAL.

SELECT * FROM LIPS INTO TABLE LT_LIPS
FOR ALL ENTRIES IN CT_DATA
WHERE VBELN = CT_DATA-VBELN.


SELECT * FROM VBFA INTO TABLE LT_VBFA
FOR ALL ENTRIES IN CT_DATA
WHERE VBELV = CT_DATA-VBELN
AND VBTYP_N IN ( 'M','N' )
AND VBTYP_V = 'J'.

SORT LT_LIPS BY VBELN POSNR.

LOOP AT CT_DATA ASSIGNING <LS_DATA>.

CLEAR LS_LIPS.
READ TABLE LT_LIPS INTO LS_LIPS
WITH KEY
VBELN = <LS_DATA>-VBELN
POSNR = <LS_DATA>-POSNR BINARY SEARCH.

<LS_DATA>-MATNR = LS_LIPS-MATNR.
<LS_DATA>-LFIMG = LS_LIPS-LFIMG.
<LS_DATA>-MEINS = LS_LIPS-MEINS.
<LS_DATA>-VRKME = LS_LIPS-VRKME.


"检查已经开票数量
CLEAR LV_MEINS.
CLEAR LV_LFIMG.
CLEAR LV_LFIMG_VL.
LOOP AT LT_VBFA INTO LS_VBFA WHERE
VBELV = <LS_DATA>-VBELN AND
POSNV = <LS_DATA>-POSNR
.
IF LS_VBFA-VBTYP_N = 'M'."发票
LV_LFIMG = LV_LFIMG + LS_VBFA-RFMNG.
ELSEIF LS_VBFA-VBTYP_N = 'N'. "冲销
LV_LFIMG = LV_LFIMG - LS_VBFA-RFMNG.
ENDIF.

LV_MEINS = LS_VBFA-MEINS.
ENDLOOP.

"开票单位跟订单单位转换
CALL FUNCTION 'MD_CONVERT_MATERIAL_UNIT'
EXPORTING
I_MATNR = <LS_DATA>-MATNR
I_IN_ME = LV_MEINS
I_OUT_ME = <LS_DATA>-VRKME
I_MENGE = LV_LFIMG
IMPORTING
E_MENGE = LV_LFIMG_VL
EXCEPTIONS
ERROR_IN_APPLICATION = 1
ERROR = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
ENDIF.

<LS_DATA>-LFIMG_POST = LV_LFIMG_VL.
<LS_DATA>-LFIMG_OPEN = <LS_DATA>-LFIMG - <LS_DATA>-LFIMG_POST .

ENDLOOP.

ENDFUNCTION.


标签:LFIMG,DEMO,开票,VBFA,LV,LIPS,LS,交货单,DATA
From: https://blog.51cto.com/u_15680210/5757826

相关文章

  • HU打包BAPI:内部给号 更新交货单
    其他相关资料可点击:​​HU相关配置​​​​HU打包 内外部给号 前台操作​​代码输入参数:内向交货单号*"--------------------------------------------------------------......
  • 外向交货单屏幕增强BADI:LE_SHP_TAB_CUST_OVER
    外向交货单屏幕增强1、涉及tcode:VL01N  Vl02N VL03N2、效果图3、后台增强点4、增强点,BADI:LE_SHP_TAB_CUST_OVER5、具体方法介绍:1)ACTIVATE_TAB_PAGE2)TRANSFER_DATA_TO_......
  • Demo:cl_salv_table ALV 弹出框
    效果图:代码REPORTZLM_001.DATA:go_alvTYPEREFTOcl_salv_table,go_funlstTYPEREFTOcl_salv_functions_list.DATA:gt_dataTYPESTANDARDTABLEOFspfli......
  • DEMO:REUSE_ALV_GRID_DISPLAY 复选框 刷新 grid_title
    最近写了几个FunctionALV复选框+刷新的报表,为了方便复制粘贴到其他项目修改,做了个demo。效果选中,删除结构和status代码REPORTzalv_demoDATA:lt_alv_showLIKET......
  • .Net Core Mvc (CRUD)Demo
    目录目录顺手联系了个DEMO控制器Index页面Add页面修改页面最后效果顺手联系了个DEMO控制器usingSystem;usingSystem.Collections.Generic;usingSystem.Dynamic;u......
  • Idea运行支付宝网站支付demo踩坑解决及其测试注意事项
    一、前言在一些商城网上中,必不可少的是支付,支付宝和微信比较常见,最近小编也是在研究这一块,看看支付宝怎么进行支付的,支付宝给我们提供了demo和沙箱测试。减少我们的申请的......
  • 自定义的异常类oppdemo12
    //自定义的异常类publicclassMyExceptionextendsException{//双击shift:搜索//传递数字>10privateintdetail;publicMyException(inta){this.d......
  • 异常oppdemo12
    publicclassTest1{publicstaticvoidmain(String[]args){inta=2;intb=0;//选择该代码(sout)后Ctrl+Alt+T即可选择代码块......
  • (抛出)异常oppdemo12
    importjava.sql.SQLOutput;publicclassTest{publicstaticvoidmain(String[]args){//方法中处理的了异常,newTest().test(1,0);一行代码就够了......
  • 重写多态oppdemo7
    publicclassPerson{publicvoidrun(){System.out.println("father");}}/*多态注意事项:1.多态是方法的多态,属性没有多态2.父类和子类有联系类型转换......