cancel
Showing results for 
Search instead for 
Did you mean: 

AFTER TRANSACTION 'ME22N' , THE CHANGES NOT REFLECTED IN ALV.

Zakir_hussain
Explorer
0 Kudos

IM a fresher in abap.

I have created a purchase order report with 2 screens, one shows 4 columns and other shows the item details with respect to the po number.

And on 2nd screen , I created a custom button, that should call transaction ME22n.

  • ON ME22N TRNSACTION IM CHANGING THE PO QUANTITY, AFTER SAVING IT PASSES TO SCREEN 1. BUT THE CHANGE IN QUANTITY NOT REFELECTED IN 1ST SCREEN, RATHER SHOWING IN 2ND SCREEN.HOW TO SHOW THE CHANGED QUANTITY IN 1ST SCREEN i.e) after the transaction.
  • please need help to resolve this issue.
  • Next is to show the quantity field in color when value changed via transaction. how to write logic? pls help..

here is the code ive did, upto call transaction.

tables: ekko,ekpo.
INCLUDE zdata.  " include data declaration.

"selection screen.

SELECTION-SCREEN: begin of block b2 with frame title text-002.
  SELECT-OPTIONS: s_bukrs for ekKo-buKRs,
                   s_lifnr for ekko-lifnr,
                   s_ebeln for ekKo-ebeln ."OBLIGATORY.
  SELECTION-SCREEN: end of block b2.

*AT
  START-OF-SELECTION.
perform get_data.
perform f_cats.
PERFORM build_layout.
PERFORM SUBTOTAL.
PERFORM DATA_RETRIEVAL.
PERFORM DISPLAY.

*&---------------------------------------------------------------------*
*&      Form  GET_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM get_data .

 select *
        from ekko
        into CORRESPONDING FIELDS OF TABLE it_ekko
   WHERE bukrs in s_bukrs and
          ebeln in s_ebeln AND
          LIFNR IN S_LIFNR.

   sort it_ekko by ebeln ASCENDING.

if it_ekKo is not initial.
  SELECT ebeln
         ebelp
         bukrs
         matnr
         werks
         MENGE
        MEINS
        NETWR
    MATKL
*        WAERK
    FROM EKPO
    INTO CORRESPONDING FIELDS OF  TABLE IT_EKPO
    FOR ALL ENTRIES IN IT_EKKO
    WHERE EBELN = IT_EKKO-EBELN.

sort it_ekpo by ebeln ASCENDING.
        ENDIF.


ENDFORM.                    " GET_DATA

FORM SUBTOTAL.
  wa_sort-spos = 1.
   wa_sort-fieldname = 'lifnr'.
*   WA_SORT-TABNAME = 'IT_EKKO'.
  wa_sort-up = 'X'.
  wa_sort-subtot = 'X'.
  APPEND wa_sort TO it_sort.

  CLEAR WA_SORT.

  ENDFORM.


*&---------------------------------------------------------------------*
*&      Form  F_CATS
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM f_cats .

WA_LAYO-colwidth_optimize = 'X'.
* Set layout field for row attributes(i.e. color)
WA_LAYO-info_fieldname = 'LINE_COLOR'.

  wa_fcat-col_pos = '1'.
wa_fcat-fieldname = 'ebeln'.
wa_fcat-seltext_m = 'PO NUMBER'.
*WA_FCAT-emphasize = 'X'.
wa_fcat-hotspot = 'X'.
APPEND wa_fcat to it_fcat.
CLEAR:WA_FCAT.

wa_fcat-col_pos = '2'.
wa_fcat-fieldname = 'bukrs'.
*WA_FCAT-emphasize = 'C2'.
wa_fcat-seltext_m = 'COMPANY CODE'.
APPEND wa_fcat to it_fcat.
CLEAR:WA_FCAT.


wa_fcat-col_pos = '3'.
wa_fcat-fieldname = 'lifnr'.
wa_fcat-seltext_m = 'VENDOR'.
*WA_FCAT-emphasize = 'C3'.
APPEND wa_fcat to it_fcat.
CLEAR:WA_FCAT.


wa_fcat-col_pos = '4'.
wa_fcat-fieldname = 'MATNR'.
wa_fcat-seltext_m = 'MATERIAL'.
*WA_FCAT-emphasize = 'C4'.
APPEND wa_fcat to it_fcat.
CLEAR:WA_FCAT.


