sap web gui login

http://molgaard.consolut.eu/sap/bc/gui/sap/its/webgui

Wednesday, August 6, 2014

ABAP PROGRAMS

ABAP PROGRAMS


pending PO quantity



*&---------------------------------------------------------------------*
*& Report  ZMM_R_RDD006_POPENDING
*&
*&---------------------------------------------------------------------*

*& TITLE     :  PENDING POS QUANTITY
*& PURPOSE   :  DISPLAYING PURCHAGE ORDER PENDING QUANTITYS
*& TRANSPORT :  SMPK900434
*& VERSION   :  V1
*&---------------------------------------------------------------------*

REPORT  ZMM_R_RDD006_POPENDING NO STANDARD PAGE HEADING.
*&---------------------------------------------------------------------*
*& STRUCTURE DECLARATIONS
*&---------------------------------------------------------------------*
*  STRUCTURE DECLARATION FOR EKKO AND EKPO

TYPES : BEGIN OF TY_EKKO_EKPO,
        EBELN TYPE EBELN,    "PURCHAGE DOCUMENT HEADER
        LIFNR TYPE LIFNR,    "VENDOR ACCOUNT NUMBER
        BEDAT TYPE EBDAT,    "PURCHAGING DOCUMENT DATE
        EBELP TYPE EBELP,    "ITEM NO OF PURCHAGING DOCUMENT
        MATNR TYPE MATNR,    "MATERIAL NUMBER
        MENGE TYPE KTMNG,    "PURCHAGE ORDER QUANTITY
        NETPR TYPE BPREI,    "NET PRICE IN PURCHAGING DOCUMENT
        NETWR TYPE BWERT,    "NET ORDER VALUE IN PO CURENCY
        END OF TY_EKKO_EKPO,

*  STRUCTURE DECLARATION FOR EKBE

        BEGIN OF TY_EKBE,
        EBELN TYPE EBELN,    "PURCHAGE DOCUMENT NUMBER
        EBELP TYPE EBELP,    "PURCHAGE ITEM NUMBER
        MENGE TYPE MENGE_D,  "QUANTITY
        END OF TY_EKBE,

*  STRUCTURE DECLARATION FOR LFA1
        BEGIN OF TY_LFA1,
        LIFNR TYPE LIFNR,    "ACCOUNT NUMBER OF VENDOR
        NAME1 TYPE NAME1_GP,    "NAME
        END OF TY_LFA1,

*  STRUCTURE DECLARATION FOR FINAL OUTPUT
        BEGIN OF TY_OUTPUT,
        EBELN TYPE EBELN,      "PURCHAGE DOCUMENT HEADER
        LIFNR TYPE LIFNR,      "VENDOR ACCOUNT NUMBER
        BEDAT TYPE EBDAT,      "PURCHAGING DOCUMENT DATE
        EBELP TYPE EBELP,      "ITEM NO OF PURCHAGING DOCUMENT
        MATNR TYPE MATNR,      "MATERIAL NUMBER
        MENGE TYPE KTMNG,      "TARGET QUANTITY
        NETPR TYPE BPREI,      "NET PRICE IN PURCHAGING DOCUMENT
        NETWR TYPE BWERT,      "NET ORDER VALUE IN PO CURENCY

        MENGE_P TYPE MENGE_D,  "QUANTITY

        NAME1 TYPE  NAME1_GP,  "NAME
        PQUANT TYPE KTMNG,   "PENDING QUANTITY
        END OF TY_OUTPUT.

*&---------------------------------------------------------------------*
*& WORK AREA DECLARATIONS
*&---------------------------------------------------------------------*
*  WORK AREA DECLARATION FOR EKKO AND EKPO
DATA :  W_EKKO_EKPO TYPE TY_EKKO_EKPO,

*  WORK AREA DECLARATION FOR EKBE
        W_EKBE TYPE TY_EKBE,

*  WORK AREA DECLARATION FOR LFA1
        W_LFA1 TYPE TY_LFA1,

*  WORK AREA DECLARATION FOR FINAL OUTPUT
        W_OUTPUT TYPE TY_OUTPUT,

