<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: table join in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/table-join/m-p/2467807#M554385</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Here is the program for  linking  of  all 3 tables  in alv ...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;REPORT Z_LIST_MATERIALS.

TYPE-POOLS: SLIS.
TABLES:MARC, MARD, VBAP, LIPS, EKPO, VBFA, EKBE, MARM, VBBE, MARA, MBEW.

SELECTION-SCREEN BEGIN OF BLOCK SEL WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS: S_WERKS FOR MARC-WERKS, " Plant
               S_MATNR FOR MARC-MATNR, " Material
               S_MTART FOR MARA-MTART. " Material Type SELECTION-SCREEN END OF BLOCK SEL.
PARAMETERS: P_VARI LIKE DISVARIANT-VARIANT. " ALV Variant

CONSTANTS: FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'.

DATA: BEGIN OF INV OCCURS 100,
       WERKS LIKE MARD-WERKS, " Plant
       MATNR LIKE MARD-MATNR, " Material
       MTART LIKE MARA-MTART, " Material Type
       STPRS LIKE MBEW-STPRS, " Standard Price
       AVAIL LIKE MARD-LABST, " Available
       LABST LIKE MARD-LABST, " Unrestricted use
       INSME LIKE MARD-INSME, " Quality Inspection
       RETME LIKE MARD-RETME, " Returns
       TRANS LIKE MARC-UMLMC, " Stock in transit (calculated)
       UMLMC LIKE MARC-UMLMC, " Stock Transfer (plant)
       UMLME LIKE MARD-UMLME, " Transfer (SLoc)
       WESBS LIKE EKBE-WESBS, " GR Blocked Stock
       TRAME LIKE MARC-TRAME, " Stock in transit
       SPEME LIKE MARD-SPEME, " Blocked
       KWMENG LIKE VBAP-KWMENG, " Sales orders
       LFIMG LIKE LIPS-LFIMG, " Scheduled for Delivery
       MENGE LIKE EKPO-MENGE, " Open Purch. Orders
       VALUE LIKE MBEW-SALK3, " Stock Value (Calculated)
       MEINS LIKE MARA-MEINS, " Unit of measure
     END OF INV.

DATA: FIELDTAB TYPE SLIS_T_FIELDCAT_ALV,
     HEADING  TYPE SLIS_T_LISTHEADER,
     LAYOUT   TYPE SLIS_LAYOUT_ALV,
     EVENTS   TYPE SLIS_T_EVENT,
     REPNAME  LIKE SY-REPID,
     F2CODE   LIKE SY-UCOMM VALUE  '&amp;amp;ETA',
     G_SAVE(1) TYPE C,
     G_EXIT(1) TYPE C,
     G_VARIANT LIKE DISVARIANT,
     GX_VARIANT LIKE DISVARIANT.

INITIALIZATION.
 REPNAME = SY-REPID.
 PERFORM INITIALIZE_FIELDCAT USING FIELDTAB[].
 PERFORM BUILD_EVENTTAB USING EVENTS[].
 PERFORM BUILD_COMMENT USING HEADING[].
 PERFORM INITIALIZE_VARIANT.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_VARI.
 PERFORM F4_FOR_VARIANT.

AT SELECTION-SCREEN.
 PERFORM PAI_OF_SELECTION_SCREEN.

START-OF-SELECTION.
 PERFORM GET_MARD.
 PERFORM GET_UNIT_OF_MEASURE.
 PERFORM GET_MARC.
 PERFORM GET_EKPO.
 PERFORM GET_LIPS.
 PERFORM GET_VBAP.
 PERFORM GET_OPEN.
 PERFORM GET_PRICE.

END-OF-SELECTION.

 PERFORM BUILD_LAYOUT USING LAYOUT.
 PERFORM WRITE_OUTPUT.


*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  INITIALIZE_FIELDCAT
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      --&amp;gt;P_FIELDTAB[]  text                                           *
*----------------------------------------------------------------------*
FORM INITIALIZE_FIELDCAT USING P_FIELDTAB TYPE SLIS_T_FIELDCAT_ALV.
 DATA: L_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
* fixed columns (obligatory)
 CLEAR L_FIELDCAT.
 L_FIELDCAT-TABNAME    = 'INV'.
 L_FIELDCAT-FIX_COLUMN = 'X'.
 L_FIELDCAT-NO_OUT     = 'O'.
 L_FIELDCAT-FIELDNAME  = 'WERKS'.
 APPEND L_FIELDCAT TO P_FIELDTAB.
 L_FIELDCAT-FIELDNAME  = 'MATNR'.
 APPEND L_FIELDCAT TO P_FIELDTAB.

* totalized columns
 CLEAR L_FIELDCAT.
 L_FIELDCAT-TABNAME   = 'INV'.
 L_FIELDCAT-SP_GROUP  = 'A'.
 L_FIELDCAT-DO_SUM    = 'X'.
 L_FIELDCAT-FIELDNAME = 'LABST'.
 APPEND L_FIELDCAT TO P_FIELDTAB.
 L_FIELDCAT-FIELDNAME = 'INSME'.
 APPEND L_FIELDCAT TO P_FIELDTAB.
 L_FIELDCAT-FIELDNAME = 'RETME'.
 APPEND L_FIELDCAT TO P_FIELDTAB.
 L_FIELDCAT-FIELDNAME = 'UMLME'.
 APPEND L_FIELDCAT TO P_FIELDTAB.
 L_FIELDCAT-FIELDNAME = 'WESBS'.
 APPEND L_FIELDCAT TO P_FIELDTAB.
 L_FIELDCAT-FIELDNAME = 'SPEME'.
 APPEND L_FIELDCAT TO P_FIELDTAB.
