1. 程式人生 > >註銷憑證與自定義屏幕

註銷憑證與自定義屏幕

endif 添加 har pan ogr pen exce date per

註意註銷憑證FB03 (事務代碼SHDB)

自定義屏幕的功能代碼與標準程序要對應一致

REPORT ZWGX006.

TABLES BKPF.
DATA OK_CODE TYPE OKCODE.


TYPES: BEGIN OF TY_TAB,
CHECKBOX TYPE CHAR01.
INCLUDE TYPE BKPF.
TYPES END OF TY_TAB.
DATA LT_TAB TYPE STANDARD TABLE OF TY_TAB.
DATA LS_TAB LIKE LINE OF LT_TAB. ""**屏幕中的復選框

DATA: LT_FCAT TYPE LVC_T_FCAT,
LS_FCAT TYPE LVC_S_FCAT,
I_LAYO TYPE LVC_S_LAYO.

DATA:G_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
G_GRID TYPE REF TO CL_GUI_ALV_GRID.

DATA LT_MSG TYPE STANDARD TABLE OF BDCMSGCOLL.
DATA BDCDATA TYPE TABLE OF BDCDATA WITH HEADER LINE.

START-OF-SELECTION.
PERFORM GET_DATA.
PERFORM SET_LAYO.
PERFORM SET_FCAT.

CALL SCREEN 2017.
*&---------------------------------------------------------------------*
*& Module STATUS_2017 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_2017 OUTPUT.
* SET PF-STATUS ‘xxxxxxxx‘.
* SET TITLEBAR ‘xxx‘.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_2017 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_2017 INPUT.

CASE OK_CODE.
WHEN‘ANN01‘.
LEAVE PROGRAM.
WHEN ‘ANN02‘.
PERFORM SET_WRITE-OFF.
WHEN OTHERS.
ENDCASE.

ENDMODULE.

*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*


FORM GET_DATA.
SELECT * FROM BKPF INTO CORRESPONDING FIELDS OF
TABLE LT_TAB UP TO 50 ROWS.
ENDFORM.


*&---------------------------------------------------------------------*
*& Form SET_LAYO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM SET_LAYO .
I_LAYO-ZEBRA = ‘X‘.
I_LAYO-CWIDTH_OPT = ‘X‘.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form SET_FCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM SET_FCAT .""復選框
CALL FUNCTION ‘LVC_FIELDCATALOG_MERGE‘
EXPORTING
* I_BUFFER_ACTIVE =
I_STRUCTURE_NAME = ‘BKPF‘
* I_CLIENT_NEVER_DISPLAY = ‘X‘
* I_BYPASSING_BUFFER =
* I_INTERNAL_TABNAME =
CHANGING
CT_FIELDCAT = LT_FCAT[]
EXCEPTIONS
INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.

LS_FCAT-FIELDNAME = ‘CHECKBOX‘.
LS_FCAT-CHECKBOX = ABAP_TRUE.
LS_FCAT-EDIT = ABAP_TRUE.
LS_FCAT-SCRTEXT_S = ‘沖銷憑證‘.
APPEND LS_FCAT TO LT_FCAT.
ENDFORM.
*&---------------------------------------------------------------------*
*& Module DISPLAY OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE DISPLAY OUTPUT.

DATA G_FIRST(1) TYPE C.

IF NOT G_CONTAINER IS BOUND.
CREATE OBJECT G_CONTAINER
EXPORTING
* PARENT =
CONTAINER_NAME = ‘CONTAINER1‘
* STYLE =
* LIFETIME = lifetime_default
* REPID =
* DYNNR =
* NO_AUTODEF_PROGID_DYNNR =
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
CREATE_ERROR = 3
LIFETIME_ERROR = 4
LIFETIME_DYNPRO_DYNPRO_LINK = 5
OTHERS = 6.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDIF.

IF NOT G_GRID IS BOUND.
CREATE OBJECT G_GRID
EXPORTING
* I_SHELLSTYLE = 0
* I_LIFETIME =
I_PARENT = G_CONTAINER
* I_APPL_EVENTS = space
* I_PARENTDBG =
* I_APPLOGPARENT =
* I_GRAPHICSPARENT =
* I_NAME =
* I_FCAT_COMPLETE = SPACE
EXCEPTIONS
ERROR_CNTL_CREATE = 1
ERROR_CNTL_INIT = 2
ERROR_CNTL_LINK = 3
ERROR_DP_CREATE = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDIF.



IF G_FIRST = SPACE.
G_FIRST = ‘x‘.



