You are on page 1of 7

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

*& Report ZTEST1


*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZTEST1.
TYPES :
BEGIN OF TY_VBAK,
VBELN TYPE VBELN_VA,
AUART TYPE AUART,
KUNNR TYPE KUNAG,
VSNMR_V TYPE VSNMR_V,
ERDAT TYPE ERDAT,
END OF TY_VBAK,
BEGIN OF TY_VBAP,
VBELN TYPE VBELN_VA,
POSNR TYPE POSNR_VA,
MATNR TYPE MATNR,
ARKTX TYPE ARKTX,
NETWR TYPE NETWR_AP,
WAERK TYPE WAERK,
ZMENG TYPE DZMENG,
ZIEME TYPE DZIEME,
END OF TY_VBAP,
BEGIN OF TY_VBFA,
VBELV TYPE VBELN_VON,
POSNV TYPE POSNR_VON,
VBELN TYPE VBELN_NACH,
POSNN TYPE POSNR_NACH,
VBTYP_N TYPE VBTYP_N,
VBTYP_V TYPE VBTYP_V,
RFMNG TYPE RFMNG,
RFWRT TYPE RFWRT,
MATNR TYPE MATNR,
END OF TY_VBFA,
BEGIN OF TY_VBRK,
VBELN TYPE VBELN_VF,
FKART TYPE FKART,
KNUMV TYPE KNUMV,
FKDAT TYPE FKDAT,
KUNAG TYPE KUNAG,
NETWR TYPE NETWR,
MWSBK TYPE MWSBP,
XBLNR TYPE XBLNR1,
END OF TY_VBRK,
BEGIN OF MAKT,
MATNR TYPE MATNR,
MAKTX TYPE MAKT-MAKTX,
END OF MAKT,
BEGIN OF OUT,
" SEL,
ERDAT TYPE VBAK-ERDAT,
MAKTX TYPE MAKT-MAKTX,
" ZMENG TYPE VBAP-ZMENG,
MWBSP TYPE VBAP-MWSBP,
VBELN TYPE VBFA-VBELN,
VBELN1 TYPE VBFA-VBELN,
VBELN2 TYPE VBFA-VBELN,
MRNKZ TYPE VBRK-MRNKZ,
POSNR TYPE POSNR_VA,
MATNR TYPE MATNR,
ARKTX TYPE ARKTX,
NETWR TYPE NETWR_AP,
WAERK TYPE WAERK,
ZMENG TYPE DZMENG,
ZIEME TYPE DZIEME,
END OF OUT.

DATA : IT_VBRK TYPE STANDARD TABLE OF TY_VBRK,


WA_VBRK TYPE TY_VBRK,
" IT_VBFA TYPE STANDARD TABLE OF TY_VBFA,
IT_VBFA1 TYPE STANDARD TABLE OF TY_VBFA,
" WA_VBFA TYPE TY_VBFA,
WA_VBFA1 TYPE TY_VBFA,
IT_MAKT TYPE STANDARD TABLE OF MAKT,
WA_MAKT TYPE MAKT,
IT_FINAL TYPE STANDARD TABLE OF OUT,
T_FINAL TYPE OUT,
IT_VBAK TYPE STANDARD TABLE OF TY_VBAK,
WA_VBAK TYPE TY_VBAK,
IT_VBAP TYPE STANDARD TABLE OF TY_VBAP,
WA_VBAP TYPE TY_VBAP.
DATA : IT_FCAT TYPE SLIS_T_FIELDCAT_ALV,
wa_fcat LIKE LINE OF it_fcat.
TYPES : G_VBELN TYPE VBAK-VBELN.
DATA : G_ERDAT TYPE VBAK-ERDAT ,
L_COL TYPE I.

SELECTION-SCREEN BEGIN OF BLOCK A WITH FRAME TITLE TEXT-001.


PARAMETERS : S_VBELN TYPE G_VBELN.
SELECT-OPTIONS : S_ERDAT FOR G_ERDAT OBLIGATORY.
SELECTION-SCREEN END OF BLOCK A.

