OOPS ALV using LVC_FIELDCATALOG_MERGE

 

REPORT ZVB_DD.
TABLES:VBAK,VBAP.
SELECT-OPTIONS S_VBELN FOR VBAK-VBELN.

TYPES:BEGIN OF TY_VBAK,
  VBELN TYPE VBAK-VBELN,
  END OF TY_VBAK,
  BEGIN OF TY_VBAP,
    VBELN TYPE VBAP-VBELN,
    POSNR TYPE VBAP-POSNR,
    END OF TY_VBAP,
    BEGIN OF TY_FINAL,
       VBELN TYPE VBAK-VBELN,
    POSNR TYPE VBAP-POSNR,
      END OF TY_FINAL.

DATA:LT_VBAK TYPE TABLE OF TY_VBAK,
      LS_VBAK TYPE TY_VBAK,
      LT_VBAP TYPE TABLE OF TY_VBAP,
      LS_VBAP TYPE TY_VBAP,
      LT_FINAL TYPE TABLE OF TY_FINAL,
      LS_FINAL TYPE TY_FINAL.

DATA:LT_FCAT TYPE LVC_T_FCAT.

DATA:LO_OBJECT TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
DATA:LO_GRID TYPE REF TO CL_GUI_ALV_GRID.


SELECT VBELN
  FROM VBAK
  INTO TABLE LT_VBAK
  WHERE VBELN IN S_VBELN.
  IF LT_VBAK IS NOT INITIAL.
    SELECT VBELN POSNR
      FROM VBAP
      INTO TABLE LT_VBAP
      FOR ALL ENTRIES IN LT_VBAK
      WHERE VBELN LT_VBAK-VBELN.
      ENDIF.

LOOP AT LT_VBAK INTO LS_VBAK.
  LOOP AT LT_VBAP INTO LS_VBAP WHERE VBELN LS_VBAK-VBELN.
    LS_FINAL-VBELN LS_VBAP-VBELN.
    LS_FINAL-POSNR LS_VBAP-POSNR.
    APPEND LS_FINAL TO LT_FINAL.
    ENDLOOP.
  ENDLOOP.

  CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
   EXPORTING
*     I_BUFFER_ACTIVE              =
     I_STRUCTURE_NAME             'ZVB_SO'
*     I_CLIENT_NEVER_DISPLAY       = 'X'
*     I_BYPASSING_BUFFER           =
*     I_INTERNAL_TABNAME           =
    CHANGING
      ct_fieldcat                  LT_FCAT
*   EXCEPTIONS
*     INCONSISTENT_INTERFACE       = 1
*     PROGRAM_ERROR                = 2
*     OTHERS                       = 3
            .
  IF sy-subrc <> 0.
* Implement suitable error handling here
  ENDIF.

CREATE OBJECT LO_OBJECT
EXPORTING
  CONTAINER_NAME 'CONT'.

CREATE OBJECT LO_GRID
EXPORTING
  I_PARENT LO_OBJECT.

CALL METHOD lo_grid->set_table_for_first_display
  CHANGING
    it_outtab                     LT_FINAL
    it_fieldcatalog               LT_FCAT
*    it_sort                       =
*    it_filter                     =
  EXCEPTIONS
    invalid_parameter_combination 1
    program_error                 2
    too_many_lines                3
    others                        4
        .
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.

CALL SCREEN '100'.
 

1.Double click on screen.

2.Enter short desc and click on 'layout'.

3.Draw custom container and give name as 'CONT'.

4.Activate.

 

5.Click on back and execute the program.

 Result: 


Comments

Popular posts from this blog

CDS Views: Table Functions with Example

Passing Dynamic Variables to SO10 TEXT

Adobe Form/PDF Form Introduction