库存查询ALM源代码(可参考)

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

*& Report ZIM_O02_CHAXUN

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

*&

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

REPORT ZKIM_O02_CHAXUN MESSAGE-ID zbw.

 

TABLES:   /BIC/AZIM_O0200.

 

TYPES: BEGIN OF TYP_DISPLAY,

       MAT_DOC TYPE  /BIC/AZIM_O0200-MAT_DOC,   ""物料凭证

        VAL_CLASS TYPE  /BIC/AZIM_O0200-VAL_CLASS,  ""估价类

       DOC_DATE TYPE  /BIC/AZIM_O0200-DOC_DATE,  ""凭证日期

       MOVETYPE TYPE  /BIC/AZIM_O0200-MOVETYPE,   ""移动类型

       OI_ERFMG TYPE  /BIC/AZIM_O0200-OI_ERFMG,   ""输入单位下的数量

       STOR_LOC TYPE  /BIC/AZIM_O0200-STOR_LOC,    ""库位

       PLANT TYPE  /BIC/AZIM_O0200-PLANT,

       MATERIAL TYPE  /BIC/AZIM_O0200-MATERIAL,

       QUANT_B  TYPE  /BIC/AZIM_O0200-QUANT_B,      ""数量

       DCINDIC  TYPE  /BIC/AZIM_O0200-DCINDIC,      ""借贷标识

       MATL_TYPE  TYPE  /BIC/AZIM_O0200-MATL_TYPE,   ""移动类型

       VALSPECST  TYPE  /BIC/AZIM_O0200-VALSPECST,      ""标准寄售

       END OF TYP_DISPLAY.

TYPES: BEGIN OF TYP_DISPLAY2,

       OI_ERFMG TYPE  /BIC/AZIM_O0200-OI_ERFMG,

       STOR_LOC TYPE  /BIC/AZIM_O0200-STOR_LOC,

       PLANT TYPE  /BIC/AZIM_O0200-PLANT,

       MATERIAL TYPE  /BIC/AZIM_O0200-MATERIAL,

       QUANT_B  TYPE  /BIC/AZIM_O0200-QUANT_B,

       DCINDIC  TYPE  /BIC/AZIM_O0200-DCINDIC,

       END OF TYP_DISPLAY2.

***TYPES     定义类型  DATA 实例化     DATA     定义的是工作区

DATA:  IT_DISPLAY TYPE TABLE OF TYP_DISPLAY WITH HEADER LINE,

       WA_DISPLAY TYPE TYP_DISPLAY.

DATA:  IT_DISPLAY2 TYPE TABLE OF TYP_DISPLAY2 WITH HEADER LINE,

       WA_DISPLAY2 TYPE TYP_DISPLAY2.

DATA:  IT_DISPLAY3 TYPE TABLE OF TYP_DISPLAY2 WITH HEADER LINE.

 

DATA:

   IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,

   WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV,

   IT_FIELDCAT2 TYPE SLIS_T_FIELDCAT_ALV,

   WA_FIELDCAT2 TYPE SLIS_FIELDCAT_ALV.

 

***选择是EPG&卡奥斯的数据   还是GVS数据

    PARAMETERS:

      H_GVS RADIOBUTTON GROUP A2,

      H_KAS RADIOBUTTON GROUP A2.

 

SELECTION-SCREEN BEGIN OF BLOCK B1  WITH FRAME TITLE text-001.

  SELECT-OPTIONS:

       S_PLANT FOR /BIC/AZIM_O0200-PLANT NO INTERVALS,   ""工厂

       S_STRC FOR /BIC/AZIM_O0200-STOR_LOC NO INTERVALS,  ""库存地点

       S_MAT FOR /BIC/AZIM_O0200-MATERIAL NO INTERVALS.   ""物料号

SELECTION-SCREEN END OF BLOCK B1.

 PARAMETERS:

      R_MX RADIOBUTTON GROUP A1,    ""展示明细数据

      R_HZ RADIOBUTTON GROUP A1.    ""展示汇总数据

*      R_EKMX RADIOBUTTON GROUP A1,    ""同时展示EPG和卡奥斯的库存明细数据

*      R_EKHZ RADIOBUTTON GROUP A1.    ""展示EPG与卡奥斯的汇总数据

 

INITIALIZATION.

 

AT SELECTION-SCREEN.

 

START-OF-SELECTION.

 

 