*&---------------------------------------------------------------------*
*& INTERNAL TABELS DECLARATIONS
*&---------------------------------------------------------------------*

*  INTERNAL TABLE DECLARATION FOR EKKO AND EKPO
        T_EKKO_EKPO TYPE STANDARD TABLE OF TY_EKKO_EKPO,

*  INTERNAL TABLE DECLARATION FOR EKBE
        T_EKBE TYPE STANDARD TABLE OF TY_EKBE,

*  INTERNAL TABLE DECLARATION FOR LFA1
        T_LFA1 TYPE STANDARD TABLE OF TY_LFA1,

*  INTERNAL TABLE DECLARATION FOR FINAL OUTPUT
        T_OUTPUT TYPE STANDARD TABLE OF TY_OUTPUT,
*&---------------------------------------------------------------------*
*& GLOBAL VARIABLES DECLARATIONS
*&---------------------------------------------------------------------*
        G_LIFNR TYPE EKKO-LIFNR,
        G_EKORG TYPE EKKO-EKORG,
        G_BSART TYPE EKKO-BSART,
        G_EKGRP TYPE EKKO-EKGRP,
        G_WERKS TYPE EKPO-WERKS,
        G_BEDAT TYPE EKKO-BEDAT,
        G_EBELN TYPE EKKO-EBELN.

*&---------------------------------------------------------------------*
*& ALV DECLARATIONS
*&---------------------------------------------------------------------*
TYPE-POOLS : SLIS.
DATA : T_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
       W_FIELDCAT TYPE LINE OF SLIS_T_FIELDCAT_ALV,
       T_SORT TYPE SLIS_T_SORTINFO_ALV,
       W_SORT TYPE LINE OF SLIS_T_SORTINFO_ALV,
       W_HEADER TYPE LINE OF SLIS_T_LISTHEADER,
       T_HEADER TYPE SLIS_T_LISTHEADER,
       T_FIELDCAT1 TYPE SLIS_T_FIELDCAT_ALV,
       G_VALUE TYPE SLIS_ENTRY,
* INTERNAL TABLE DECLARATION FOR EKBE.
       T_EKBE1 TYPE STANDARD TABLE OF TY_EKBE.
*&---------------------------------------------------------------------*
*& SELECTION SCREEN
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME.
SELECT-OPTIONS : S_LIFNR FOR G_LIFNR,
                 S_EKORG FOR G_EKORG,
                 S_BSART FOR G_BSART,
                 S_EKGRP FOR G_EKGRP,
                 S_WERKS FOR G_WERKS,
                 S_BEDAT FOR G_BEDAT,
                 S_EBELN FOR G_EBELN.
SELECTION-SCREEN END OF BLOCK B1.

*&---------------------------------------------------------------------*
*& AT SELECTION SCREEN ON
*&---------------------------------------------------------------------*

AT SELECTION-SCREEN .
* VALIDATING LIFNR
  PERFORM SUB_VALIDATE_LIFNR.
* VALIDATING EKORG
  PERFORM SUB_VALIDATE_EKORG.
* VALIDATING BSART
  PERFORM SUB_VALIDATE_BSART.
* VALIDATING EKGRP
  PERFORM SUB_VALIDATE_EKGRP.
* VALIDATING WERKS
  PERFORM SUB_VALIDATE_WERKS.
* VALIDATING BEDAT
  PERFORM SUB_VALIDATE_BEDAT.
* VALIDATING EBELN
  PERFORM SUB_VALIDATE_EBELN.

*&---------------------------------------------------------------------*
*& START OF SELECTION
*&---------------------------------------------------------------------*
START-OF-SELECTION.
  PERFORM SUB_GET_EKKO_EKPO.
  PERFORM SUB_GET_EKBE.
  PERFORM SUB_GET_LFA1.

*&---------------------------------------------------------------------*
*& INITIALIZATION
*&---------------------------------------------------------------------*
INITIALIZATION.
  CLEAR: W_EKKO_EKPO,
         W_EKBE,
         W_LFA1,
         W_OUTPUT.

  REFRESH : T_EKKO_EKPO,
            T_EKBE,
            T_LFA1,
            T_OUTPUT.