wa_fcat-col_pos = '5'.
wa_fcat-fieldname = 'WERKS'.
wa_fcat-seltext_m = 'PLANT'.
*WA_FCAT-emphasize = 'C5'.
APPEND wa_fcat to it_fcat.
CLEAR:WA_FCAT.



wa_fcat-col_pos = '6'.
wa_fcat-fieldname = 'MENGE'.
wa_fcat-seltext_m = 'PO QUANTITY'.
*WA_FCAT-emphasize = 'C6'.
WA_FCAT-DO_SUM = 'X'.
APPEND wa_fcat to it_fcat.
CLEAR:WA_FCAT.




ENDFORM.                    " F_CATS



*&---------------------------------------------------------------------*
*&      Form  DATA_RETRIEVAL
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM data_retrieval .
*data: Id_color(1) type c.

LOOP AT IT_EKPO INTO WA_EKPO.

  WA_FINAL-EBELN = WA_EKPO-EBELN.
  WA_FINAL-BUKRS = WA_EKPO-BUKRS.
  WA_FINAL-MATNR = WA_EKPO-MATNR.
  WA_FINAL-WERKS = WA_EKPO-WERKS.
  WA_FINAL-MENGE = WA_EKPO-MENGE.
  WA_FINAL-EBELP = WA_EKPO-EBELP.
   WA_FINAL-MATkL = WA_EKPO-MATkL.
    WA_FINAL-meins = WA_EKPO-meins.
    wa_final-netwr = wa_ekpo-netwr.


READ TABLE IT_EKKO INTO WA_EKKO WITH KEY EBELN = WA_EKPO-EBELN.
  IF SY-SUBRC = 0.

  WA_FINAL-LIFNR = WA_EKKO-LIFNR.
*  WA_FINAL-WAERS = WA_EKKO-WAERS.

  ENDIF.

*id_color = id_color + 1.
*
*  if Id_color = 8.
*Id_color = 1.
*endif.
*concatenate 'C' Id_color '10' into WA_FINAL-line_color.
*** wa_ekko-line_color = 'C410'.
**modify it_FINAL from wa_FINAL.


  APPEND WA_FINAL TO IT_FINAL.



ENDLOOP.
ENDFORM.                    " DATA_RETRIEVAL

FORM TOP_OF_PAGE1.

  CLEAR WA_HEADER.
  WA_HEADER-TYP = 'H'.
  WA_HEADER-INFO = 'PURCHASE ORDER RECORD'.
  APPEND WA_HEADER TO IT_HEADER.


  CLEAR WA_HEADER.
  DESCRIBE TABLE IT_FINAL LINES LINES.
 lines_char = LINES.
  CONCATENATE 'TOTAL NO OF RECORD SELECTED' lines_char INTO V_LINES SEPARATED BY SPACE.
  WA_HEADER-TYP = 'A'.
  WA_HEADER-INFO = V_LINES.
  APPEND WA_HEADER TO IT_HEADER.

  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
      IT_LIST_COMMENTARY       = IT_HEADER
            .
REFRESH IT_HEADER.
CLEAR: WA_HEADER.
ENDFORM.

form build_layout.
WA_LAYO-no_input = 'X'.
WA_LAYO-colwidth_optimize = 'X'.
WA_LAYO-totals_text = 'Totals'(201).
* Set layout field for row attributes(i.e. color)
WA_LAYO-info_fieldname = 'LINE_COLOR'.
endform. " BUILD_LAYOUT
*&---------------------------------------------------------------------*
*&      Form  DISPLAY
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM display .
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
 EXPORTING
*   I_INTERFACE_CHECK                 = ' '
*   I_BYPASSING_BUFFER                = ' '
*   I_BUFFER_ACTIVE                   = ' '
   I_CALLBACK_PROGRAM                = SY-REPID
*   I_CALLBACK_PF_STATUS_SET          = ' '
   I_CALLBACK_USER_COMMAND           = 'USER_COMMAND'
   I_CALLBACK_TOP_OF_PAGE            = 'TOP_OF_PAGE1'

   IS_LAYOUT                         = WA_LAYO
   IT_FIELDCAT                       = IT_FCAT
   IT_SORT                           = it_sort
 I_SAVE                            = 'X'
  TABLES
    T_OUTTAB                          = IT_FINAL
 EXCEPTIONS
   PROGRAM_ERROR                     = 1
   OTHERS                            = 2
          .
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.



ENDFORM.                    " DISPLAY

