Tuesday, 7 November 2023

SAP ABAP - Retrieve Data From Standard Program MB52 Report to Custom Report

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

*& Report YMB52
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ymb52.
TABLES maramarcmardmchb.

DATABEGIN OF gt_mb52 OCCURS 0,
        matnr    LIKE mara-matnr,
        werks    LIKE t001w-werks,
        lgort    LIKE mard-lgort,
        sobkz    LIKE mkol-sobkz,
        ssnum    LIKE bickey-ssnum,
        pspnr    LIKE mspr-pspnr,
        vbeln    LIKE mska-vbeln,
        posnr    LIKE mska-posnr,
        lifnr    LIKE mkol-lifnr,
        kunnr    LIKE msku-kunnr,
        kzbws    LIKE mssa-kzbws,
        charg    LIKE mchb-charg,
        maktx    LIKE marav-maktx,
        bwkey    LIKE mbew-bwkey,
        mtart    LIKE marav-mtart,
        matkl    LIKE marav-matkl,
        meins    LIKE marav-meins,
        bwtty    LIKE marc-bwtty,
        xchar    LIKE marc-xchar,
        lgobe    LIKE t001l-lgobe,
        bwtar    LIKE mcha-bwtar,
        waers    LIKE t001-waers,
        name1    LIKE t001w-name1,
        labst    LIKE mard-labst,
        wlabs    LIKE mbew-salk3,
        sgt_scat LIKE  mchb-sgt_scat.

DATAowner  LIKE msis-owner,
      lifnr2 LIKE mslb-lifnr.

DATAEND OF gt_mb52,
gs_mb52 LIKE LINE OF gt_mb52.

DATABEGIN OF gs_data.
        INCLUDE STRUCTURE gs_mb52.
DATA:
      END OF gs_data,
      gt_data LIKE TABLE OF gs_data.

CONSTANTS:
  c_x   TYPE c     VALUE 'X'.

DATA :
   go_data  TYPE REF TO data.

FIELD-SYMBOLS:
       <gt_data> TYPE ANY TABLE.

SELECTION-SCREEN  BEGIN OF BLOCK b1 WITH   FRAME TITLE TEXT-001.
  SELECT-OPTIONS s_matnr FOR mara-matnr,
  s_werks FOR marc-werks,
  s_lgort FOR mard-lgort,
  s_charg FOR mchb-charg.
SELECTION-SCREEN END OF BLOCK b1.

START-OF-SELECTION.
  PERFORM get_data.

FORM get_data.
  cl_salv_bs_runtime_info=>set(
  EXPORTING
    display        abap_false
    metadata       abap_false
    data           abap_true ).


  SUBMIT rm07mlbs
    WITH matnr IN s_matnr
    WITH werks IN s_werks
    WITH lgort IN s_lgort
    WITH charg IN s_charg
    WITH negativ  abap_false
    WITH pa_sond  abap_true
    WITH xmchb    abap_true
    WITH nozero   c_x
    WITH novalues abap_false
    WITH pa_hsq   abap_false
    WITH pa_flt   c_x
    WITH p_vari   abap_false
    AND RETURN.

  "Get data from MB52
  TRY.
      cl_salv_bs_runtime_info=>get_data_ref(
      IMPORTING r_data go_data ).
      ASSIGN go_data->TO <gt_data>.

      "Keep mb52 data into internal table
      IF <gt_data> IS ASSIGNED.
        LOOP AT <gt_data> ASSIGNING FIELD-SYMBOL(<fs_data1>).
          MOVE-CORRESPONDING <fs_data1> TO gs_data.
          APPEND gs_data TO gt_data.
        ENDLOOP.
      ENDIF.

    CATCH cx_salv_bs_sc_runtime_info ##NO_HANDLER.
      MESSAGE 'Unable to retrieve alv data' TYPE 'e'.
  ENDTRY.

  cl_salv_bs_runtime_info=>clear_all).

  cl_demo_output=>display_datagt_data ).
ENDFORM.








Tuesday, 19 September 2023

SAP ABAP - ALV Average Field Value

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

*& Report ZALV_AVG
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zalv_avg.
TABLESekkoekpo.

