Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results forĀ 
Search instead forĀ 
Did you mean:Ā 
Read only

USER COMMAND ALV with OOPS

Former Member
0 Likes
1,272

Hi,

I want to development an at user command ALV with oops.

I am not able to do it. i searched in google and sdn and scn but not able to find exact scenarios.

my scenario is like this,

I want to generate an  Main alv list/grid with 25 fields from multiple tables.

After that when i enter on selecting the rows from main list, if i press enter than it should popup a screen with bapi to change the sales order in which the sales order delivery block should be removed.

This is my requirement, please help

regards

Ravi

1 ACCEPTED SOLUTION
Read only

RaymondGiuseppi
Active Contributor
0 Likes
898

Look once again in search tool til you get

- a reference to a method like GET_SELECTED_ROWS or a good old  LOOP AT itab WHERE selected = 'X' code

- a reference to a BAPI to change SD sales order like BAPI_SALESORDER_CHANGE

Regards,

Raymond

6 REPLIES 6
Read only

RaymondGiuseppi
Active Contributor
0 Likes
899

Look once again in search tool til you get

- a reference to a method like GET_SELECTED_ROWS or a good old  LOOP AT itab WHERE selected = 'X' code

- a reference to a BAPI to change SD sales order like BAPI_SALESORDER_CHANGE

Regards,

Raymond

Read only

Former Member
0 Likes
898

why do you need use of bapi call. Tell me what exactly you are

facing issue when you are developing the ALV reprt...?

Read only

Former Member
0 Likes
898

Elaborate your requirement please...?

Read only

0 Likes
898

Hi Sudhir, i want to develop alv oops of below report, i am not able to do it with

   DATA: ra_prod TYPE RANGE OF sysysid, "sysId Prod. range     "EPS Carve out
      wa_prod LIKE LINE OF ra_prod.  "sysId Prod. w.area    "EPS Carve out

DATA: ra_sorg_fribourg TYPE RANGE OF vkorg,"range of values "EPS Carve out
      wa_sorg_fribourg LIKE LINE OF ra_sorg_fribourg."w.area"EPS Carve out

TABLES: vbak, "Sales Document: Header Data
        vbpa, "Sales Document: Partner
        vepvg,     "Delivery Due Index
        setleaf.   "Values in Sets

INCLUDE zbcsel0i.                 " Select options print include - data

* I_DATA          production record estimate= 000000500 as of 2007.12.31
* record size=        488  , total bytes=    244,000
* KB=                   238.28 ,MB=                     0.23
DATA: BEGIN OF i_data OCCURS 0.
DATA:   checkbox   TYPE c,              "screen checkbox
        color(3)   TYPE c,              "row display colour
        key_gross  TYPE i,              "counter
        vbeln      TYPE vbeln,          "Order
        posnr      TYPE posnr,          "Order item
        auart      tYPE vbak-auart,     " Order type
        kunnr      TYPE kunag,          "Sold to
        kunwe      TYPE kunwe,          "Ship to
        matnr      TYPE matnr,          "Material
        pernr      TYPE pernr_d,        "CSR number
        ename      TYPE pa0002-nachn,   "CSR's last name
        kwmeng     TYPE kwmeng,         "Ordered volume - sales unit
        vrkme      TYPE vrkme,          "Sales unit
        netwr      TYPE vbap-netwr,     "Item price
        waerk      TYPE vbap-waerk,     "Currency
        erdat      LIKE  vbap-erdat,    "create date
        ernam      LIKE  vbap-ernam,    "created by
        cname      TYPE pa0002-cname,   "create by name
        spart      TYPE vbap-spart,     "Material Division
        vkorg      TYPE vbak-vkorg,     "Sales Org
        result(15) TYPE c,              "Result
        namag      LIKE  kna1-name1,    "customer name
        ortag      LIKE  kna1-ort01,    "city
        regag      LIKE  kna1-regio,    "province
        lanwe      LIKE  kna1-land1,    "Ship_To Country
        namwe      LIKE  kna1-name1,    "customer name
        ortwe      LIKE  kna1-ort01,    "city
        regwe      LIKE  kna1-regio,    "province
        abgru      TYPE vbap-abgru,     "Rejection reason
        lifsk      type lifsk,               " Delivery block (document header)
        vtext      TYPE bezei40,        "Reason for Rejection text
        maktx      TYPE maktx.          "material description
DATA: END OF i_data.

* X_DATA          production record estimate= 000000500 as of 2007.12.31
* record size=        488  , total bytes=    244,000
* KB=                   238.28 ,MB=                     0.23
DATA: BEGIN OF x_data OCCURS 0.
        INCLUDE STRUCTURE i_data.
DATA: END OF x_data.

* HEADER_TAB      production record estimate= 000000500 as of 2006.03.08
* record size=         24  , total bytes=     12,000
* KB=                    11.72 ,MB=                     0.01
DATA: BEGIN OF header_tab OCCURS 20,
        key_gross TYPE i,                   " Key
        vbeln    LIKE vbak-vbeln,           " Document number (Order)
        posnr    LIKE vbap-posnr,           " Item
        tech  TYPE c,                       " technical field
        ampel TYPE c,                       " Lights
      END OF header_tab.

* I_ORDER         production record estimate= 000000500 as of 2007.12.31
* record size=        128  , total bytes=     64,000
* KB=                    62.50 ,MB=                     0.06
DATA: BEGIN OF i_order OCCURS 0,
        vbeln TYPE vbak-vbeln,          " Sales order
        erdat TYPE vbak-erdat,          " Date created
        kunnr TYPE vbak-kunnr,          " Sold-to Customer #
        lanag TYPE land1,               " Ship-to country
        ernam TYPE vbak-ernam,          " Created by
        knumv TYPE vbak-knumv,          " Number of the doc condition
        auart TYPE vbak-auart,          " Order type
        posnr TYPE vbap-posnr,          " Order item #
        matnr TYPE vbap-matnr,          " Material number
        spart TYPE vbap-spart,          " Material Division
        vkorg TYPE vbak-vkorg,          " Sales Org
        abgru TYPE vbap-abgru,          " Rejection reason
        lifsk type lifsk,               " Delivery block (document header)
        kwmeng TYPE vbap-kwmeng,        " Ordered volume - sales unit
        vrkme TYPE vbap-vrkme,          " Sales unit
        mprok TYPE vbap-mprok,          " Status manual price change
        kunwe TYPE vbpa-kunnr,          " Ship-to customer # (parvw=WE)
        kschl TYPE konv-kschl,          " Pricing condition
        netwr TYPE vbap-netwr,          " Item price
        waerk TYPE vbap-waerk,          " Currency
      END OF i_order.

