Wednesday, 8 November 2023

SAP ABAP - ALV Activate Checkbox With Condition Value

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

*& Report YALV_CKBOX
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT yalv_ckbox.

TYPES:
  BEGIN OF ty_data,
    rbukrs  TYPE acdoca-rbukrs,
    belnr   TYPE acdoca-belnr,
    gjahr   TYPE acdoca-gjahr,
    matnr   TYPE acdoca-matnr,
    sgtxt   TYPE acdoca-sgtxt,
    zckbx   TYPE char1,
    celltab TYPE lvc_t_styl,
  END OF ty_data.

DATA:
  ob_container TYPE REF TO cl_gui_custom_container,
  ob_grid      TYPE REF TO cl_gui_alv_grid.

DATA:
  it_fieldcat TYPE lvc_t_fcat,
  wa_fieldcat LIKE LINE OF it_fieldcat,
  is_lyout    TYPE lvc_s_layo.

DATA:
  lt_data    TYPE TABLE OF ty_data,
  ls_celltab TYPE lvc_s_styl.

DATA :
  w_valid   TYPE char01,
  l_valid   TYPE c,
  lt_row_no TYPE lvc_t_roid,
  ls_row_no TYPE lvc_s_roid.

START-OF-SELECTION.
  REFRESH lt_data.
  SELECT rbukrs belnr gjahr matnr sgtxt FROM acdoca
    INTO CORRESPONDING FIELDS OF TABLE lt_data
      UP TO 10 ROWS WHERE matnr <> '' AND rbukrs 'IT'.

  sort lt_data by rbukrs belnr gjahr.

  LOOP AT lt_data ASSIGNING FIELD-SYMBOL(<fs_data>).
    IF <fs_data>-matnr 'FGA009553'.
      REFRESH <fs_data>-celltab.
      CLEAR ls_celltab.
      ls_celltab-fieldname 'ZCKBX'.
      ls_celltab-style cl_gui_alv_grid=>mc_style_disabled.
      INSERT ls_celltab INTO TABLE <fs_data>-celltab.

      <fs_data>-zckbx '-'.
    ENDIF.
  ENDLOOP.

  CALL SCREEN 100.

*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
  SET PF-STATUS 'PF100'.
  SET TITLEBAR  'TL100' WITH 'Test Alv CkBox'.

  PERFORM initial_screen.
ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
  CASE sy-ucomm.
    WHEN 'BACK' OR 'EXIT' OR 'CNCL'.
      LEAVE PROGRAM.
  ENDCASE.
ENDMODULE.

FORM initial_screen.
  IF ob_container IS INITIAL.
    CREATE OBJECT ob_container
      EXPORTING
        container_name 'CONTAINER'.

    CREATE OBJECT ob_grid
      EXPORTING
        i_parent ob_container.

*    CREATE OBJECT g_event_handler.
  ENDIF.

  PERFORM set_fieldcat.
  PERFORM set_lyout.
  PERFORM alv_displ_out.

  CALL METHOD ob_grid->check_changed_data
    IMPORTING
      e_valid w_valid.

  CALL METHOD ob_grid->register_edit_event
    EXPORTING
      i_event_id cl_gui_alv_grid=>mc_evt_enter.

  CALL METHOD ob_grid->refresh_table_display.

  CALL METHOD ob_grid->set_ready_for_input
    EXPORTING
      i_ready_for_input 1.
ENDFORM.

FORM set_fieldcat.
  REFRESH it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-fieldname 'RBUKRS'.
  wa_fieldcat-col_pos   1.
  wa_fieldcat-ref_table 'ACDOCA'.
  wa_fieldcat-key       'X'.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-fieldname 'BELNR'.
  wa_fieldcat-col_pos   2.
  wa_fieldcat-ref_table 'ACDOCA'.
  wa_fieldcat-key       'X'.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-fieldname 'GJAHR'.
  wa_fieldcat-col_pos   3.
  wa_fieldcat-key       'X'.
  wa_fieldcat-ref_table 'ACDOCA'.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-fieldname 'MATNR'.
  wa_fieldcat-col_pos   4.
  wa_fieldcat-ref_table 'ACDOCA'.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-fieldname 'SGTXT'.
  wa_fieldcat-col_pos   9.
  wa_fieldcat-ref_table 'ACDOCA'.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_fieldcat-fieldname 'ZCKBX'.
  wa_fieldcat-scrtext_l 'Select'.
  wa_fieldcat-col_pos   10.
  wa_fieldcat-edit_mask  'X'.
  wa_fieldcat-edit       'X'.
  wa_fieldcat-checkbox   'X'.
  APPEND wa_fieldcat TO it_fieldcat.

ENDFORM.

FORM set_lyout .
  CLEAR is_lyout.
  is_lyout-zebra        'X'.
  is_lyout-cwidth_opt   'X'.
  is_lyout-stylefname   'CELLTAB'.
ENDFORM.

FORM alv_displ_out.
  CALL METHOD ob_grid->set_table_for_first_display
    EXPORTING
*     is_variant                    = is_varnt      "DISVARIANT
      i_save                        'A'           "CHAR1 - X:Global - U:User - A:All - Space:No
      i_default                     'X'           "CHAR1 - X:Allowed - Space:not
      is_layout                     is_lyout      "LVC_S_LAYO
*     is_print                      = is_print      "LVC_S_PRNT
*     it_toolbar_excluding          = it_excld      "UI_FUNCTIONS
    CHANGING
      it_outtab                     lt_data
      it_fieldcatalog               it_fieldcat      "LVC_T_FCAT
*     it_sort                       = it_sort       "LVC_T_SORT
    EXCEPTIONS
      invalid_parameter_combination 1
      program_error                 2
      too_many_lines                3
      OTHERS                        4.
ENDFORM.



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.








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...