*&---------------------------------------------------------------------*
*& END OF SELECTION
*&---------------------------------------------------------------------*
END-OF-SELECTION.

  PERFORM SUB_PREPARE_OUTPUT.
  PERFORM SUB_FILL_FIELDCAT USING : 'LIFNR' '1' 'VENDOR' '' '',
                                    'EBELN'  '2' 'PDOC'  '' '',
                                    'BEDAT' '4' 'DOC DATE' '' '',
                                    'EBELP' '3' 'ITEM' '' '',
                                    'MATNR' '5' 'MATERIAL' '' '',
                                    'NETPR' '6' 'NET PRICE' 'X' '',
                                    'NETWR' '7' 'NET ORDER' '' '',
                                    'MENGE' '8' 'PO QUTY' '' '',
                                    'MENGE_P' '9' 'DELIVERY QUANTITY' '' '',
                                    'PQUANT' '10' 'PENDING QTY' 'X' ''.
  PERFORM SUB_FILL_SORT USING : 'LIFNR' 'X',
                                'EBELN' 'X'.
  PERFORM SUB_FILL_HEADER.
  PERFORM DISPLAY_OUTPUT.
*&---------------------------------------------------------------------*
*&      Form  SUB_VALIDATE_LIFNR
*&---------------------------------------------------------------------*
*   THIS ROUTINE IS USED TO VALIDATE LIFNR
*----------------------------------------------------------------------*
FORM SUB_VALIDATE_LIFNR .
  DATA : LT_LIFNR TYPE LIFNR.
  SELECT SINGLE LIFNR
          FROM LFA1
          INTO LT_LIFNR
          WHERE LIFNR IN S_LIFNR.
  IF SY-SUBRC <> 0.
    MESSAGE E002(ZHARI) WITH 'INVALID VENDOER ACCOUNT NUMBER'.
  ENDIF.
ENDFORM.                    "SUB_VALIDATE_LIFNR

*&---------------------------------------------------------------------*
*&      Form  SUB_VALIDATE_EKORG
*&---------------------------------------------------------------------*
*   THIS ROUTINE IS USED TO VALIDATE EKORG
*----------------------------------------------------------------------*
FORM SUB_VALIDATE_EKORG.
  DATA:LT_EKORG TYPE EKORG.
  SELECT SINGLE EKORG
          FROM  T024E
          INTO LT_EKORG
          WHERE EKORG IN S_EKORG.
  IF SY-SUBRC <> 0.
    MESSAGE E002(ZHARI) WITH 'INVALID PURCHAGE ORGANIZATION'.
  ENDIF.
ENDFORM.                    "SUB_VALIDATE_EKORG
*&---------------------------------------------------------------------*
*&      Form  SUB_VALIDATE_BSART
*&---------------------------------------------------------------------*
*   THIS ROUTINE IS USED TO VALIDATE BSART
*----------------------------------------------------------------------*
FORM SUB_VALIDATE_BSART.
  DATA  LT_BSART TYPE ESART.
  SELECT SINGLE BSART
          FROM T161
          INTO LT_BSART
          WHERE BSART IN S_BSART.
  IF SY-SUBRC <> 0.
    MESSAGE E002(ZHARI) WITH 'INVALID DOCUMENT TYPE'.
  ENDIF.
ENDFORM.                    "SUB_VALIDATE_BSART
*&---------------------------------------------------------------------*
*&      Form  SUB_VALIDATE_EKGRP
*&---------------------------------------------------------------------*
*   THIS ROUTINE IS USED TO VALIDATE EKGRP
*----------------------------------------------------------------------*
FORM SUB_VALIDATE_EKGRP.
  DATA LT_EKGRP TYPE BKGRP.
  SELECT SINGLE EKGRP
           FROM T024
           INTO LT_EKGRP
           WHERE EKGRP IN S_EKGRP.
  IF SY-SUBRC <> 0.
    MESSAGE E002(ZHARI) WITH 'INVALID PURCHAGE GROUP'.
  ENDIF.