IF H_GVS IS NOT INITIAL.      ""选择查询GVS库存

 

    IF R_MX IS NOT INITIAL.

*    ****获取ZIM_O02 中的库存明细*****

       PERFORM GET_ZIM_O02.

*    ***获得字段位置

       PERFORM  GET_FIELDCAT.

*    ****输出物料库存明细*******

       PERFORM DISPLAY_DATA.

 

    ELSEIF R_HZ IS NOT INITIAL.

        PERFORM  GET2_ZIM_O02.

        PERFORM  GET2_FIELDCAT.

        PERFORM  DISPLAY2_DATA.

    ENDIF.

 

ELSEIF H_KAS  IS NOT INITIAL.      ""选择查询卡奥斯EPG库存

    IF R_MX IS NOT INITIAL.

*    ****获取ZKIM_O02 中的库存明细*****

        PERFORM GET_EKIM_O02.

**    ***获得字段位置

        PERFORM  GET_FIELDCAT.

**    ****输出物料库存明细*******

        PERFORM  DISPLAY_DATA.

 

    ELSEIF R_HZ IS NOT INITIAL.

        PERFORM  GET2_EKIM_O02.

        PERFORM  GET2_FIELDCAT.

        PERFORM  DISPLAY2_DATA.

 

    ENDIF.

 

ENDIF.

 

END-OF-SELECTION.

 

 

 

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

*&      Form  GET_ZIM_O02

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

* *****获取ZIM_O02 中的库存明细*****

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

*  -->  p1        text

*  <--  p2        text

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

FORM GET_ZIM_O02 .

  IF S_PLANT IS  INITIAL.

    message e003.

  ENDIF.

  IF S_PLANT IS NOT INITIAL.

     REFRESH IT_DISPLAY.

    SELECT MAT_DOC

           VAL_CLASS

           DOC_DATE

           MOVETYPE

           OI_ERFMG

           STOR_LOC

           PLANT

           MATERIAL

           QUANT_B

           DCINDIC

           MATL_TYPE

           VALSPECST

      FROM  /BIC/AZIM_O0200 INTO TABLE it_display

      WHERE   PLANT IN S_PLANT AND

              MATERIAL IN S_MAT AND

              STOR_LOC IN S_STRC.

        IF SY-SUBRC NE 0.

            MESSAGE E005.

        ENDIF.

  ENDIF.

ENDFORM.

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

*&      Form  DISPLAY_DATA

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

* *****输出物料库存明细*******

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

*  -->  p1        text

*  <--  p2        text

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

FORM DISPLAY_DATA .

    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

     EXPORTING

*       I_INTERFACE_CHECK                 = ' '

*       I_BYPASSING_BUFFER                = ' '

*       I_BUFFER_ACTIVE                   = ' '

       I_CALLBACK_PROGRAM                = 'ZKIM_O02_CHAXUN'

*       I_CALLBACK_PF_STATUS_SET          = ' '

*       I_CALLBACK_USER_COMMAND           = ' '

*       I_CALLBACK_TOP_OF_PAGE            = ' '

*       I_CALLBACK_HTML_TOP_OF_PAGE       = ' '

*       I_CALLBACK_HTML_END_OF_LIST       = ' '

       I_STRUCTURE_NAME                  = 'TYP_DISPLAY'

*       I_BACKGROUND_ID                   = ' '

*       I_GRID_TITLE                      =

*       I_GRID_SETTINGS                   =

*       IS_LAYOUT                         =

        IT_FIELDCAT                       = it_fieldcat

*       IT_EXCLUDING                      =

*       IT_SPECIAL_GROUPS                 =

*       IT_SORT                           =

*       IT_FILTER                         =

*       IS_SEL_HIDE                       =

*       I_DEFAULT                         = 'X'

*       I_SAVE                            = ' '

*       IS_VARIANT                        =

*       IT_EVENTS                         =

*       IT_EVENT_EXIT                     =

*       IS_PRINT                          =

*       IS_REPREP_ID                      =

*       I_SCREEN_START_COLUMN             = 0

*       I_SCREEN_START_LINE               = 0

*       I_SCREEN_END_COLUMN               = 0

*       I_SCREEN_END_LINE                 = 0

*       I_HTML_HEIGHT_TOP                 = 0

*       I_HTML_HEIGHT_END                 = 0

*       IT_ALV_GRAPHICS                   =

*       IT_HYPERLINK                      =

*       IT_ADD_FIELDCAT                   =