START-OF-SELECTION.
PERFORM GET_VBAK.
PERFORM GET_VBAP.
PERFORM GET_VBFA.
PERFORM GET_VBRK.
PERFORM GET_MAKTX.
PERFORM PREPARE_OUTPUT.
PERFORM DISPLAY.
*&---------------------------------------------------------------------*
*& Form GET_VBAK
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_vbak .
SELECT VBELN
AUART
KUNNR
VSNMR_V
ERDAT
FROM VBAK
INTO TABLE IT_VBAK
" FOR ALL ENTRIES IN IT_VBFA1
WHERE ERDAT IN S_ERDAT
AND VBELN EQ S_VBELN.
ENDFORM. " GET_VBAK
*&---------------------------------------------------------------------*
*& Form GET_VBFA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_vbfa .
IF IT_VBAK IS NOT INITIAL.
SELECT VBELV
POSNV
VBELN
POSNN
VBTYP_N
VBTYP_V
RFMNG
RFWRT
MATNR
FROM VBFA
INTO TABLE IT_VBFA1
FOR ALL ENTRIES IN IT_VBAP
WHERE VBELV = IT_VBAP-VBELN
AND POSNV = IT_VBAP-POSNR.
" AND VBTYP_V IN ('I', 'C', 'E','H').
ENDIF.
ENDFORM. " GET_VBFA
*&---------------------------------------------------------------------*
*& Form GET_VBRP
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_vbrk .
IF IT_VBFA1 IS NOT INITIAL.
SELECT VBELN
FKART
KNUMV
FKDAT
KUNAG
NETWR
MWSBK
FROM VBRK
INTO TABLE IT_VBRK
FOR ALL ENTRIES IN IT_VBFA1
WHERE VBELN = IT_VBFA1-VBELN.
" AND KUNAG IN S_KUNNR
" AND FKSTO EQ ''
" AND RFBSK <> 'E'
* AND VBTYP IN ('M','U')
" AND FKART NOT IN ('ZS1','ZS2').
* AND FKSTO = ''.
ENDIF.
ENDFORM. " GET_VBRP
*&---------------------------------------------------------------------*
*& Form GET_MAKTX
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_maktx .
IF IT_VBFA1 IS NOT INITIAL.
SELECT MATNR
MAKTX
FROM MAKT
INTO TABLE IT_MAKT
FOR ALL ENTRIES IN IT_VBFA1
WHERE MATNR = IT_VBFA1-MATNR.

ENDIF.
ENDFORM. " GET_MAKTX
*&---------------------------------------------------------------------*
*& Form PREPARE_OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM prepare_output .

LOOP AT IT_VBAP INTO WA_VBAP.


T_FINAL-VBELN = WA_VBAP-VBELN.
T_FINAL-POSNR = WA_VBAP-POSNR.
T_FINAL-MATNR = WA_VBAP-MATNR.
T_FINAL-ARKTX = WA_VBAP-ARKTX.
T_FINAL-NETWR = WA_VBAP-NETWR.
T_FINAL-WAERK = WA_VBAP-WAERK.
T_FINAL-ZMENG = WA_VBAP-ZMENG.
T_FINAL-ZIEME = WA_VBAP-ZIEME.
READ TABLE IT_VBAK INTO WA_VBAK WITH KEY VBELN = WA_VBAP-VBELN.
IF SY-SUBRC = 0.
T_FINAL-ERDAT = WA_VBAK-ERDAT.
ENDIF.
READ TABLE IT_VBFA1 INTO WA_VBFA1 WITH KEY VBELV = WA_VBAP-VBELN
POSNV = WA_VBAP-POSNR.
IF SY-SUBRC = 0.
CASE WA_VBFA1-VBTYP_N.
WHEN 'J'.
T_FINAL-VBELN1 = WA_VBFA1-VBELN.
WHEN 'M'.
T_FINAL-VBELN2 = WA_VBFA1-VBELN.
ENDCASE.