ENDFORM.                    "SUB_VALIDATE_EKGRP
*&---------------------------------------------------------------------*
*&      Form  SUB_VALIDATE_WERKS
*&---------------------------------------------------------------------*
*   THIS ROUTINE IS USED TO VALIDATE WERKS
*----------------------------------------------------------------------*
FORM SUB_VALIDATE_WERKS.
  DATA LT_WERKS TYPE WERKS.
  SELECT SINGLE WERKS
          FROM T001W
          INTO LT_WERKS
          WHERE WERKS IN S_WERKS.
  IF SY-SUBRC <> 0.
    MESSAGE E002(ZHARI) WITH 'INVALID PLANT'.
  ENDIF.
ENDFORM.                    "SUB_VALIDATE_WERKS
*&---------------------------------------------------------------------*
*&      Form  SUB_VALIDATE_BEDAT
*&---------------------------------------------------------------------*
*   THIS ROUTINE IS USED TO VALIDATE BEDAT
*----------------------------------------------------------------------*
FORM SUB_VALIDATE_BEDAT.
  DATA LT_BEDAT TYPE EBDAT.
  SELECT   BEDAT
      FROM EKKO
      INTO LT_BEDAT
      UP TO 1 ROWS
      WHERE BEDAT IN S_BEDAT.
  ENDSELECT.
  IF SY-SUBRC <> 0.
    MESSAGE E002(ZHARI) WITH 'INVALID DOCUMENT DATE'.
  ENDIF.
ENDFORM.                    "SUB_VALIDATE_BEDAT
*&---------------------------------------------------------------------*
*&      Form  SUB_VALIDATE_EBELN
*&---------------------------------------------------------------------*
*   THIS ROUTINE IS USED TO VALIDATE LIFNR
*----------------------------------------------------------------------*
FORM SUB_VALIDATE_EBELN.
  DATA   LT_EBELN TYPE EBELN.
  SELECT SINGLE EBELN
          FROM EKKO
          INTO LT_EBELN
          WHERE EBELN IN S_EBELN.
  IF SY-SUBRC <> 0.
    MESSAGE E002(ZHARI) WITH 'INVALID VENDOER ACCOUNT NUMBER'.
  ENDIF.
ENDFORM.                    " SUB_VALIDATE_FIELDS
*&---------------------------------------------------------------------*
*&      Form  SUB_GET_EKKO_EKPO
*&---------------------------------------------------------------------*
*  THIS ROUTINE IS USED TO GET EKKO AND EKPO
*----------------------------------------------------------------------*
FORM SUB_GET_EKKO_EKPO .
  SELECT  EKKO~EBELN     "PURCHAGE DOCUMENT HEADER
          EKKO~LIFNR     "VENDOR ACCOUNT NUMBER
          EKKO~BEDAT    "PURCHAGING DOCUMENT DATE
          EKPO~EBELP     "ITEM NO OF PURCHAGING DOCUMENT
          EKPO~MATNR     "MATERIAL NUMBER
          EKPO~MENGE     "PURCHAGE ORDER QUANTITY
          EKPO~NETPR     "NET PRICE IN PURCHAGING DOCUMENT
          EKPO~NETWR     "NET ORDER VALUE IN PO CURENCY
    INTO TABLE T_EKKO_EKPO
    FROM EKKO INNER JOIN EKPO
    ON EKKO~EBELN = EKPO~EBELN
    WHERE EKKO~LIFNR IN S_LIFNR
    AND EKKO~EKORG IN S_EKORG
    AND EKKO~BSART IN S_BSART
    AND EKKO~EKGRP IN S_EKGRP
    AND EKPO~WERKS IN S_WERKS
    AND EKKO~BEDAT IN S_BEDAT
    AND EKKO~EBELN IN S_EBELN.

  IF SY-SUBRC <> 0.
    MESSAGE I002(ZHARI) WITH 'DATA NOT FOUND'.
    LEAVE LIST-PROCESSING.
  ENDIF.
ENDFORM.                    " SUB_GET_EKKO_EKPO
*&---------------------------------------------------------------------*
*&      Form  SUB_GET_EKBE
*&---------------------------------------------------------------------*
*  THIS ROUTINE IS USED TO GET EKBE
*----------------------------------------------------------------------*
FORM SUB_GET_EKBE .
  SELECT EBELN  "PURCHAGE DOCUMENT
         EBELP  "ITEM
         MENGE  "QUANTITY
   INTO TABLE T_EKBE
   FROM  EKBE
   FOR ALL ENTRIES IN T_EKKO_EKPO
   WHERE EBELN = T_EKKO_EKPO-EBELN
   AND   EBELP = T_EKKO_EKPO-EBELP.
