antelio
7/19/2018 - 4:32 AM

Z_BKPF_BSEG_OUTPUT

*&---------------------------------------------------------------------*
*& Report  Z_BSEG_OUTPUT
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  z_bseg_output.

PARAMETERS:
  p_bukrs TYPE bukrs,
  p_gjahr TYPE gjahr,
  p_datab TYPE datab,
  p_datai TYPE datai.


PARAMETERS:
  p_path TYPE string DEFAULT '/usr/sap/tmp/' LOWER CASE.



FIELD-SYMBOLS <fs> TYPE ANY.
DATA: len(10) TYPE p.
*end new variables
TABLES: bseg, bkpf.

DATA: wa(2000),
      open_file_bseg,
      open_file_bkpf,
      v_file_bseg(200),
      v_file_bkpf(200).

CONCATENATE p_path 'bseg.txt' INTO v_file_bseg.
CONCATENATE p_path 'bkpf.txt' INTO v_file_bkpf.

SELECT *
  FROM bkpf
 WHERE bukrs = p_bukrs
   AND gjahr = p_gjahr
   AND budat BETWEEN p_datab AND p_datai.

  IF open_file_bseg = space.
    OPEN DATASET v_file_bseg FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
    IF sy-subrc = 0.
      open_file_bseg = 'X'.
    ELSE.
      EXIT.
    ENDIF.
  ENDIF.

  IF open_file_bkpf = space.
    OPEN DATASET v_file_bkpf FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
    IF sy-subrc = 0.
      open_file_bkpf = 'X'.
    ELSE.
      EXIT.
    ENDIF.
  ENDIF.

  IF open_file_bkpf = 'X'.
    DO.
      ASSIGN COMPONENT sy-index OF
             STRUCTURE bkpf TO <fs>.
      IF sy-subrc <> 0. EXIT. ENDIF.
      len = STRLEN( wa ).
      WRITE <fs> TO wa+len LEFT-JUSTIFIED.
      len = STRLEN( wa ).
      WRITE '|' TO wa+len.
    ENDDO.


    TRANSFER wa TO v_file_bkpf.
    CLEAR wa.
  ENDIF.

  IF open_file_bseg = 'X'.
    SELECT *
      FROM bseg
     WHERE bukrs = p_bukrs
       AND gjahr = p_gjahr
       AND belnr = bkpf-belnr.
*        MOVE bseg TO wa. "we don't use this anymore
      DO.
        ASSIGN COMPONENT sy-index OF
               STRUCTURE bseg TO <fs>.
        IF sy-subrc <> 0. EXIT. ENDIF.
        len = STRLEN( wa ).
        WRITE <fs> TO wa+len LEFT-JUSTIFIED.
        len = STRLEN( wa ).
        WRITE '|' TO wa+len.
      ENDDO.


      TRANSFER wa TO v_file_bseg.
      CLEAR wa.
    ENDSELECT.
  ENDIF.
ENDSELECT.

IF open_file_bseg = 'X'.
  CLOSE DATASET v_file_bkpf.
ENDIF.

IF open_file_bkpf = 'X'.
  CLOSE DATASET v_file_bkpf.
ENDIF.