form  USER_COMMAND USING R_UCOMM LIKE SY-UCOMM RS_SELF TYPE SLIS_SELFIELD.
  FREE:IT_FCAT.
  CASE R_UCOMM.
    WHEN '&IC1'.
      READ TABLE IT_final INTO wa_final INDEX RS_SELF-TABINDEX.

       PERFORM GETDATA2.
      PERFORM FIELDCAT2.
      PERFORM DISPLAY2.

      WHEN 'BACK'.
        LEAVE TO SCREEN 0.

  ENDCASE.
ENDFORM.


*&---------------------------------------------------------------------*
*&      Form  GETDATA2
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM getdata2 .
*   SET PF-STATUS 'BUTTON'.
 IF IT_FINAL IS NOT INITIAL.
select  ebeln ebelp matnr WERKS matkl  bukrs meins menge netwr
  from  ekpo INTO CORRESPONDING FIELDS OF  table it_ekpo
  WHERE EBELN = WA_FINAL-EBELN.

  ENDIF.

ENDFORM.                    " GETDATA2


*&---------------------------------------------------------------------*
*&      Form  FIELDCAT2
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM fieldcat2 .
CLEAR:WA_FCAT.
WA_FCAT1-COL_POS = '1'.
WA_FCAT1-JUST = 'R'.
wa_fcat1-fieldname = 'ebeln'.
wa_fcat1-seltext_m = 'PO NUMBER'.
APPEND wa_fcat1 to it_fcat1.
CLEAR:WA_FCAT1.

wa_fcat1-col_pos = '2'.
wa_fcat1-fieldname = 'EBELP'.
wa_fcat1-seltext_m = 'PO ITEM'.
APPEND wa_fcat1 to it_fcat1.
CLEAR:WA_FCAT1.

wa_fcat1-col_pos = '3'.
WA_FCAT1-TABNAME = 'IT_ekko'.
wa_fcat1-fieldname = 'bukrs'.
wa_fcat1-seltext_m = 'COMPANY CODE'.
APPEND wa_fcat1 to it_fcat1.
CLEAR:WA_FCAT1.


*wa_fcat1-col_pos = '4'.
*wa_fcat1-fieldname = 'OIC_LIFNR'.
*wa_fcat1-seltext_m = 'VENDOR'.
*APPEND wa_fcat1 to it_fcat1.
*CLEAR:WA_FCAT1.


wa_fcat1-col_pos = '4'.
wa_fcat1-fieldname = 'MATNR'.
wa_fcat1-seltext_m = 'MATERIAL'.
APPEND wa_fcat1 to it_fcat1.
CLEAR:WA_FCAT1.


wa_fcat1-col_pos = '5'.
wa_fcat1-fieldname = 'MATKL'.
wa_fcat1-seltext_m = 'MAT. GROUP'.
APPEND wa_fcat1 to it_fcat1.
CLEAR:WA_FCAT1.



wa_fcat1-col_pos = '6'.
wa_fcat1-fieldname = 'WERKS'.
wa_fcat1-seltext_m = 'PLANT'.
WA_FCAT1-DO_SUM = 'X'.
APPEND wa_fcat1 to it_fcat1.
CLEAR:WA_FCAT1.

wa_fcat1-col_pos = '7'.
wa_fcat1-fieldname = 'MENGE'.
wa_fcat1-seltext_m = 'PO QUANTITY'.
APPEND wa_fcat1 to it_fcat1.
CLEAR:WA_FCAT1.

wa_fcat1-col_pos = '8'.
wa_fcat1-fieldname ='MEINS'.
wa_fcat1-seltext_m = 'UOM'.
APPEND wa_fcat1 to it_fcat1.
CLEAR:WA_FCAT1.

wa_fcat1-col_pos = '9'.
wa_fcat1-fieldname ='NETWR'.
wa_fcat1-seltext_m = 'AMOUNT'.
APPEND wa_fcat1 to it_fcat1.
CLEAR:WA_FCAT1.

wa_fcat1-col_pos = '10'.
wa_fcat1-fieldname ='WAERS'.
wa_fcat1-seltext_m = 'CURRENCY'.
APPEND wa_fcat1 to it_fcat1.
CLEAR:WA_FCAT1.

WA_LAYO-colwidth_optimize = 'X'.
WA_LAYO-info_fieldname = 'LINE_COLOR'.
WA_LAYO-COLTAB_FIELDNAME = 'CELLCOLOR'.
ENDFORM.                    " FIELDCAT2