ENDFORM.                    " SUB_GET_EKBE
*&---------------------------------------------------------------------*
*&      Form  SUB_GET_LFA1
*&---------------------------------------------------------------------*
*  THIS ROUTINE IS USED TO GET LFA1
*----------------------------------------------------------------------*
FORM SUB_GET_LFA1 .
  DATA LT_EKKO_EKPO TYPE STANDARD TABLE OF TY_EKKO_EKPO.
  LT_EKKO_EKPO = T_EKKO_EKPO.
  SORT LT_EKKO_EKPO BY LIFNR.
  DELETE ADJACENT DUPLICATES FROM LT_EKKO_EKPO COMPARING LIFNR.

  SELECT LIFNR "VENDOR ACC NO
         NAME1 "NAME
   FROM  LFA1
   INTO TABLE T_LFA1
   FOR ALL ENTRIES IN LT_EKKO_EKPO
   WHERE LIFNR = LT_EKKO_EKPO-LIFNR.
ENDFORM.                    " SUB_GET_LFA1
*&---------------------------------------------------------------------*
*&      Form  SUB_PREPARE_OUTPUT
*&---------------------------------------------------------------------*
*  THIS ROUTINE IS USED TO PREPARING FINAL OUTPUT
*----------------------------------------------------------------------*
FORM SUB_PREPARE_OUTPUT .
  CLEAR W_EKKO_EKPO.
  LOOP AT T_EKKO_EKPO INTO W_EKKO_EKPO.
*  MOVING EKKO AND EKPO DATA
    W_OUTPUT-EBELN = W_EKKO_EKPO-EBELN.
    W_OUTPUT-LIFNR = W_EKKO_EKPO-LIFNR.
    W_OUTPUT-BEDAT = W_EKKO_EKPO-BEDAT.
    W_OUTPUT-EBELP = W_EKKO_EKPO-EBELP.
    W_OUTPUT-MATNR = W_EKKO_EKPO-MATNR.
    W_OUTPUT-MENGE = W_EKKO_EKPO-MENGE.
    W_OUTPUT-NETPR = W_EKKO_EKPO-NETPR.
    W_OUTPUT-NETWR = W_EKKO_EKPO-NETWR.

*  MOVING EKBE DATA
    CLEAR W_EKBE .
    READ TABLE T_EKBE INTO W_EKBE WITH KEY EBELN = W_EKKO_EKPO-EBELN
                                           EBELP = W_EKKO_EKPO-EBELP.
    IF SY-SUBRC = 0.
      W_OUTPUT-MENGE_P = W_EKBE-MENGE.
    ENDIF.

*  MOVING LFA1 DATA
    CLEAR W_LFA1.
    READ TABLE T_LFA1 INTO W_LFA1 WITH KEY LIFNR = W_EKKO_EKPO-LIFNR.

    IF SY-SUBRC = 0.
      W_OUTPUT-NAME1 = W_LFA1-NAME1.
    ENDIF.

    W_OUTPUT-PQUANT =  W_EKKO_EKPO-MENGE - W_EKBE-MENGE .

    APPEND W_OUTPUT TO T_OUTPUT.
    CLEAR : W_EKKO_EKPO,
            W_OUTPUT.
  ENDLOOP.

ENDFORM.                    " SUB_PREPARE_OUTPUT
*&---------------------------------------------------------------------*
*&      Form  SUB_FILL_FIELDCAT
*&---------------------------------------------------------------------*
* THIS ROUTINE IS USED TO FILL FIELDCAT
*----------------------------------------------------------------------*
FORM SUB_FILL_FIELDCAT USING FIELD TYPE C
                         COLPOS TYPE C
                         TEXT TYPE C
                         SUM TYPE CHAR1
                         OUT TYPE CHAR1.

  W_FIELDCAT-FIELDNAME = FIELD.
  W_FIELDCAT-COL_POS   = COLPOS.
  W_FIELDCAT-SELTEXT_M = TEXT.
  W_FIELDCAT-DO_SUM    = SUM.
  W_FIELDCAT-NO_OUT    = OUT.
  APPEND W_FIELDCAT TO T_FIELDCAT.
