0% found this document useful (0 votes)
28 views9 pages

SJO Print Report (Factory Method)

The document outlines the development of an SAP report named ZPS_SJOPRINT, created by Ronak Rana from WIPRO. It includes data structures, selection screens, and methods for data retrieval, processing, and display using ALV (ABAP List Viewer). The report primarily focuses on project-related data and outputs relevant details for sales orders and project descriptions.

Uploaded by

paaavan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
28 views9 pages

SJO Print Report (Factory Method)

The document outlines the development of an SAP report named ZPS_SJOPRINT, created by Ronak Rana from WIPRO. It includes data structures, selection screens, and methods for data retrieval, processing, and display using ALV (ABAP List Viewer). The report primarily focuses on project-related data and outputs relevant details for sales orders and project descriptions.

Uploaded by

paaavan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 9

*&---------------------------------------------------------------------*

*& 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

You might also like