日常总结20190314------SAP ALV动态内表代码

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/csdn_cSharp/article/details/88545851

*&---------------------------------------------------------------------*
*& Report  ZPPR0103
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZPPR0103.
*定义类型池
TYPE-POOLS:SLIS,OLE2.
*定义要用的表
TABLES:MAKT,MARD,MKPF,MSEG,T001L.

*&---------------------------------------------------------------------*
*&内表和工作区声明
*&---------------------------------------------------------------------*

TYPES: BEGIN OF LS_OUT,
      NUMBER TYPE I,
      MATNR LIKE MAKT-MATNR,
      MAKTX LIKE MAKT-MAKTX,
      KZVLL LIKE MSEG-MENGE,"期初在制(期初库存)
      INCOM LIKE MSEG-MENGE,"来料101/102
      OL    LIKE MSEG-MENGE,"报工下线 261/262
      RGPC  LIKE MSEG-MENGE,"好品退客户  551/552
*      RCBM  LIKE MSEG-MENGE,"来料不良退客户  551/552
      WSCR  LIKE MSEG-MENGE,"作业报废  Z57/Z58
      SFPS  LIKE MSEG-MENGE,"半成品报废 Z91
      DADJ  LIKE MSEG-MENGE,"原材料差异调整    201/202
      RMRA  LIKE MSEG-MENGE,"原材料替代料差异调整  Z93/Z94
      SSMD  LIKE MSEG-MENGE,"半成品替代料差异调整  309
      SPDA  LIKE MSEG-MENGE,"半成品差异调整  161/162
      SHIP  LIKE MSEG-MENGE,"出货   Z61/Z62
      THIN  LIKE MSEG-MENGE,"总在制(理论库存)
      RTIN  LIKE MSEG-MENGE,"SAP(实时库存)
      DIFF  LIKE MSEG-MENGE,"差异
      END OF LS_OUT.

DATA:LT_OUT TYPE STANDARD TABLE OF LS_OUT WITH HEADER LINE.


TYPES: BEGIN OF LS_MKPF_MSEG,
      MBLNR LIKE MSEG-MBLNR,"物料凭证
      MJAHR LIKE MSEG-MJAHR,"物料凭证年度
      ZEILE LIKE MSEG-ZEILE,"项目
      MATNR LIKE MSEG-MATNR,"物料
      BWART LIKE MSEG-BWART,"移动类型
      WERKS LIKE MSEG-WERKS,"工厂
      LGORT LIKE MSEG-LGORT,"库存地点
      MENGE LIKE MSEG-MENGE,"数量
      BUDAT LIKE MKPF-BUDAT,"过账日期
      SPRAS LIKE MAKT-SPRAS,"语言
      MAKTX LIKE MAKT-MAKTX,"描述
      MAKTG LIKE MAKT-MAKTG,"描述
      SHKZG LIKE MSEG-SHKZG,"借/贷标识 S/H
      END OF LS_MKPF_MSEG.

*内表定义(带表头)
DATA: LT_MKPF_MSEG TYPE STANDARD TABLE OF LS_MKPF_MSEG WITH HEADER LINE.

*查询所有的移动类型对应的数量数据总和
TYPES: BEGIN OF LS_TAB,
      MATNR LIKE MSEG-MATNR,"物料
      WERKS LIKE MSEG-WERKS,"工厂
      BWART LIKE MSEG-BWART,"移动类型
      MENGE LIKE MSEG-MENGE,"移动类型对应数量
      SHKZG LIKE MSEG-SHKZG,"借/贷标识 S/H
      END OF LS_TAB.

*内表定义(带表头)
DATA:LT_BWART TYPE STANDARD TABLE OF LS_TAB WITH HEADER LINE.
DATA:LT_TOTAL_BWART TYPE STANDARD TABLE OF LS_TAB WITH HEADER LINE."存贮汇总之后的数据
*DATA:LT_TOTAL TYPE STANDARD TABLE OF LS_TAB WITH HEADER LINE."存储最终101/102等汇总之后的数据

