You are on page 1of 3

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

*& Report Z_SAM_ASSIG2


*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT z_sam_assig2 LINE-COUNT 25(1).
TYPES: BEGIN OF str_lips,
vbeln TYPE lips-vbeln,
posnr TYPE lips-posnr,
vbelv TYPE vbfa-vbelv,
posnv TYPE vbfa-posnv,
vbeln1 TYPE vbfa-vbeln,
posnn TYPE vbfa-posnn,
END OF str_lips.
TYPES: BEGIN OF str_vbfa,
vbelv TYPE vbfa-vbelv,
posnv TYPE vbfa-posnv,
vbeln TYPE vbfa-vbeln,
posnn TYPE vbfa-posnn,
END OF str_vbfa.
TYPES: ttyp_lips TYPE STANDARD TABLE OF str_lips,
ttyp_vbfa TYPE STANDARD TABLE OF str_vbfa.
DATA: int_lips TYPE ttyp_lips,
wa_lips TYPE str_lips,
int_vbfa TYPE ttyp_vbfa,
wa_vbfa TYPE str_vbfa,
lips_index TYPE sy-tabix.
PARAMETERS : sc_vbeln type lips-vbeln.
START-OF-SELECTION.
PERFORM fetch_build_records CHANGING int_lips
wa_lips.
TOP-OF-PAGE.
PERFORM report_header.
END-OF-PAGE.
WRITE:/ 'Page No:' COLOR 3, sy-pagno.
END-OF-SELECTION.
PERFORM display_report USING int_lips
wa_lips.
*&---------------------------------------------------------------------*
*&
Form fetch_build_records
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
<--P_INT_LIPS text
*
<--P_WA_LIPS text
*----------------------------------------------------------------------*
FORM fetch_build_records CHANGING p_int_lips TYPE ttyp_lips
p_wa_lips TYPE str_lips.

SELECT vbeln posnr FROM lips INTO TABLE p_int_lips WHERE vbeln = sc_vbeln.
*
IF p_int_lips[] IS NOT INITIAL.
SELECT vbelv posnv vbeln posnn FROM vbfa INTO TABLE int_vbfa
FOR ALL ENTRIES IN p_int_lips
WHERE vbeln = p_int_lips-vbeln AND
posnn = p_int_lips-posnr.
ELSE.
MESSAGE s000(z_sam_mess).
LEAVE LIST-PROCESSING.
ENDIF.
IF int_vbfa[] IS NOT INITIAL.
LOOP AT p_int_lips INTO p_wa_lips.
lips_index = sy-tabix.
LOOP AT int_vbfa INTO wa_vbfa
WHERE vbeln = p_wa_lips-vbeln AND
posnn = p_wa_lips-posnr.
p_wa_lips-vbelv = wa_vbfa-vbelv.
p_wa_lips-posnv = wa_vbfa-posnv.
ENDLOOP.
LOOP AT int_vbfa INTO wa_vbfa
WHERE vbelv = p_wa_lips-vbeln AND
posnv = p_wa_lips-posnr.
p_wa_lips-vbeln1 = wa_vbfa-vbeln.
p_wa_lips-posnn = wa_vbfa-posnn.
ENDLOOP.
MODIFY p_int_lips FROM p_wa_lips INDEX lips_index TRANSPORTING vbelv posnv
vbeln1 posnn .
ENDLOOP.
ELSE.
MESSAGE s000(z_sam_mess).
LEAVE LIST-PROCESSING.
ENDIF.
ENDFORM.
" fetch_build_records
*&---------------------------------------------------------------------*
*&
Form report_header
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM report_header .
WRITE: /1(15) 'Delivery No' COLOR 3,
20(15)'Delivery Item' COLOR 3,
40(15)'Sales Order' COLOR 3,
60(15)'Sales Item' COLOR 3,
80(15)'Invoice No.' COLOR 3,
100(15)'Invoice Item' COLOR 3.
ENDFORM.
" report_header
*&---------------------------------------------------------------------*
*&
Form display_report
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->P_INT_LIPS text
*
-->P_WA_LIPS text

*----------------------------------------------------------------------*
FORM display_report USING
p_int_lips TYPE ttyp_lips
p_wa_lips TYPE str_lips.
LOOP AT p_int_lips INTO p_wa_lips.
WRITE:
/1(15) p_wa_lips-vbeln,
20(15) p_wa_lips-posnr,
40(15) p_wa_lips-vbelv,
60(15) p_wa_lips-posnv,
80(15) p_wa_lips-vbeln1,
100(15) p_wa_lips-posnn.
ENDLOOP.
ENDFORM.

" display_report

You might also like