CALL METHOD G_GRID->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
* I_BUFFER_ACTIVE =
* I_BYPASSING_BUFFER =
* I_CONSISTENCY_CHECK =
* I_STRUCTURE_NAME =
* IS_VARIANT =
* I_SAVE =
* I_DEFAULT = ‘X‘
IS_LAYOUT = I_LAYO
* IS_PRINT =
* IT_SPECIAL_GROUPS =
* IT_TOOLBAR_EXCLUDING =
* IT_HYPERLINK =
* IT_ALV_GRAPHICS =
* IT_EXCEPT_QINFO =
* IR_SALV_ADAPTER =
CHANGING
IT_OUTTAB = LT_TAB[]
IT_FIELDCATALOG = LT_FCAT[]
* IT_SORT =
* IT_FILTER =
EXCEPTIONS
INVALID_PARAMETER_COMBINATION = 1
PROGRAM_ERROR = 2
TOO_MANY_LINES = 3
OTHERS = 4.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.

ENDIF.

ENDMODULE.

*&---------------------------------------------------------------------*
*& Form SET_WRITE-OFF
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*

form set_write-off.
clear ls_tab.
clear lt_fcat[].
clear ls_fcat.
CALL METHOD G_GRID->CHECK_CHANGED_DATA.
LOOP AT LT_tab into ls_tab.
if ls_tab-checkbox = ‘x‘.
* perform bdc_dynpro using ‘SAPMF05A‘ ‘0100‘.
*perform bdc_field using ‘BDC_CURSOR‘
* ‘RF05A-NEWKO‘.
*perform bdc_field using ‘BDC_OKCODE‘
* ‘/00‘.
*perform bdc_field using ‘BKPF-BLDAT‘
* ‘2017.08.09‘.
*perform bdc_field using ‘BKPF-BLART‘
* ‘SA‘.
*perform bdc_field using ‘BKPF-BUKRS‘
* Ls_TAB-BUKRS.
*perform bdc_field using ‘BKPF-BUDAT‘
* ‘2017.08.09‘.
*perform bdc_field using ‘BKPF-MONAT‘
* ‘8‘.
*perform bdc_field using ‘BKPF-WAERS‘
* ‘CNY‘.
*perform bdc_field using ‘RF05A-NEWBS‘
* ‘40‘.
*perform bdc_field using ‘RF05A-NEWKO‘
* ‘10020111‘.
*perform bdc_dynpro using ‘SAPMF05A‘ ‘0300‘.
*perform bdc_field using ‘BDC_CURSOR‘
* ‘RF05A-NEWKO‘.
*perform bdc_field using ‘BDC_OKCODE‘
* ‘/00‘.
*perform bdc_field using ‘BSEG-WRBTR‘
* ‘888‘.
*perform bdc_field using ‘RF05A-NEWBS‘
* ‘50‘.
*perform bdc_field using ‘RF05A-NEWKO‘
* ‘10010101‘.
*perform bdc_dynpro using ‘SAPMF05A‘ ‘0300‘.
*perform bdc_field using ‘BDC_CURSOR‘
* ‘BSEG-WRBTR‘.
*perform bdc_field using ‘BDC_OKCODE‘
* ‘=BU‘.
*perform bdc_field using ‘BSEG-WRBTR‘
* ‘888‘.


perform bdc_dynpro using ‘SAPMF05A‘ ‘0105‘.
perform bdc_field using ‘BDC_CURSOR‘
‘RF05A-BELNS‘.
perform bdc_field using ‘BDC_OKCODE‘
‘=BU‘.
perform bdc_field using ‘RF05A-BELNS‘
LS_TAB-BELNR.
perform bdc_field using ‘BKPF-BUKRS‘
LS_TAB-BELNR.
perform bdc_field using ‘RF05A-GJAHS‘
LS_TAB-GJAHR.
perform bdc_field using ‘UF05A-STGRD‘
LS_TAB-BELNR.
perform bdc_dynpro using ‘SAPMF05A‘ ‘0105‘.
perform bdc_field using ‘BDC_OKCODE‘
‘/ERW‘.
perform bdc_field using ‘BDC_CURSOR‘
‘RF05A-BELNS‘.
perform bdc_dynpro

using ‘SAPLSPO1‘ ‘0200‘.
perform bdc_field using ‘BDC_OKCODE‘
‘=YES‘.




ENDIF.
ENDLOOP.
if sy-subrc = 0.
MESSAGE ‘沖銷成功‘ TYPE ‘I‘."如何添加字段信息在message裏 “ 設置系統變量 並賦值變量SY-MSGV1
ENDIF.
* CALL TRANSACTION ‘FB08‘ USING BDCDATA
* MODE ‘A‘ UPDATE ‘A‘
* MESSAGES INTO LT_MSG.


ENDFORM.



FORM BDC_field USING fnam fval.
* * DATA NODATA TYPE CHAR01 VALUE ‘/‘.
* IF FVAL <> NODATA.

clear bdcdata. bdcdata
-fnam = fnam. bdcdata
-fval = fval.
APPEND bdcdata.
* * ENDIF.
ENDFORM.


form bdc_dynpro USING program dynpro.
clear bdcdata. bdcdata
-program =
program. bdcdata
-dynpro = dynpro. bdcdata
-dynbegin = ‘x‘.
APPEND bdcdata.
ENDFORM.

運行結果如下

技術分享

技術分享

技術分享

自定義屏幕

技術分享

註銷憑證與自定義屏幕