*&---------------------------------------------------------------------*
*& Report ZPS_SJOPRINT
*& Developed By Ronak Rana ( WIPRO )
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZPS_SJOPRINT.
TABLES : PROJ,PRPS,AFPO,AFKO,AUFK,MAKT.
TYPES : BEGIN OF TY_VBAK,
VBELN TYPE VBELN_VA,
ZPSPNR TYPE PS_INTNR,
END OF TY_VBAK.
TYPES : BEGIN OF TY_PROJ,
PSPNR TYPE PS_INTNR,
PSPID TYPE PS_PSPID,
END OF TY_PROJ.
TYPES : BEGIN OF TY_PROJ1,
PSPNR TYPE PS_INTNR,
POST1 TYPE PS_POST1,
END OF TY_PROJ1.
TYPES : BEGIN OF TY_PRPS,
PSPNR TYPE PS_INTNR,
PSPID TYPE PS_PSPID,
PSPHI TYPE PS_PSPHI,
END OF TY_PRPS.
TYPES : BEGIN OF TY_AFPO,
AUFNR TYPE AUFNR,
POSNR TYPE CO_POSNR,
PROJN TYPE PS_PSP_ELE,
MATNR TYPE CO_MATNR,
DAUTY TYPE AUFTYP,
END OF TY_AFPO.
TYPES : BEGIN OF TY_AFKO,
AUFNR TYPE AUFNR,
GLTRP TYPE CO_GLTRP,
GSTRP TYPE PM_ORDGSTRP,
GAMNG TYPE GAMNG,
PLNBEZ TYPE MATNR,
END OF TY_AFKO.
TYPES : BEGIN OF TY_AUFK,
AUFNR TYPE AUFNR,
WERKS TYPE WERKS_D,
END OF TY_AUFK.
TYPES : BEGIN OF TY_MAKT,
MATNR TYPE MATNR,
SPRAS TYPE SPRAS,
MAKTX TYPE MAKTX,
END OF TY_MAKT.
TYPES : BEGIN OF TY_FINAL,
PSPNR TYPE PS_INTNR,
PSPID TYPE PS_PSPID,
PSPHI TYPE PS_PSPHI,
AUFNR TYPE AUFNR,
POSNR TYPE CO_POSNR,
PROJN TYPE PS_PSP_ELE,
GLTRP TYPE CO_GLTRP,
GSTRP TYPE PM_ORDGSTRP,
GAMNG TYPE GAMNG,
PLNBEZ TYPE MATNR,
WERKS TYPE WERKS_D,
MATNR TYPE MATNR,
MAKTX TYPE MAKTX,
END OF TY_FINAL.
TYPES : BEGIN OF TY_OUTPUT,
AUFNR TYPE AUFNR,
POSNR TYPE CO_POSNR,
PROJN TYPE PS_PSP_ELE,
GSTRP TYPE PM_ORDGSTRP,
GLTRP TYPE CO_GLTRP,
GAMNG TYPE GAMNG,
PLNBEZ TYPE MATNR,
WERKS TYPE WERKS_D,
MATNR TYPE MATNR,
MAKTX TYPE MAKTX,
END OF TY_OUTPUT.
DATA : IT_VBAK TYPE STANDARD TABLE OF TY_VBAK,
WA_VBAK TYPE TY_VBAK.
DATA : IT_PROJ1 TYPE STANDARD TABLE OF TY_PROJ1,
WA_PROJ1 TYPE TY_PROJ1.
DATA : IT_PROJ TYPE STANDARD TABLE OF TY_PROJ,
WA_PROJ TYPE TY_PROJ.
DATA : IT_PRPS TYPE STANDARD TABLE OF TY_PRPS,
WA_PRPS TYPE TY_PRPS,
WA_PRPS1 TYPE TY_PRPS,
WA_PRPS2 TYPE TY_PRPS.
DATA : IT_AFPO TYPE STANDARD TABLE OF TY_AFPO,
WA_AFPO TYPE TY_AFPO.
DATA : IT_AFKO TYPE STANDARD TABLE OF TY_AFKO,
WA_AFKO TYPE TY_AFKO.
DATA : IT_AUFK TYPE STANDARD TABLE OF TY_AUFK,
WA_AUFK TYPE TY_AUFK.
DATA : IT_MAKT TYPE STANDARD TABLE OF TY_MAKT,
WA_MAKT TYPE TY_MAKT.
DATA : IT_FINAL TYPE STANDARD TABLE OF TY_FINAL,
WA_FINAL TYPE TY_FINAL.
DATA : IT_OUTPUT TYPE STANDARD TABLE OF TY_OUTPUT,
WA_OUTPUT TYPE TY_OUTPUT.
DATA : ALV TYPE REF TO CL_SALV_TABLE,
ALV_MSG TYPE REF TO CX_SALV_MSG.
DATA: ALV_FUNCT TYPE REF TO CL_SALV_FUNCTIONS.
DATA: ALV_COLUMNS TYPE REF TO CL_SALV_COLUMNS_TABLE.
DATA: LO_HEADER TYPE REF TO CL_SALV_FORM_LAYOUT_GRID,
LO_H_LABEL TYPE REF TO CL_SALV_FORM_LABEL,
LO_H_FLOW TYPE REF TO CL_SALV_FORM_LAYOUT_FLOW.
SELECTION-SCREEN BEGIN OF BLOCK ABC WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS : SO_PSPNR FOR PROJ-PSPNR OBLIGATORY.
SELECTION-SCREEN END OF BLOCK ABC.
START-OF-SELECTION.
PERFORM GET_DATA.
PERFORM PROCESS_DATA.
PERFORM DISPLAY_DATA.
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_DATA .
SELECT
PSPNR
PSPID
INTO TABLE IT_PROJ FROM PROJ WHERE PSPNR IN SO_PSPNR.
SELECT
SINGLE
VBELN
INTO WA_VBAK FROM VBAK WHERE ZPSPNR IN SO_PSPNR.
SELECT SINGLE
PSPNR
POST1
INTO WA_PROJ1 FROM PROJ WHERE PSPNR IN SO_PSPNR.
IF IT_PROJ IS NOT INITIAL.
SELECT
PSPNR
POSID
PSPHI
INTO TABLE IT_PRPS FROM PRPS FOR ALL ENTRIES IN IT_PROJ WHE
RE PSPHI = IT_PROJ-PSPNR.
ENDIF.
IF IT_PRPS IS NOT INITIAL.
SELECT
AUFNR
POSNR
PROJN
MATNR
DAUTY
INTO TABLE IT_AFPO FROM AFPO FOR ALL ENTRIES IN IT_PRPS WHE
RE PROJN = IT_PRPS-PSPNR AND
DAUTY = '10'.
ENDIF.
IF IT_AFPO IS NOT INITIAL .
SELECT
AUFNR
GLTRP
GSTRP
GAMNG
PLNBEZ
INTO TABLE IT_AFKO FROM AFKO FOR ALL ENTRIES IN IT_AFPO WHE
RE AUFNR = IT_AFPO-AUFNR.
ENDIF.
IF IT_AFKO IS NOT INITIAL.
SELECT
AUFNR
WERKS
INTO TABLE IT_AUFK FROM AUFK FOR ALL ENTRIES IN IT_AFKO WHER
E AUFNR = IT_AFKO-AUFNR.
SELECT
MATNR
SPRAS
MAKTX
INTO TABLE IT_MAKT FROM MAKT FOR ALL ENTRIES IN IT_AFKO WHER
E MATNR = IT_AFKO-PLNBEZ AND
SPRAS = 'EN'.
ENDIF.
ENDFORM. " GET_DATA
*&---------------------------------------------------------------------*
*& Form PROCESS_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM PROCESS_DATA .
DATA : INX TYPE I.
IF IT_PROJ IS NOT INITIAL .
LOOP AT IT_PROJ INTO WA_PROJ.
LOOP AT IT_PRPS INTO WA_PRPS1 WHERE PSPHI = WA_PROJ-PSPNR.
INX = SY-TABIX + 1.
READ TABLE IT_PRPS INTO WA_PRPS2 INDEX INX.
IF SY-SUBRC = 0.
WA_FINAL-PSPNR = WA_PRPS2-PSPNR.
WA_FINAL-PSPID = WA_PRPS2-PSPID.
WA_FINAL-PSPHI = WA_PRPS2-PSPHI.
READ TABLE IT_AFPO INTO WA_AFPO WITH KEY PROJN = WA_PRPS2-PSPNR.
IF SY-SUBRC = 0.
WA_FINAL-AUFNR = WA_AFPO-AUFNR.
WA_FINAL-POSNR = WA_AFPO-POSNR.
WA_FINAL-PROJN = WA_AFPO-PROJN.
READ TABLE IT_AFKO INTO WA_AFKO WITH KEY AUFNR = WA_AFPO-AUFNR.
IF SY-SUBRC = 0.
WA_FINAL-GLTRP = WA_AFKO-GLTRP.
WA_FINAL-GSTRP = WA_AFKO-GSTRP.
WA_FINAL-GAMNG = WA_AFKO-GAMNG.
WA_FINAL-PLNBEZ = WA_AFKO-PLNBEZ.
READ TABLE IT_AUFK INTO WA_AUFK WITH KEY AUFNR = WA_AFKO-
AUFNR.
IF SY-SUBRC = 0.
WA_FINAL-WERKS = WA_AUFK-WERKS.
READ TABLE IT_MAKT INTO WA_MAKT WITH KEY MATNR = WA_AFKO-
PLNBEZ.
IF SY-SUBRC = 0.
WA_FINAL-MATNR = WA_MAKT-MATNR.
WA_FINAL-MAKTX = WA_MAKT-MAKTX.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
APPEND WA_FINAL TO IT_FINAL.
CLEAR : WA_FINAL,WA_PROJ,WA_PRPS,WA_AFPO,WA_AFKO,WA_AUFK,WA_MAKT,IN
X.
ENDLOOP.
ENDLOOP.
ENDIF.
LOOP AT IT_FINAL INTO WA_FINAL.
READ TABLE IT_FINAL INTO WA_FINAL WITH KEY PSPNR = WA_FINAL-PSPNR.
IF SY-SUBRC = 0.
IF WA_FINAL-PSPNR = '0' OR WA_FINAL-PSPNR = ''.
DELETE IT_FINAL INDEX SY-TABIX.
ENDIF.
IF WA_FINAL-AUFNR = '0' OR WA_FINAL-AUFNR = ''.
DELETE IT_FINAL INDEX SY-TABIX.
ENDIF.
ENDIF.
ENDLOOP.
IF IT_FINAL[] IS NOT INITIAL.
LOOP AT IT_FINAL INTO WA_FINAL.
WA_OUTPUT-AUFNR = WA_FINAL-AUFNR.
WA_OUTPUT-POSNR = WA_FINAL-POSNR.
WA_OUTPUT-PROJN = WA_FINAL-PROJN.
WA_OUTPUT-GSTRP = WA_FINAL-GSTRP.
WA_OUTPUT-GLTRP = WA_FINAL-GLTRP.
WA_OUTPUT-GAMNG = WA_FINAL-GAMNG.
WA_OUTPUT-PLNBEZ = WA_FINAL-PLNBEZ.
WA_OUTPUT-WERKS = WA_FINAL-WERKS.
WA_OUTPUT-MATNR = WA_FINAL-MATNR.
WA_OUTPUT-MAKTX = WA_FINAL-MAKTX.
APPEND WA_OUTPUT TO IT_OUTPUT.
CLEAR : WA_OUTPUT,WA_FINAL.
ENDLOOP.
ENDIF.
ENDFORM. " PROCESS_DATA
*&---------------------------------------------------------------------*
*& Form DISPLAY_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DISPLAY_DATA .
IF IT_OUTPUT[] IS NOT INITIAL.
TRY.
CALL METHOD CL_SALV_TABLE=>FACTORY
* EXPORTING
* LIST_DISPLAY = IF_SALV_C_BOOL_SAP=>FALSE
* R_CONTAINER =
* CONTAINER_NAME =
IMPORTING
R_SALV_TABLE = ALV
CHANGING
T_TABLE = IT_OUTPUT
.
CATCH CX_SALV_MSG .
ENDTRY.
ALV_FUNCT = ALV->GET_FUNCTIONS( ). " Get all menu functions
ALV_FUNCT->SET_ALL('X'). " Setting all functions
ALV_COLUMNS = ALV->GET_COLUMNS( ). " Get all layout functions
ALV_COLUMNS->SET_OPTIMIZE( 'X' ). " Setting all layout functions
CREATE OBJECT LO_HEADER. " Object creation for header detai
ls
DATA: DATE1(12) TYPE C.
DATA: TIME1(8) TYPE C.
WRITE SY-DATUM TO DATE1.
WRITE SY-UZEIT TO TIME1.
LO_H_LABEL = LO_HEADER->CREATE_LABEL( ROW = 1 COLUMN = 1 ).
LO_H_LABEL->SET_TEXT( 'SJO PRINT REPORT' ).
LO_H_FLOW = LO_HEADER->CREATE_FLOW( ROW = 3 COLUMN = 1 ).
LO_H_FLOW->CREATE_TEXT( TEXT ='SALES ORDER NO :' ).
LO_H_FLOW = LO_HEADER->CREATE_FLOW( ROW = 3 COLUMN = 2 ).
LO_H_FLOW->CREATE_TEXT( TEXT = WA_VBAK-VBELN ).
LO_H_FLOW = LO_HEADER->CREATE_FLOW( ROW = 4 COLUMN = 1 ).
LO_H_FLOW->CREATE_TEXT( TEXT ='PROJECT DESC :' ).
LO_H_FLOW = LO_HEADER->CREATE_FLOW( ROW = 4 COLUMN = 2 ).
LO_H_FLOW->CREATE_TEXT( TEXT = WA_PROJ1-POST1 ).
LO_H_FLOW = LO_HEADER->CREATE_FLOW( ROW = 5 COLUMN = 1 ).
LO_H_FLOW->CREATE_TEXT( TEXT ='PROJECT :' ).
LO_H_FLOW = LO_HEADER->CREATE_FLOW( ROW = 5 COLUMN = 2 ).
LO_H_FLOW->CREATE_TEXT( TEXT = WA_PROJ1-PSPNR ).
LO_H_FLOW = LO_HEADER->CREATE_FLOW( ROW = 3 COLUMN = 10 ).
LO_H_FLOW->CREATE_TEXT( TEXT ='DATE :' ).
LO_H_FLOW = LO_HEADER->CREATE_FLOW( ROW = 3 COLUMN = 11 ).
LO_H_FLOW->CREATE_TEXT( TEXT = DATE1 ).
LO_H_FLOW = LO_HEADER->CREATE_FLOW( ROW = 4 COLUMN = 10 ).
LO_H_FLOW->CREATE_TEXT( TEXT ='TIME :' ).
LO_H_FLOW = LO_HEADER->CREATE_FLOW( ROW = 4 COLUMN = 11 ).
LO_H_FLOW->CREATE_TEXT( TEXT = TIME1 ).
CALL METHOD ALV->SET_TOP_OF_LIST
" Top of list method for printing header details
EXPORTING
VALUE = LO_HEADER.
CALL METHOD ALV->DISPLAY.
ELSE.
MESSAGE 'No record found' TYPE 'I'.
ENDIF.
ENDFORM. " DISPLAY_DATA