TYPES: BEGIN OF LS_MATNR,
      MATNR LIKE MAKT-MATNR,
      MAKTX LIKE MAKT-MAKTX,
      END OF LS_MATNR.

*物料的仓储位置数据表结构定义
TYPES:BEGIN OF LS_MARD,
      MATNR LIKE MARD-MATNR,"物料
      WERKS LIKE MARD-WERKS,"工厂
      LGORT LIKE MARD-LGORT,"库存地点
      LABST LIKE MARD-LABST,"非限制数量
      END OF LS_MARD.

*内表定义(带表头)
DATA: LT_MARD TYPE STANDARD TABLE OF LS_MARD WITH HEADER LINE.


TYPES:BEGIN OF LS_LGORT,
      MATNR LIKE MARD-MATNR,"物料
      WERKS LIKE T001L-WERKS,"工厂
      LGORT LIKE T001L-LGORT,"库位
      LABST LIKE MARD-LABST,"非限制使用的库存
      END OF LS_LGORT.



DATA:LT_LGORT TYPE STANDARD TABLE OF LS_LGORT WITH HEADER LINE.
DATA:LT_LGORT_TAB TYPE TABLE OF STRING WITH HEADER LINE.

*定义动态内表
DATA:
      T_DYNTAB TYPE REF TO DATA,
      S_DYNTAB TYPE REF TO DATA.
FIELD-SYMBOLS:
  <DYNTAB> TYPE STANDARD TABLE,
  <FS_VAL> TYPE ANY ,
  <FS_WA>  TYPE ANY .



*ALV 使用
DATA:ALV_LAYOUT TYPE LVC_S_LAYO,
     FIELDCAT TYPE LVC_T_FCAT WITH HEADER LINE,
     EVENT_TAB TYPE SLIS_T_EVENT WITH HEADER LINE.

***动态内表
DATA: IFC       TYPE LVC_T_FCAT,
      XFC       TYPE LVC_S_FCAT,
     DY_OUT    TYPE REF TO DATA ,
     DY_OUT_WA TYPE REF TO DATA.
FIELD-SYMBOLS: <F_OUT> TYPE STANDARD TABLE ,
               <F_OUT_WA>,
               <F_OUT_FIELD> .



*&---------------------------------------------------------------------*
*&全局变量的声明
*&---------------------------------------------------------------------*

DATA N1 TYPE I VALUE '1'.
DATA:
      G_FNAME TYPE CHAR100.


*&---------------------------------------------------------------------*
*&宏的定义
*&---------------------------------------------------------------------*
DEFINE INIT_FIELDCAT.
  FIELDCAT-FIELDNAME = &1.
  FIELDCAT-FIX_COLUMN = &2.
  FIELDCAT-SCRTEXT_L = &3.
  FIELDCAT-OUTPUTLEN = &4.
  APPEND FIELDCAT.
END-OF-DEFINITION.


*&---------------------------------------------------------------------*
*&选择屏幕的定义
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK blk0 WITH FRAME TITLE text-001.
PARAMETERS: WERKS LIKE MSEG-WERKS. "工厂
SELECT-OPTIONS:S_DATE FOR MKPF-BUDAT."开始时间
SELECTION-SCREEN END OF BLOCK blk0.


*&---------------------------------------------------------------------*
*&START-OF-SELECTION 程序开始
*&---------------------------------------------------------------------*

START-OF-SELECTION.
  PERFORM FRM_DATA_GET.
  PERFORM FRM_DYNTAB_CREATE.
  PERFORM FRM_DYNTAB_DATA_FILL.

  PERFORM FRM_DATA_DISPLAY.