* columns with different description
 L_FIELDCAT-FIELDNAME = 'KWMENG'.
 L_FIELDCAT-SELTEXT_M = 'Sales Orders'.
 L_FIELDCAT-SELTEXT_S = 'Sales Or'.
 L_FIELDCAT-SELTEXT_L = 'Sales Orders Qty'.
 APPEND L_FIELDCAT TO P_FIELDTAB.
 L_FIELDCAT-FIELDNAME = 'LFIMG'.
 L_FIELDCAT-SELTEXT_M = 'Sched. Delivery'.
 L_FIELDCAT-SELTEXT_S = 'Schd. Del'.
 L_FIELDCAT-SELTEXT_L = 'Scheduled for Delivery'.
 APPEND L_FIELDCAT TO P_FIELDTAB.
 L_FIELDCAT-FIELDNAME = 'TRANS'.
 L_FIELDCAT-SELTEXT_M = 'Stk. in transit'.
 L_FIELDCAT-SELTEXT_S = 'Stk. trns'.
 L_FIELDCAT-SELTEXT_L = 'Stock in transit (sum)'.
 APPEND L_FIELDCAT TO P_FIELDTAB.
 L_FIELDCAT-FIELDNAME = 'AVAIL'.
 L_FIELDCAT-SELTEXT_M = 'Available'.
 L_FIELDCAT-SELTEXT_S = 'Avail.'.
 L_FIELDCAT-SELTEXT_L = 'Stock Available'.
 APPEND L_FIELDCAT TO P_FIELDTAB.
 L_FIELDCAT-FIELDNAME = 'MENGE'.
 L_FIELDCAT-SELTEXT_M = 'Open Orders'.
 L_FIELDCAT-SELTEXT_S = 'Open Ord'.
 L_FIELDCAT-SELTEXT_L = 'Open Purchase Orders'.
 APPEND L_FIELDCAT TO P_FIELDTAB.

* columns not displayed
 CLEAR L_FIELDCAT.
 L_FIELDCAT-TABNAME   = 'INV'.
 L_FIELDCAT-SP_GROUP  = 'A'.
 L_FIELDCAT-NO_OUT    = 'X'.
 L_FIELDCAT-FIELDNAME = 'MEINS'.
 APPEND L_FIELDCAT TO P_FIELDTAB.
 L_FIELDCAT-FIELDNAME = 'UMLMC'.
 APPEND L_FIELDCAT TO P_FIELDTAB.
 L_FIELDCAT-FIELDNAME = 'TRAME'.
 APPEND L_FIELDCAT TO P_FIELDTAB.
 L_FIELDCAT-FIELDNAME = 'STPRS'.
 APPEND L_FIELDCAT TO P_FIELDTAB.
 L_FIELDCAT-FIELDNAME = 'VALUE'.
 APPEND L_FIELDCAT TO P_FIELDTAB.
ENDFORM.                               " INITIALIZE_FIELDCAT

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  BUILD_EVENTTAB
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      --&amp;gt;P_EVENTS[]  text                                             *
*----------------------------------------------------------------------*
FORM BUILD_EVENTTAB USING P_EVENTS TYPE SLIS_T_EVENT.
 DATA: LS_EVENT TYPE SLIS_ALV_EVENT.
 CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
      EXPORTING
           I_LIST_TYPE = 0
      IMPORTING
           ET_EVENTS   = P_EVENTS.
 READ TABLE P_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_PAGE
                          INTO LS_EVENT.
 IF SY-SUBRC = 0.
   MOVE FORMNAME_TOP_OF_PAGE TO LS_EVENT-FORM.
   APPEND LS_EVENT TO P_EVENTS.
 ENDIF.
ENDFORM.                               " BUILD_EVENTTAB

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  BUILD_COMMENT
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      --&amp;gt;P_HEADING[]  text                                            *
*----------------------------------------------------------------------*
FORM BUILD_COMMENT USING P_HEADING TYPE SLIS_T_LISTHEADER.
 DATA: HLINE TYPE SLIS_LISTHEADER,
       TEXT(60) TYPE C,
       SEP(20) TYPE C.
 CLEAR: HLINE, TEXT.
 HLINE-TYP  = 'H'.
 WRITE: TEXT-101 TO TEXT+23.
 HLINE-INFO = TEXT.
 APPEND HLINE TO P_HEADING.
 CLEAR TEXT.
 WRITE: 'User: ' TO TEXT,
        SY-UNAME TO TEXT+6,
        'Date: ' TO TEXT+25,
        SY-DATUM TO TEXT+31,
        'Page: ' TO TEXT+50,
        SY-PAGNO TO TEXT+56.
 HLINE-INFO = TEXT.
 APPEND HLINE TO P_HEADING.



ENDFORM.                    " BUILD_COMMENT

*---------------------------------------------------------------------*
*       FORM TOP_OF_PAGE                                              *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
FORM TOP_OF_PAGE.
 CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
      EXPORTING
           IT_LIST_COMMENTARY = HEADING.
ENDFORM.
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  INITIALIZE_VARIANT
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM INITIALIZE_VARIANT.
 G_SAVE = 'A'.
 CLEAR G_VARIANT.
 G_VARIANT-REPORT = REPNAME.
 GX_VARIANT = G_VARIANT.
 CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
      EXPORTING
           I_SAVE     = G_SAVE
      CHANGING
           CS_VARIANT = GX_VARIANT
      EXCEPTIONS
           NOT_FOUND  = 2.
 IF SY-SUBRC = 0.
   P_VARI = GX_VARIANT-VARIANT.
 ENDIF.
ENDFORM.                               " INITIALIZE_VARIANT

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  F4_FOR_VARIANT
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM F4_FOR_VARIANT.
 CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
      EXPORTING
           IS_VARIANT = G_VARIANT
           I_SAVE     = G_SAVE
      IMPORTING
           E_EXIT     = G_EXIT
           ES_VARIANT = GX_VARIANT
      EXCEPTIONS
           NOT_FOUND  = 2.
 IF SY-SUBRC = 2.
   MESSAGE ID SY-MSGID TYPE 'S'      NUMBER SY-MSGNO
           WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
 ELSE.
   IF G_EXIT = SPACE.
     P_VARI = GX_VARIANT-VARIANT.
   ENDIF.
 ENDIF.
ENDFORM.                               " F4_FOR_VARIANT

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  PAI_OF_SELECTION_SCREEN
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM PAI_OF_SELECTION_SCREEN.
*
 IF NOT P_VARI IS INITIAL.
   MOVE G_VARIANT TO GX_VARIANT.
   MOVE P_VARI TO GX_VARIANT-VARIANT.
   CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
        EXPORTING
             I_SAVE     = G_SAVE
        CHANGING
             CS_VARIANT = GX_VARIANT.
   G_VARIANT = GX_VARIANT.
 ELSE.
   PERFORM INITIALIZE_VARIANT.
 ENDIF.
ENDFORM.                               " PAI_OF_SELECTION_SCREEN


*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  GET_MARD
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM GET_MARD.
 SELECT MATNR WERKS LABST INSME RETME UMLME SPEME
        FROM MARD
        INTO CORRESPONDING FIELDS OF INV
        WHERE MATNR IN S_MATNR
        AND   WERKS IN S_WERKS.
   COLLECT INV.
 ENDSELECT.
 PERFORM FILTER_BY_MATERIAL_TYPE.
