You are on page 1of 3

DATA: LOBJ_STDESC TYPE REF TO CL_ABAP_STRUCTDESCR,

LT_FIELDS TYPE CL_ABAP_STRUCTDESCR=>INCLUDED_VIEW,


LW_FIELDS TYPE LINE OF CL_ABAP_STRUCTDESCR=>INCLUDED_VIEW,
LW_DESC TYPE X030L,
LW_FLDCAT TYPE LINE OF LVC_T_FCAT,
LV_STNAME TYPE DD02L-TABNAME,
IT_FCAT TYPE LVC_T_FCAT.
DATA : BEGIN OF WA_ALV,
VBELN TYPE VBELN_VA,
POSNR TYPE POSNR_VA,
MATNR TYPE MATNR,
MATKL TYPE MATKL,
NETWR TYPE NETWR_AP,
KWMENG TYPE KWMENG,
WERKS TYPE WERKS_EXT,
NETPR TYPE NETPR,
END OF WA_ALV.
DATA IT_ALV LIKE TABLE OF WA_ALV.
DATA IT_ALV_CPY LIKE TABLE OF WA_ALV.
DATA OPTIONS TYPE VBAK-VBELN.
DATA: OBJ_ALV TYPE REF TO CL_GUI_ALV_GRID.
DATA: OBJ_CONT TYPE REF TO CL_GUI_CUSTOM_CONTAINER.

SELECT-OPTIONS : SO_VBELN FOR OPTIONS.

START-OF-SELECTION.
PERFORM SELECTION.
PERFORM BUILD_FIELDCATALOG USING WA_ALV.
CALL SCREEN 9000.
*&---------------------------------------------------------------------*
*& Module STATUS_9000 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_9000 OUTPUT.

CREATE OBJECT OBJ_CONT


EXPORTING
CONTAINER_NAME = 'CUST'.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CREATE OBJECT OBJ_ALV
EXPORTING
I_PARENT = OBJ_CONT.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

CALL METHOD OBJ_ALV->SET_TABLE_FOR_FIRST_DISPLAY


CHANGING
IT_OUTTAB = IT_ALV
IT_FIELDCATALOG = IT_FCAT
EXCEPTIONS
INVALID_PARAMETER_COMBINATION = 1
PROGRAM_ERROR = 2
TOO_MANY_LINES = 3
OTHERS = 4.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDMODULE. " STATUS_9000 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_9000 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_9000 INPUT.

ENDMODULE. " USER_COMMAND_9000 INPUT

*&---------------------------------------------------------------------*
*& Form SELECTION
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM SELECTION .
SELECT VBELN
POSNR
MATNR
MATKL
NETWR
KWMENG
WERKS
NETPR
FROM VBAP INTO TABLE IT_ALV
WHERE VBELN IN SO_VBELN.
ENDFORM. "SELECTION

*&---------------------------------------------------------------------*
*& Form build_fieldcatalog
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_WA_REPORT text
*----------------------------------------------------------------------*
FORM BUILD_FIELDCATALOG USING P_WA_REPORT TYPE ANY.

* Determine structure descriptor


TRY.
LOBJ_STDESC ?= CL_ABAP_STRUCTDESCR=>DESCRIBE_BY_DATA( P_WA_REPORT ).
CATCH CX_ROOT.
RAISE NO_FIELD_CATALOG.
ENDTRY.
* If it is DDIC structure, determine field catalog using ALV FM
IF LOBJ_STDESC->IS_DDIC_TYPE( ) IS NOT INITIAL.
LV_STNAME = LOBJ_STDESC->GET_RELATIVE_NAME( ).
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
I_BUFFER_ACTIVE = SPACE
I_STRUCTURE_NAME = LV_STNAME
I_BYPASSING_BUFFER = 'X'
CHANGING
CT_FIELDCAT = IT_FCAT
EXCEPTIONS
INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
CLEAR IT_FCAT.
RAISE NO_FIELD_CATALOG.
ENDIF.
RETURN.
ENDIF.
* Get structure fields
LT_FIELDS = LOBJ_STDESC->GET_INCLUDED_VIEW( ).
* Build field catalog
LOOP AT LT_FIELDS INTO LW_FIELDS.
CLEAR: LW_FLDCAT,
LW_DESC.
LW_FLDCAT-COL_POS = SY-TABIX.
LW_FLDCAT-FIELDNAME = LW_FIELDS-NAME.
IF LW_FIELDS-TYPE->IS_DDIC_TYPE( ) IS NOT INITIAL.
LW_DESC = LW_FIELDS-TYPE->GET_DDIC_HEADER( ).
LW_FLDCAT-ROLLNAME = LW_DESC-TABNAME.
ELSE.
LW_FLDCAT-INTTYPE = LW_FIELDS-TYPE->TYPE_KIND.
LW_FLDCAT-INTLEN = LW_FIELDS-TYPE->LENGTH.
LW_FLDCAT-DECIMALS = LW_FIELDS-TYPE->DECIMALS.
ENDIF.
APPEND LW_FLDCAT TO IT_FCAT.
ENDLOOP.
IF IT_FCAT IS INITIAL.
RAISE NO_FIELD_CATALOG.
ENDIF.
ENDFORM. " BUILD_FIELDCATALOG

You might also like