*&---------------------------------------------------------------------*
*&子程序部分
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Form  FRM_DATA_GET
*&---------------------------------------------------------------------*
*       数据获取
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_DATA_GET.
    DATA:WA TYPE LS_OUT."输出表的临时表
    DATA:WA_BWART TYPE LS_TAB."移动类型的临时内表
    SELECT   MSEG~MBLNR
             MSEG~MJAHR
             MSEG~ZEILE
             MSEG~MATNR
             MSEG~BWART
             MSEG~WERKS
             MSEG~LGORT
             MSEG~MENGE
             MKPF~BUDAT
             MAKT~SPRAS
             MAKT~MAKTX
             MAKT~MAKTG
             MSEG~SHKZG
      INTO CORRESPONDING FIELDS OF TABLE LT_MKPF_MSEG
      FROM MKPF
           INNER JOIN MSEG ON MKPF~MBLNR = MSEG~MBLNR AND MKPF~MJAHR = MSEG~MJAHR
           INNER JOIN MAKT ON MSEG~MATNR = MAKT~MATNR
      WHERE MKPF~BUDAT IN S_DATE
            AND MSEG~WERKS = WERKS AND MAKT~SPRAS EQ '1'.


    SELECT  MARD~MATNR
            T001L~WERKS
            T001L~LGORT
      INTO CORRESPONDING FIELDS OF TABLE LT_LGORT
      FROM T001L
           LEFT JOIN MARD ON MARD~WERKS = T001L~WERKS AND MARD~LGORT = T001L~LGORT
      WHERE T001L~WERKS = WERKS.


      LOOP AT LT_MKPF_MSEG.
        LT_OUT-NUMBER = N1.
        MOVE-CORRESPONDING LT_MKPF_MSEG TO LT_OUT. "将字段相同的LT_MKPF_MSEG赋值给LT_OUT.
        CLEAR WA.
        READ TABLE LT_OUT INTO WA WITH KEY MATNR = LT_OUT-MATNR.

        IF WA IS INITIAL.
          N1 = N1 + 1.
          APPEND LT_OUT.
        ENDIF.

        CLEAR LT_OUT."清空表头
      ENDLOOP.


      LOOP AT LT_MKPF_MSEG."循环取相同物料和工厂下所有的数据
        MOVE-CORRESPONDING LT_MKPF_MSEG TO LT_BWART.
        APPEND LT_BWART.
        CLEAR LT_BWART.
      ENDLOOP.



******处理把所有的移动类型相同物料和工厂的数据进行汇总
      LOOP AT LT_BWART.

       IF LT_BWART-SHKZG EQ 'H'."如果是借就把数据设置为负数
          LT_BWART-MENGE = 0 - LT_BWART-MENGE.
       ENDIF.


        CLEAR WA_BWART.
        READ TABLE LT_TOTAL_BWART INTO WA_BWART WITH KEY MATNR = LT_BWART-MATNR"物料编号
                                                   WERKS = LT_BWART-WERKS"工厂
                                                   BWART = LT_BWART-BWART."移动类型
        IF WA_BWART IS INITIAL.
            APPEND LT_BWART TO LT_TOTAL_BWART.
        ELSE.
            WA_BWART-MENGE = ( LT_BWART-MENGE + WA_BWART-MENGE ).
            MODIFY TABLE LT_TOTAL_BWART FROM WA_BWART."带有表头行,需要在MODIFY添加TABLE
        ENDIF.
      ENDLOOP.

