【实用】SAP修改记录表开发x

时间:2022-06-21 16:55:08 浏览量:

 【实用】SAP 修改记录表开发 首先我们看一下运行效果图:

  大部分都是 CDHDR 表的查询字段。

 双击某一行可以查看具体的修改明细字段。

  源代码:

 REPORT Z_ALV_CDHDR_CDPOS.

 TYPE-POOLS SLIS.

 DATA : CDHDR TYPE CDHDR.

 SELECT-OPTIONS :

 S_OBJCLS FOR CDHDR-OBJECTCLAS OBLIGATORY,

 S_OBJTID FOR CDHDR-OBJECTID,

 S_CHNGNR FOR CDHDR-CHANGENR,

 S_USRNAM FOR CDHDR-USERNAME,

 S_UDATE FOR CDHDR-UDATE,

 S_TIME FOR CDHDR-UTIME,

 S_TCODE FOR CDHDR-TCODE,

 S_PLNCNR FOR CDHDR-PLANCHNGNR,

 S_CHNGNO FOR CDHDR-ACT_CHNGNO,

 S_WSPLND FOR CDHDR-WAS_PLANND,

 S_CHNGID FOR CDHDR-CHANGE_IND.

 SELECTION-SCREEN SKIP.

 PARAMETERS P_MAX TYPE NUMC3 OBLIGATORY DEFAULT "200".

  *---------------------------------------------------------------------*

 TYPES :

 BEGIN OF TY_S_CDHDR.

 INCLUDE STRUCTURE CDHDR.

 TYPES : CHECKBOX,

 END OF TY_S_CDHDR,

  BEGIN OF TY_S_CDPOS.

 INCLUDE STRUCTURE CDPOS.

 TYPES : CHECKBOX,

 END OF TY_S_CDPOS.

  *---------------------------------------------------------------------*

 DATA :

 * Layout for ALV

 GS_LAYOUT TYPE SLIS_LAYOUT_ALV,

 * Change document header

 T_CDHDR

  TYPE TABLE OF TY_S_CDHDR.

  *---------------------------------------------------------------------*

 START-OF-SELECTION.

  * Read Change document header

 SELECT * INTO TABLE T_CDHDR

 UP TO P_MAX ROWS

 FROM CDHDR

 WHERE OBJECTCLAS IN S_OBJCLS

 AND OBJECTID IN S_OBJTID

 AND CHANGENR IN S_CHNGNR

 AND USERNAME IN S_USRNAM

 AND UDATE IN S_UDATE

 AND UTIME IN S_TIME

 AND TCODE IN S_TCODE

 AND PLANCHNGNR IN S_PLNCNR

 AND ACT_CHNGNO IN S_CHNGNO

 AND WAS_PLANND IN S_WSPLND

 AND CHANGE_IND IN S_CHNGID.

  GS_LAYOUT-ZEBRA = "X".

 GS_LAYOUT-COLWIDTH_OPTIMIZE = "X".

 GS_LAYOUT-BOX_FIELDNAME = "CHECKBOX".

  * Display ALV

 CALL FUNCTION "REUSE_ALV_GRID_DISPLAY"

 EXPORTING

 I_CALLBACK_PROGRAM

 = SY-CPROG

 I_CALLBACK_USER_COMMAND = "USER_COMMAND"

 I_STRUCTURE_NAME

 = "CDHDR"

 IS_LAYOUT

  = GS_LAYOUT

 TABLES

 T_OUTTAB

 = T_CDHDR.

  *---------------------------------------------------------------------*

 * FORM USER_COMMAND *

 *---------------------------------------------------------------------*

 FORM USER_COMMAND USING U_UCOMM TYPE SYUCOMM

 US_SELFIELD TYPE SLIS_SELFIELD.

  "#EC CALLED

  * Macro definition

 DEFINE M_SORT.

 ADD 1 TO ls_sort-spos.

 ls_sort-fieldname = &1.

 ls_sort-UP = "X".

 APPEND ls_sort TO lt_sort.

 END-OF-DEFINITION.

  DATA :

 LS_CDHDR TYPE TY_S_CDHDR,

 LS_SORT

 TYPE SLIS_SORTINFO_ALV,

 LT_SORT

 TYPE SLIS_T_SORTINFO_ALV,

 * Change document items

 LT_CDPOS TYPE TABLE OF TY_S_CDPOS.

  CASE U_UCOMM.

 WHEN "&IC1".

 PERFORM CHECK_MARKED USING US_SELFIELD.

  * Read Change document items

 LOOP AT T_CDHDR INTO LS_CDHDR WHERE CHECKBOX = "X".

 SELECT * APPENDING TABLE LT_CDPOS

 FROM CDPOS

 WHERE OBJECTCLAS = LS_CDHDR-OBJECTCLAS

 AND OBJECTID = LS_CDHDR-OBJECTID

 AND CHANGENR = LS_CDHDR-CHANGENR.

 ENDLOOP.

  M_SORT "CHANGENR".

  * Display ALV

 CALL FUNCTION "REUSE_ALV_GRID_DISPLAY"

 EXPORTING

 I_STRUCTURE_NAME = "CDPOS"

 IS_LAYOUT

 = GS_LAYOUT

 IT_SORT

 = LT_SORT

 TABLES

 T_OUTTAB

  = LT_CDPOS.

  ENDCASE.

  ENDFORM. " USER_COMMAND

 *---------------------------------------------------------------------*

 * Form CHECK_MARKED

 *---------------------------------------------------------------------*

 * What has been marked in t_cdhdr

 *---------------------------------------------------------------------*

 FORM CHECK_MARKED USING US_SELFIELD TYPE SLIS_SELFIELD.

  FIELD-SYMBOLS : <FS>

 TYPE TY_S_CDHDR.

  READ TABLE T_CDHDR TRANSPORTING NO FIELDS WITH KEY CHECKBOX = "X".

 IF NOT SY-SUBRC IS INITIAL AND

 NOT US_SELFIELD-TABINDEX IS INITIAL.

 READ TABLE T_CDHDR INDEX US_SELFIELD-TABINDEX ASSIGNING <FS>.

 <FS>-CHECKBOX = "X".

 ENDIF.

  ENDFORM. " CHECK_MARKED

相关热词搜索: 修改 实用 记录