FORM TOP_OF_PAGE2.

  CLEAR WA_HEADER1.
  WA_HEADER1-TYP = 'H'.
  WA_HEADER1-INFO = 'PURCHASE ORDER RECORD'.
  APPEND WA_HEADER1 TO IT_HEADER1.

  CLEAR WA_HEADER1.
  WA_HEADER1-TYP = 'S'.
  WA_HEADER1-KEY = 'DATE:'.
  CONCATENATE SY-DATUM+6(2) SY-DATUM+4(2) SY-DATUM(4) INTO WA_HEADER1-INFO SEPARATED BY '/'.
  APPEND WA_HEADER1 TO IT_HEADER1.

  CLEAR :WA_HEADER1,lines_char,v_lines,lines.
  DESCRIBE TABLE IT_ekpo LINES LINES.
 lines_char = LINES.
  CONCATENATE 'TOTAL NO OF RECORD SELECTED' lines_char INTO V_LINES SEPARATED BY SPACE.
  WA_HEADER1-TYP = 'A'.
  WA_HEADER1-INFO = V_LINES.
  APPEND WA_HEADER1 TO IT_HEADER1.

  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
      IT_LIST_COMMENTARY       = IT_HEADER1
            .
REFRESH IT_HEADER1.
CLEAR: WA_HEADER1.
ENDFORM.

*&---------------------------------------------------------------------*
*&      Form  DISPLAY2
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM display2 .

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
 EXPORTING
*   I_INTERFACE_CHECK                 = ' '
*   I_BYPASSING_BUFFER                = ' '
*   I_BUFFER_ACTIVE                   = ' '
   I_CALLBACK_PROGRAM                = SY-REPID
   I_CALLBACK_PF_STATUS_SET          = 'SUB_PF_STATUS'
   I_CALLBACK_USER_COMMAND           = 'USER_COMMAND2'
   I_CALLBACK_TOP_OF_PAGE            = 'TOP_OF_PAGE2'
*
   IS_LAYOUT                         = WA_LAYO
   IT_FIELDCAT                       = IT_FCAT1
*   IT_EXCLUDING                      =
*   IT_SPECIAL_GROUPS                 =
*   IT_SORT                           =
*   IT_FILTER                         =
*   IS_SEL_HIDE                       =
*   I_DEFAULT                         = 'X'
   I_SAVE                            = 'X'
*   IS_VARIANT                        =
*   IT_EVENTS                         =
*   IT_EVENT_EXIT                     = 'X'
*   IS_PRINT                          =
*   IS_REPREP_ID                      =
*   I_SCREEN_START_COLUMN             = 0
*   I_SCREEN_START_LINE               = 0
*   I_SCREEN_END_COLUMN               = 0
*   I_SCREEN_END_LINE                 = 0
*   I_HTML_HEIGHT_TOP                 = 0
*   I_HTML_HEIGHT_END                 = 0
*   IT_ALV_GRAPHICS                   =
*   IT_HYPERLINK                      =
*   IT_ADD_FIELDCAT                   =
*   IT_EXCEPT_QINFO                   =
*   IR_SALV_FULLSCREEN_ADAPTER        =
* IMPORTING
* IMPORTING
*   E_EXIT_CAUSED_BY_CALLER           =
*   ES_EXIT_CAUSED_BY_USER            =
  TABLES
    T_OUTTAB                          = it_EKPO
* EXCEPTIONS
*   PROGRAM_ERROR                     = 1
*   OTHERS                            = 2
          .
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

*DATA REF1 TYPE REF TO CL_GUI_ALV_GRID.
*        CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
*             IMPORTING
*                  E_GRID = REF1.
*        CALL METHOD REF1->CHECK_CHANGED_DATA.
CLEAR: WA_FCAT1.
REFRESH IT_FCAT1.
ENDFORM.                    " DISPLAY2


FORM SUB_PF_STATUS USING rt_extab TYPE slis_t_extab.
  SET PF-STATUS 'BUTTON'.
  ENDFORM.


  form  USER_COMMAND2 USING R_UCOMM LIKE SY-UCOMM RS_SELF TYPE SLIS_SELFIELD.
  SET SCREEN 0.
    case R_UCOMM.
      when 'ME22N'.
        READ TABLE IT_EKPO INTO WA_EKPO INDEX RS_SELF-TABINDEX.
         IF SY-SUBRC = 0.
            RS_SELF-REFRESH = 'X'.
        SET PARAMETER ID 'BES' FIELD WA_EKPO-EBELN.
        CALL TRANSACTION 'ME22N' AND SKIP FIRST SCREEN.
        eNDIF.

Accepted Solutions (0)

Answers (0)