******处理把所有的不同移动类型相同物料和工厂的数据进行汇总
      LOOP AT LT_TOTAL_BWART.

        CLEAR WA.
        IF LT_TOTAL_BWART-BWART EQ '101' OR LT_TOTAL_BWART-BWART EQ '102'.

           READ TABLE LT_OUT  INTO WA WITH KEY MATNR = LT_TOTAL_BWART-MATNR.

           WA-INCOM = ( LT_TOTAL_BWART-MENGE + WA-INCOM ).
           MODIFY TABLE LT_OUT FROM WA."带有表头行,需要在MODIFY添加TABLE

        ENDIF.

        IF LT_TOTAL_BWART-BWART EQ '261' OR LT_TOTAL_BWART-BWART EQ '262'.

           READ TABLE LT_OUT  INTO WA WITH KEY MATNR = LT_TOTAL_BWART-MATNR.

           WA-OL = ( LT_TOTAL_BWART-MENGE + WA-OL ).
           MODIFY TABLE LT_OUT FROM WA."带有表头行,需要在MODIFY添加TABLE

        ENDIF.

        IF LT_TOTAL_BWART-BWART EQ '551' OR LT_TOTAL_BWART-BWART EQ '552'.

           READ TABLE LT_OUT  INTO WA WITH KEY MATNR = LT_TOTAL_BWART-MATNR.

           WA-RGPC = ( LT_TOTAL_BWART-MENGE + WA-RGPC ).
           MODIFY TABLE LT_OUT FROM WA."带有表头行,需要在MODIFY添加TABLE

        ENDIF.

        IF LT_TOTAL_BWART-BWART EQ 'Z57' OR LT_TOTAL_BWART-BWART EQ 'Z58'.

           READ TABLE LT_OUT  INTO WA WITH KEY MATNR = LT_TOTAL_BWART-MATNR.

           WA-WSCR = ( LT_TOTAL_BWART-MENGE + WA-WSCR ).
           MODIFY TABLE LT_OUT FROM WA."带有表头行,需要在MODIFY添加TABLE

        ENDIF.

        IF LT_TOTAL_BWART-BWART EQ 'Z91'.

           READ TABLE LT_OUT  INTO WA WITH KEY MATNR = LT_TOTAL_BWART-MATNR.

           WA-SFPS = ( LT_TOTAL_BWART-MENGE + WA-SFPS ).
           MODIFY TABLE LT_OUT FROM WA."带有表头行,需要在MODIFY添加TABLE

        ENDIF.

        IF LT_TOTAL_BWART-BWART EQ '201' OR LT_TOTAL_BWART-BWART EQ '202'.

           READ TABLE LT_OUT  INTO WA WITH KEY MATNR = LT_TOTAL_BWART-MATNR.

           WA-DADJ = ( LT_TOTAL_BWART-MENGE + WA-DADJ ).
           MODIFY TABLE LT_OUT FROM WA."带有表头行,需要在MODIFY添加TABLE

        ENDIF.

        IF LT_TOTAL_BWART-BWART EQ 'Z93' OR LT_TOTAL_BWART-BWART EQ 'Z94'.

           READ TABLE LT_OUT  INTO WA WITH KEY MATNR = LT_TOTAL_BWART-MATNR.

           WA-RMRA = ( LT_TOTAL_BWART-MENGE + WA-RMRA ).
           MODIFY TABLE LT_OUT FROM WA."带有表头行,需要在MODIFY添加TABLE

        ENDIF.

        IF LT_TOTAL_BWART-BWART EQ '309'.

           READ TABLE LT_OUT  INTO WA WITH KEY MATNR = LT_TOTAL_BWART-MATNR.

           WA-SSMD = ( LT_TOTAL_BWART-MENGE + WA-SSMD ).
           MODIFY TABLE LT_OUT FROM WA."带有表头行,需要在MODIFY添加TABLE

        ENDIF.

        IF LT_TOTAL_BWART-BWART EQ '161' OR LT_TOTAL_BWART-BWART EQ '162'.

           READ TABLE LT_OUT  INTO WA WITH KEY MATNR = LT_TOTAL_BWART-MATNR.

           WA-SPDA = ( LT_TOTAL_BWART-MENGE + WA-SPDA ).
           MODIFY TABLE LT_OUT FROM WA."带有表头行,需要在MODIFY添加TABLE

        ENDIF.

        IF LT_TOTAL_BWART-BWART EQ 'Z61' OR LT_TOTAL_BWART-BWART EQ 'Z62'.

           READ TABLE LT_OUT  INTO WA WITH KEY MATNR = LT_TOTAL_BWART-MATNR.

           WA-SHIP = ( LT_TOTAL_BWART-MENGE + WA-SHIP ).
           MODIFY TABLE LT_OUT FROM WA."带有表头行,需要在MODIFY添加TABLE

        ENDIF.

      ENDLOOP.