* XMARAV          production record estimate= 000000500 as of 2006.03.08
* record size=         59  , total bytes=     29,500
* KB=                    28.81 ,MB=                     0.03
DATA: BEGIN OF xmarav OCCURS 0,
        matnr LIKE marav-matnr,  "Material
        spras LIKE marav-spras,  "language
        maktx LIKE marav-maktx. "Description
DATA: END OF xmarav.

* XVBPA           production record estimate= 000001500 as of 2006.03.08
* record size=         36  , total bytes=     54,000
* KB=                    52.73 ,MB=                     0.05
DATA:  BEGIN OF xvbpa OCCURS 0,
         vbeln  LIKE vbpa-vbeln,       " sales & distrbt doc
         posnr LIKE vbpa-posnr,        " sales document item
         parvw LIKE vbpa-parvw,        " partner function ID
         pernr LIKE vbpa-pernr,        " personnel number
         kunnr LIKE vbpa-kunnr,        " partner - Customer
       END OF xvbpa.

* TVBPA           production record estimate= 000001500 as of 2006.03.08
* record size=         36  , total bytes=     54,000
* KB=                    52.73 ,MB=                     0.05
DATA:  BEGIN OF tvbpa OCCURS 0.
        INCLUDE STRUCTURE xvbpa.
DATA:  END OF tvbpa.

* I_KNA1          production record estimate= 000000500 as of 2006.03.08
* record size=         86  , total bytes=     43,000
* KB=                    41.99 ,MB=                     0.04
DATA: BEGIN OF i_kna1 OCCURS 0,         " Customer master table
        kunnr TYPE kna1-kunnr,          " Customer #
        name1 TYPE kna1-name1,          " Customer name
        ort01 TYPE kna1-ort01,          " Customer city
        regio TYPE kna1-regio,          " Customer state/province
        land1 TYPE kna1-land1,          " Customer country
      END OF i_kna1.

* I_KNVP          production record estimate= 000000500 as of 2006.03.08
* record size=         88  , total bytes=     44,000
* KB=                    42.97 ,MB=                     0.04
DATA: BEGIN OF i_knvp OCCURS 0,         " Partner table
        pernr TYPE knvp-pernr,          " Employee # (Sales Rep / CSR)
        ename TYPE pa0001-ename,        " CSR name
        nachn TYPE pa0002-nachn,        " Last name
      END OF i_knvp.

DATA: BEGIN OF i_cnam OCCURS 0,         " Partner table
        ernam TYPE vbap-ernam,          " Created by ID
        cname TYPE pa0002-cname,        " Created By name
      END OF i_cnam.

* ITVLST     production record estimate= 000000050 as of 2005.11.03
* record size=         42  , total bytes=      2,100
* KB=                     2.05 ,MB=                     0.00
data: begin of itvlst occurs 0,
         lifsp type lifsp,        "Delivery Block
         vtext type bezei_lifsp.      "Description
data: end of itvlst.

DATA: count1       TYPE i.               " # of records for table sizes

*$*$ Data declarations for ALV
TYPE-POOLS: slis.
DATA: fieldcat    TYPE slis_t_fieldcat_alv,  " Field catalog
      ls_fieldcat TYPE slis_fieldcat_alv,    " Header line - fieldcat
      layout      TYPE slis_layout_alv,      " Customize column format
      printout    TYPE slis_print_alv,      " Print specifications.
      events      TYPE slis_t_event,         " Events to trigr
      tabname     TYPE dd02l-tabname.        " Name of table for ALV

DATA: repid       TYPE sy-repid,      " Name of report program
      alv_variant TYPE disvariant,    " Display variant
      pf_extab    TYPE slis_t_extab,  " Function codes to be excluded
      extab       TYPE slis_extab.    " Header line for func code itab

INCLUDE <color>. "Assign Color Descriptions in Lists to Their Number Val
INCLUDE tskhincl. "Task handler interface include

RANGES: rparvw FOR vbpa-parvw,    " partner
        rauart FOR vbak-auart.    " order type


* BDCDATA    production record estimate= 000000020 as of 2006.03.08
* record size=        309  , total bytes=      6,180
* KB=                     6.04 ,MB=                     0.01
DATA: BEGIN OF bdcdata OCCURS 10.      " Structure for BDC session data.
        INCLUDE STRUCTURE bdcdata.
DATA: END OF bdcdata.

* BDCMESSAGE production record estimate= 000000010 as of 2006.03.08
* record size=        625  , total bytes=      6,250
* KB=                     6.10 ,MB=                     0.01
DATA: BEGIN OF bdcmessages OCCURS 10.
        INCLUDE STRUCTURE bdcmsgcoll.
DATA: END OF bdcmessages.

* OUTPUT_TAB production record estimate= 000000500 as of 2006.03.08
* record size=        104  , total bytes=     52,000
* KB=                    50.78 ,MB=                     0.05
DATA: BEGIN OF output_tab OCCURS 0,
      key_gross TYPE i,                    " key
      msg_text(120) TYPE c,                " Message text.
    END OF output_tab.

DATA: retcode TYPE sysubrc.              " Return code

*----------------------------------------------------------------------*
* Selection Screen
*----------------------------------------------------------------------*
SELECTION-SCREEN SKIP.

SELECT-OPTIONS: xerdat  FOR vbak-erdat OBLIGATORY,   "Order creation date
                xvbeln  FOR vbak-vbeln,   "Order number
                xpernr  FOR vbpa-pernr.   "CSR

SELECTION-SCREEN: SKIP.
SELECT-OPTIONS: xkunag FOR vepvg-kunnr. "Sold-to party

SELECTION-SCREEN: SKIP.
SELECTION-SCREEN BEGIN OF BLOCK list WITH FRAME TITLE text-lst.
PARAMETERS: pa_vari TYPE slis_vari. " Layout Variant
SELECTION-SCREEN END OF BLOCK list.

SELECTION-SCREEN: SKIP.
PARAMETERS: p_mode LIKE rfpdo-allgazmd DEFAULT 'N'  "Call trans mode
            OBLIGATORY MODIF ID dbg.

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