TYPES:
  BEGIN OF ty_data,
    lifnr TYPE lifnr,
    matnr TYPE matnr,
    menge TYPE menge_d,
    meins TYPE meins,
  END OF ty_data.

DATA:
  lt_data TYPE TABLE OF ty_data.


DATA:
  lt_fieldcat TYPE slis_t_fieldcat_alv,
  ls_fieldcat TYPE slis_fieldcat_alv,
  is_layout   TYPE  slis_layout_alv,
  lt_sort     TYPE slis_t_sortinfo_alv,
  ls_sort     TYPE slis_sortinfo_alv.

PARAMETERS:
  p_bukrs TYPE bukrs.

SELECT-OPTIONS:
  s_matnr for ekpo-matnr,
  s_aedat FOR ekko-aedat.

START-OF-SELECTION.
  PERFORM get_data.
  PERFORM set_fieldcate.
  PERFORM display_data.

FORM get_data.
  REFRESH lt_data.
  SELECT ekko~lifnrekpo~matnrekpo~mengeekpo~meins
    FROM ekko INNER JOIN ekpo ON ekko~ebeln ekpo~ebeln
    INTO TABLE @lt_data
      WHERE ekko~bukrs @p_bukrs AND ekko~aedat IN @s_aedat and ekpo~matnr in @s_matnr.
ENDFORM.

FORM set_fieldcate.
  REFRESH lt_fieldcat.
  PERFORM :
        append_fieldcat USING 'LIFNR'    'Vendor Code' 'CHAR' '' '' '12' '' 'X' 'LT_DATA' '',
        append_fieldcat USING 'MATNR'    'Material' 'CHAR' '' '' '12' '' '' 'LT_DATA' '',
        append_fieldcat USING 'MENGE'    'Quantity' 'QUAN' 'MEINS' '' '12' 'C' '' 'LT_DATA' '',
        append_fieldcat USING 'MEINS'    'UoM' 'UNIT' '' '' '12' '' '' 'LT_DATA' ''.

  is_layout-colwidth_optimize 'X'.
  is_layout-info_fieldname    'LINECOLOR'.

  REFRESH lt_sort.
  CLEAR ls_sort.
  ls_sort-spos      1.
  ls_sort-fieldname 'LIFNR'.
  ls_sort-up        'X'.
  APPEND ls_sort TO lt_sort.

  CLEAR ls_sort.
  ls_sort-spos      2.
  ls_sort-fieldname 'MATNR'.
  ls_sort-subtot    'X'.
  ls_sort-up        'X'.
  APPEND ls_sort TO lt_sort.
ENDFORM.

FORM append_fieldcat USING p_fname p_fdesc p_dtype p_qfield p_cfield p_olen p_sum p_key p_tabname p_reftabname.
  DATA irows TYPE i.
  CLEAR irows.
  DESCRIBE TABLE lt_fieldcat LINES irows.
  irows irows + 1.
  CLEAR ls_fieldcat.
  ls_fieldcat-col_pos    irows.
  ls_fieldcat-key        p_key.
  ls_fieldcat-fieldname  p_fname.
  ls_fieldcat-seltext_l  p_fdesc.
  ls_fieldcat-seltext_m  p_fdesc.
  ls_fieldcat-seltext_s  p_fdesc.
  ls_fieldcat-datatype   p_dtype.
  ls_fieldcat-qfieldname p_qfield.
  ls_fieldcat-cfieldname p_cfield.
  ls_fieldcat-outputlen  p_olen.
  ls_fieldcat-do_sum     p_sum.
  ls_fieldcat-tabname    p_tabname.
  ls_fieldcat-ref_tabname p_reftabname.

  APPEND ls_fieldcat TO lt_fieldcat.
ENDFORM.

FORM display_data.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      is_layout     is_layout
      it_fieldcat   lt_fieldcat
      it_sort       lt_sort
      i_save        'X'
    TABLES
      t_outtab      lt_data
    EXCEPTIONS
      program_error 1
      OTHERS        2.
ENDFORM.









ABAP CDS View Part 10 : Authorization & DCL untuk ABAP CDS

Authorization & DCL di ABAP CDS | Panduan Lengkap (PFCG, @AccessControl, DCL) Authorization & DCL untuk ABAP CDS — Pandua...