ENDFORM.                            "FRM_DATA_GET



*&---------------------------------------------------------------------*
*&子程序部分
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      FRM_DYNTAB_CREATE
*&---------------------------------------------------------------------*
*       创建动态内表
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_DYNTAB_CREATE.
  PERFORM BUILD_ITAB_STRU USING :'Number' 'MARA' 'MATNR'.
  PERFORM BUILD_ITAB_STRU USING :'MATNR' 'MARA' 'MATNR'.
  PERFORM BUILD_ITAB_STRU USING :'MAKTX' 'MARA' 'MATNR'.
  PERFORM BUILD_ITAB_STRU USING :'KZVLL' 'MSEG' 'MENGE'.
  PERFORM BUILD_ITAB_STRU USING :'INCOM' 'MSEG' 'MENGE'.
  PERFORM BUILD_ITAB_STRU USING :'OL' 'MSEG' 'MENGE'.
  PERFORM BUILD_ITAB_STRU USING :'RGPC' 'MSEG' 'MENGE'.
  PERFORM BUILD_ITAB_STRU USING :'WSCR' 'MSEG' 'MENGE'.
  PERFORM BUILD_ITAB_STRU USING :'DADJ' 'MSEG' 'MENGE'.
  PERFORM BUILD_ITAB_STRU USING :'RMRA' 'MSEG' 'MENGE'.
  PERFORM BUILD_ITAB_STRU USING :'SSMD' 'MSEG' 'MENGE'.
  PERFORM BUILD_ITAB_STRU USING :'SPDA' 'MSEG' 'MENGE'.
  PERFORM BUILD_ITAB_STRU USING :'SHIP' 'MSEG' 'MENGE'.
  PERFORM BUILD_ITAB_STRU USING :'THIN' 'MSEG' 'MENGE'.
  PERFORM BUILD_ITAB_STRU USING :'RTIN' 'MSEG' 'MENGE'.
  PERFORM BUILD_ITAB_STRU USING :'DIFF' 'MSEG' 'MENGE'.
  LOOP AT LT_LGORT.
    LT_LGORT_TAB = LT_LGORT-LGORT.
    APPEND LT_LGORT_TAB.
  ENDLOOP.
  SORT LT_LGORT_TAB.
  DELETE ADJACENT DUPLICATES FROM LT_LGORT_TAB COMPARING ALL FIELDS.
  LOOP AT LT_LGORT_TAB.
    G_FNAME = LT_LGORT_TAB.
    CONCATENATE '' G_FNAME INTO G_FNAME.
    PERFORM BUILD_ITAB_STRU USING  G_FNAME 'MARD' 'LGORT'.
  ENDLOOP.

  CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE
    EXPORTING
      IT_FIELDCATALOG = IFC
    IMPORTING
      EP_TABLE        = DY_OUT.
  ASSIGN DY_OUT->* TO <F_OUT>.
  CREATE DATA DY_OUT_WA LIKE LINE OF <F_OUT>.
  ASSIGN DY_OUT_WA->* TO <F_OUT_WA>.

*  根据it_fact生成动态表
*  CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE
*      EXPORTING
*        IT_FIELDCATALOG = T_FCAT
*      IMPORTING
*        EP_TABLE        = T_DYNTAB.

ENDFORM.                           "FRM_DYNTAB_CREATE



*&---------------------------------------------------------------------*
*&      Form  build_itab_stru
*&---------------------------------------------------------------------*
FORM BUILD_ITAB_STRU USING FDNAME REF_T REF_F.
  XFC-FIELDNAME = FDNAME .
  XFC-REF_TABLE = REF_T.
  XFC-REF_FIELD = REF_F.
  APPEND XFC TO IFC.