ENDFORM.                               " GET_MARD

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  FILTER_BY_MATERIAL_TYPE
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM FILTER_BY_MATERIAL_TYPE.
 LOOP AT INV.
   CLEAR INV-MTART.
   SELECT SINGLE MTART
          INTO INV-MTART
          FROM MARA
          WHERE MATNR EQ INV-MATNR
          AND   MTART IN S_MTART.
   IF SY-SUBRC EQ 0.
     MODIFY INV.
   ELSE.
     DELETE INV.
   ENDIF.
 ENDLOOP.
ENDFORM.                    " FILTER_BY_MATERIAL_TYPE

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  GET_MARC
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM GET_MARC.
 LOOP AT INV.
   SELECT SINGLE UMLMC TRAME
          FROM MARC
          INTO CORRESPONDING FIELDS OF INV
          WHERE MATNR EQ INV-MATNR
          AND   WERKS EQ INV-WERKS.
   IF SY-SUBRC EQ 0.
     INV-TRANS = INV-UMLMC + INV-TRAME.
     MODIFY INV.
   ENDIF.
 ENDLOOP.
ENDFORM.                               " GET_MARC
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  GET_EKPO
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM GET_EKPO.
 DATA: WESBS LIKE INV-WESBS,
       SHKZG LIKE EKBE-SHKZG,
       MEINS LIKE EKPO-MEINS,
       LMEIN LIKE EKPO-LMEIN.
 LOOP AT INV.
   CLEAR: WESBS, SHKZG, MEINS, LMEIN.
   SELECT YWESBS YSHKZG XMEINS XLMEIN
          INTO (WESBS, SHKZG, MEINS, LMEIN)
          FROM EKPO AS X JOIN EKBE AS Y
          ON   XEBELN = YEBELN
          AND  XEBELP = YEBELP
          WHERE XMATNR EQ INV-MATNR
          AND   XWERKS EQ INV-WERKS
          AND   XLOEKZ NE 'L'.
     IF SHKZG EQ 'H'.
       MULTIPLY WESBS BY -1.
     ENDIF.
     IF MEINS NE LMEIN.
       PERFORM CONVERT_UNIT_OF_MEASURE CHANGING INV-MATNR MEINS WESBS.
     ENDIF.
     ADD WESBS TO INV-WESBS.
   ENDSELECT.
   MODIFY INV.
 ENDLOOP.
ENDFORM.                               " GET_EKPO
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  GET_LIPS
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM GET_LIPS.
 DATA: LFIMG LIKE INV-LFIMG.
 LOOP AT INV.
   CLEAR: LFIMG, INV-LFIMG.
   SELECT OMENG
          INTO LFIMG
          FROM VBBE
          WHERE MATNR EQ INV-MATNR
          AND   WERKS EQ INV-WERKS
          AND   VBTYP EQ 'J'.
     ADD LFIMG TO INV-LFIMG.
   ENDSELECT.
   MODIFY INV.
 ENDLOOP.
ENDFORM.                               " GET_LIPS
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  GET_VBAP
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM GET_VBAP.
 DATA: KWMENG LIKE INV-KWMENG.
 LOOP AT INV.
   CLEAR: KWMENG, INV-KWMENG.
   SELECT OMENG
          INTO KWMENG
          FROM VBBE
          WHERE MATNR EQ INV-MATNR
          AND   WERKS EQ INV-WERKS
          AND   VBTYP EQ 'C'.
     ADD KWMENG TO INV-KWMENG.
   ENDSELECT.
   INV-AVAIL = INV-LABST - INV-INSME - INV-KWMENG - INV-LFIMG.
   MODIFY INV.
 ENDLOOP.
ENDFORM.                               " GET_VBAP

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  GET_UNIT_OF_MEASURE
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&amp;gt;  p1        text
*  &amp;lt;--  p2        text
*----------------------------------------------------------------------*
FORM GET_UNIT_OF_MEASURE.
 LOOP AT INV.
   SELECT SINGLE MEINS
          FROM MARA
          INTO INV-MEINS
          WHERE MATNR EQ INV-MATNR.
   MODIFY INV.
 ENDLOOP.
ENDFORM.                               " GET_UNIT_OF_MEASURE

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  GET_OPEN
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM GET_OPEN.
 DATA: BEGIN OF XTAB OCCURS 10,       " Open orders table
          WERKS LIKE EKPO-WERKS,
          LGORT LIKE EKPO-LGORT,
          MATNR LIKE EKPO-MATNR,
          MENGE LIKE EKPO-MENGE,
          MENGK LIKE EKPO-MENGE,
        END OF XTAB.
 RANGES: L_WERKS FOR MARD-WERKS.

 LOOP AT INV.
   REFRESH XTAB.
   CLEAR: XTAB, L_WERKS.
   MOVE INV-WERKS TO L_WERKS-LOW.
   CALL FUNCTION 'MB_ADD_PURCHASE_ORDER_QUANTITY'
        EXPORTING
             X_MATNR = INV-MATNR
             X_MEINS = INV-MEINS
             X_ELIKZ = SPACE
             X_LOEKZ = SPACE
        TABLES
             XTAB    = XTAB
             XWERKS  = L_WERKS.
   MOVE XTAB-MENGE TO INV-MENGE.
   MODIFY INV.
 ENDLOOP.
ENDFORM.                               " GET_OPEN

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  GET_PRICE
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM GET_PRICE.
 LOOP AT INV.
   SELECT SINGLE STPRS
          FROM MBEW
          INTO INV-STPRS
          WHERE MATNR EQ INV-MATNR
          AND   BWKEY EQ INV-WERKS
          AND   BWTAR EQ SPACE.
     IF SY-SUBRC EQ 0.
       INV-VALUE = INV-STPRS *
                 ( INV-LABST + INV-INSME + INV-TRANS + INV-SPEME ).
       MODIFY INV.
     ENDIF.
 ENDLOOP.
ENDFORM.                    " GET_PRICE