INITIALIZATION.

* get range of production systems                           "EPS Carve out
*  PERFORM get_constant TABLES   ta_range      "Value Ranges "EPS Carve out
*                       USING    c_prod_syst_range           "EPS Carve out
*                       CHANGING hv_value hv_element hv_type."EPS Carve out
*  LOOP AT ta_range INTO wa_range.                           "EPS Carve out
*    MOVE-CORRESPONDING wa_range TO wa_prod.                 "EPS Carve out
*    APPEND wa_prod TO ra_prod.                              "EPS Carve out
*  ENDLOOP.                                                  "EPS Carve out

* get range of Fribourg Sales Organisations                 "EPS Carve out
*  PERFORM get_constant TABLES   ta_range      "Value Ranges "EPS Carve out
*                       USING    c_sd_vkorg_fribourg_range   "EPS Carve out
*                       CHANGING hv_value hv_element hv_type."EPS Carve out
  REFRESH ra_sorg_fribourg.                                 "EPS Carve out
*  LOOP AT ta_range INTO wa_range.                           "EPS Carve out
*    MOVE-CORRESPONDING wa_range TO wa_sorg_fribourg.        "EPS Carve out
*    APPEND wa_sorg_fribourg TO ra_sorg_fribourg.            "EPS Carve out
*  ENDLOOP.                                                  "EPS Carve out

  IF sy-mandt NE '200'.
    MESSAGE e531(0u) WITH text-e01.
    EXIT.
  ENDIF.

  REFRESH rparvw.

  MOVE: 'EQ' TO rparvw-option,
        'I'  TO rparvw-sign.
  rparvw-low = 'AG'.
  APPEND rparvw.
  rparvw-low = 'WE'.
  APPEND rparvw.
  rparvw-low = 'Z2'.
  APPEND rparvw.

* DEFAULT TO 30 DAYS
  xerdat-low = sy-datum - 30.
  xerdat-high = sy-datum.
  xerdat-sign = 'I'.
  xerdat-option = 'BT'.
  APPEND xerdat.

  repid = sy-repid.
  PERFORM alv_eventtab_build USING:
*    Event name     Form to execute     Event internal table
     'TOP_OF_PAGE'  'TOP_OF_PAGE'       events[],
     'END_OF_LIST'  'END_OF_LIST'       events[].

***********************************************************************
*        MODIFY THE PARAMETER SCREEN BEFORE IT IS DISPLAYED.          *
***********************************************************************
* Only display the 'DEBUG' type options on the parameter screen if the
* program is run in PROD environment
AT SELECTION-SCREEN OUTPUT.

* hard code removal via check against prod. systems range   "EPS Carve out
* CHECK sy-sysid = 'C34'.                                   "EPS Carve out
  CHECK sy-sysid IN ra_prod.                                "EPS Carve out

  LOOP AT SCREEN.
    IF screen-group1 = 'DBG'.          " DeBuG Screen group
      CLEAR screen-input.              " Disallow input3
      screen-invisible = '1'.          " Do NOT display
      MODIFY SCREEN.
    ENDIF.
  ENDLOOP.
*&---------------------------------------------------------------------*
*$*$                    AT SELECTION-SCREEN
*&---------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR pa_vari.
  PERFORM alv_variant_f4 CHANGING pa_vari.

AT SELECTION-SCREEN.
  IF sy-ucomm = 'ONLI'   "Execute
  OR sy-batch = 'X'.
    PERFORM get_orders.
    READ TABLE i_order INDEX 1.
    IF sy-subrc EQ 0.

    ELSE.
      IF sy-batch = 'X'.
        WRITE:/ text-e02. "No Orders selected
        LEAVE PROGRAM.
      ELSE.
        MESSAGE e071(cb).
      ENDIF.
    ENDIF.
  ENDIF.

START-OF-SELECTION.

  PERFORM combine_data.

* perform pricing update only if run in batch.
  IF sy-batch = 'X'.
    PERFORM order_approve.
  ENDIF.

* Set selected display variant
  alv_variant-report   = repid.
  alv_variant-username = sy-uname.
  alv_variant-variant  = pa_vari.

  tabname = 'I_DATA'.          " ASSIGN table name

  PERFORM build_list_s  USING tabname.

*&---------------------------------------------------------------------*
*&      Form  TOP_OF_PAGE
*&---------------------------------------------------------------------*
FORM top_of_page.

*  CALL FUNCTION 'Z_REP_COMMON_HDR'
*    EXPORTING
*      line_size   = sy-linsz
*      page_no     = sy-pagno
*      report_name = sy-cprog
*      sy_datum    = sy-datum
*      sy_uzeit    = sy-uzeit
*      title_1     = sy-title.

ENDFORM.                               " TOP_OF_PAGE

*&---------------------------------------------------------------------*
*&      Form  END_OF_LIST
*&---------------------------------------------------------------------*
*       Run end of page include
*&---------------------------------------------------------------------*
FORM end_of_list.

  INCLUDE zbcsel01.                    "print selection variables

ENDFORM.                    " END_OF_LIST

*---------------------------------------------------------------------*
*       FORM ALV_EVENTTAB_BUILD                                       *
*---------------------------------------------------------------------*
*     Pass list of events to be triggered by the ALV function module
*---------------------------------------------------------------------*
FORM alv_eventtab_build USING  u_name  TYPE slis_alv_event-name
                               u_form  TYPE slis_alv_event-form
                               alv_lt_events  TYPE slis_t_event.
  DATA: ls_event TYPE slis_alv_event.   " structure for event handling
  ls_event-name = u_name.
  ls_event-form = u_form.
  APPEND ls_event TO alv_lt_events.
ENDFORM.                    " ALV_EVENTTAB_BUILD

*&---------------------------------------------------------------------*
*&      Form  ALV_FIELDCAT
*&---------------------------------------------------------------------*
*       Specify fields for columns in the list
*----------------------------------------------------------------------*
*      -->P_FIELDCAT[]  text
*----------------------------------------------------------------------*
FORM alv_fieldcat USING fieldcat TYPE slis_t_fieldcat_alv.
  REFRESH fieldcat.
* Specify columns for the list display
  PERFORM append_fieldcat USING:
* Field    Int Tbl   RefTab  Just Dec Emph  Hspot Type Len RTxt
  'VBELN'  'I_DATA'  '    '  ' '  ' '  ' '  'X'  ' '  '  ' text-051,
  'PERNR'  'I_DATA'  '    '  ' '  ' '  ' '  ' '  ' '  '  ' text-070,
  'ENAME'  'I_DATA'  '    '  ' '  ' '  ' '  ' '  ' '  '  ' text-077,
  'KUNNR'  'I_DATA'  '    '  ' '  ' '  ' '  ' '  ' '  '  ' text-053,
  'NAMAG'  'I_DATA'  '    '  ' '  ' '  ' '  ' '  ' '  '  ' text-073,
  'KUNWE'  'I_DATA'  '    '  ' '  ' '  ' '  ' '  ' '  '  ' text-054,
  'NAMWE'  'I_DATA'  '    '  ' '  ' '  ' '  ' '  ' '  '  ' text-074,
  'ORTWE'  'I_DATA'  '    '  ' '  ' '  ' '  ' '  ' '  '  ' text-075,
  'REGWE'  'I_DATA'  '    '  ' '  ' '  ' '  ' '  ' '  '  ' text-076,
  'LANWE'  'I_DATA'  '    '  ' '  ' '  ' '  ' '  ' '  '  ' text-079,
  'MATNR'  'I_DATA'  '    '  ' '  ' '  ' '  ' '  ' '  '  ' text-055,
  'MAKTX'  'I_DATA'  '    '  ' '  ' '  ' '  ' '  ' '  '  ' text-072,
  'KWMENG' 'I_DATA'  '    '  ' '  ' '  ' '  ' '  ' '  '  ' text-058,
  'VRKME'  'I_DATA'  '    '  ' '  ' '  ' '  ' '  ' '  '  ' text-059,
  'NETWR'  'I_DATA'  '    '  ' '  ' '  ' '  ' '  ' '  '  ' text-078,
  'WAERK'  'I_DATA'  '    '  ' '  ' '  ' '  ' '  ' '  '  ' text-061,
  'ERDAT'  'I_DATA'  '    '  ' '  ' '  ' '  ' '  ' '  '  ' text-057,
  'CNAME'  'I_DATA'  '    '  ' '  ' '  ' '  ' '  ' '  '  ' text-067,
  'SPART'  'I_DATA'  '    '  ' '  ' '  ' '  ' '  ' '  '  ' text-062,
  'VKORG'  'I_DATA'  '    '  ' '  ' '  ' '  ' '  ' '  '  ' text-080,
  'LIFSK'  'I_DATA'  '    '  ' '  ' '  ' '  ' '  ' '  '  ' text-081,
  'VTEXT'  'I_DATA'  '    '  ' '  ' '  ' '  ' '  ' '  '  ' text-081,
  'RESULT' 'I_DATA'  '    '  ' '  ' '  ' '  ' '  ' '  '  ' text-066.

ENDFORM.                    " ALV_FIELDCAT

*&---------------------------------------------------------------------*
*&      Form  ALV_LAYOUT
*&---------------------------------------------------------------------*
*       Column layout options
*----------------------------------------------------------------------*
*      -->P_LAYOUT  Structure with layout settings
*----------------------------------------------------------------------*
FORM alv_layout  USING layout TYPE slis_layout_alv.
  layout-group_change_edit = 'X'.  " Allow user to change subtotl format
  layout-cell_merge = 'X'.     " Not suppress field replication
  layout-max_linesize = sy-linsz.
  layout-colwidth_optimize      = 'X'.
  layout-get_selinfos = 'X'.   " Activate Selections icon in list displ
  layout-info_fieldname = 'COLOR'.   " Field name in itab for color code
  layout-key_hotspot = 'X'.
  layout-group_buttons = 'X'.
  layout-no_vline = ' '.
  layout-box_fieldname = 'CHECKBOX'.

ENDFORM.                    " BUILD_LAYOUT

*&---------------------------------------------------------------------*
*&      Form  APPEND_FIELDCAT
*&---------------------------------------------------------------------*
*       Fill internal table FIELDCAT with column info
*----------------------------------------------------------------------*
*      <--Fieldname
*      <--Tabname
*      <--Ref_Tabname
*      <--Decimals_out
*      <--Emphasize   Change colour of key field column
*      <--Hotspot
*      <--Datatype   (see value range for domain DATATYPE)
*      <--Outputlen
*      <--Reptext_DDic
*----------------------------------------------------------------------*
FORM append_fieldcat USING fieldname TYPE slis_fieldname
                           tabname TYPE slis_tabname
                           ref_tabname TYPE slis_tabname
                           just TYPE c
                           decimals_out TYPE c
                           emphasize TYPE c
                           hotspot TYPE c
                           datatype TYPE dd03p-datatype
                           outputlen TYPE c
                           reptext_ddic TYPE dd03p-reptext.
  CLEAR ls_fieldcat.
  ls_fieldcat-fieldname    = fieldname.
  ls_fieldcat-tabname      = tabname.
  ls_fieldcat-ref_tabname  = ref_tabname.
  ls_fieldcat-just         = just.
  ls_fieldcat-decimals_out = decimals_out.
  ls_fieldcat-emphasize    = emphasize.
  ls_fieldcat-hotspot      = hotspot.
  ls_fieldcat-datatype     = datatype.
  ls_fieldcat-outputlen    = outputlen.
  ls_fieldcat-reptext_ddic = reptext_ddic.

  APPEND ls_fieldcat TO fieldcat.
ENDFORM.                    " APPEND_FIELDCAT

*&---------------------------------------------------------------------*
*&      Form  ALV_VARIANT_F4
*&---------------------------------------------------------------------*
*     Present the user with a list of display variants for this report
*----------------------------------------------------------------------*
*      <--P_PA_VARI  Display variant
*----------------------------------------------------------------------*
FORM alv_variant_f4 CHANGING pa_vari.
  alv_variant-report   = repid.
  alv_variant-username = sy-uname.
  CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
    EXPORTING
      is_variant = alv_variant
      i_save     = 'A'
    IMPORTING
      es_variant = alv_variant
    EXCEPTIONS
      OTHERS     = 1.

  pa_vari = alv_variant-variant.

ENDFORM.                    " ALV_VARIANT_F4