ENDIF.
APPEND T_FINAL TO IT_FINAL.
ENDLOOP.
ENDFORM. " PREPARE_OUTPUT
*&---------------------------------------------------------------------*
*& Form GET_VBAP
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_vbap .
IF IT_VBFA1 IS NOT INITIAL.
SELECT VBELN
POSNR
MATNR
ARKTX
NETWR
WAERK
ZMENG
ZIEME
FROM VBAP
INTO TABLE IT_VBAP
FOR ALL ENTRIES IN IT_VBAK
WHERE VBELN = IT_VBAK-VBELN.
" AND KUNAG IN S_KUNNR
" AND FKSTO EQ ''
" AND RFBSK <> 'E'
* AND VBTYP IN ('M','U')
" AND FKART NOT IN ('ZS1','ZS2').
* AND FKSTO = ''.
ENDIF.
ENDFORM. " GET_VBAP
*&---------------------------------------------------------------------*
*& Form DISPLAY
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM display .
PERFORM FIELD_CATLOG.
PERFORM ALV.
ENDFORM. " DISPLAY
*&---------------------------------------------------------------------*
*& Form FIELD_CATLOG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM field_catlog .
CLEAR:L_COL.
L_COL = 1.
PERFORM SUB_CREATE_FCAT USING : L_COL 'VBELN' 'SALES DOC' '' .
PERFORM SUB_CREATE_FCAT USING : L_COL 'POSNR' 'ALES DOC ITEM' '' .
PERFORM SUB_CREATE_FCAT USING : L_COL 'ERDAT' 'DATE' '' .
PERFORM SUB_CREATE_FCAT USING : L_COL 'MATNR' 'MATERIAL' '' .
PERFORM SUB_CREATE_FCAT USING : L_COL 'ARKTX' 'MATERIAL DESC' ''
.
PERFORM SUB_CREATE_FCAT USING : L_COL 'NETWR' 'AMOUNT' '' .
PERFORM SUB_CREATE_FCAT USING : L_COL 'WAERK' 'CURRENCY' '' .
PERFORM SUB_CREATE_FCAT USING : L_COL 'KWMENG' 'QUANTITY' '' .
PERFORM SUB_CREATE_FCAT USING : L_COL 'VRKME' 'NOS' '' .
PERFORM SUB_CREATE_FCAT USING : L_COL 'VBELN1' 'DELIVERY' '' .
PERFORM SUB_CREATE_FCAT USING : L_COL 'VBELN2' 'INVOICE' '' .
ENDFORM. " FIELD_CATLOG
*&---------------------------------------------------------------------*
*& Form SUB_CREATE_FCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_L_COL text
* -->P_0590 text
* -->P_0591 text
* -->P_0592 text
*----------------------------------------------------------------------*
FORM sub_create_fcat USING P_COL TYPE I
P_FNAME TYPE CHAR20
" P_TAB TYPE CHAR20
P_TEXT TYPE CHAR30
P_OUT TYPE CHAR45
.

WA_FCAT-COL_POS = P_COL.
WA_FCAT-FIELDNAME = P_FNAME .
"WA_FCAT-TABNAME = P_TAB.
WA_FCAT-SELTEXT_M = P_TEXT.
WA_FCAT-OUTPUTLEN = P_OUT.
APPEND WA_FCAT TO IT_FCAT .
CLEAR WA_FCAT.
L_COL = L_COL + 1.
ENDFORM. " SUB_CREATE_FCAT
*&---------------------------------------------------------------------*
*& Form ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM alv .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-CPROG
" I_CALLBACK_USER_COMMAND = 'ZUSER_COMM'
" I_GRID_TITLE = G_TEXT
" IS_LAYOUT = WA_LAYOUT
IT_FIELDCAT = IT_FCAT
" IT_EVENTS = IT_EVENTS
" IT_SORT = IT_SORT
" I_SAVE = 'X'
TABLES
T_OUTTAB = IT_FINAL
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " ALV

You might also like