*---------------------------------------------------------------------*
*       FORM CONVERT_UNIT_OF_MEASURE                                  *
*---------------------------------------------------------------------*
*       text                                                          *
*---------------------------------------------------------------------*
*  --&amp;gt;  P_MATNR                                                       *
*  --&amp;gt;  P_VRKME                                                       *
*  --&amp;gt;  P_QUANT                                                       *
*---------------------------------------------------------------------*
FORM CONVERT_UNIT_OF_MEASURE USING P_MATNR P_VRKME P_QUANT.
 DATA: UMREZ LIKE MARM-UMREZ,
       UMREN LIKE MARM-UMREN.
 SELECT SINGLE UMREZ UMREN
        INTO (UMREZ, UMREN)
        FROM MARM
        WHERE MATNR EQ P_MATNR
        AND   MEINH EQ P_VRKME.
 IF SY-SUBRC EQ 0.
   COMPUTE P_QUANT = ( P_QUANT * UMREZ ) / UMREN.
 ENDIF.
ENDFORM.

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  BUILD_LAYOUT
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      --&amp;gt;P_LAYOUT  text                                               *
*----------------------------------------------------------------------*
FORM BUILD_LAYOUT USING P_LAYOUT TYPE SLIS_LAYOUT_ALV.
 P_LAYOUT-F2CODE       = F2CODE.
 P_LAYOUT-ZEBRA        = 'X'.
 P_LAYOUT-DETAIL_POPUP = 'X'.
ENDFORM.                               " BUILD_LAYOUT

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  WRITE_OUTPUT
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM WRITE_OUTPUT.
 SORT INV BY WERKS MATNR.
 CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
      EXPORTING
           I_PROGRAM_NAME     = REPNAME
           I_INTERNAL_TABNAME = 'INV'
           I_INCLNAME         = REPNAME
      CHANGING
           CT_FIELDCAT        = FIELDTAB.
 IF SY-SUBRC &amp;lt;&amp;gt; 0.
   WRITE: 'SY-SUBRC: ', SY-SUBRC, 'REUSE_ALV_FIELDCATALOG_MERGE'.  ENDIF.  CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
      EXPORTING
           I_CALLBACK_PROGRAM = REPNAME
           I_STRUCTURE_NAME   = 'INV'
           IS_LAYOUT          = LAYOUT
           IT_FIELDCAT        = FIELDTAB
           I_DEFAULT          = 'A'
           I_SAVE             = G_SAVE
           IS_VARIANT         = G_VARIANT
           IT_EVENTS          = EVENTS[]
      TABLES
           T_OUTTAB           = INV.
 IF SY-SUBRC &amp;lt;&amp;gt; 0.
   WRITE: 'SY-SUBRC: ', SY-SUBRC, 'REUSE_ALV_LIST_DISPLAY'.  ENDIF.
ENDFORM.                               " WRITE_OUTPUT
&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;reward  points if it is usefull ....&lt;/P&gt;&lt;P&gt;Girish&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 04 Jul 2007 11:31:57 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2007-07-04T11:31:57Z</dc:date>
    <item>
      <title>table join</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/table-join/m-p/2467802#M554380</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hello experts,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;i am working on report.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;the problem is i want to join ekpo and likp/lips tables together.....&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;how it will be connected..&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;any suggestion????&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 04 Jul 2007 11:15:46 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/table-join/m-p/2467802#M554380</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-07-04T11:15:46Z</dc:date>
    </item>
    <item>
      <title>Re: table join</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/table-join/m-p/2467803#M554381</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;i think lips has fields VGBEL &amp;amp; VGPOS that correspond to vbeln &amp;amp; posnr of ekpo or vbpa.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;please check if it works.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Reward if useful.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Message was edited by: &lt;/P&gt;&lt;P&gt;        Mayank Agarwal&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 04 Jul 2007 11:19:53 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/table-join/m-p/2467803#M554381</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-07-04T11:19:53Z</dc:date>
    </item>
    <item>
      <title>Re: table join</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/table-join/m-p/2467804#M554382</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;u can also fetch the details from VBFA table.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Fetch this table with the following keys-&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;preceding document number will be vbeln&lt;/P&gt;&lt;P&gt;preceding document type will be type of purchase order&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;succeding document type will be type of Delivery.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Try if it works.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Reward points if helpful&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 04 Jul 2007 11:23:01 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/table-join/m-p/2467804#M554382</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-07-04T11:23:01Z</dc:date>
    </item>
    <item>
      <title>Re: table join</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/table-join/m-p/2467805#M554383</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;just refer to these&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;lt;b&amp;gt;LIPS( SO: Delv Item )&amp;lt;/b&amp;gt;&lt;/P&gt;&lt;P&gt;VBELN	Delivery&lt;/P&gt;&lt;P&gt;POSNR	Delivery Item&lt;/P&gt;&lt;P&gt;PSTYV	Delivery Item Catg&lt;/P&gt;&lt;P&gt;WERKS	Plant&lt;/P&gt;&lt;P&gt;LGORT	Storage Location&lt;/P&gt;&lt;P&gt;VRKME	Sales Unit&lt;/P&gt;&lt;P&gt;VKBUR	Sales Office&lt;/P&gt;&lt;P&gt;VKGRP	Sales Group&lt;/P&gt;&lt;P&gt;VTWEG	Distribution channel&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;lt;b&amp;gt;&lt;/P&gt;&lt;P&gt;LIKP ( SO: Delv Header )&amp;lt;/b&amp;gt;&lt;/P&gt;&lt;P&gt;VBELN	Delivery&lt;/P&gt;&lt;P&gt;ERNAM	Person Who Created&lt;/P&gt;&lt;P&gt;ERZET	Entry Time&lt;/P&gt;&lt;P&gt;ERDAT	Record creation date&lt;/P&gt;&lt;P&gt;BZIRK	Sales District&lt;/P&gt;&lt;P&gt;VKORG	Sales Organization&lt;/P&gt;&lt;P&gt;LFART	Delivery Type&lt;/P&gt;&lt;P&gt;VSBED	Shipping Condn&lt;/P&gt;&lt;P&gt;KUNNR	Ship to Party&lt;/P&gt;&lt;P&gt;KUNAG	Sold to Party&lt;/P&gt;&lt;P&gt;KDGRP	Customer Group&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;lt;b&amp;gt;EKPO( PO: Item )&amp;lt;/b&amp;gt;&lt;/P&gt;&lt;P&gt;EBELN	Purchasing Doc No&lt;/P&gt;&lt;P&gt;EBELP	Item No of Pur Doc&lt;/P&gt;&lt;P&gt;STATU	Status of Pur. Doc&lt;/P&gt;&lt;P&gt;MATNR	Material Number&lt;/P&gt;&lt;P&gt;EMATN	Material Number&lt;/P&gt;&lt;P&gt;LGORT	Storage Location&lt;/P&gt;&lt;P&gt;MATKL	Material Group&lt;/P&gt;&lt;P&gt;MEINS	Order Quantity&lt;/P&gt;&lt;P&gt;MENGE	Pur Order Quantity&lt;/P&gt;&lt;P&gt;BURKS	Company Code&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SPART	Division&lt;/P&gt;&lt;P&gt;KDAUF	Sales Order No.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;they will help u making a join.&lt;/P&gt;&lt;P&gt;regards&lt;/P&gt;&lt;P&gt;ravish&lt;/P&gt;&lt;P&gt;&amp;lt;b&amp;gt;plz dont forget to reward points if helpful&amp;lt;/b&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Message was edited by: &lt;/P&gt;&lt;P&gt;        ravish goyal&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 04 Jul 2007 11:23:31 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/table-join/m-p/2467805#M554383</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-07-04T11:23:31Z</dc:date>
    </item>
    <item>
      <title>Re: table join</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/table-join/m-p/2467806#M554384</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;chk out this example&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECT EKKO&lt;SUB&gt;EBELN EKPO&lt;/SUB&gt;WERKS EKPO&lt;SUB&gt;LGORT EKPO&lt;/SUB&gt;MENGE EKPO&lt;SUB&gt;MEINS EKPO&lt;/SUB&gt;MATNR EKPO&lt;SUB&gt;TXZ01 EKKO&lt;/SUB&gt;AEDAT EKKO~KNUMV&lt;/P&gt;&lt;P&gt;LIPS&lt;SUB&gt;VBELN LIPS&lt;/SUB&gt;ERNAM LIPS&lt;SUB&gt;ERDAT LIPS&lt;/SUB&gt;WERKS&lt;/P&gt;&lt;P&gt;INTO TABLE T_STOF&lt;/P&gt;&lt;P&gt;FROM EKKO&lt;/P&gt;&lt;P&gt;INNER JOIN EKPO&lt;/P&gt;&lt;P&gt;ON EKKO&lt;SUB&gt;EBELN EQ EKPO&lt;/SUB&gt;EBELN&lt;/P&gt;&lt;P&gt;INNER JOIN LIPS&lt;/P&gt;&lt;P&gt;ON EKPO&lt;SUB&gt;EBELN EQ LIPS&lt;/SUB&gt;VGBEL&lt;/P&gt;&lt;P&gt;AND EKPO&lt;SUB&gt;EBELP EQ LIPS&lt;/SUB&gt;VGPOS&lt;/P&gt;&lt;P&gt;WHERE EKKO~EBELN IN S_EBELN&lt;/P&gt;&lt;P&gt;AND EKPO~WERKS IN S_WERKD&lt;/P&gt;&lt;P&gt;AND EKPO~LGORT IN S_LGORT&lt;/P&gt;&lt;P&gt;AND EKPO~MATNR IN S_MATNR&lt;/P&gt;&lt;P&gt;AND EKKO~BSART = 'UB'&lt;/P&gt;&lt;P&gt;AND EKPO~LOEKZ = ' '&lt;/P&gt;&lt;P&gt;AND LIPS~VBELN IN S_VBELN&lt;/P&gt;&lt;P&gt;AND LIPS~ERNAM IN S_ERNAM&lt;/P&gt;&lt;P&gt;AND LIPS~ERDAT In S_ERDAT&lt;/P&gt;&lt;P&gt;AND LIPS~WERKS IN S_WERKS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;reward points if useful&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 04 Jul 2007 11:24:42 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/table-join/m-p/2467806#M554384</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-07-04T11:24:42Z</dc:date>
    </item>
    <item>
      <title>Re: table join</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/table-join/m-p/2467807#M554385</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Here is the program for  linking  of  all 3 tables  in alv ...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;REPORT Z_LIST_MATERIALS.