ENDFORM.                    "BUILD_ITAB_STRU





*&---------------------------------------------------------------------*
*&子程序部分
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      FRM_DYNTAB_DATA_FILL
*&---------------------------------------------------------------------*
*       动态内表数据填充
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_DYNTAB_DATA_FILL.

  DATA:WA_LGORT TYPE LS_LGORT.

  LOOP AT LT_OUT.

    LT_OUT-THIN = LT_OUT-KZVLL + LT_OUT-INCOM - LT_OUT-OL - LT_OUT-RGPC - LT_OUT-OL - LT_OUT-SFPS - LT_OUT-DADJ + LT_OUT-RMRA + LT_OUT-SSMD + LT_OUT-SPDA - LT_OUT-SHIP."总在制

    ASSIGN COMPONENT 'NUMBER' OF STRUCTURE <F_OUT_WA> TO <F_OUT_FIELD>.
    <F_OUT_FIELD> =  LT_OUT-NUMBER."序号

    ASSIGN COMPONENT 'MATNR' OF STRUCTURE <F_OUT_WA> TO <F_OUT_FIELD>.
    <F_OUT_FIELD> =  LT_OUT-MATNR."物料号

    ASSIGN COMPONENT 'MAKTX' OF STRUCTURE <F_OUT_WA> TO <F_OUT_FIELD>.
    <F_OUT_FIELD> =  LT_OUT-MAKTX."物料描述

    ASSIGN COMPONENT 'KZVLL' OF STRUCTURE <F_OUT_WA> TO <F_OUT_FIELD>.
    <F_OUT_FIELD> =  LT_OUT-KZVLL."期初在制(期初库存)

    ASSIGN COMPONENT 'INCOM' OF STRUCTURE <F_OUT_WA> TO <F_OUT_FIELD>.
    <F_OUT_FIELD> =  LT_OUT-INCOM."来料

    ASSIGN COMPONENT 'OL' OF STRUCTURE <F_OUT_WA> TO <F_OUT_FIELD>.
    <F_OUT_FIELD> =  LT_OUT-OL."报工下线

    ASSIGN COMPONENT 'RGPC' OF STRUCTURE <F_OUT_WA> TO <F_OUT_FIELD>.
    <F_OUT_FIELD> =  LT_OUT-RGPC."退客户

    ASSIGN COMPONENT 'WSCR' OF STRUCTURE <F_OUT_WA> TO <F_OUT_FIELD>.
    <F_OUT_FIELD> =  LT_OUT-WSCR."作业报废

    ASSIGN COMPONENT 'SFPS' OF STRUCTURE <F_OUT_WA> TO <F_OUT_FIELD>.
    <F_OUT_FIELD> =  LT_OUT-SFPS."半成品报废

    ASSIGN COMPONENT 'DADJ' OF STRUCTURE <F_OUT_WA> TO <F_OUT_FIELD>.
    <F_OUT_FIELD> =  LT_OUT-DADJ."原材料差异调整

    ASSIGN COMPONENT 'RMRA' OF STRUCTURE <F_OUT_WA> TO <F_OUT_FIELD>.
    <F_OUT_FIELD> =  LT_OUT-RMRA."原材料替代料差异调整

    ASSIGN COMPONENT 'SSMD' OF STRUCTURE <F_OUT_WA> TO <F_OUT_FIELD>.
    <F_OUT_FIELD> =  LT_OUT-SSMD."半成品替代料差异调整

    ASSIGN COMPONENT 'SPDA' OF STRUCTURE <F_OUT_WA> TO <F_OUT_FIELD>.
    <F_OUT_FIELD> =  LT_OUT-SPDA."半成品差异调整

    ASSIGN COMPONENT 'SHIP' OF STRUCTURE <F_OUT_WA> TO <F_OUT_FIELD>.
    <F_OUT_FIELD> =  LT_OUT-SHIP."出货

    ASSIGN COMPONENT 'THIN' OF STRUCTURE <F_OUT_WA> TO <F_OUT_FIELD>.
    <F_OUT_FIELD> =  LT_OUT-THIN."总在制(理论库存)


    LOOP AT LT_LGORT_TAB.
      ASSIGN COMPONENT LT_LGORT_TAB OF STRUCTURE <F_OUT_WA> TO <F_OUT_FIELD>.
      CLEAR WA_LGORT.
      READ TABLE LT_LGORT INTO WA_LGORT WITH KEY MATNR = LT_OUT-MATNR.
      <F_OUT_FIELD> = WA_LGORT-LABST.
      LT_OUT-RTIN = LT_OUT-RTIN + WA_LGORT-LABST."实时库存
    ENDLOOP.

    LT_OUT-DIFF = LT_OUT-THIN - LT_OUT-RTIN."差异计算

     ASSIGN COMPONENT 'RTIN' OF STRUCTURE <F_OUT_WA> TO <F_OUT_FIELD>.
    <F_OUT_FIELD> =  LT_OUT-RTIN."SAP(实时库存)

    ASSIGN COMPONENT 'DIFF' OF STRUCTURE <F_OUT_WA> TO <F_OUT_FIELD>.
    <F_OUT_FIELD> =  LT_OUT-DIFF."差异

    APPEND <F_OUT_WA> TO <F_OUT>.
    CLEAR <F_OUT_WA> .
  ENDLOOP.