*&---------------------------------------------------------------------*
*&      Form  BUILD_LIST_S
*&---------------------------------------------------------------------*
*&    build the simple alv list
*&---------------------------------------------------------------------*
*&    p1 -->  itab = the table used to build the list
*&    p2 -->  tabname = the name of the table used to build the list
*&---------------------------------------------------------------------*
FORM  build_list_s "TABLES m_itab
                   USING  tabname.

* Set GUI status
  PERFORM alv_set_status.

* Set up column headings
  PERFORM alv_fieldcat USING fieldcat[].
* Set specific list layout options
  PERFORM alv_layout USING layout.
* change settings so statistics and sort options don't print on seperate
* page.
  PERFORM print_info USING printout.
* Generate the list
  CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
    EXPORTING
         i_callback_program       = repid     " report id
         i_callback_pf_status_set = 'STANDARD'   " gui status name
         i_callback_user_command  = 'USER_CMD'
* USER_CMD = name of form to trigger user selected buttons in pgm
         i_structure_name         = tabname
         is_layout                = layout       " format options
         is_print                 = printout
         it_fieldcat              = fieldcat[]   " columns for list
         i_save                   = 'A'          " allow variant save
         is_variant               = alv_variant  " displ variant struc
         it_events                = events[]     " event table
     TABLES
         t_outtab                 = i_data         " data table
     EXCEPTIONS
         program_error            = 1
         OTHERS                   = 2.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
         WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

ENDFORM.       " Build_List_s
*&---------------------------------------------------------------------*
*       Set GUI status for list display
*       Exclude specific icons
*----------------------------------------------------------------------*
FORM alv_set_status.
  REFRESH pf_extab.
  PERFORM pf_exclude USING:
       '&EB3',    " More reports icon
       '&ABC',    " ABC analysis icon
       '&XPA',    " Expand icon
       '&OMP',    " Collapse icon
       '&AQW'.   " MS Word icon
  SET PF-STATUS 'STANDARD' EXCLUDING pf_extab.
ENDFORM.                    " ALV_SET_STATUS

*&---------------------------------------------------------------------*
*&      Form  PF_EXCLUDE
*&---------------------------------------------------------------------*
*       Function codes to exclude from the GUI status
*----------------------------------------------------------------------*
FORM pf_exclude USING  p_fcode TYPE rsmpe-func.
  extab-fcode = p_fcode.
  APPEND extab TO pf_extab.
ENDFORM.                    " PF_EXCLUDE

*&---------------------------------------------------------------------*
*&      Form  USER_CMD
*&---------------------------------------------------------------------*
FORM user_cmd USING r_ucomm TYPE sy-ucomm
                         rs_selfield TYPE slis_selfield.
  DATA: refresh LIKE th_bool.    " refresh flag
  CASE r_ucomm.
    WHEN 'EXEC'.
      PERFORM process_select.

    WHEN '&IC1'.              " When the user clicks on a hotspot
* Display the document that the user clicks on in the basic list
      CHECK rs_selfield-tabindex > 0.
* Display Sales Order
      CLEAR: i_data.
      IF rs_selfield-fieldname = 'VBELN'.
        READ TABLE i_data INDEX rs_selfield-tabindex.
        SET PARAMETER ID 'AUN'  FIELD rs_selfield-value.
        CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
      ENDIF.

    WHEN 'REFR'.
      refresh = th_true.
  ENDCASE.

  IF refresh = th_true.
    PERFORM get_orders.
    PERFORM combine_data.
  ENDIF.
  rs_selfield-refresh = 'X'.
  rs_selfield-col_stable = 'X'.
  rs_selfield-row_stable = 'X'.

ENDFORM.         " USER_CMD

*&---------------------------------------------------------------------*
*&      Form  get_orders
*&---------------------------------------------------------------------*
FORM get_orders .
  REFRESH i_order.
  CLEAR i_order.
  PERFORM get_order_types.
  PERFORM check_orders.
ENDFORM.                    " get_orders

*&---------------------------------------------------------------------*
*&      Form  check_orders
*&---------------------------------------------------------------------*
FORM check_orders .

  SELECT a~vbeln a~kunnr a~knumv a~auart a~vkorg a~lifsk
         b~posnr b~matnr b~pmatn b~spart b~kwmeng b~erdat b~ernam
         b~vrkme b~mprok b~netwr b~waerk b~abgru
    FROM vbak AS a
      INNER JOIN vbap AS b
        ON a~vbeln = b~vbeln
      INNER JOIN vbup AS c
        ON a~vbeln = c~vbeln
        AND b~posnr = c~posnr
    APPENDING CORRESPONDING FIELDS OF TABLE i_order
    WHERE b~erdat IN xerdat
      AND a~vbeln IN xvbeln
      AND a~auart IN rauart
* hard code removal via check against Fribourg S.org range  "EPS Carve out
*     AND a~vkorg = 'STIN'                                  "EPS Carve out
      AND a~vkorg IN ra_sorg_fribourg                       "EPS Carve out
      and a~lifsk = 'ZC'
      AND c~fksta NE 'C'.

  IF sy-subrc = 0.
    LOOP AT i_order.
      IF xkunag IS NOT INITIAL.
        IF i_order-kunnr NOT IN xkunag.
          DELETE i_order.
          CONTINUE.
        ENDIF.
        CHECK i_order-kunnr IN xkunag.
      ENDIF.
* check for Ship To partner
      SELECT kunnr FROM vbpa
         UP TO 1 ROWS
         INTO i_order-kunwe
         WHERE vbeln EQ i_order-vbeln
           AND parvw EQ 'WE'.             " Ship-to partner
      ENDSELECT.
      IF sy-subrc = 0.
        SELECT SINGLE land1 FROM kna1
             INTO i_order-lanag
             WHERE kunnr EQ i_order-kunwe.
      ENDIF.
      MODIFY i_order.
    ENDLOOP.
  ENDIF.

ENDFORM.                    " check_orders
*&---------------------------------------------------------------------*
*&      Form  combine_data
*&---------------------------------------------------------------------*
FORM combine_data .
  x_data[] = i_data[].
  REFRESH i_data.
  CLEAR i_data.

  SORT i_order BY kunnr kunwe.

  LOOP AT i_order.
    CLEAR i_data.
    MOVE-CORRESPONDING i_order TO i_data.

    SELECT SINGLE pernr FROM  vbpa
           INTO i_data-pernr
           WHERE  vbeln  = i_order-vbeln
           AND    posnr  = '000000'
           AND    parvw  = 'Z2'
           AND    pernr  IN xpernr.