TYPE-POOLS: SLIS.
TABLES:MARC, MARD, VBAP, LIPS, EKPO, VBFA, EKBE, MARM, VBBE, MARA, MBEW.

SELECTION-SCREEN BEGIN OF BLOCK SEL WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS: S_WERKS FOR MARC-WERKS, " Plant
               S_MATNR FOR MARC-MATNR, " Material
               S_MTART FOR MARA-MTART. " Material Type SELECTION-SCREEN END OF BLOCK SEL.
PARAMETERS: P_VARI LIKE DISVARIANT-VARIANT. " ALV Variant

CONSTANTS: FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'.

DATA: BEGIN OF INV OCCURS 100,
       WERKS LIKE MARD-WERKS, " Plant
       MATNR LIKE MARD-MATNR, " Material
       MTART LIKE MARA-MTART, " Material Type
       STPRS LIKE MBEW-STPRS, " Standard Price
       AVAIL LIKE MARD-LABST, " Available
       LABST LIKE MARD-LABST, " Unrestricted use
       INSME LIKE MARD-INSME, " Quality Inspection
       RETME LIKE MARD-RETME, " Returns
       TRANS LIKE MARC-UMLMC, " Stock in transit (calculated)
       UMLMC LIKE MARC-UMLMC, " Stock Transfer (plant)
       UMLME LIKE MARD-UMLME, " Transfer (SLoc)
       WESBS LIKE EKBE-WESBS, " GR Blocked Stock
       TRAME LIKE MARC-TRAME, " Stock in transit
       SPEME LIKE MARD-SPEME, " Blocked
       KWMENG LIKE VBAP-KWMENG, " Sales orders
       LFIMG LIKE LIPS-LFIMG, " Scheduled for Delivery
       MENGE LIKE EKPO-MENGE, " Open Purch. Orders
       VALUE LIKE MBEW-SALK3, " Stock Value (Calculated)
       MEINS LIKE MARA-MEINS, " Unit of measure
     END OF INV.

DATA: FIELDTAB TYPE SLIS_T_FIELDCAT_ALV,
     HEADING  TYPE SLIS_T_LISTHEADER,
     LAYOUT   TYPE SLIS_LAYOUT_ALV,
     EVENTS   TYPE SLIS_T_EVENT,
     REPNAME  LIKE SY-REPID,
     F2CODE   LIKE SY-UCOMM VALUE  '&amp;amp;ETA',
     G_SAVE(1) TYPE C,
     G_EXIT(1) TYPE C,
     G_VARIANT LIKE DISVARIANT,
     GX_VARIANT LIKE DISVARIANT.