*       IT_EXCEPT_QINFO                   =

*       IR_SALV_FULLSCREEN_ADAPTER        =

*     IMPORTING

*       E_EXIT_CAUSED_BY_CALLER           =

*       ES_EXIT_CAUSED_BY_USER            =

      TABLES

        T_OUTTAB                          = IT_DISPLAY

*     EXCEPTIONS

*       PROGRAM_ERROR                     = 1

*       OTHERS                            = 2

              .

    IF SY-SUBRC <> 0.

* Implement suitable error handling here

    ENDIF.

 

ENDFORM.

 

FORM GET_FIELDCAT .

 

  REFRESH it_fieldcat.

  CLEAR   wa_fieldcat.

  wa_fieldcat-col_pos = '1'.

  wa_fieldcat-fieldname = 'MAT_DOC'.

  wa_fieldcat-seltext_s = '物料凭证'.

  APPEND wa_fieldcat TO it_fieldcat.

 

    CLEAR   wa_fieldcat.

  wa_fieldcat-col_pos = '2'.

  wa_fieldcat-fieldname = 'DOC_DATE'.

  wa_fieldcat-seltext_s = '凭证日期'.

  APPEND wa_fieldcat TO it_fieldcat.

 

  CLEAR   wa_fieldcat.

  wa_fieldcat-col_pos = '3'.

  wa_fieldcat-fieldname = 'PLANT'.

  wa_fieldcat-seltext_s = '工厂'.

  APPEND wa_fieldcat TO it_fieldcat.

 

  CLEAR   wa_fieldcat.

  wa_fieldcat-col_pos = '4'.

  wa_fieldcat-fieldname = 'STOR_LOC'.

  wa_fieldcat-seltext_s = '库存地点'.

  APPEND wa_fieldcat TO it_fieldcat.

 

  CLEAR   wa_fieldcat.

  wa_fieldcat-col_pos = '5'.

  wa_fieldcat-fieldname = 'MATERIAL'.

  wa_fieldcat-seltext_s = ' 物料'.

  APPEND wa_fieldcat TO it_fieldcat.

 

 CLEAR   wa_fieldcat.

  wa_fieldcat-col_pos = '6'.

  wa_fieldcat-fieldname = 'MATL_TYPE'.

  wa_fieldcat-seltext_s = '物料类型'.

  APPEND wa_fieldcat TO it_fieldcat.

 

  CLEAR   wa_fieldcat.

  wa_fieldcat-col_pos = '7'.

  wa_fieldcat-fieldname = 'VAL_CLASS'.

  wa_fieldcat-seltext_s = '估价类'.

  APPEND wa_fieldcat TO it_fieldcat.

 

  CLEAR   wa_fieldcat.

  wa_fieldcat-col_pos = '8'.

  wa_fieldcat-fieldname = 'MOVETYPE'.

  wa_fieldcat-seltext_s = '移动类型 (详细库存管理)'.

  APPEND wa_fieldcat TO it_fieldcat.

 

  CLEAR   wa_fieldcat.

  wa_fieldcat-col_pos = '9'.

  wa_fieldcat-fieldname = 'VALSPECST'.

  wa_fieldcat-seltext_s = '标准/寄售'.

  APPEND wa_fieldcat TO it_fieldcat.

 

  CLEAR   wa_fieldcat.

  wa_fieldcat-col_pos = '10'.

  wa_fieldcat-fieldname = 'DCINDIC'.

  wa_fieldcat-seltext_s = '借/贷标志'.

  APPEND wa_fieldcat TO it_fieldcat.

 

   CLEAR   wa_fieldcat.

  wa_fieldcat-col_pos = '11'.

  wa_fieldcat-fieldname = 'OI_ERFMG '.

  wa_fieldcat-seltext_s = '输入单位下的数量'.

  APPEND wa_fieldcat TO it_fieldcat.

 

  CLEAR   wa_fieldcat.

  wa_fieldcat-col_pos = '12'.

  wa_fieldcat-fieldname = 'QUANT_B'.

  wa_fieldcat-seltext_s = '以基本计量单位的数量'.

  APPEND wa_fieldcat TO it_fieldcat.

ENDFORM.

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

*&      Form  GET2_ZIM_O02

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

*      或者ZIM_o02汇总的数据

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

*  -->  p1        text

*  <--  p2        text

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

FORM GET2_ZIM_O02 .