ENDFORM.                          "FRM_DYNTAB_DATA_FILL





*&---------------------------------------------------------------------*
*&      FRM_DATA_DISPLAY
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_DATA_DISPLAY.
*  SELECT * INTO TABLE GT_BOM_COST FROM ZMM_BOM_COST WHERE MATNR IN S_MATNR AND BISMT IN S_BISMT AND GROUP_NO IN S_GROUP.
  INIT_FIELDCAT:'NUMBER' 'X' '序号' '',
                'MATNR' 'X' '物料编号' '',
                'MAKTX' 'X' '物料描述' '',
                'KZVLL' '' '期初在制' '',
                'INCOM' '' '来料' '',
                'OL' '' '报工下线' '',
                'RGPC' '' '退客户' '',
                'WSCR' '' '作业报废' '',
                'SFPS' '' '半成品报废' '',
                'DADJ' '' '原材料差异调整' '',
                'RMRA' '' '原材料替代料差异调整' '',
                'SSMD' '' '半成品替代料差异调整' '',
                'SPDA' '' '半成品差异调整' '',
                'SHIP' '' '出货' '',
                'THIN' '' '总在制' '',
                'RTIN' '' 'SAP' '',
                'DIFF' '' '差异' ''.

  LOOP AT LT_LGORT_TAB.
    INIT_FIELDCAT:LT_LGORT_TAB '' LT_LGORT_TAB ''.
  ENDLOOP.

  ALV_LAYOUT-ZEBRA = 'X'.
  ALV_LAYOUT-CWIDTH_OPT = 'X'.
  ALV_LAYOUT-DETAILINIT = 'X'.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    EXPORTING
      I_CALLBACK_PROGRAM = SY-REPID
      I_CALLBACK_PF_STATUS_SET = '9000_STATUS'
*      I_CALLBACK_USER_COMMAND = '9000_USERCOMMAND'
      IT_FIELDCAT_LVC = FIELDCAT[]
      IS_LAYOUT_LVC = ALV_LAYOUT
*      IT_EVENTS = EVENT_TAB[]
    TABLES
      T_OUTTAB = <F_OUT>."LT_OUT[].
ENDFORM.                    " FRM_DATA_DISPLAY

FORM 9000_STATUS USING EXTAB TYPE SLIS_T_EXTAB.
  SET PF-STATUS '9000'.
ENDFORM.

猜你喜欢

转载自blog.csdn.net/csdn_cSharp/article/details/88545851