INITIALIZATION.
 REPNAME = SY-REPID.
 PERFORM INITIALIZE_FIELDCAT USING FIELDTAB[].
 PERFORM BUILD_EVENTTAB USING EVENTS[].
 PERFORM BUILD_COMMENT USING HEADING[].
 PERFORM INITIALIZE_VARIANT.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_VARI.
 PERFORM F4_FOR_VARIANT.

AT SELECTION-SCREEN.
 PERFORM PAI_OF_SELECTION_SCREEN.

START-OF-SELECTION.
 PERFORM GET_MARD.
 PERFORM GET_UNIT_OF_MEASURE.
 PERFORM GET_MARC.
 PERFORM GET_EKPO.
 PERFORM GET_LIPS.
 PERFORM GET_VBAP.
 PERFORM GET_OPEN.
 PERFORM GET_PRICE.

END-OF-SELECTION.

 PERFORM BUILD_LAYOUT USING LAYOUT.
 PERFORM WRITE_OUTPUT.


*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  INITIALIZE_FIELDCAT
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      --&amp;gt;P_FIELDTAB[]  text                                           *
*----------------------------------------------------------------------*
FORM INITIALIZE_FIELDCAT USING P_FIELDTAB TYPE SLIS_T_FIELDCAT_ALV.
 DATA: L_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
* fixed columns (obligatory)
 CLEAR L_FIELDCAT.
 L_FIELDCAT-TABNAME    = 'INV'.
 L_FIELDCAT-FIX_COLUMN = 'X'.
 L_FIELDCAT-NO_OUT     = 'O'.
 L_FIELDCAT-FIELDNAME  = 'WERKS'.
 APPEND L_FIELDCAT TO P_FIELDTAB.
 L_FIELDCAT-FIELDNAME  = 'MATNR'.
 APPEND L_FIELDCAT TO P_FIELDTAB.

* totalized columns
 CLEAR L_FIELDCAT.
 L_FIELDCAT-TABNAME   = 'INV'.
 L_FIELDCAT-SP_GROUP  = 'A'.
 L_FIELDCAT-DO_SUM    = 'X'.
 L_FIELDCAT-FIELDNAME = 'LABST'.
 APPEND L_FIELDCAT TO P_FIELDTAB.
 L_FIELDCAT-FIELDNAME = 'INSME'.
 APPEND L_FIELDCAT TO P_FIELDTAB.
 L_FIELDCAT-FIELDNAME = 'RETME'.
 APPEND L_FIELDCAT TO P_FIELDTAB.
 L_FIELDCAT-FIELDNAME = 'UMLME'.
 APPEND L_FIELDCAT TO P_FIELDTAB.
 L_FIELDCAT-FIELDNAME = 'WESBS'.
 APPEND L_FIELDCAT TO P_FIELDTAB.
 L_FIELDCAT-FIELDNAME = 'SPEME'.
 APPEND L_FIELDCAT TO P_FIELDTAB.
* columns with different description
 L_FIELDCAT-FIELDNAME = 'KWMENG'.
 L_FIELDCAT-SELTEXT_M = 'Sales Orders'.
 L_FIELDCAT-SELTEXT_S = 'Sales Or'.
 L_FIELDCAT-SELTEXT_L = 'Sales Orders Qty'.
 APPEND L_FIELDCAT TO P_FIELDTAB.
 L_FIELDCAT-FIELDNAME = 'LFIMG'.
 L_FIELDCAT-SELTEXT_M = 'Sched. Delivery'.
 L_FIELDCAT-SELTEXT_S = 'Schd. Del'.
 L_FIELDCAT-SELTEXT_L = 'Scheduled for Delivery'.
 APPEND L_FIELDCAT TO P_FIELDTAB.
 L_FIELDCAT-FIELDNAME = 'TRANS'.
 L_FIELDCAT-SELTEXT_M = 'Stk. in transit'.
 L_FIELDCAT-SELTEXT_S = 'Stk. trns'.
 L_FIELDCAT-SELTEXT_L = 'Stock in transit (sum)'.
 APPEND L_FIELDCAT TO P_FIELDTAB.
 L_FIELDCAT-FIELDNAME = 'AVAIL'.
 L_FIELDCAT-SELTEXT_M = 'Available'.
 L_FIELDCAT-SELTEXT_S = 'Avail.'.
 L_FIELDCAT-SELTEXT_L = 'Stock Available'.
 APPEND L_FIELDCAT TO P_FIELDTAB.
 L_FIELDCAT-FIELDNAME = 'MENGE'.
 L_FIELDCAT-SELTEXT_M = 'Open Orders'.
 L_FIELDCAT-SELTEXT_S = 'Open Ord'.
 L_FIELDCAT-SELTEXT_L = 'Open Purchase Orders'.
 APPEND L_FIELDCAT TO P_FIELDTAB.

* columns not displayed
 CLEAR L_FIELDCAT.
 L_FIELDCAT-TABNAME   = 'INV'.
 L_FIELDCAT-SP_GROUP  = 'A'.
 L_FIELDCAT-NO_OUT    = 'X'.
 L_FIELDCAT-FIELDNAME = 'MEINS'.
 APPEND L_FIELDCAT TO P_FIELDTAB.
 L_FIELDCAT-FIELDNAME = 'UMLMC'.
 APPEND L_FIELDCAT TO P_FIELDTAB.
 L_FIELDCAT-FIELDNAME = 'TRAME'.
 APPEND L_FIELDCAT TO P_FIELDTAB.
 L_FIELDCAT-FIELDNAME = 'STPRS'.
 APPEND L_FIELDCAT TO P_FIELDTAB.
 L_FIELDCAT-FIELDNAME = 'VALUE'.
 APPEND L_FIELDCAT TO P_FIELDTAB.
ENDFORM.                               " INITIALIZE_FIELDCAT

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  BUILD_EVENTTAB
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      --&amp;gt;P_EVENTS[]  text                                             *
*----------------------------------------------------------------------*
FORM BUILD_EVENTTAB USING P_EVENTS TYPE SLIS_T_EVENT.
 DATA: LS_EVENT TYPE SLIS_ALV_EVENT.
 CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
      EXPORTING
           I_LIST_TYPE = 0
      IMPORTING
           ET_EVENTS   = P_EVENTS.
 READ TABLE P_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_PAGE
                          INTO LS_EVENT.
 IF SY-SUBRC = 0.
   MOVE FORMNAME_TOP_OF_PAGE TO LS_EVENT-FORM.
   APPEND LS_EVENT TO P_EVENTS.
 ENDIF.