IF S_PLANT IS  INITIAL.

    message e003.

  ENDIF.

  IF S_PLANT IS NOT INITIAL.

     REFRESH IT_DISPLAY2.

     REFRESH IT_DISPLAY3.

    SELECT OI_ERFMG

           STOR_LOC

           PLANT

           MATERIAL

           QUANT_B

           DCINDIC

      FROM  /BIC/AZIM_O0200 INTO table it_DISPLAY2

      WHERE   PLANT IN S_PLANT AND

              MATERIAL IN S_MAT AND

              STOR_LOC IN S_STRC.

        IF SY-SUBRC NE 0.

            MESSAGE E005.

        ENDIF.

  ENDIF.

  LOOP AT IT_DISPLAY2 INTO WA_display2.

 

    COLLECT  WA_display2 INTO IT_DISPLAY3.

  ENDLOOP.

 

ENDFORM.

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

*&      Form  GET2_FIELDCAT

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

*     获取汇总后的字段

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

*  -->  p1        text

*  <--  p2        text

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

FORM GET2_FIELDCAT .

   CLEAR   wa_fieldcat2.

  wa_fieldcat2-col_pos = '1'.

  wa_fieldcat2-fieldname = 'PLANT'.

  wa_fieldcat2-seltext_s = '工厂'.

  APPEND wa_fieldcat2 TO it_fieldcat2.

 

  CLEAR   wa_fieldcat2.

  wa_fieldcat2-col_pos = '2'.

  wa_fieldcat2-fieldname = 'STOR_LOC'.

  wa_fieldcat2-seltext_s = '库存地点'.

  APPEND wa_fieldcat2 TO it_fieldcat2.

 

  CLEAR   wa_fieldcat2.

  wa_fieldcat2-col_pos = '3'.

  wa_fieldcat2-fieldname = 'MATERIAL'.

  wa_fieldcat2-seltext_s = ' 物料'.

  APPEND wa_fieldcat2 TO it_fieldcat2.

  CLEAR   wa_fieldcat2.

  wa_fieldcat2-col_pos = '4'.

  wa_fieldcat2-fieldname = 'DCINDIC'.

  wa_fieldcat2-seltext_s = '借/贷标志'.

  APPEND wa_fieldcat2 TO it_fieldcat2.

 

   CLEAR   wa_fieldcat2.

  wa_fieldcat2-col_pos = '5'.

  wa_fieldcat2-fieldname = 'OI_ERFMG '.

  wa_fieldcat2-seltext_s = '输入单位下的数量'.

  APPEND wa_fieldcat2 TO it_fieldcat2.

 

  CLEAR   wa_fieldcat2.

  wa_fieldcat2-col_pos = '6'.

  wa_fieldcat2-fieldname = 'QUANT_B'.

  wa_fieldcat2-seltext_s = '以基本计量单位的数量'.

  APPEND wa_fieldcat2 TO it_fieldcat2.

ENDFORM.

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

*&      Form  DISPLAY2_DATA

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

*       展示汇总数据

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

*  -->  p1        text

*  <--  p2        text

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

FORM DISPLAY2_DATA .

 CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

     EXPORTING

*       I_INTERFACE_CHECK                 = ' '

*       I_BYPASSING_BUFFER                = ' '

*       I_BUFFER_ACTIVE                   = ' '

       I_CALLBACK_PROGRAM                = 'ZKIM_O02_CHAXUN'

*       I_CALLBACK_PF_STATUS_SET          = ' '

*       I_CALLBACK_USER_COMMAND           = ' '

*       I_CALLBACK_TOP_OF_PAGE            = ' '

*       I_CALLBACK_HTML_TOP_OF_PAGE       = ' '

*       I_CALLBACK_HTML_END_OF_LIST       = ' '

       I_STRUCTURE_NAME                  = 'TYP_DISPLAY2'

*       I_BACKGROUND_ID                   = ' '

*       I_GRID_TITLE                      =

*       I_GRID_SETTINGS                   =

*       IS_LAYOUT                         =

        IT_FIELDCAT                       = it_fieldcat2

*       IT_EXCLUDING                      =

*       IT_SPECIAL_GROUPS                 =

*       IT_SORT                           =

*       IT_FILTER                         =

*       IS_SEL_HIDE                       =

*       I_DEFAULT                         = 'X'

*       I_SAVE                            = ' '

*       IS_VARIANT                        =

*       IT_EVENTS                         =

*       IT_EVENT_EXIT                     =

*       IS_PRINT                          =