* start rrf20080307  Change so that if there is no Z2 on stock transfer order
* replace CSR number with order creator
    if i_data-pernr EQ space.
     select single pernr
              into (i_data-pernr) from pa0105
      where usrid = i_data-ernam
        and usrty = '0001'
        and endda = '99991231'.
   endif.
* end rrf20080307


    PERFORM get_block_text.

    APPEND i_data.
  ENDLOOP.

  PERFORM get_addn_data.

ENDFORM.                    " combine_data

*---------------------------------------------------------------------*
*       FORM CALL_TRANSACTION                                         *
*---------------------------------------------------------------------*
*  Perform call transaction and process returned messages             *
*---------------------------------------------------------------------*
*  -->  VALUE(TCODE)        - TRANSACTION CODE                        *
*---------------------------------------------------------------------*
FORM call_transaction USING    value(tcode).
  DATA: mode.                "mode for transaction call
  mode = p_mode.                    "Batch Transaction Mode

  CLEAR bdcmessages.
  REFRESH bdcmessages.

  CALL TRANSACTION tcode
    USING bdcdata MODE mode UPDATE 'S'
    MESSAGES INTO bdcmessages.

  retcode = sy-subrc.

  CLEAR output_tab.
  DELETE ADJACENT DUPLICATES FROM bdcmessages.
  LOOP AT bdcmessages.
    IF bdcmessages-msgtyp = 'E'.
      retcode = 4.  "Error actually occurred
    ENDIF.
    CALL FUNCTION 'MESSAGE_TEXT_BUILD'
      EXPORTING
        msgid               = bdcmessages-msgid  " Message ID
        msgnr               = bdcmessages-msgnr  " Message number
        msgv1               = bdcmessages-msgv1 " Message variable 1
        msgv2               = bdcmessages-msgv2 " Message variable 2
        msgv3               = bdcmessages-msgv3 " Message variable 3
        msgv4               = bdcmessages-msgv4 " Message variable 4
      IMPORTING
        message_text_output = output_tab-msg_text.
    output_tab-key_gross = header_tab-key_gross.
    APPEND output_tab.
  ENDLOOP.

ENDFORM.                               " CALL_TRANSACTION
*&---------------------------------------------------------------------*
*&      Form  order_approve
*&---------------------------------------------------------------------*
FORM order_approve.

  x_data[] = i_data[].

  LOOP AT x_data WHERE color NE space.

    PERFORM process_order.

  ENDLOOP.
ENDFORM.                    " order_approve

*----------------------------------------------------------------------*
*       FORM TRANSFER_DYNPRO                                           *
*----------------------------------------------------------------------*
* This form fills the BDC table.                                       *
*----------------------------------------------------------------------*
*  -->  PROGRAM  - Program name                                        *
*  -->  DYNPRO   - Screen number                                       *
*  -->  DYNBEGIN - New screen indicator                                *
*  -->  FNAM     - Field name                                          *
*  -->  FVAL     - Field value                                         *
*----------------------------------------------------------------------*
FORM transfer_dynpro USING program
                           dynpro
                           dynbegin
                           fnam
                           fval.

* Move the data to the BDC header line.
  MOVE: program   TO bdcdata-program,  " Program name.
        dynpro    TO bdcdata-dynpro,   " Screen number.
        dynbegin  TO bdcdata-dynbegin, " New screen indicator.
        fnam      TO bdcdata-fnam,     " Field name.
        fval      TO bdcdata-fval.     " Field value.

  APPEND bdcdata.                      " Add record to the BDC table.

  CLEAR bdcdata.                       " Clear the BDC header line.

ENDFORM.                    "transfer_dynpro

*&---------------------------------------------------------------------*
*&      Form  PROCESS_SELECT
*&---------------------------------------------------------------------*
*  Loop through the displayed list and process the selected records
*----------------------------------------------------------------------*
FORM process_select.
  x_data[] = i_data[].
  CLEAR: header_tab, output_tab.
  REFRESH: header_tab, output_tab.

  SORT x_data BY vbeln posnr.
  DELETE ADJACENT DUPLICATES FROM x_data COMPARING vbeln posnr.

  LOOP AT i_data WHERE checkbox = 'X'.
    header_tab-key_gross = header_tab-key_gross + 1.
    header_tab-vbeln = i_data-vbeln.
    header_tab-posnr = i_data-posnr.
    APPEND header_tab.
    x_data = i_data.
    PERFORM process_order.
* if the order involves multiple items and the user has
* selected all items, only one processing is required.
    LOOP AT i_data WHERE checkbox = 'X'
                    AND vbeln  = i_data-vbeln  " Order #
                    AND posnr  = i_data-posnr.
      CLEAR i_data-checkbox.
      MODIFY i_data.
    ENDLOOP.
  ENDLOOP.

  PERFORM show_log.

ENDFORM.                    " PROCESS_SELECT
*&---------------------------------------------------------------------*
*&      Form  process_order
*&---------------------------------------------------------------------*
FORM process_order .

  CLEAR bdcdata.
  REFRESH bdcdata.

  PERFORM transfer_dynpro USING:
    'SAPMV45A' '0102' 'X' 'VBAK-VBELN'  x_data-vbeln, "Order
    ' '        ' '    ' ' 'BDC_OKCODE'  '/00', "Enter
    'SAPMV45A' '4001' 'X' 'BDC_OKCODE'  '=KDE2', "Goto->Header->Shipping
    'SAPMV45A' '4002' 'X' 'BDC_OKCODE'  '=SICH', "Save
    '        ' '    ' ' ' 'VBAK-LIFSK'  ' '. "Delivery block

  CLEAR retcode.

  PERFORM call_transaction USING 'VA02'.

** Set the appropriate colors.
* COLOR is a 4 char field where
* 1st char is C (color property)
* 2nd char is color code from 0 - 7
*      0 = background color
*      1 = blue
*      2 = grey
*      3 = yellow
*      4 = blue/grey
*      5 = green
*      6 = red
*      7 = orange
* 3rd char is intensified (0=off, 1=on)
* 4th char is inverse display  (0=off, 1=on)
  LOOP AT i_data WHERE vbeln = x_data-vbeln
                   AND posnr = x_data-posnr.
    CASE retcode.
      WHEN 0.
        MOVE text-038 TO i_data-result.
        i_data-color = 'C5'.
      WHEN OTHERS.
        MOVE text-039 TO i_data-result.
        i_data-color = 'C6'.
    ENDCASE.
    MODIFY i_data.
  ENDLOOP.