ENDFORM.                               " BUILD_EVENTTAB

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  BUILD_COMMENT
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      --&amp;gt;P_HEADING[]  text                                            *
*----------------------------------------------------------------------*
FORM BUILD_COMMENT USING P_HEADING TYPE SLIS_T_LISTHEADER.
 DATA: HLINE TYPE SLIS_LISTHEADER,
       TEXT(60) TYPE C,
       SEP(20) TYPE C.
 CLEAR: HLINE, TEXT.
 HLINE-TYP  = 'H'.
 WRITE: TEXT-101 TO TEXT+23.
 HLINE-INFO = TEXT.
 APPEND HLINE TO P_HEADING.
 CLEAR TEXT.
 WRITE: 'User: ' TO TEXT,
        SY-UNAME TO TEXT+6,
        'Date: ' TO TEXT+25,
        SY-DATUM TO TEXT+31,
        'Page: ' TO TEXT+50,
        SY-PAGNO TO TEXT+56.
 HLINE-INFO = TEXT.
 APPEND HLINE TO P_HEADING.



ENDFORM.                    " BUILD_COMMENT

*---------------------------------------------------------------------*
*       FORM TOP_OF_PAGE                                              *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
FORM TOP_OF_PAGE.
 CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
      EXPORTING
           IT_LIST_COMMENTARY = HEADING.
ENDFORM.
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  INITIALIZE_VARIANT
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM INITIALIZE_VARIANT.
 G_SAVE = 'A'.
 CLEAR G_VARIANT.
 G_VARIANT-REPORT = REPNAME.
 GX_VARIANT = G_VARIANT.
 CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
      EXPORTING
           I_SAVE     = G_SAVE
      CHANGING
           CS_VARIANT = GX_VARIANT
      EXCEPTIONS
           NOT_FOUND  = 2.
 IF SY-SUBRC = 0.
   P_VARI = GX_VARIANT-VARIANT.
 ENDIF.
ENDFORM.                               " INITIALIZE_VARIANT

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  F4_FOR_VARIANT
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM F4_FOR_VARIANT.
 CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
      EXPORTING
           IS_VARIANT = G_VARIANT
           I_SAVE     = G_SAVE
      IMPORTING
           E_EXIT     = G_EXIT
           ES_VARIANT = GX_VARIANT
      EXCEPTIONS
           NOT_FOUND  = 2.
 IF SY-SUBRC = 2.
   MESSAGE ID SY-MSGID TYPE 'S'      NUMBER SY-MSGNO
           WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
 ELSE.
   IF G_EXIT = SPACE.
     P_VARI = GX_VARIANT-VARIANT.
   ENDIF.
 ENDIF.
ENDFORM.                               " F4_FOR_VARIANT

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  PAI_OF_SELECTION_SCREEN
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM PAI_OF_SELECTION_SCREEN.
*
 IF NOT P_VARI IS INITIAL.
   MOVE G_VARIANT TO GX_VARIANT.
   MOVE P_VARI TO GX_VARIANT-VARIANT.
   CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
        EXPORTING
             I_SAVE     = G_SAVE
        CHANGING
             CS_VARIANT = GX_VARIANT.
   G_VARIANT = GX_VARIANT.
 ELSE.
   PERFORM INITIALIZE_VARIANT.
 ENDIF.
ENDFORM.                               " PAI_OF_SELECTION_SCREEN


*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  GET_MARD
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM GET_MARD.
 SELECT MATNR WERKS LABST INSME RETME UMLME SPEME
        FROM MARD
        INTO CORRESPONDING FIELDS OF INV
        WHERE MATNR IN S_MATNR
        AND   WERKS IN S_WERKS.
   COLLECT INV.
 ENDSELECT.
 PERFORM FILTER_BY_MATERIAL_TYPE.
ENDFORM.                               " GET_MARD

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  FILTER_BY_MATERIAL_TYPE
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM FILTER_BY_MATERIAL_TYPE.
 LOOP AT INV.
   CLEAR INV-MTART.
   SELECT SINGLE MTART
          INTO INV-MTART
          FROM MARA
          WHERE MATNR EQ INV-MATNR
          AND   MTART IN S_MTART.
   IF SY-SUBRC EQ 0.
     MODIFY INV.
   ELSE.
     DELETE INV.
   ENDIF.
 ENDLOOP.
ENDFORM.                    " FILTER_BY_MATERIAL_TYPE

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  GET_MARC
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM GET_MARC.
 LOOP AT INV.
   SELECT SINGLE UMLMC TRAME
          FROM MARC
          INTO CORRESPONDING FIELDS OF INV
          WHERE MATNR EQ INV-MATNR
          AND   WERKS EQ INV-WERKS.
   IF SY-SUBRC EQ 0.
     INV-TRANS = INV-UMLMC + INV-TRAME.
     MODIFY INV.
   ENDIF.
 ENDLOOP.
ENDFORM.                               " GET_MARC
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  GET_EKPO
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM GET_EKPO.
 DATA: WESBS LIKE INV-WESBS,
       SHKZG LIKE EKBE-SHKZG,
       MEINS LIKE EKPO-MEINS,
       LMEIN LIKE EKPO-LMEIN.
 LOOP AT INV.
   CLEAR: WESBS, SHKZG, MEINS, LMEIN.
   SELECT YWESBS YSHKZG XMEINS XLMEIN
          INTO (WESBS, SHKZG, MEINS, LMEIN)
          FROM EKPO AS X JOIN EKBE AS Y
          ON   XEBELN = YEBELN
          AND  XEBELP = YEBELP
          WHERE XMATNR EQ INV-MATNR
          AND   XWERKS EQ INV-WERKS
          AND   XLOEKZ NE 'L'.
     IF SHKZG EQ 'H'.
       MULTIPLY WESBS BY -1.
     ENDIF.
     IF MEINS NE LMEIN.
       PERFORM CONVERT_UNIT_OF_MEASURE CHANGING INV-MATNR MEINS WESBS.
     ENDIF.
     ADD WESBS TO INV-WESBS.
   ENDSELECT.
   MODIFY INV.
 ENDLOOP.
