*&———————————————————————*
*& Report  ZJACKTEST
*&
*&———————————————————————*
*&
*&
*&———————————————————————*

REPORT  ZJACKTEST.

TYPE-POOLS: slis.
TABLES: vbak,vbap, knvv, kna1, mara ,lips, vbrp.
TYPES: BEGIN OF record,
        sdoc LIKE vbak-vbeln,
        sitem LIKE vbap-posnr,
        mcode LIKE mara-matnr,
        mname LIKE vbap-arktx,
        oquanti LIKE vbap-kwmeng,
        ovalue LIKE vbap-netwr,
        ocurrency LIKE vbap-waerk,
        ddoc LIKE lips-vbeln,
        ditem LIKE lips-posnr,
        idoc LIKE vbrp-vbeln,
        iitem LIKE vbrp-posnr,
      END OF record.

DATA: itab TYPE STANDARD TABLE OF record WITH HEADER LINE.
DATA:  name1 LIKE kna1-name1,
       name2 LIKE kna1-name2.
DATA: i_fieldcat_alv TYPE slis_t_fieldcat_alv WITH HEADER LINE,
      it_events TYPE slis_alv_event OCCURS 1 WITH HEADER LINE,
      alv_event        TYPE slis_t_event,
      I_layout TYPE slis_layout_alv,
      i_fieldcat TYPE slis_fieldcat_alv,
      pos        TYPE i VALUE 1,
      w_repid LIKE sy-repid.
*———————————————————————-*
* Selection-screen design                                              *
*———————————————————————-*

SELECT-OPTIONS: o_date FOR vbak-erdat OBLIGATORY.     "sales docu date

PARAMETERS: customer LIKE vbak-kunnr OBLIGATORY
            DEFAULT ‘GCN00010′,                      "customer code
            material LIKE mara-matnr OBLIGATORY
            DEFAULT ‘000000000280012001′.            "material number
*———————————————————————-*
* Start of selection event                                             *
*———————————————————————-*

*START-OF-SELECTION.

  PERFORM data_selection.
  perform layout_build.
  PERFORM fields.
  PERFORM append_alv_event CHANGING alv_event.
  PERFORM display_data.
*———————————————————————-*
*form data_selection
**
*———————————————————————-*

FORM data_selection.
SELECT a~vbeln b~posnr c~matnr b~arktx b~kwmeng b~netwr b~waerk
        c~vbeln c~posnr d~vbeln d~posnr
INTO (itab-sdoc, itab-sitem, itab-mcode, itab-mname,
       itab-oquanti,itab-ovalue,itab-ocurrency, itab-ddoc,
       itab-ditem, itab-idoc, itab-iitem)
FROM ( ( lips AS c
        INNER JOIN vbrp AS d ON c~vbeln = d~vgbel
                            AND c~posnr = d~vgpos
        INNER JOIN vbap AS b  ON c~vgbel = b~vbeln
                            AND  c~vgpos = b~posnr )
        INNER JOIN vbak AS a ON a~vbeln = b~vbeln )
WHERE a~erdat IN o_date AND a~kunnr = customer AND b~matnr = material.
    APPEND itab.
  ENDSELECT.

  IF sy-subrc NE 0.
    MESSAGE ‘No Corresponding Record!’ TYPE ‘I’.
  ENDIF.
