zoukankan      html  css  js  c++  java
  • Get Open Sales Order

    引用:翱翔云天

    This report is used to get the open sales order, just for a refer.


    REPORT /SIE/CHN_SD_SDI_OPEN_QTY .

    *&---------------------------------------------------------------------*

    *& Macro declaration *

    *&---------------------------------------------------------------------*

    DEFINE SET_ALV_FIELDCAT.

    CLEAR LS_FIELDCAT.

    LS_FIELDCAT-FIELDNAME = &1. "Field name

    LS_FIELDCAT-TABNAME = &2. "Reference table name

    LS_FIELDCAT-COL_POS = &3. "Column position

    LS_FIELDCAT-OUTPUTLEN = &4. "Output length

    LS_FIELDCAT-SELTEXT_L = &5. "Select text long length

    LS_FIELDCAT-DDICTXT = 'L'. "Using select text type

    APPEND LS_FIELDCAT TO IT_FIELDCAT.

    END-OF-DEFINITION.

    TABLES: VBAK,VBAP,VBFA.

    TYPE-POOLS SLIS.

    *ALC used fieldcatelog internal table

    DATA: IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.

    *Structure and internal table for sales open Qty

    DATA:

    BEGIN OF R_SQ,

    VBELN LIKE VBAP-VBELN,

    POSNR LIKE VBAP-POSNR,

    SQ(20),

    GQ(20),

    OQ(20),

    END OF R_SQ,

    IT_SQ LIKE TABLE OF R_SQ.

    *Structure and table for billing open Qty

    DATA BEGIN OF R_BQ.

    DATA VBELN LIKE VBAP-VBELN.

    DATA POSNR LIKE VBAP-POSNR.

    INCLUDE STRUCTURE FPLT.

    DATA END OF R_BQ.

    DATA IT_BQ LIKE TABLE OF R_BQ.

    *Selection screen

    SELECTION-SCREEN BEGIN OF BLOCK B1

    WITH FRAME TITLE TEXT-B01.

    SELECTION-SCREEN BEGIN OF LINE.

    PARAMETER RAD1 RADIOBUTTON GROUP R1 USER-COMMAND F1.

    SELECTION-SCREEN COMMENT 3(20) TEXT-R01 FOR FIELD RAD1.

    PARAMETER RAD2 RADIOBUTTON GROUP R1.

    SELECTION-SCREEN COMMENT 40(20) TEXT-R02 FOR FIELD RAD2.

    SELECTION-SCREEN END OF LINE.

    SELECTION-SCREEN END OF BLOCK B1.

    SELECT-OPTIONS:

    S_VKORG FOR VBAK-VKORG,

    S_VTWEG FOR VBAK-VTWEG,

    S_SPART FOR VBAK-SPART,

    S_KUNNR FOR VBAK-KUNNR,

    S_ERDAT FOR VBAK-ERDAT,

    S_AUART FOR VBAK-AUART,

    S_PSTYV FOR VBAP-PSTYV,

    S_ABGRU FOR VBAP-ABGRU,

    S_WBS FOR VBAP-PS_PSP_PNR,

    S_MATNR FOR VBAP-MATNR,

    S_VBELV FOR VBFA-VBELV,

    S_VBTYP FOR VBFA-VBTYP_N.

    *Initialize program

    INITIALIZATION.

    RAD1 = 'X'.

    *Change output according to screen selection

    AT SELECTION-SCREEN OUTPUT.

    PERFORM MODIF_SCREEN.

    *Check authority

    AT SELECTION-SCREEN.

    PERFORM AUTH_CHECK.

    START-OF-SELECTION.

    IF RAD1 IS INITIAL.

    * Get billing Qty

    PERFORM GET_DATA_BQ.

    * Show billing Qty

    PERFORM OUTPUT_BQ.

    ELSE.

    * Get Sales Open Qty

    PERFORM GET_DATA_SQ.

    * Show Sales Open Qty

    PERFORM OUTPUT_SQ.

    ENDIF.

    *&---------------------------------------------------------------------*

    *& Form modif_screen

    *&---------------------------------------------------------------------*

    * text

    *----------------------------------------------------------------------*

    FORM MODIF_SCREEN.

    IF RAD1 IS INITIAL.

    LOOP AT SCREEN.

    IF SCREEN-NAME CS 'VBELV' OR

    SCREEN-NAME CS 'VBTYP'.

    SCREEN-ACTIVE = 0.

    MODIFY SCREEN.

    ENDIF.

    ENDLOOP.

    ENDIF.

    ENDFORM. " modif_screen

    *&---------------------------------------------------------------------*

    *& Form AUTH_CHECK

    *&---------------------------------------------------------------------*

    * text

    *----------------------------------------------------------------------*

    FORM AUTH_CHECK.

    * Check whether the User has the Transaction Code Authorization

    AUTHORITY-CHECK OBJECT 'S_TCODE'

    ID 'TCD' FIELD 'VA03'.

    IF SY-SUBRC <> 0.

    MESSAGE E043(/SIE/CHN_ALL).

    ENDIF.

    ENDFORM. " AUTH_CHECK

    *&---------------------------------------------------------------------*

    *& Form GET_DATA_BQ

    *&---------------------------------------------------------------------*

    * text

    *----------------------------------------------------------------------*

    FORM GET_DATA_BQ.

    * With inner join get billing plan

    * VBAK--VBAP--VBKD--FPLT

    SELECT A~VBELN B~POSNR D~AFDAT D~TETXT D~MLBEZ D~FPROZ

    D~FAKWR D~WAERS D~FAKSP D~FAREG D~FKSAF D~ZTERM

    D~FPTTP D~FKARV D~KURRF D~MLSTN D~FPFIX

    FROM VBAK AS A INNER JOIN VBAP AS B ON B~VBELN = A~VBELN

    INNER JOIN VBKD AS C ON C~VBELN = B~VBELN AND C~POSNR = B~POSNR

    INNER JOIN FPLT AS D ON D~FPLNR = C~FPLNR

    INTO CORRESPONDING FIELDS OF TABLE IT_BQ

    WHERE A~VKORG IN S_VKORG

    AND A~VTWEG IN S_VTWEG

    AND A~SPART IN S_SPART

    AND A~KUNNR IN S_KUNNR

    AND A~ERDAT IN S_ERDAT

    AND A~AUART IN S_AUART

    AND B~PSTYV IN S_PSTYV

    AND B~ABGRU IN S_ABGRU

    AND B~PS_PSP_PNR IN S_WBS

    AND B~MATNR IN S_MATNR

    AND D~FKSAF <> 'C'.

    IF SY-SUBRC <> 0.

    MESSAGE S033(/SIE/CHN_ALL)

    WITH 'No data exists!'.

    ENDIF.

    ENDFORM. " GET_DATA_BQ

    *&---------------------------------------------------------------------*

    *& Form GET_DATA_SQ

    *&---------------------------------------------------------------------*

    * text

    *----------------------------------------------------------------------*

    FORM GET_DATA_SQ.

    * Local data

    DATA:

    BEGIN OF LR_SQ,

    VBELN LIKE VBAP-VBELN,

    POSNR LIKE VBAP-POSNR,

    RFMNG LIKE VBFA-RFMNG,

    KWMENG LIKE VBAP-KWMENG,

    OQ LIKE VBAP-KWMENG,

    VRKME LIKE VBAP-VRKME,

    END OF LR_SQ.

    DATA: LIT_SQ LIKE TABLE OF LR_SQ,

    LLR_SQ LIKE LR_SQ.

    DATA: L_QTY LIKE VBFA-RFMNG.

    * Get sales open Qty

    * VBAK--VBAP--VBFA

    SELECT A~VBELN B~POSNR B~KWMENG B~VRKME C~RFMNG

    FROM VBAK AS A INNER JOIN VBAP AS B ON B~VBELN = A~VBELN

    INNER JOIN VBFA AS C ON C~POSNV = B~POSNR AND C~VBELV = B~VBELN

    INTO CORRESPONDING FIELDS OF TABLE LIT_SQ

    WHERE A~VKORG IN S_VKORG

    AND A~VTWEG IN S_VTWEG

    AND A~SPART IN S_SPART

    AND A~KUNNR IN S_KUNNR

    AND A~ERDAT IN S_ERDAT

    AND A~AUART IN S_AUART

    AND B~PSTYV IN S_PSTYV

    AND B~ABGRU IN S_ABGRU

    AND B~PS_PSP_PNR IN S_WBS

    AND B~MATNR IN S_MATNR

    AND C~VBTYP_N IN S_VBTYP.

    IF SY-SUBRC <> 0.

    MESSAGE S033(/SIE/CHN_ALL) WITH 'No data exists!'.

    ENDIF.

    * GI Qty summary

    SORT LIT_SQ BY VBELN POSNR.

    LOOP AT LIT_SQ INTO LR_SQ.

    LLR_SQ = LR_SQ.

    L_QTY = LLR_SQ-RFMNG + L_QTY.

    AT END OF POSNR.

    LLR_SQ-OQ = LLR_SQ-KWMENG - L_QTY.

    WRITE:

    L_QTY TO R_SQ-GQ UNIT LLR_SQ-VRKME,

    LLR_SQ-KWMENG TO R_SQ-SQ UNIT LLR_SQ-VRKME,

    LLR_SQ-OQ TO R_SQ-OQ UNIT LLR_SQ-VRKME.

    R_SQ-VBELN = LLR_SQ-VBELN.

    R_SQ-POSNR = LLR_SQ-POSNR.

    APPEND R_SQ TO IT_SQ.

    CLEAR: LLR_SQ,LR_SQ,L_QTY.

    ENDAT.

    ENDLOOP.

    ENDFORM. " GET_DATA_SQ

    *&---------------------------------------------------------------------*

    *& Form OUTPUT_SQ

    *&---------------------------------------------------------------------*

    * text

    *----------------------------------------------------------------------*

    FORM OUTPUT_SQ.

    * Define ALV fieldcat structure

    DATA: LS_FIELDCAT TYPE SLIS_FIELDCAT_ALV.

    * Add data to field catelog

    SET_ALV_FIELDCAT:

    'VBELN' 'IT_BQ' '1' '12' TEXT-A01,

    'POSNR' 'IT_BQ' '2' '10' TEXT-A02,

    'SQ' 'IT_BQ' '3' '22' TEXT-A03,

    'GQ' 'IT_BQ' '4' '22' TEXT-A04,

    'OQ' 'IT_BQ' '5' '20' TEXT-A05.

    * Call function to show result

    CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

    EXPORTING

    I_CALLBACK_PROGRAM = SY-REPID

    IT_FIELDCAT = IT_FIELDCAT

    I_SAVE = 'A'

    TABLES

    T_OUTTAB = IT_SQ.

    ENDFORM. " OUTPUT_SQ

    *&---------------------------------------------------------------------*

    *& Form OUTPUT_BQ

    *&---------------------------------------------------------------------*

    * text

    *----------------------------------------------------------------------*

    FORM OUTPUT_BQ.

    * Define ALV fieldcat structure

    DATA: LS_FIELDCAT TYPE SLIS_FIELDCAT_ALV.

    * Add data to field catelog

    SET_ALV_FIELDCAT:

    'VBELN' 'IT_SQ' '1' '12' TEXT-A01,

    'POSNR' 'IT_SQ' '2' '10' TEXT-A02,

    'AFDAT' 'IT_SQ' '3' '12' TEXT-B03,

    'TETXT' 'IT_SQ' '4' '10' TEXT-B04,

    'MLBEZ' 'IT_SQ' '5' '10' TEXT-B05,

    'FPROZ' 'IT_SQ' '6' '12' TEXT-B06,

    'FAKWR' 'IT_SQ' '7' '22' TEXT-B07,

    'WAERS' 'IT_SQ' '8' '10' TEXT-B08,

    'FAKSP' 'IT_SQ' '9' '10' TEXT-B09,

    'FAREG' 'IT_SQ' '10' '10' TEXT-B10,

    'FKSAF' 'IT_SQ' '11' '10' TEXT-B11,

    'ZTERM' 'IT_SQ' '12' '10' TEXT-B12,

    'FPTTP' 'IT_SQ' '13' '10' TEXT-B13,

    'FKARV' 'IT_SQ' '14' '10' TEXT-B14,

    'KURRF' 'IT_SQ' '15' '20' TEXT-B15 ,

    'MLSTN' 'IT_SQ' '16' '20' TEXT-B16,

    'FPFIX' 'IT_SQ' '17' '10' TEXT-B17.

    * Call function to show result

    CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

    EXPORTING

    I_CALLBACK_PROGRAM = SY-REPID

    IT_FIELDCAT = IT_FIELDCAT

    I_SAVE = 'A'

    TABLES

    T_OUTTAB = IT_BQ.

    ENDFORM. " OUTPUT_BQ

  • 相关阅读:
    容器跨主机网络通信学习笔记(以Flannel为例)
    Kubernetes控制器Job和CronJob
    记一次使用Flannel插件排错历程
    Kubernetes控制器Deployment
    Kubernetes如何通过StatefulSet支持有状态应用?
    react18 来了,我 get 到...
    gojs 实用高级用法
    vuecli3 vue2 保留 webpack 支持 vite 成功实践
    calibre 报错 This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem. 解决
    unable to recognize "*.yaml": no matches for kind "RoleBinding" in version "rbac.authorization.k8s.io/v1beta1"
  • 原文地址:https://www.cnblogs.com/wequst/p/1513457.html
Copyright © 2011-2022 走看看