ENDFORM.                               " GET_EKPO
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  GET_LIPS
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM GET_LIPS.
 DATA: LFIMG LIKE INV-LFIMG.
 LOOP AT INV.
   CLEAR: LFIMG, INV-LFIMG.
   SELECT OMENG
          INTO LFIMG
          FROM VBBE
          WHERE MATNR EQ INV-MATNR
          AND   WERKS EQ INV-WERKS
          AND   VBTYP EQ 'J'.
     ADD LFIMG TO INV-LFIMG.
   ENDSELECT.
   MODIFY INV.
 ENDLOOP.
ENDFORM.                               " GET_LIPS
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  GET_VBAP
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM GET_VBAP.
 DATA: KWMENG LIKE INV-KWMENG.
 LOOP AT INV.
   CLEAR: KWMENG, INV-KWMENG.
   SELECT OMENG
          INTO KWMENG
          FROM VBBE
          WHERE MATNR EQ INV-MATNR
          AND   WERKS EQ INV-WERKS
          AND   VBTYP EQ 'C'.
     ADD KWMENG TO INV-KWMENG.
   ENDSELECT.
   INV-AVAIL = INV-LABST - INV-INSME - INV-KWMENG - INV-LFIMG.
   MODIFY INV.
 ENDLOOP.
ENDFORM.                               " GET_VBAP

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  GET_UNIT_OF_MEASURE
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&amp;gt;  p1        text
*  &amp;lt;--  p2        text
*----------------------------------------------------------------------*
FORM GET_UNIT_OF_MEASURE.
 LOOP AT INV.
   SELECT SINGLE MEINS
          FROM MARA
          INTO INV-MEINS
          WHERE MATNR EQ INV-MATNR.
   MODIFY INV.
 ENDLOOP.
ENDFORM.                               " GET_UNIT_OF_MEASURE

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  GET_OPEN
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM GET_OPEN.
 DATA: BEGIN OF XTAB OCCURS 10,       " Open orders table
          WERKS LIKE EKPO-WERKS,
          LGORT LIKE EKPO-LGORT,
          MATNR LIKE EKPO-MATNR,
          MENGE LIKE EKPO-MENGE,
          MENGK LIKE EKPO-MENGE,
        END OF XTAB.
 RANGES: L_WERKS FOR MARD-WERKS.

 LOOP AT INV.
   REFRESH XTAB.
   CLEAR: XTAB, L_WERKS.
   MOVE INV-WERKS TO L_WERKS-LOW.
   CALL FUNCTION 'MB_ADD_PURCHASE_ORDER_QUANTITY'
        EXPORTING
             X_MATNR = INV-MATNR
             X_MEINS = INV-MEINS
             X_ELIKZ = SPACE
             X_LOEKZ = SPACE
        TABLES
             XTAB    = XTAB
             XWERKS  = L_WERKS.
   MOVE XTAB-MENGE TO INV-MENGE.
   MODIFY INV.
 ENDLOOP.
ENDFORM.                               " GET_OPEN

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  GET_PRICE
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM GET_PRICE.
 LOOP AT INV.
   SELECT SINGLE STPRS
          FROM MBEW
          INTO INV-STPRS
          WHERE MATNR EQ INV-MATNR
          AND   BWKEY EQ INV-WERKS
          AND   BWTAR EQ SPACE.
     IF SY-SUBRC EQ 0.
       INV-VALUE = INV-STPRS *
                 ( INV-LABST + INV-INSME + INV-TRANS + INV-SPEME ).
       MODIFY INV.
     ENDIF.
 ENDLOOP.
ENDFORM.                    " GET_PRICE

*---------------------------------------------------------------------*
*       FORM CONVERT_UNIT_OF_MEASURE                                  *
*---------------------------------------------------------------------*
*       text                                                          *
*---------------------------------------------------------------------*
*  --&amp;gt;  P_MATNR                                                       *
*  --&amp;gt;  P_VRKME                                                       *
*  --&amp;gt;  P_QUANT                                                       *
*---------------------------------------------------------------------*
FORM CONVERT_UNIT_OF_MEASURE USING P_MATNR P_VRKME P_QUANT.
 DATA: UMREZ LIKE MARM-UMREZ,
       UMREN LIKE MARM-UMREN.
 SELECT SINGLE UMREZ UMREN
        INTO (UMREZ, UMREN)
        FROM MARM
        WHERE MATNR EQ P_MATNR
        AND   MEINH EQ P_VRKME.
 IF SY-SUBRC EQ 0.
   COMPUTE P_QUANT = ( P_QUANT * UMREZ ) / UMREN.
 ENDIF.
ENDFORM.

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  BUILD_LAYOUT
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      --&amp;gt;P_LAYOUT  text                                               *
*----------------------------------------------------------------------*
FORM BUILD_LAYOUT USING P_LAYOUT TYPE SLIS_LAYOUT_ALV.
 P_LAYOUT-F2CODE       = F2CODE.
 P_LAYOUT-ZEBRA        = 'X'.
 P_LAYOUT-DETAIL_POPUP = 'X'.
ENDFORM.                               " BUILD_LAYOUT

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  WRITE_OUTPUT
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM WRITE_OUTPUT.
 SORT INV BY WERKS MATNR.
 CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
      EXPORTING
           I_PROGRAM_NAME     = REPNAME
           I_INTERNAL_TABNAME = 'INV'
           I_INCLNAME         = REPNAME
      CHANGING
           CT_FIELDCAT        = FIELDTAB.
 IF SY-SUBRC &amp;lt;&amp;gt; 0.
   WRITE: 'SY-SUBRC: ', SY-SUBRC, 'REUSE_ALV_FIELDCATALOG_MERGE'.  ENDIF.  CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
      EXPORTING
           I_CALLBACK_PROGRAM = REPNAME
           I_STRUCTURE_NAME   = 'INV'
           IS_LAYOUT          = LAYOUT
           IT_FIELDCAT        = FIELDTAB
           I_DEFAULT          = 'A'
           I_SAVE             = G_SAVE
           IS_VARIANT         = G_VARIANT
           IT_EVENTS          = EVENTS[]
      TABLES
           T_OUTTAB           = INV.
 IF SY-SUBRC &amp;lt;&amp;gt; 0.
   WRITE: 'SY-SUBRC: ', SY-SUBRC, 'REUSE_ALV_LIST_DISPLAY'.  ENDIF.
ENDFORM.                               " WRITE_OUTPUT
&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;reward  points if it is usefull ....&lt;/P&gt;&lt;P&gt;Girish&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 04 Jul 2007 11:31:57 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/table-join/m-p/2467807#M554385</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-07-04T11:31:57Z</dc:date>
    </item>
  </channel>
</rss>

