Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

Database table update from output list.

Former Member
0 Kudos

Hi all

i am developing ALV report in which i have to give two fields editable. Now user can change that fields and able to save the data in database tables. I want to know how can i take values from screen in internal table or is there any other logic? please help me.

Hopeful answer will be rewarded.

Thanks.

1 REPLY 1

Former Member
0 Kudos

Hello,

Do like this:


*&---------------------------------------------------------------------*
*&      Form  ALV_DISPLAY
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM ALV_DISPLAY.
  DATA: IT_EVENTS TYPE SLIS_T_EVENT,
        WA_EVENTS LIKE LINE OF IT_EVENTS.
  REFRESH: IT_EVENTS.
  CLEAR: WA_EVENTS,IT_EVENTS.
  WA_EVENTS-NAME = 'PF_STATUS_SET'.
  WA_EVENTS-FORM = 'STATUS'.
  APPEND WA_EVENTS TO IT_EVENTS .
*--- ALV List Display
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
            I_CALLBACK_PROGRAM      = G_PROGNAME
            I_CALLBACK_USER_COMMAND = G_CALLBACK_USER_COMMAND
            IT_FIELDCAT             = GT_FIELDCAT
            IT_EVENTS               = IT_EVENTS
       TABLES
            T_OUTTAB                = G_T_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.
ENDFORM.                    " ALV_DISPLAY
*&---------------------------------------------------------------------*
*&      Form  USER_COMMAND_ALV
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM ALV_USER_COMMAND USING R_UCOMM     LIKE SY-UCOMM
                           RS_SELFIELD TYPE SLIS_SELFIELD.
  DATA: LR_EKKN LIKE EKKN,
        LR_OHNEBEW LIKE Z48M_MATOHNEBEW.
  CASE R_UCOMM.
    WHEN '&IC1'.
*--- Hotspot selektion
      CASE RS_SELFIELD-FIELDNAME.
        WHEN 'NOTE'.
          READ TABLE G_T_EKPO INDEX RS_SELFIELD-TABINDEX.
          IF G_T_EKPO-MTART NE 'DIEN'.
            SELECT SINGLE * FROM Z48M_MATOHNEBEW INTO LR_OHNEBEW
                                       WHERE MATNR = G_T_EKPO-MATNR.
            IF SY-SUBRC NE 0.
              SELECT * FROM  Z48M_NOTE_LIST INTO TABLE IT_TC01.
              CONCATENATE G_T_EKPO-EBELN G_T_EKPO-EBELP INTO TEXT1
                                                  SEPARATED BY '/'.
              SELECT SINGLE * FROM Z48M_LIEF_NOTE
                          WHERE EBELN = G_T_EKPO-EBELN
                            AND EBELP = G_T_EKPO-EBELP.
              IF SY-SUBRC = 0.
                LOOP AT IT_TC01.
                  IF IT_TC01-KRITER = 'QUALITÄT'.
                    IT_TC01-NOTE = Z48M_LIEF_NOTE-QUALI.
                  ENDIF.
                  IF IT_TC01-KRITER = 'KOSTEN'.
                    IT_TC01-NOTE = Z48M_LIEF_NOTE-KOSTE.
                  ENDIF.
                  IF IT_TC01-KRITER = 'LIEFERTERMIN'.
                    IT_TC01-NOTE = Z48M_LIEF_NOTE-LIEFE.
                  ENDIF.
                  IF IT_TC01-KRITER = 'FLEXIBILITÄT'.
                    IT_TC01-NOTE = Z48M_LIEF_NOTE-FLEXI.
                  ENDIF.
                  IF IT_TC01-KRITER = 'ZUSAMMENARBEIT'.
                    IT_TC01-NOTE = Z48M_LIEF_NOTE-ZUSAM.
                  ENDIF.
                  IF IT_TC01-KRITER = 'SCHWIERIGKEITSGRAD'.
                    IT_TC01-NOTE = Z48M_LIEF_NOTE-SCHWI.
                  ENDIF.
                  MODIFY IT_TC01.
                ENDLOOP.