ENDFORM.                    " SUB_FILL_FIELDCAT
*&---------------------------------------------------------------------*
*&      Form  DISPLAY_OUTPUT
*&---------------------------------------------------------------------*
*  THIS ROUTINE IS USED TO DISPLAY REPORT
*----------------------------------------------------------------------*
FORM DISPLAY_OUTPUT .

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
   EXPORTING
*   I_INTERFACE_CHECK                 = ' '
*   I_BYPASSING_BUFFER                = ' '
*   I_BUFFER_ACTIVE                   = ' '
    I_CALLBACK_PROGRAM                = SY-CPROG

    I_CALLBACK_PF_STATUS_SET          = 'SUB_SET_PF_STATUS'
    I_CALLBACK_USER_COMMAND           = 'SUB_USER_COMMAND'
    I_CALLBACK_TOP_OF_PAGE            = 'SUB_TOP_OF_PAGE'
*   I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
*   I_CALLBACK_HTML_END_OF_LIST       = ' '
*   I_STRUCTURE_NAME                  =
*   I_BACKGROUND_ID                   = ' '
*   I_GRID_TITLE                      =
*   I_GRID_SETTINGS                   =
*   IS_LAYOUT                         =
      IT_FIELDCAT                     =  T_FIELDCAT
*   IT_EXCLUDING                      =
*   IT_SPECIAL_GROUPS                 =
    IT_SORT                           =  T_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                          = T_OUTPUT
* EXCEPTIONS
*   PROGRAM_ERROR                     = 1
*   OTHERS                            = 2
            .
  .

ENDFORM.                    " DISPLAY_OUTPUT
*&---------------------------------------------------------------------*
*&      Form  SUB_FILL_SORT
*&---------------------------------------------------------------------*
*  THIS ROUTINE IS USED TO FILL T_SORT
*----------------------------------------------------------------------*
FORM SUB_FILL_SORT USING FIELD TYPE C
                         SUBT TYPE CHAR1.

  W_SORT-FIELDNAME = FIELD.
  W_SORT-SUBTOT    = 'X'.
  APPEND W_SORT TO T_SORT.
ENDFORM.                    " SUB_FILL_SORT
*&---------------------------------------------------------------------*
*&      Form  SUB_TOP_OF_PAGE
*&---------------------------------------------------------------------*
*  THIS ROUTINE IS USED TO PRINT TOP OF PAGE
*----------------------------------------------------------------------*
FORM SUB_TOP_OF_PAGE .

  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
      IT_LIST_COMMENTARY       = T_HEADER
*      I_LOGO                   =
*      I_END_OF_LIST_GRID       =
*      I_ALV_FORM               =
            .

ENDFORM.                    " SUB_TOP_OF_PAGE
*&---------------------------------------------------------------------*
*&      Form  SUB_FILL_HEADER
*&---------------------------------------------------------------------*
*  THIS ROUTINE IS USED TO FILL HEADER
*----------------------------------------------------------------------*
FORM SUB_FILL_HEADER .
  W_HEADER-TYP  = 'H'.
  W_HEADER-INFO = 'PENDING PURCHAGE ORDERS'.
  APPEND W_HEADER TO T_HEADER.
  W_HEADER-TYP =  'S'.
  W_HEADER-KEY = 'VENDOR'.
  CONCATENATE S_LIFNR-LOW 'TO' S_LIFNR-HIGH INTO W_HEADER-INFO SEPARATED BY SPACE.
  APPEND W_HEADER TO T_HEADER.