ENDFORM.                    "data_selection
*———————————————————————-*
*form fields
**
*———————————————————————-*
FORM fields.
  REFRESH i_fieldcat_alv.
  pos = 1.
  CLEAR i_fieldcat.

  i_fieldcat-col_pos = pos.
  i_fieldcat-fieldname = ‘SDOC’.
  i_fieldcat-seltext_l = ‘주문번호’.
  APPEND i_fieldcat TO i_fieldcat_alv.

  pos = pos + 1.
  i_fieldcat-col_pos       =  pos.
  i_fieldcat-fieldname     = ‘SITEM’.
  i_fieldcat-seltext_l     = ‘아이템번호’.
  APPEND i_fieldcat TO  i_fieldcat_alv.

  pos = pos + 1.
  i_fieldcat-col_pos       =  pos.
  i_fieldcat-fieldname     = ‘MCODE’.
  i_fieldcat-seltext_l     = ‘제품코드’.
  APPEND i_fieldcat TO  i_fieldcat_alv.

  pos = pos + 1.
  i_fieldcat-col_pos       =  pos.
  i_fieldcat-fieldname     = ‘MNAME’.
  i_fieldcat-seltext_l     = ‘제품명’.
  APPEND i_fieldcat TO  i_fieldcat_alv.

  pos = pos + 1.
  i_fieldcat-col_pos       =  pos.
  i_fieldcat-fieldname     = ‘OQUANTI’.
  i_fieldcat-seltext_l     = ‘주문수량’.
  APPEND i_fieldcat TO  i_fieldcat_alv.

  pos = pos + 1.
  i_fieldcat-col_pos       =  pos.
  i_fieldcat-fieldname     = ‘OVALUE’.
  i_fieldcat-seltext_l     = ‘주문실적’.
  APPEND i_fieldcat TO  i_fieldcat_alv.

  pos = pos + 1.
  i_fieldcat-col_pos       =  pos.
  i_fieldcat-fieldname     = ‘OCURRENCY’.
  i_fieldcat-seltext_l     = ‘단위’.
  APPEND i_fieldcat TO  i_fieldcat_alv.

  pos = pos + 1.
  i_fieldcat-col_pos       =  pos.
  i_fieldcat-fieldname     = ‘DDOC’.
  i_fieldcat-seltext_l     = ‘납품문서번호’.
  APPEND i_fieldcat TO  i_fieldcat_alv.

  pos = pos + 1.
  i_fieldcat-col_pos       =  pos.
  i_fieldcat-fieldname     = ‘DITEM’.
  i_fieldcat-seltext_l     = ‘아이템’.
  APPEND i_fieldcat TO  i_fieldcat_alv.

  pos = pos + 1.
  i_fieldcat-col_pos       =  pos.
  i_fieldcat-fieldname     = ‘IDOC’.
  i_fieldcat-seltext_l     = ‘대금청구번호’.
  APPEND i_fieldcat TO  i_fieldcat_alv.

  pos = pos + 1.
  i_fieldcat-col_pos       =  pos.
  i_fieldcat-fieldname     = ‘IITEM’.
  i_fieldcat-seltext_l     = ‘아이템번호’.
  APPEND i_fieldcat TO  i_fieldcat_alv.

  CLEAR i_fieldcat.
ENDFORM.                    "fields

*———————————————————————-*
*form display_data
**
*———————————————————————-*
FORM display_data.
  w_repid = sy-repid.
  CALL FUNCTION ‘REUSE_ALV_LIST_DISPLAY’
    EXPORTING
      i_callback_program = w_repid
      i_callback_user_command = ‘USER_COMMAND’
   is_layout = i_layout
   it_events = alv_event[]
*      i_save             = ‘ ‘
      it_fieldcat        = i_fieldcat_alv[]
    TABLES
      t_outtab           = itab.
ENDFORM.                    "display_data
*———————————————————————-*
*form layout_build
**
*———————————————————————-*
Form layout_build.
*   I_layout-detail_popup      = ‘X’.  " Display row in popup
   I_layout-get_selinfos      = ‘X’.  " Read selection screen in
   i_layout-colwidth_optimize = ‘X’.
*   layout-zebra             = ‘X’.  "striped pattern
*   I_layout-f2code            = ‘&ETA’.

endform.                    " BUILD_LAYOUT

*———————————————————————-*
*      <–P_ALV_EVENT  text
*———————————————————————-*
FORM append_alv_event CHANGING p_alv_event TYPE slis_t_event.
  DATA ls_events TYPE slis_alv_event.
  ls_events-name = ‘USER_COMMAND’.
  ls_events-form = ‘USER_COMMAND’.
  APPEND ls_events TO p_alv_event.
*  ls_events-name = ‘TOP_OF_PAGE’.
*  ls_events-form = ‘TOP_OF_PAGE’.
*  APPEND ls_events TO p_alv_event.
ENDFORM.                    " append_alv_event
*&———————————————————————*
*&      Form  LINE_SELECTION
*&———————————————————————*
*       text
*———————————————————————-*
*  –>  p1        text
*  <–  p2        text
*———————————————————————-*
FORM user_command USING r_ucomm LIKE sy-ucomm
                        rs_selfield TYPE slis_selfield.
  CHECK r_ucomm EQ ‘&IC1′ AND NOT rs_selfield-value IS INITIAL.
  CASE rs_selfield-fieldname.
    WHEN ‘ITAB-SDOC’.
      SET PARAMETER ID ‘AUN’ FIELD rs_selfield-valuE.
      CALL TRANSACTION ‘VA03′ AND SKIP FIRST SCREEN.
    WHEN ‘ITAB-DDOC’.
      SET PARAMETER ID ‘VL’ FIELD rs_selfield-value.
      CALL TRANSACTION ‘VL03N’ AND SKIP FIRST SCREEN.

    WHEN ‘ITAB-IDOC’.
      SET PARAMETER ID ‘VF’ FIELD rs_selfield-value.
      CALL TRANSACTION ‘VF03′ AND SKIP FIRST SCREEN.
  ENDCASE.

Related posts