*            MESSAGE I999(Z48MM) WITH TEXT-004 G_T_EKPO-EBELN
*                                              G_T_EKPO-EBELP.
                CALL SCREEN 0100 STARTING AT 20 05  ENDING AT 80 14.
                G_T_EKPO-NOTE = G_F_AVG.
                G_T_EKPO-FLAG = 'X'.
                MODIFY G_T_EKPO INDEX RS_SELFIELD-TABINDEX.
                RS_SELFIELD-REFRESH = 'X'.
              ELSE.
                CALL SCREEN 0100 STARTING AT 20 05  ENDING AT 80 14.
                G_T_EKPO-NOTE = G_F_AVG.
                G_T_EKPO-FLAG = 'X'.
                MODIFY G_T_EKPO INDEX RS_SELFIELD-TABINDEX.
                RS_SELFIELD-REFRESH = 'X'.
              ENDIF.
            ELSE.
              MESSAGE E105(Z48MM).
            ENDIF.
          ELSE.
* This check is done in order to avoid the valuation for the the
* Materials with type DIEN.

            SELECT SINGLE * FROM Z48M_MATOHNEBEW INTO LR_OHNEBEW
                                       WHERE MATNR = G_T_EKPO-MATNR.
            IF SY-SUBRC NE 0.
              SELECT * FROM  Z48M_NOTE_LIST INTO TABLE IT_TC01.
              CONCATENATE G_T_EKPO-EBELN G_T_EKPO-EBELP INTO TEXT1
                                                  SEPARATED BY '/'.
              SELECT SINGLE * FROM Z48M_LIEF_NOTE
                          WHERE EBELN = G_T_EKPO-EBELN
                            AND EBELP = G_T_EKPO-EBELP.
              IF SY-SUBRC = 0.
                LOOP AT IT_TC01.
                  IF IT_TC01-KRITER = 'QUALITÄT'.
                    IT_TC01-NOTE = Z48M_LIEF_NOTE-QUALI.
                  ENDIF.
                  IF IT_TC01-KRITER = 'KOSTEN'.
                    IT_TC01-NOTE = Z48M_LIEF_NOTE-KOSTE.
                  ENDIF.
                  IF IT_TC01-KRITER = 'LIEFERTERMIN'.
                    IT_TC01-NOTE = Z48M_LIEF_NOTE-LIEFE.
                  ENDIF.
                  IF IT_TC01-KRITER = 'FLEXIBILITÄT'.
                    IT_TC01-NOTE = Z48M_LIEF_NOTE-FLEXI.
                  ENDIF.
                  IF IT_TC01-KRITER = 'ZUSAMMENARBEIT'.
                    IT_TC01-NOTE = Z48M_LIEF_NOTE-ZUSAM.
                  ENDIF.
                  IF IT_TC01-KRITER = 'SCHWIERIGKEITSGRAD'.
                    IT_TC01-NOTE = Z48M_LIEF_NOTE-SCHWI.
                  ENDIF.
                  MODIFY IT_TC01.
                ENDLOOP.
*            MESSAGE I999(Z48MM) WITH TEXT-004 G_T_EKPO-EBELN
*                                              G_T_EKPO-EBELP.
                CALL SCREEN 0100 STARTING AT 20 05  ENDING AT 80 14.
                G_T_EKPO-NOTE = G_F_AVG.
                G_T_EKPO-FLAG = 'X'.
                MODIFY G_T_EKPO INDEX RS_SELFIELD-TABINDEX.
                RS_SELFIELD-REFRESH = 'X'.
              ELSE.
                CALL SCREEN 0100 STARTING AT 20 05  ENDING AT 80 14.
                G_T_EKPO-NOTE = G_F_AVG.
                G_T_EKPO-FLAG = 'X'.
                MODIFY G_T_EKPO INDEX RS_SELFIELD-TABINDEX.
                RS_SELFIELD-REFRESH = 'X'.
              ENDIF.
            ELSE.
              MESSAGE E105(Z48MM).
            ENDIF.
          ENDIF.
      ENDCASE.
    WHEN '&EMAIL'.
      PERFORM BUILD_XLS_DATA_TABLE.
      IF NOT IT_ATTACH[] IS INITIAL.
        PERFORM MAIL_SEND.
      ELSE.
        MESSAGE S375(VN).
      ENDIF.
  ENDCASE.
ENDFORM. "USER_COMMAND_ALV

Regards,

Vasanth