ENDFORM.                    " SUB_FILL_HEADER
*&---------------------------------------------------------------------*
*&      Form  SUB_USER_COMMAND
*&---------------------------------------------------------------------*
*  THIS ROUTINE IS USED TO HANDLE USER COMMAND
*----------------------------------------------------------------------*
FORM SUB_USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
                            RS_SELFIELD TYPE SLIS_SELFIELD.
  CASE R_UCOMM.
    WHEN 'DET'.
      IF RS_SELFIELD-FIELDNAME = 'EBELN'.
        G_VALUE = RS_SELFIELD-VALUE.
        CLEAR W_EKBE.
        REFRESH T_EKBE1.
        LOOP AT T_EKBE INTO W_EKBE WHERE EBELN = G_VALUE.
          APPEND W_EKBE TO T_EKBE1.
        ENDLOOP.
        REFRESH T_FIELDCAT1.

        PERFORM SUB_FILL_FIELDCAT1 USING : 'EBELN' '1' 'PDOC',
                                           'EBELP' '2' 'ITEM',
                                           'MENGE' '3'  'DELIVERY QUANTITY'.
        CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
         EXPORTING
*     I_INTERFACE_CHECK                 = ' '
*     I_BYPASSING_BUFFER                = ' '
*     I_BUFFER_ACTIVE                   = ' '
*     I_CALLBACK_PROGRAM                = ' '
*     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                  =
*     I_BACKGROUND_ID                   = ' '
*     I_GRID_TITLE                      =
*     I_GRID_SETTINGS                   =
*     IS_LAYOUT                         =
            IT_FIELDCAT                       = T_FIELDCAT1
*     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                          = T_EKBE1.
*   EXCEPTIONS
*     PROGRAM_ERROR                     = 1
*     OTHERS                            = 2
        .
      ENDIF.
* LINE SELECTION
  WHEN '&IC1'.
      IF RS_SELFIELD-FIELDNAME = 'EBELN'.
        G_VALUE = RS_SELFIELD-VALUE.
        CLEAR W_EKBE.
        REFRESH T_EKBE1.
        LOOP AT T_EKBE INTO W_EKBE WHERE EBELN = G_VALUE.
          APPEND W_EKBE TO T_EKBE1.
        ENDLOOP.
        REFRESH T_FIELDCAT1.

        PERFORM SUB_FILL_FIELDCAT1 USING : 'EBELN' '1' 'PDOC',
                                           'EBELP' '2' 'ITEM',
                                           'MENGE' '3'  'DELIVERY QUANTITY'.
        CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
         EXPORTING
*     I_INTERFACE_CHECK                 = ' '
*     I_BYPASSING_BUFFER                = ' '
*     I_BUFFER_ACTIVE                   = ' '
*     I_CALLBACK_PROGRAM                = ' '
*     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                  =
*     I_BACKGROUND_ID                   = ' '
*     I_GRID_TITLE                      =
*     I_GRID_SETTINGS                   =
*     IS_LAYOUT                         =
            IT_FIELDCAT                       = T_FIELDCAT1
*     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                          = T_EKBE1.
*   EXCEPTIONS
*     PROGRAM_ERROR                     = 1
*     OTHERS                            = 2


      ENDIF.

  ENDCASE.
ENDFORM.                    "SUB_USER_COMMAND
*&---------------------------------------------------------------------*
*&      Form  SUB_FILL_FIELDCAT1
*&---------------------------------------------------------------------*
*   THIS ROUTINE IS USED TO FILL FIELDCAT1
*----------------------------------------------------------------------*
FORM SUB_FILL_FIELDCAT1 USING FIELD TYPE CHAR10
                              COLP TYPE CHAR1
                              TEXT TYPE CHAR35.
  CLEAR W_FIELDCAT.
  W_FIELDCAT-FIELDNAME = FIELD.
  W_FIELDCAT-COL_POS   = COLP.
  W_FIELDCAT-SELTEXT_M = TEXT .
  APPEND W_FIELDCAT TO T_FIELDCAT1.
ENDFORM.   " SUB_FILL_FIELDCAT1
*&---------------------------------------------------------------------*
*&      Form  SUB_SET_PF_STATUS
*&---------------------------------------------------------------------*
*   THIS ROUTINE IS USED TO FILL FIELDCAT1
*----------------------------------------------------------------------*
FORM SUB_SET_PF_STATUS USING EXTAB.
  SET PF-STATUS 'ZSTATUS' EXCLUDING EXTAB.
ENDFORM.


0 comments:

Post a Comment