ENDFORM.                    " process_order

*&---------------------------------------------------------------------*
*&      Form  SHOW_LOG
*& (Copied from FI_BYPASS_COMPARE - FORM PRINT_LOG)
*&---------------------------------------------------------------------*
*   Pop up screen to display activity log.
*----------------------------------------------------------------------*
FORM show_log.
  TYPE-POOLS slis .
* feldbeschreibung production record estimate= 000000020
* as of 2001.12.06
* record size=        696  , total bytes=     13,920
* KB=                    13.59 ,MB=                     0.01
  DATA: feldbeschreibung TYPE slis_fieldcat_alv OCCURS 20 "field catalog
            WITH HEADER LINE.
  DATA: fremd_tabelle TYPE slis_keyinfo_alv.  "key info
  DATA: layout TYPE slis_layout_alv.          "layout

  CLEAR feldbeschreibung.
  feldbeschreibung-fieldname            'VBELN'.
  feldbeschreibung-ref_tabname          'VBAP'.
  feldbeschreibung-tabname              'HEADER_TAB'.
  APPEND feldbeschreibung.

  CLEAR feldbeschreibung.
  feldbeschreibung-fieldname            'POSNR'.
  feldbeschreibung-ref_tabname          'VBAP'.
  feldbeschreibung-tabname              'HEADER_TAB'.
  APPEND feldbeschreibung.

  CLEAR feldbeschreibung.
  feldbeschreibung-fieldname            'MSG_TEXT'.    "Message text.
  feldbeschreibung-outputlen            =   120.
  feldbeschreibung-datatype             'CHAR'.
  feldbeschreibung-tabname              'OUTPUT_TAB'.
  APPEND feldbeschreibung.

*   Foreign table
  fremd_tabelle-header01 = 'KEY_GROSS'.
  fremd_tabelle-item01   = 'KEY_GROSS'.

*   Determine Layout
  layout-expand_fieldname = 'TECH'.
  layout-expand_all = 'X'.    " Expand all
  layout-zebra = 'X'.

  CONCATENATE sy-title text-012 INTO layout-window_titlebar.

  CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
    EXPORTING
      i_callback_program    = repid
      is_layout             = layout
      it_fieldcat           = feldbeschreibung[]
      i_tabname_header      = 'HEADER_TAB'
      i_tabname_item        = 'OUTPUT_TAB'
      is_keyinfo            = fremd_tabelle
      i_screen_start_column = 5
      i_screen_start_line   = 5
      i_screen_end_column   = 132
      i_screen_end_line     = 30
    TABLES
      t_outtab_header       = header_tab[]
      t_outtab_item         = output_tab[]
    EXCEPTIONS
      program_error         = 1
      OTHERS                = 2.
  IF sy-subrc <> 0.
  ENDIF.

ENDFORM.                    " SHOW_LOG
*&---------------------------------------------------------------------*
*&      Form  get_addn_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM get_addn_data .

* find material description
  x_data[] = i_data[].
  SORT x_data BY matnr.
  DELETE ADJACENT DUPLICATES FROM x_data COMPARING matnr.
  REFRESH xmarav.
  DESCRIBE TABLE x_data LINES count1.
  IF count1 NE 0.
    SELECT matnr spras maktx
      FROM marav
      INTO CORRESPONDING FIELDS OF TABLE xmarav             "index 0
      FOR ALL ENTRIES IN x_data
      WHERE spras = sy-langu
        AND matnr = x_data-matnr.
* make sure at least one description ahs been found for each material
    SELECT matnr spras maktx
     FROM marav
     APPENDING CORRESPONDING FIELDS OF TABLE xmarav         "index 0
     FOR ALL ENTRIES IN x_data
     WHERE spras = 'EN'
       AND matnr = x_data-matnr.

    SORT xmarav BY matnr.
  ENDIF.

* Find Sold-To, Ship-To and CSR partners
  x_data[] = i_data[].
  SORT x_data BY vbeln.
  DELETE ADJACENT DUPLICATES FROM x_data COMPARING vbeln.
  REFRESH xvbpa.
  DESCRIBE TABLE x_data LINES count1.
  IF count1 NE 0.
    SELECT vbeln posnr parvw pernr kunnr
      FROM vbpa                          "Sales Document: Partner
      APPENDING CORRESPONDING FIELDS OF TABLE xvbpa
        FOR ALL ENTRIES IN x_data
      WHERE vbeln x_data-vbeln             "Sales document
        AND parvw IN rparvw.             "Partner func ID
    IF sy-subrc = 0.

      PERFORM get_csr_info.
      REFRESH i_kna1.
      PERFORM get_agwe_info USING 'AG'.
      PERFORM get_agwe_info USING 'WE'.

      SORT xvbpa BY vbeln posnr parvw.
      SORT i_kna1 BY kunnr.
      SORT xmarav BY spras matnr.
    ENDIF.
  ENDIF.

* Find Created By names.
  PERFORM get_created_by.

  x_data[] = i_data[].
sort i_data by vbeln.
  delete adjacent duplicates from i_data comparing vbeln.

  LOOP AT i_data.
* Total net value and ordered quantity.
    clear: i_data-netwr, i_data-kwmeng.
    loop at x_data where vbeln = i_data-vbeln.
      i_data-netwr = i_data-netwr + x_data-netwr.
      i_data-kwmeng = i_data-kwmeng + x_data-kwmeng.
    endloop.
* Load material description
    READ TABLE xmarav WITH KEY spras = sy-langu
                               matnr = i_data-matnr BINARY SEARCH.
    IF sy-subrc = 0.
      WRITE xmarav-maktx TO i_data-maktx.
    ELSE.
      READ TABLE xmarav WITH KEY spras = 'EN'
                                 matnr = i_data-matnr BINARY SEARCH.
      IF sy-subrc = 0.
        WRITE xmarav-maktx TO i_data-maktx.
      ENDIF.
    ENDIF.

* load CSR name
    READ TABLE i_knvp WITH KEY pernr = i_data-pernr.
    IF sy-subrc = 0.
      i_data-ename = i_knvp-ename.