*       IS_REPREP_ID                      =

*       I_SCREEN_START_COLUMN             = 0

*       I_SCREEN_START_LINE               = 0

*       I_SCREEN_END_COLUMN               = 0

*       I_SCREEN_END_LINE                 = 0

*       I_HTML_HEIGHT_TOP                 = 0

*       I_HTML_HEIGHT_END                 = 0

*       IT_ALV_GRAPHICS                   =

*       IT_HYPERLINK                      =

*       IT_ADD_FIELDCAT                   =

*       IT_EXCEPT_QINFO                   =

*       IR_SALV_FULLSCREEN_ADAPTER        =

*     IMPORTING

*       E_EXIT_CAUSED_BY_CALLER           =

*       ES_EXIT_CAUSED_BY_USER            =

      TABLES

        T_OUTTAB                          = IT_DISPLAY3

*     EXCEPTIONS

*       PROGRAM_ERROR                     = 1

*       OTHERS                            = 2

              .

    IF SY-SUBRC <> 0.

* Implement suitable error handling here

    ENDIF.

 

ENDFORM.

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

*&      Form  GET_EKIM_O02

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

*     整合获取卡奥斯EPG的库存明细

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

*  -->  p1        text

*  <--  p2        text

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

FORM GET_EKIM_O02 .

  IF S_PLANT IS  INITIAL.

    message e003.

  ENDIF.

  IF S_PLANT IS NOT INITIAL.

     REFRESH IT_DISPLAY.

"""获取EPG的库存明细

    SELECT MAT_DOC

           VAL_CLASS

           DOC_DATE

           MOVETYPE

           OI_ERFMG

           STOR_LOC

           PLANT

           /BIC/ZEPG_MAT

           QUANT_B

           DCINDIC

           MATL_TYPE

           VALSPECST

      FROM  /BIC/AEIM_O0200 INTO TABLE it_display

      WHERE   PLANT IN S_PLANT AND

             /BIC/ZEPG_MAT IN S_MAT AND

              STOR_LOC IN S_STRC.

""""获取卡奥斯的库存明细

 

    SELECT MAT_DOC

           VAL_CLASS

           DOC_DATE

           MOVETYPE

           OI_ERFMG

           STOR_LOC

           PLANT

           MATERIAL

           QUANT_B

           DCINDIC

           MATL_TYPE

           VALSPECST

      FROM  /BIC/AZKIM_O0200  APPENDING TABLE it_display

      WHERE   PLANT IN S_PLANT AND

              MATERIAL IN S_MAT AND

              STOR_LOC IN S_STRC.

 

  ENDIF.

 

ENDFORM.

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

*&      Form  GET2_EKIM_O02

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

*      整合获取EPG 卡奥斯库存数据(汇总)

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

*  -->  p1        text

*  <--  p2        text

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

FORM GET2_EKIM_O02 .

 

IF S_PLANT IS  INITIAL.

    message e003.

  ENDIF.

  IF

     S_PLANT IS NOT INITIAL.

     REFRESH IT_DISPLAY2.

     REFRESH IT_DISPLAY3.

 

     """获取EPG库存(汇总)

    SELECT OI_ERFMG

           STOR_LOC

           PLANT

           /BIC/ZEPG_MAT

           QUANT_B

           DCINDIC

      FROM  /BIC/AEIM_O0200  INTO table it_DISPLAY2

      WHERE   PLANT IN S_PLANT AND

             /BIC/ZEPG_MAT IN S_MAT AND

              STOR_LOC IN S_STRC.

"""获取卡奥斯库存汇总

      SELECT OI_ERFMG

           STOR_LOC

           PLANT

           MATERIAL

           QUANT_B

           DCINDIC

      FROM  /BIC/AZKIM_O0200  APPENDING  table it_DISPLAY2

      WHERE   PLANT IN S_PLANT AND

             MATERIAL IN S_MAT AND

              STOR_LOC IN S_STRC.

 .

 

  ENDIF.

  LOOP AT IT_DISPLAY2 INTO WA_display2.

 

    COLLECT  WA_display2 INTO IT_DISPLAY3.

  ENDLOOP.

 

ENDFORM.

 

 

 

库存查询ALM源代码(可参考)

库存查询ALM源代码(可参考)

库存查询ALM源代码(可参考)

库存查询ALM源代码(可参考)

库存查询ALM源代码(可参考)

 

库存查询ALM源代码(可参考)