* start rrf20080307  Change so that if there is no Z2 on stock transfer order
* replace CSR name with order creator userid
    else.
      i_data-ename = i_data-ernam.
    ENDIF.
* end rrf20080307

* load Sold To Name
    READ TABLE i_kna1 WITH KEY kunnr = i_data-kunnr.
    IF sy-subrc = 0.
      i_data-namag = i_kna1-name1.
      i_data-ortag = i_kna1-ort01.
      i_data-regag = i_kna1-regio.
    ENDIF.

* load Ship-To name, city, state
    READ TABLE i_kna1 WITH KEY kunnr = i_data-kunwe.
    IF sy-subrc = 0.
      i_data-namwe = i_kna1-name1.
      i_data-ortwe = i_kna1-ort01.
      i_data-regwe = i_kna1-regio.
      i_data-lanwe = i_kna1-land1.
    ENDIF.

* Load Created By name
    READ TABLE i_cnam WITH KEY ernam = i_data-ernam.
    IF sy-subrc = 0.
      i_data-cname = i_cnam-cname.
    ENDIF.

    MODIFY i_data.

  ENDLOOP.

ENDFORM.                    " get_addn_data
*&---------------------------------------------------------------------*
*&      Form  get_Csr_info
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM get_csr_info .
  tvbpa[] = xvbpa[].
  REFRESH i_knvp.

  DELETE tvbpa WHERE parvw NE 'Z2'.
  SORT tvbpa BY pernr.
  DELETE ADJACENT DUPLICATES FROM tvbpa COMPARING pernr.

  LOOP AT tvbpa.
    SELECT pernr ename endda
      UP TO 1 ROWS
      INTO CORRESPONDING FIELDS OF i_knvp                   "index 0
      FROM pa0001
      WHERE pernr EQ tvbpa-pernr
      ORDER BY endda DESCENDING.
      APPEND i_knvp.
    ENDSELECT.
  ENDLOOP.


ENDFORM.                    " get_Csr_info

*&---------------------------------------------------------------------*
*&      Form  get_agwe_info
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM get_agwe_info USING p_parvw.
  tvbpa[] = xvbpa[].

  DELETE tvbpa WHERE parvw NE p_parvw.
  SORT tvbpa BY kunnr.
  DELETE ADJACENT DUPLICATES FROM tvbpa COMPARING kunnr.
  DESCRIBE TABLE tvbpa LINES count1.
  IF count1 NE 0.
    SELECT kunnr name1 ort01 regio land1 FROM kna1
         APPENDING CORRESPONDING FIELDS OF TABLE i_kna1
         FOR ALL ENTRIES IN tvbpa
         WHERE kunnr EQ tvbpa-kunnr.

  ENDIF.

ENDFORM.                    " get_agwe_info

*&---------------------------------------------------------------------*
*&      Form  PRINT_INFO
*&---------------------------------------------------------------------*
* This form sets the indicators so that the sort and statistics page   *
* don't print.                                                         *
*----------------------------------------------------------------------*
*      -->PRINTOUT  Layout
*----------------------------------------------------------------------*
FORM print_info USING printout TYPE slis_print_alv.
  printout-no_print_listinfos = 'X'.
  printout-no_coverpage = 'X'.
  printout-no_print_selinfos = 'X'.

ENDFORM.                    " PRINT_INFO
*&---------------------------------------------------------------------*
*&      Form  get_created_by
*&---------------------------------------------------------------------*
FORM get_created_by .
  CLEAR i_cnam.
  REFRESH i_cnam.

  x_data[] = i_data[].
  SORT x_data BY ernam.
  DELETE ADJACENT DUPLICATES FROM x_data COMPARING ernam.

  DATA : l_add TYPE addr3_val,   " structure for address data
         l_usr03 TYPE usr03.     " structure for other user data

  LOOP AT x_data.
* get the NOVA user's address first.
    CALL FUNCTION 'SUSR_USER_ADDRESS_READ'
      EXPORTING
        user_name              = x_data-ernam
      IMPORTING
        user_address           = l_add
        user_usr03             = l_usr03
      EXCEPTIONS
        user_address_not_found = 1
        OTHERS                 = 2.
    IF sy-subrc = 0.
      i_cnam-ernam = x_data-ernam.
      CONCATENATE l_usr03-name1 l_usr03-name2 INTO i_cnam-cname
        SEPARATED BY space.
      APPEND i_cnam.
    ENDIF.

  ENDLOOP.

  SORT i_cnam BY ernam.

ENDFORM.                    " get_created_by
*&---------------------------------------------------------------------*
*&      Form  get_order_types
*&---------------------------------------------------------------------*
FORM get_order_types .

  REFRESH rauart.
  CLEAR rauart.

  SELECT valfrom FROM setleaf
     INTO CORRESPONDING FIELDS OF setleaf
     WHERE setclass = '0000'
       AND setname = 'ZSD_ORDER_APPROVAL'.
    MOVE: 'EQ' TO rauart-option,
         'I'  TO rauart-sign.
    rauart-low = setleaf-valfrom.
    APPEND rauart.
  ENDSELECT.
  IF sy-subrc NE 0.
    MOVE: 'EQ' TO rauart-option,
         'I'  TO rauart-sign.
    rauart-low = 'ZIOR'.
    APPEND rauart.
  ENDIF.
ENDFORM.                    " get_order_types

*&---------------------------------------------------------------------*
*&      Form  get_block_text
*&---------------------------------------------------------------------*
form get_block_text .
*Get Order Reason for Delivery Block text
  read table itvlst with key lifsp = i_data-lifsk
                             binary search.
  if sy-subrc = 0.
    i_data-vtext = itvlst-vtext.
  else.
    select single vtext from tvlst
                  into i_data-vtext
                  where spras = sy-langu
                  and   lifsp = i_data-lifsk.
    itvlst-vtext = i_data-vtext.
    itvlst-lifsp = i_data-lifsk.
    append itvlst.
    sort itvlst by lifsp.
  endif.

endform.                    " get_block_text

INCLUDE zca_constants_form.          "sysId constants forms "EPS Carve out

Read only

0 Likes
898

This message was moderated.

Read only

0 Likes
898

Ravi, there are some standard demo programs and they give an insight into many features of ALV.

Please look into BCALV_GRID_01- this has an example of ALV on a container.