well hello again fellas,
there are times when you really need your programs to be nested-like screens, what i mean is when you need to create many screen for your programs and you need them to navigate one onto another smoothly.
i currently developed a program which more like nested-like.
nuffsaid,
ZZMM_TKDNA5001
*&---------------------------------------------------------------------*
*& Report ZZMM_TKDNA5001
*&
*&---------------------------------------------------------------------*
*& Report Title : Input TKDN A5001
*& Project : Persero
*& Func. Designer : Christophorus
*& Programmer : Fachreza Rifandi
*& Created on : 02.06.2021
*&---------------------------------------------------------------------*
REPORT ZZMM_TKDNA5001.
INCLUDE ZZMM_TKDNA5001TOP.
INCLUDE ZZMM_TKDNA5001F01.
INCLUDE ZZMM_TKDNA5001PBO.
INCLUDE ZZMM_TKDNA5001PAI.
INCLUDE ZZMM_TKDNA5001F02 .
START-OF-SELECTION.
*BREAK t_fachrezar.
call SCREEN 1001.
*call SCREEN 2002.
ZZMM_TKDNA5001TOP
*&---------------------------------------------------------------------*
*& Include ZZMM_TKDNA5001TOP
*&---------------------------------------------------------------------*
TABLES: ekko, ekpo, lfa1,ZMVISUMALL,ZMVIMST.
TYPES : BEGIN OF ty_input,
tick TYPE char1,
Purch_doc TYPE ekko-ebeln, "Purchasing Document
doc_type TYPE ekko-bsart, " Document TYpe
COCD TYPE ekko-bukrs, " Company COde
Vendor TYPE Ekko-lifnr, " Vendor
Vendor_Nm TYPE lfa1-name1, " Vendor Name
Judul TYPE ekpo-txz01, " Judul
Tot_val TYPE ekpo-brtwr, " Total Value,
PENAWAL TYPE ekko-zmmpenawal, " Penawaran Awal,
curr TYPE ekko-waers, "Currency
Kom_TKDN TYPE EKKO-ZZMMTKDN, "Komitment TKDN
Ch_Kom_TKDN TYPE EKKO-ZZMMTKDN, "Change Komitment TKDN
MIN_TKDN TYPE ekko-zbtsmintkdn,"Batas Minimum TKDN
CAP_TKDN TYPE ekko-zbtsmintkdn,"Capaian TKDN
ZERO_TKDN TYPE char1, "Zero Capaian TKDN
Sanksi_HTM TYPE Char1, "Sanksi Hitam
Reference TYPE ZTMM_TKDN-ZREF, "Reference
bstyp TYPE ekko-bstyp, "bstyp
*Dependent
flag TYPE c, "flag exist in ztmm_TKDN
bsart TYPE ekko-bsart,
ekorg TYPE ekko-ekorg,
ekgrp TYPE ekko-ekgrp,
pstyp TYPE ekpo-pstyp,
bukrs TYPE ekko-bukrs,
END OF ty_input,
BEGIN OF ty_review,
bukrs TYPE ekko-bukrs,
Purch_doc TYPE ekko-ebeln, "Purchasing Document
Vendor TYPE Ekko-lifnr, " Vendor
Vendor_Nm TYPE lfa1-name1, " Vendor Name
Kom_TKDN TYPE EKKO-ZZMMTKDN, "Komitment TKDN
Ch_Kom_TKDN TYPE EKKO-ZZMMTKDN, "Change Komitment TKDN
MIN_TKDN TYPE ekko-zbtsmintkdn,"Batas Minimum TKDN
CAP_TKDN TYPE ekko-zbtsmintkdn,"Capaian TKDN
CAP_KOM TYPE int4, "Capaian/ Komitmen (%)
Result TYPE char15, "Result
viol type char4, "violation/ Reward Code
Reference TYPE ZTMM_TKDN-ZREF, "Reference
*****dependent
ekorg TYPE ekko-ekorg,
ekgrp TYPE ekko-ekgrp,
pstyp TYPE ekpo-pstyp,
bsart TYPE ekko-bsart,
END OF ty_Review,
BEGIN OF ty_report,
Purch_doc TYPE ekko-ebeln, "Purchasing Document
doc_type TYPE ekko-bsart, " Document TYpe
COCD TYPE ekko-bukrs, " Company COde
Vendor TYPE Ekko-lifnr, " Vendor
Vendor_Nm TYPE lfa1-name1, " Vendor Name
Judul TYPE ekpo-txz01, " Judul
Tot_val TYPE ekpo-brtwr, " Total Value,
PENAWAL TYPE ekko-zmmpenawal, " Penawaran Awal,
curr TYPE ekko-waers, "Currency
Kom_TKDN TYPE EKKO-ZZMMTKDN, "Komitment TKDN
Ch_Kom_TKDN TYPE EKKO-ZZMMTKDN, "Change Komitment TKDN
MIN_TKDN TYPE ekko-zbtsmintkdn,"Batas Minimum TKDN
CAP_TKDN TYPE ekko-zbtsmintkdn,"Capaian TKDN
viol type char4, "violation/ Reward Code
Reference TYPE ZTMM_TKDN-ZREF, "Reference
*Dependent
bstyp TYPE ekko-bstyp, "bstyp
flag TYPE c, "flag exist in ztmm_TKDN
bsart TYPE ekko-bsart,
ekorg TYPE ekko-ekorg,
ekgrp TYPE ekko-ekgrp,
pstyp TYPE ekpo-pstyp,
bukrs TYPE ekko-bukrs,
END OF ty_report.
DATA : name LIKE THEAD-TDNAME,
lines TYPE TABLE OF TLINE,
sline TYPE TLINE.
DATA : lt_zmmenhance TYPE TABLE OF zmm_enhance,
ls_zmmenhance LIKE zmm_enhance,
lt_tvarvc TYPE TABLE OF tvarvc,
ls_tvarvc TYPE tvarvc,
lt_ztmmtkdn TYPE TABLE OF ztmm_tkdn,
ls_ztmmtkdn TYPE ztmm_tkdn,
lt_ekko TYPE TABLE OF ekko,
lt_ekpo TYPE TABLE OF ekpo,
ls_ekko TYPE ekko,
ls_ekpo TYPE ekpo,
lt_lfa1 TYPE TABLE OF lfa1,
ls_lfa1 TYPE lfa1,
lv_value TYPE ekpo-netwr.
DATA : ls_input TYPE ty_input,
lt_input TYPE TABLE OF ty_input,
lt_review TYPE TABLE OF ty_review,
ls_review TYPE ty_review,
lt_report TYPE TABLE OF ty_report,
ls_report TYPE ty_report.
DATA :v_point TYPE c LENGTH 7.
DATA : lt_zmvimst TYPE TABLE OF zmvimst,
ls_zmvimst TYPE zmvimst.
TYPES : BEGIN OF ty_selec,
line TYPE string,
END OF ty_selec.
DATA : lt_selec TYPE TABLE OF sy-ucomm,
ls_selec TYPE sy-ucomm.
*SELECTION-SCREEN BEGIN OF SCREEN 2001.
*&SPWIZARD: DECLARATION OF TABLECONTROL 'TC_INPUT' ITSELF
CONTROLS: TC_INPUT TYPE TABLEVIEW USING SCREEN 2002.
*&SPWIZARD: LINES OF TABLECONTROL 'TC_INPUT'
DATA: G_TC_INPUT_LINES LIKE SY-LOOPC.
DATA: OK_CODE LIKE SY-UCOMM.
*&SPWizard: Include inserted by SP Wizard. DO NOT CHANGE THIS LINE!
SELECTION-SCREEN BEGIN OF SCREEN 1002 as SUBSCREEN .
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE Text-F01.
SELECT-OPTIONS : SO_EBELN FOR ekko-ebeln.
SELECTION-SCREEN END OF BLOCK blk1.
SELECTION-SCREEN END OF SCREEN 1002.
SELECTION-SCREEN BEGIN OF SCREEN 2004 as SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK blk2 WITH FRAME TITLE text-F02.
SELECT-OPTIONS:
s_ebelnr FOR ekko-ebeln,
s_bukrs FOR ekko-bukrs,
s_bsart FOR ekko-bsart,
s_ekgrp FOR ekko-ekgrp,
s_vicode FOR ZMVIMST-vicode NO INTERVALS,
s_erdat FOR ekko-aedat.
SELECTION-SCREEN END OF BLOCK blk2.
SELECTION-SCREEN END OF SCREEN 2004.
AT SELECTION-SCREEN OUTPUT.
*BREAK-POINT.
*IF SY-DYNNR = 1001.
** APPEND: 'PRIN' TO lt_selec,
** 'SPOS' TO lt_selec,
** 'REPORT' TO lt_selec,
** 'EXEC' TO lt_selec.
* CALL FUNCTION 'RS_SET_SELSCREEN_STATUS'
* EXPORTING
* P_STATUS = 'STD_SELEC' "your status
* TABLES
* P_EXCLUDE = lt_selec[]
* EXCEPTIONS
* OTHERS = 1.
*ENDIF.
at SELECTION-SCREEN ON VALUE-REQUEST FOR s_vicode-low.
TYPES : BEGIN OF ty_vicode,
vicode TYPE zmvimst-VICODE,
videsc TYPE zmvimst-videsc,
END OF ty_vicode.
DATA : lt_vicode TYPE TABLE OF ty_vicode,
ls_vicode TYPE ty_vicode,
lt_return TYPE TABLE OF DDSHRETVAL,
ls_return TYPE DDSHRETVAL.
REFRESH : lt_vicode, lt_return.
SELECT * FROM zmvimst INTO CORRESPONDING FIELDS OF TABLE lt_vicode
WHERE vicode LIKE 'T%'.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
* DDIC_STRUCTURE = ' '
RETFIELD = 'VICODE'
* PVALKEY = ' '
DYNPPROG = sy-cprog
DYNPNR = sy-dynnr
* DYNPROFIELD = ' '
* STEPL = 0
* WINDOW_TITLE =
* VALUE = ' '
VALUE_ORG = 'S'
* MULTIPLE_CHOICE = ' '
* DISPLAY = ' '
* CALLBACK_PROGRAM = ' '
* CALLBACK_FORM = ' '
* CALLBACK_METHOD =
* MARK_TAB =
* IMPORTING
* USER_RESET =
TABLES
VALUE_TAB = lt_vicode
* FIELD_TAB =
RETURN_TAB = lt_Return[]
* DYNPFLD_MAPPING =
EXCEPTIONS
PARAMETER_ERROR = 1
NO_VALUES_FOUND = 2
OTHERS = 3
.
IF lt_return[] is NOT INITIAL.
READ TABLE lt_return INTO ls_return INDEX 1.
IF sy-subrc eq 0.
S_VICODE-low = ls_return-FIELDVAL.
ENDIF.
ENDIF.
ZZMM_TKDNA5001F01
*&---------------------------------------------------------------------*
*& Include ZZMM_TKDNA5001F01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form F_GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM F_GET_DATA .
REFRESH lt_ekko[].
**SELECT * FROM zmm_enhance INTO itab_tkdnbukrs WHERE progname = <nama program ini>.
**SELECT * FROM tvarvc INTO itab_tkdnbsart WHERE name = ‘ZTMM_TKDN_BSART’.
**SELECT * FROM ZTMM_TKDN INTO itab_tkdn WHERE ebeln IN s_ebeln.
**SELECT * FROM ekko INTO itab_ekko WHERE ebeln IN s_ebeln AND bukrs = itab_tkdnbukrs-bukrs AND bsart = itab_tkdnbsart AND (zzmmtkdn IS NOT INITIAL OR zzblank_achieve IS NOT INITIAL) AND (zbtsmintkdn IS NOT INITIAL OR zzbtsmintkdn IS NOT INITIAL).
**IF itab_ekko IS NOT INITIAL.
**SELECT * FROM ekpo INTO itab_ekpo WHERE ebeln = itab_ekko-ebeln AND LOEKZ = ‘’.
**ELSE.
**RAISE MESSAGE “PO / OA is not in the correct criteria for TKDN”.
**ENDIF.
**AUTHORITY-CHECK OBJECT ‘M_BEST_EKO’
**ID 'ACTVT' FIELD '03'
**ID 'EKORG' FIELD itab_ekko-ekorg.
**IF sy-subrc = 0.
**AUTHORITY-CHECK OBJECT ‘M_BEST_EKG’
**ID 'ACTVT' FIELD '03'
**ID 'EKGRP' FIELD itab_ekko-ekgrp.
**ENDIF.
*
* DATA : name LIKE THEAD-TDNAME,
* lines TYPE TABLE OF TLINE,
* sline TYPE TLINE.
*
*DATA : lt_zmmenhance TYPE TABLE OF zmm_enhance,
* ls_zmmenhance LIKE zmm_enhance,
* lt_tvarvc TYPE TABLE OF tvarvc,
* ls_tvarvc TYPE tvarvc,
* lt_ztmmtkdn TYPE TABLE OF ztmm_tkdn,
* ls_ztmmtkdn TYPE ztmm_tkdn,
* lt_ekko TYPE TABLE OF ekko,
* lt_ekpo TYPE TABLE OF ekpo,
* ls_ekko TYPE ekko,
* ls_ekpo TYPE ekpo,
* lt_lfa1 TYPE TABLE OF lfa1,
* ls_lfa1 TYPE lfa1,
* lv_value TYPE ekpo-netwr.
SELECT * FROM zmm_enhance INTO TABLE lt_zmmenhance WHERE progname = 'ZTMM_TKDN'.
SELECT * FROM tvarvc INTO TABLE lt_tvarvc WHERE name = 'ZTMM_TKDN_BSART'.
SELECT * FROM ZTMM_TKDN INTO TABLE lt_ztmmtkdn WHERE ebeln IN SO_EBELN.
SELECT * FROM ekko INTO TABLE lt_ekko
FOR ALL ENTRIES IN lt_zmmenhance
WHERE ebeln IN SO_EBELN
AND bukrs = lt_zmmenhance-bukrs
* AND bsart = itab_tkdnbsart
AND ( zzmmtkdn ne space or ZZBLANK_CONTENT ne space )
* AND ( zzmmtkdn ne space or zzblank_achieve ne space )
AND ( zbtsmintkdn ne space OR zzbtsmintkdn ne space ).
IF lt_ekko[] IS INITIAL.
exit.
ENDIF.
AUTHORITY-CHECK OBJECT 'M_BEST_EKO'
ID 'ACTVT' FIELD '03'
ID 'EKORG' FIELD ekko-ekorg.
IF sy-subrc = 0.
AUTHORITY-CHECK OBJECT 'M_BEST_EKG'
ID 'ACTVT' FIELD '03'
ID 'EKGRP' FIELD ekko-ekgrp.
ENDIF.
SELECT * FROM lfa1 INTO TABLE lt_lfa1
FOR ALL ENTRIES IN lt_ekko
WHERE lifnr = lt_ekko-lifnr.
SELECT * FROM ekpo INTO TABLE lt_ekpo
FOR ALL ENTRIES IN lt_ekko
WHERE ebeln = lt_ekko-ebeln AND LOEKZ = space.
LOOP AT lt_ekko INTO ls_ekko.
CLEAR ls_input.
ls_input-bukrs = ls_ekko-bukrs.
READ TABLE LT_ZTMMTKDN INTO LS_ZTMMTKDN WITH KEY ebeln = ls_ekko-ebeln.
IF sy-subrc eq 0.
ls_input-flag = 'X'.
ENDIF.
READ TABLE lt_tvarvc INTO ls_tvarvc WITH KEY low = ls_ekko-bsart.
IF sy-subrc eq 0.
* LOOP AT lt_ekpo INTO ls_ekpo WHERE ebeln = ls_ekko-ebeln.
LS_INPUT-tick = space.
LS_INPUT-Purch_doc = ls_ekko-ebeln.
LS_INPUT-doc_type = ls_ekko-bsart.
LS_INPUT-COCD = ls_ekko-bukrs.
LS_INPUT-Vendor = ls_ekko-lifnr.
READ TABLE lt_lfa1 INTO ls_lfa1 WITH KEY lifnr = ls_ekko-lifnr.
IF sy-subrc eq 0.
LS_INPUT-Vendor_Nm = ls_lfa1-name1.
ENDIF.
if ls_ekko-bstyp = 'F'.
name = ls_ekko-ebeln.
DATA : lv_lang TYPE THEAD-TDSPRAS VALUE 'En'.
CALL FUNCTION 'READ_TEXT'
EXPORTING
* CLIENT = SY-MANDT
ID = 'F02'
LANGUAGE = lv_lang
NAME = name
OBJECT = 'EKKO'
* ARCHIVE_HANDLE = 0
* LOCAL_CAT = ' '
* IMPORTING
* HEADER =
* OLD_LINE_COUNTER =
TABLES
LINES = LINES
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
NOT_FOUND = 4
OBJECT = 5
REFERENCE_CHECK = 6
WRONG_ACCESS_TO_ARCHIVE = 7
OTHERS = 8
.
READ TABLE lines INTO sline INDEX 1.
IF sy-subrc eq 0.
LS_INPUT-Judul = sline-TDLINE.
IF ls_input-judul IS INITIAL.
READ TABLE lt_ekpo INTO ls_ekpo WITH KEY ebeln = ls_ekko-ebeln.
if sy-subrc eq 0.
LS_INPUT-Judul = ls_ekpo-TXZ01.
ENDIF.
ENDIF.
ENDIF.
ELSEIF ls_ekko-bstyp = 'K'.
name = ls_ekko-ebeln.
CALL FUNCTION 'READ_TEXT'
EXPORTING
* CLIENT = SY-MANDT
ID = 'K02'
LANGUAGE = lv_lang
NAME = name
OBJECT = 'EKKO'
* ARCHIVE_HANDLE = 0
* LOCAL_CAT = ' '
* IMPORTING
* HEADER =
* OLD_LINE_COUNTER =
TABLES
LINES = LINES
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
NOT_FOUND = 4
OBJECT = 5
REFERENCE_CHECK = 6
WRONG_ACCESS_TO_ARCHIVE = 7
OTHERS = 8
.
READ TABLE lines INTO sline INDEX 1.
IF sy-subrc eq 0.
LS_INPUT-Judul = sline-TDLINE.
IF ls_input-judul IS INITIAL.
READ TABLE lt_ekpo INTO ls_ekpo WITH KEY ebeln = ls_ekko-ebeln.
if sy-subrc eq 0.
LS_INPUT-Judul = ls_ekpo-TXZ01.
ENDIF.
ENDIF.
ENDIF.
endif.
IF ls_ekko-bstyp eq 'F'.
CLEAR lv_value.
LOOP AT lt_ekpo INTO ls_ekpo WHERE ebeln = ls_ekko-ebeln.
lv_value = lv_value + ls_ekpo-netwr.
ENDLOOP.
LS_INPUT-Tot_val = lv_value.
ELSEIF ls_ekko-bstyp eq 'K'.
LS_INPUT-Tot_val = ls_ekko-KTWRT.
IF ls_input-tot_val IS INITIAL.
CLEAR lv_value.
LOOP AT lt_ekpo INTO ls_ekpo.
lv_value = lv_value + ls_ekpo-brtwr.
ENDLOOP.
ENDIF.
ENDIF.
LS_INPUT-PENAWAL = ls_ekko-ZMMPENAWAL.
LS_INPUT-curr = ls_ekko-waers.
LS_INPUT-Kom_TKDN = ls_ekko-zzmmtkdn.
LS_INPUT-Ch_Kom_TKDN = space.
LS_INPUT-MIN_TKDN = ls_ekko-ZBTSMINTKDN.
LS_INPUT-CAP_TKDN = space.
LS_INPUT-ZERO_TKDN = space.
LS_INPUT-Sanksi_HTM = space.
LS_INPUT-Reference = space.
ls_input-bstyp = ls_ekko-bstyp.
ls_input-bsart = ls_ekko-bsart.
ls_input-ekorg = ls_ekko-ekorg.
ls_input-ekgrp = ls_ekko-ekgrp.
ls_input-pstyp = ls_ekpo-pstyp.
append ls_input to lt_input.
CLEAR ls_input.
* ENDLOOP.
ENDIF.
ENDLOOP.
"dummy data
* LS_INPUT-Purch_doc = '00000001'.
* append ls_input to lt_input.
*
* LS_INPUT-Purch_doc = '00000002'.
* append ls_input to lt_input.
ENDFORM. " F_GET_DATA
FORM F_GET_DATA_report .
REFRESH : lt_ekko[],
LT_REPORT[].
*SELECT * FROM zmm_enhance INTO itab_tkdnbukrs WHERE progname = <nama program ini>.
*SELECT * FROM tvarvc INTO itab_tkdnbsart WHERE name = ‘ZTMM_TKDN_BSART’.
*SELECT * FROM ZTMM_TKDN INTO itab_tkdn WHERE ebeln IN s_ebeln.
*SELECT * FROM ekko INTO itab_ekko WHERE ebeln IN s_ebeln AND bukrs = itab_tkdnbukrs-bukrs AND bsart = itab_tkdnbsart AND (zzmmtkdn IS NOT INITIAL OR zzblank_achieve IS NOT INITIAL) AND (zbtsmintkdn IS NOT INITIAL OR zzbtsmintkdn IS NOT INITIAL).
*IF itab_ekko IS NOT INITIAL.
*SELECT * FROM ekpo INTO itab_ekpo WHERE ebeln = itab_ekko-ebeln AND LOEKZ = ‘’.
*ELSE.
*RAISE MESSAGE “PO / OA is not in the correct criteria for TKDN”.
*ENDIF.
*AUTHORITY-CHECK OBJECT ‘M_BEST_EKO’
*ID 'ACTVT' FIELD '03'
*ID 'EKORG' FIELD itab_ekko-ekorg.
*IF sy-subrc = 0.
*AUTHORITY-CHECK OBJECT ‘M_BEST_EKG’
*ID 'ACTVT' FIELD '03'
*ID 'EKGRP' FIELD itab_ekko-ekgrp.
*ENDIF.
DATA : name LIKE THEAD-TDNAME,
lines TYPE TABLE OF TLINE,
sline TYPE TLINE.
DATA : lt_zmmenhance TYPE TABLE OF zmm_enhance,
ls_zmmenhance LIKE zmm_enhance,
lt_tvarvc TYPE TABLE OF tvarvc,
ls_tvarvc TYPE tvarvc,
lt_ztmmtkdn TYPE TABLE OF ztmm_tkdn,
ls_ztmmtkdn TYPE ztmm_tkdn,
lt_ekko TYPE TABLE OF ekko,
lt_ekpo TYPE TABLE OF ekpo,
ls_ekko TYPE ekko,
ls_ekpo TYPE ekpo,
lt_lfa1 TYPE TABLE OF lfa1,
ls_lfa1 TYPE lfa1,
lv_value TYPE ekpo-netwr.
SELECT * FROM zmm_enhance INTO TABLE lt_zmmenhance WHERE progname = 'ZTMM_TKDN'.
SELECT * FROM tvarvc INTO TABLE lt_tvarvc WHERE name = 'ZTMM_TKDN_BSART'.
SELECT * FROM ZTMM_TKDN INTO TABLE lt_ztmmtkdn
WHERE ebeln IN S_EBELNR AND BUKRS in S_BUKRS AND
vicode in s_vicode AND erdat in s_erdat.
SELECT * FROM ekko INTO TABLE lt_ekko
FOR ALL ENTRIES IN lt_ztmmtkdn
WHERE ebeln eq lt_ztmmtkdn-ebeln
* AND bukrs = lt_zmmenhance-bukrs
AND bsart in s_bsart.
* AND ( zzmmtkdn ne space or zzblank_achieve ne space )
* AND ( zbtsmintkdn ne space OR zzbtsmintkdn ne space ).
IF lt_ekko[] IS INITIAL.
exit.
ENDIF.
AUTHORITY-CHECK OBJECT 'M_BEST_EKO'
ID 'ACTVT' FIELD '03'
ID 'EKORG' FIELD ekko-ekorg.
IF sy-subrc = 0.
AUTHORITY-CHECK OBJECT 'M_BEST_EKG'
ID 'ACTVT' FIELD '03'
ID 'EKGRP' FIELD ekko-ekgrp.
ENDIF.
SELECT * FROM lfa1 INTO TABLE lt_lfa1
FOR ALL ENTRIES IN lt_ekko
WHERE lifnr = lt_ekko-lifnr.
SELECT * FROM ekpo INTO TABLE lt_ekpo
FOR ALL ENTRIES IN lt_ekko
WHERE ebeln = lt_ekko-ebeln AND LOEKZ = space.
* LOOP AT lt_ekko INTO ls_ekko.
loop at lt_ztmmtkdn INTO ls_ztmmtkdn.
CLEAR :ls_report,ls_ekko.
READ TABLE lt_ekko INTO ls_ekko WITH key ebeln = ls_ztmmtkdn-ebeln.
CHECK ls_ekko IS NOT INITIAL.
ls_input-bukrs = ls_ekko-bukrs.
* READ TABLE LT_ZTMMTKDN INTO LS_ZTMMTKDN WITH KEY ebeln = ls_ekko-ebeln.
* IF sy-subrc eq 0.
* ls_input-flag = 'X'.
* ENDIF.
READ TABLE lt_tvarvc INTO ls_tvarvc WITH KEY low = ls_ekko-bsart.
IF sy-subrc eq 0.
* LOOP AT lt_ekpo INTO ls_ekpo WHERE ebeln = ls_ekko-ebeln.
* LS_REPORT-tick = space.
LS_report-Purch_doc = ls_ztmmtkdn-ebeln.
LS_report-doc_type = ls_ekko-bsart.
LS_report-COCD = ls_ekko-bukrs.
LS_report-Vendor = ls_ekko-lifnr.
LS_REPORT-bstyp = ls_ekko-bstyp.
READ TABLE lt_lfa1 INTO ls_lfa1 WITH KEY lifnr = ls_ekko-lifnr.
IF sy-subrc eq 0.
LS_REPORT-Vendor_Nm = ls_lfa1-name1.
ENDIF.
if LS_REPORT-bstyp = 'F'.
name = ls_ekko-ebeln.
DATA : lv_lang TYPE THEAD-TDSPRAS VALUE 'En'.
CALL FUNCTION 'READ_TEXT'
EXPORTING
* CLIENT = SY-MANDT
ID = 'F02'
LANGUAGE = lv_lang
NAME = name
OBJECT = 'EKKO'
* ARCHIVE_HANDLE = 0
* LOCAL_CAT = ' '
* IMPORTING
* HEADER =
* OLD_LINE_COUNTER =
TABLES
LINES = LINES
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
NOT_FOUND = 4
OBJECT = 5
REFERENCE_CHECK = 6
WRONG_ACCESS_TO_ARCHIVE = 7
OTHERS = 8
.
READ TABLE lines INTO sline INDEX 1.
IF sy-subrc eq 0.
LS_REPORT-Judul = sline-TDLINE.
IF LS_REPORT-judul IS INITIAL.
READ TABLE lt_ekpo INTO ls_ekpo WITH KEY ebeln = ls_ekko-ebeln.
if sy-subrc eq 0.
LS_REPORT-Judul = ls_ekpo-TXZ01.
ENDIF.
ENDIF.
ENDIF.
ELSEIF LS_REPORT-bstyp = 'K'.
name = ls_ekko-ebeln.
CALL FUNCTION 'READ_TEXT'
EXPORTING
* CLIENT = SY-MANDT
ID = 'K02'
LANGUAGE = lv_lang
NAME = name
OBJECT = 'EKKO'
* ARCHIVE_HANDLE = 0
* LOCAL_CAT = ' '
* IMPORTING
* HEADER =
* OLD_LINE_COUNTER =
TABLES
LINES = LINES
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
NOT_FOUND = 4
OBJECT = 5
REFERENCE_CHECK = 6
WRONG_ACCESS_TO_ARCHIVE = 7
OTHERS = 8
.
READ TABLE lines INTO sline INDEX 1.
IF sy-subrc eq 0.
LS_REPORT-Judul = sline-TDLINE.
IF LS_REPORT-judul IS INITIAL.
READ TABLE lt_ekpo INTO ls_ekpo WITH KEY ebeln = ls_ekko-ebeln.
if sy-subrc eq 0.
LS_REPORT-Judul = ls_ekpo-TXZ01.
ENDIF.
ENDIF.
ENDIF.
endif.
IF LS_REPORT-bstyp eq 'F'.
CLEAR lv_value.
LOOP AT lt_ekpo INTO ls_ekpo WHERE ebeln = ls_ekko-ebeln.
lv_value = lv_value + ls_ekpo-netwr.
ENDLOOP.
LS_REPORT-Tot_val = lv_value.
ELSEIF LS_REPORT-bstyp eq 'K'.
LS_REPORT-Tot_val = ls_ekko-KTWRT.
IF LS_REPORT-tot_val IS INITIAL.
CLEAR lv_value.
LOOP AT lt_ekpo INTO ls_ekpo.
lv_value = lv_value + ls_ekpo-brtwr.
ENDLOOP.
ENDIF.
ENDIF.
LS_REPORT-PENAWAL = ls_ekko-ZMMPENAWAL.
LS_REPORT-curr = ls_ekko-waers.
LS_REPORT-Kom_TKDN = ls_ztmmtkdn-ZZMTKDN.
LS_REPORT-Ch_Kom_TKDN = ls_ztmmtkdn-ZZMTKDN_CHG.
LS_REPORT-MIN_TKDN = ls_ztmmtkdn-ZBTSMINTKDN.
LS_REPORT-CAP_TKDN = ls_ztmmtkdn-ZZTKDN.
LS_REPORT-VIOL = ls_ztmmtkdn-VICODE.
* LS_REPORT-ZERO_TKDN = space.
* LS_REPORT-Sanksi_HTM = space.
LS_REPORT-Reference = ls_ztmmtkdn-ZREF.
LS_REPORT-bstyp = ls_ekko-bstyp.
LS_REPORT-bsart = ls_ekko-bsart.
LS_REPORT-ekorg = ls_ekko-ekorg.
LS_REPORT-ekgrp = ls_ekko-ekgrp.
LS_REPORT-pstyp = ls_ekpo-pstyp.
append LS_REPORT to LT_REPORT.
CLEAR LS_REPORT.
* ENDLOOP.
ENDIF.
ENDLOOP.
endform.
*&SPWIZARD: DECLARATION OF TABLECONTROL 'TC_REVIEW' ITSELF
CONTROLS: TC_REVIEW TYPE TABLEVIEW USING SCREEN 2003.
*&---------------------------------------------------------------------*
*& Module MODIFY_DATA INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE MODIFY_DATA INPUT.
*BREAK t_fachrezar.
MODIFY lt_input FROM ls_input INDEX TC_INPUT-CURRENT_LINE. " WHERE ebeln = ls_input-ebeln .
ENDMODULE. " MODIFY_DATA INPUT
*&---------------------------------------------------------------------*
*& Form F_SAVEALL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM F_SAVEALL .
DATA : lt_ztmm TYPE TABLE OF ztmm_tkdn,
ls_ztmm TYPE ztmm_tkdn,
lt_zmvitrx TYPE TABLE OF zmvitrx,
ls_zmvitrx TYPE zmvitrx,
lt_zmvisum TYPE TABLE OF zmvisum,
ls_zmvisum TYPE zmvisum,
ls_zmvisumnew TYPE zmvisum,
lt_zmvisumall TYPE TABLE OF zmvisumall,
ls_zmvisumall TYPE zmvisumall,
ls_zmvisumallnew TYPE zmvisumall,
lt_regloc TYPE TABLE OF zreg_loc,
ls_regloc TYPE zreg_loc.
DATA : lt_zmvicdhkm TYPE TABLE OF zmvicdhkm,
ls_zmvicdhkm TYPE zmvicdhkm.
SELECT * FROM zmvicdhkm INTO TABLE lt_zmvicdhkm
FOR ALL ENTRIES IN lt_review
WHERE vicode = lt_review-VIOL.
SELECT * FROM zmvisumall INTO TABLE lt_zmvisumall
FOR ALL ENTRIES IN lt_review WHERE lifnr = lt_review-VENDOR AND REGGROUP = 'KORP'.
SELECT * FROM ZREG_LOC INTO TABLE lt_regloc FOR ALL ENTRIES IN lt_review
WHERE ekgrp = lt_review-ekgrp.
SELECT * FROM zmvisum INTO TABLE lt_zmvisum
FOR ALL ENTRIES IN lt_review WHERE lifnr = lt_review-vendor AND reggroup = 'KORP'.
LOOP AT lt_review INTO ls_review.
*ZTMM_TKDN
ls_ztmm-ebeln = ls_review-PURCH_DOC.
ls_ztmm-bukrs = ls_review-bukrs.
ls_ztmm-zzmtkdn = ls_review-KOM_TKDN.
ls_ztmm-zzmtkdn_chg = ls_review-CH_KOM_TKDN.
ls_ztmm-zztkdn = ls_review-CAP_TKDN.
ls_ztmm-zbtsmintkdn = ls_review-MIN_TKDN.
ls_ztmm-vicode = ls_review-VIOL.
ls_ztmm-zref = ls_review-REFERENCE.
ls_ztmm-ernam = sy-uname.
ls_ztmm-erdat = sy-datum.
ls_ztmm-utime = sy-UZEIT.
MODIFY ztmm_tkdn from ls_ztmm.
*ZMVITRX
IF ls_review-bsart ne 'ZOA' or ls_review-bsart ne 'ZOAS'.
LS_ZMVITRX-bukrs = ls_review-BUKrS.
ls_zmvitrx-ekorg = ls_review-ekorg.
ls_zmvitrx-reggroup = 'KORP'.
READ TABLE lt_regloc INTO ls_regloc WITH KEY ekgrp = ls_review-ekgrp.
IF sy-subrc eq 0.
ls_zmvitrx-zreg_loc = ls_regloc-zreg_loc.
ENDIF.
ls_zmvitrx-TRXDATE = sy-datum.
ls_zmvitrx-GJAHR = sy-datum(4).
ls_zmvitrx-LIFNR = ls_review-VENDOR.
CASE ls_review-pstyp.
WHEN '9'.
ls_zmvitrx-KNDPRO = 'S'.
WHEN OTHERS.
ls_zmvitrx-KNDPRO = 'M'.
ENDCASE.
ls_zmvitrx-vicode = ls_review-VIOL.
ls_zmvitrx-viitem = '1'.
ls_zmvitrx-REFNUM = ls_review-PURCH_DOC.
ls_zmvitrx-DLTFLAG = space.
ls_zmvitrx-TMTDATE = sy-datum.
ls_zmvitrx-note = ls_review-REFERENCE.
ls_zmvitrx-DOER = 'P'.
ls_zmvitrx-AS4USER = sy-uname.
ls_zmvitrx-AS4DATE = sy-datum.
ls_zmvitrx-CRUSER = sy-uname.
ls_zmvitrx-CRDATE = sy-datum.
ls_zmvitrx-CRTIME = sy-uzeit.
ls_zmvitrx-ZEILE = space.
READ TABLE LT_ZMVISUMall INTO LS_ZMVISUMALL WITH KEY lifnr = ls_review-vendor.
IF sy-subrc eq 0.
ls_ZMVITRX-PREVPTM = ls_zmvisumall-pointm.
ls_ZMVITRX-PREVPTS = ls_zmvisumall-points.
ls_ZMVITRX-PREVPTT = ls_zmvisumall-pointt.
ls_ZMVITRX-PREVTMTDM = ls_zmvisumall-tmtdatem.
ls_ZMVITRX-PREVTMTDS = ls_zmvisumall-tmtdates.
ls_ZMVITRX-PREVTMTDT = ls_zmvisumall-tmtdatet.
ls_ZMVITRX-PREVCODEM = ls_zmvisumall-pcodem.
ls_ZMVITRX-PREVCODES = ls_zmvisumall-pcodes.
ls_ZMVITRX-PREVCODET = ls_zmvisumall-pcodet.
ENDIF.
ENDIF.
MODIFY zmvitrx FROM ls_zmvitrx.
*ZVISUM, ZVISUMALL
IF ls_review-bsart ne 'ZOA' or ls_review-bsart ne 'ZOAS'.
READ TABLE lt_zmvicdhkm INTO ls_zmvicdhkm WITH KEY vicode = ls_review-VIOL.
IF sy-subrc eq 0 AND ls_zmvicdhkm-pcode IS NOT INITIAL.
READ TABLE lt_zmvisumall INTO ls_zmvisumallnew WITH KEY lifnr = ls_review-vendor reggroup = 'KORP'.
IF sy-subrc eq 0 .
IF ls_zmvitrx-kndpro = 'S'.
ls_zmvisumall-ocodes = ls_zmvisumall-pcodes.
ls_zmvisumall-tmtolds = ls_zmvisumall-tmtdates.
ls_zmvisumall-pcodes = ls_zmvicdhkm-pcode.
ls_zmvisumall-tmtdates = sy-datum.
ELSE.
ls_zmvisumall-ocodem = ls_zmvisumall-pcodem.
ls_zmvisumall-tmtoldm = ls_zmvisumall-tmtdatem.
ls_zmvisumall-pcodem = ls_zmvicdhkm-pcode.
ls_zmvisumall-tmtdatem = sy-datum.
ENDIF.
ls_zmvisumall-ocodet = ls_zmvisumall-pcodet.
ls_zmvisumall-tmtoldt = ls_zmvisumall-tmtdatet.
ls_zmvisumall-pcodes = ls_zmvicdhkm-pcode.
ls_zmvisumall-tmtdatet = sy-datum.
ls_zmvisumall-aedat = sy-datum.
ls_zmvisumall-aetim = sy-UZEIT.
ls_zmvisumall-aenam = sy-UNAME.
LS_ZMVISUMALL-VICODE_HKM = ls_review-viol.
* MODIFY lt_zmvisumall FROM ls_zmvisumall
* TRANSPORTING OCODES TMTOLDS PCODES TMTDATES OCODEM TMTOLDM
* PCODEM TMTDATEM OCODET TMTOLDT PCODET TMTDATET
* aedat aetim aenam VICODE_HKM.
MODIFY ZMVISUMALL FROM ls_zmvisumall.
ELSE.
ls_zmvisumall-lifnr = ls_review-vendor.
ls_zmvisumall-reggroup = 'KORP'.
IF ls_zmvitrx-kndpro = 'S'.
ls_zmvisumall-pcodes = ls_zmvicdhkm-pcode.
ls_zmvisumall-pcodem = 'G'.
ELSE.
ls_zmvisumall-pcodem = ls_zmvicdhkm-pcode.
ls_zmvicdhkm-pcode = 'G'.
* ls_zmvicdhkm-pcodes = 'G'.
ENDIF.
ls_zmvisumall-pcodet = ls_zmvicdhkm-pcode.
ls_zmvisumall-tmtdatem = sy-datum.
ls_zmvisumall-tmtdates = sy-datum.
ls_zmvisumall-tmtdatet = sy-datum.
ls_zmvisumall-trxdatem = sy-datum.
ls_zmvisumall-trxdates = sy-datum.
ls_zmvisumall-trxdatet = sy-datum.
ls_zmvisumall-pointm = 0.
ls_zmvisumall-points = 0.
ls_zmvisumall-pointt = 0.
ls_zmvisumall-preptm = 0.
ls_zmvisumall-prepts = 0.
ls_zmvisumall-preptt = 0.
ls_zmvisumall-poinpm = 0.
ls_zmvisumall-poinps = 0.
ls_zmvisumall-poinpt = 0.
ls_zmvisumall-tt_bl = 0.
ls_zmvisumall-ttrfq = 0.
ls_zmvisumall-tt_po = 0.
ls_zmvisumall-bl_in = 0.
ls_zmvisumall-aedat = sy-datum.
ls_zmvisumall-aetim = sy-uzeit.
ls_zmvisumall-aenam = 'SYSTEM'.
* MODIFY lt_zmvisumall FROM ls_zmvisumall
* TRANSPORTING OCODES TMTOLDS PCODES TMTDATES OCODEM TMTOLDM
* PCODEM TMTDATEM OCODET TMTOLDT PCODET TMTDATET
* aedat aetim aenam VICODE_HKM.
MODIFY ZMVISUMALL FROM ls_zmvisumall.
ENDIF.
IF lt_zmvisum[] IS NOT INITIAL.
READ TABLE lt_zmvisum INTO ls_zmvisum WITH KEY lifnr = ls_review-vendor reggroup = 'KORP'.
if sy-subrc eq 0.
IF ls_ZMVITRX-KNDPRO = 'S'.
ls_zmvisum-OCODES = ls_zmvisum-PCODES.
ls_zmvisum-TMTOLDS = ls_zmvisum-TMTDATES.
ls_zmvisum-PCODES = ls_zmvicdhkm-pcode.
ls_zmvisum-TMTDATES = sy-datum.
ELSE.
ls_zmvisum-OCODEM = ls_zmvisum-PCODEM.
ls_zmvisum-TMTOLDM = ls_zmvisum-TMTDATEM.
ls_zmvisum-PCODEM = ls_zmvicdhkm-pcode.
ls_zmvisum-TMTDATEM = sy-datum.
ENDIF.
ls_zmvisum-OCODET = ls_zmvisum-PCODET.
ls_zmvisum-TMTOLDT = ls_zmvisum-TMTDATET.
ls_zmvisum-PCODET = ls_zmvicdhkm-pcode.
ls_zmvisum-TMTDATET = sy-datum.
ls_zmvisum-aedat = sy-datum.
ls_zmvisum-aetim = sy-uzeit.
ls_zmvisum-aenam = sy-uname.
ls_zmvisum-VICODE_HKM = ls_review-VIOL.
* MODIFY lt_zmvisum FROM ls_zmvisum
* TRANSPORTING OCODES TMTOLDS PCODES TMTDATES OCODEM TMTOLDM
* PCODEM TMTDATEM OCODET TMTOLDT PCODET TMTDATET
* aedat aetim aenam VICODE_HKM
*where lifnr = ls_zmvisum-lifnr.
MODIFY ZMVISUM FROM ls_zmvisum.
* TRANSPORTING OCODES TMTOLDS PCODES TMTDATES OCODEM TMTOLDM
* PCODEM TMTDATEM OCODET TMTOLDT PCODET TMTDATET
* aedat aetim aenam VICODE_HKM..
ELSE.
ls_zmvisum-lifnr = ls_review-VENDOR.
ls_zmvisum-reggroup = 'KORP'.
IF ls_ZMVITRX-KNDPRO = 'S'.
ls_zmvisum-PCODES = ls_zmvicdhkm-pcode.
ls_zmvisum-PCODEM = 'G'.
ELSE.
ls_zmvisum-PCODEM = ls_zmvicdhkm-pcode.
ls_zmvisum-pcodes = 'G'.
ENDIF.
ls_zmvisum-pcodet = ls_zmvicdhkm-pcode..
ls_zmvisum-tmtdatem = sy-datum.
ls_zmvisum-tmtdates = sy-datum.
ls_zmvisum-tmtdatet = sy-datum.
ls_zmvisum-trxdatem = sy-datum.
ls_zmvisum-trxdates = sy-datum.
ls_zmvisum-trxdatet = sy-datum.
ls_zmvisum-pointm = 0.
ls_zmvisum-points = 0.
ls_zmvisum-pointt = 0.
ls_zmvisum-preptm = 0.
ls_zmvisum-prepts = 0.
ls_zmvisum-preptt = 0.
ls_zmvisum-poinpm = 0.
ls_zmvisum-poinps = 0.
ls_zmvisum-poinpt = 0.
ls_zmvisum-tt_bl = 0.
ls_zmvisum-ttrfq = 0.
ls_zmvisum-tt_po = 0.
ls_zmvisum-bl_in = 0.
ls_zmvisum-aedat = sy-datum.
ls_zmvisum-aetim = sy-uzeit.
ls_zmvisum-aenam = 'SYSTEM'.
* MODIFY lt_ZMVISUM FROM ls_zmvisum TRANSPORTING
* OCODES TMTOLDS PCODES TMTDATES OCODEM TMTOLDM
* PCODEM TMTDATEM OCODET TMTOLDT PCODET TMTDATET
* aedat aetim aenam VICODE_HKM
* where lifnr = ls_zmvisum-lifnr.
MODIFY ZMVISUM FROM ls_zmvisum.
* TRANSPORTING OCODES TMTOLDS PCODES TMTDATES OCODEM TMTOLDM
* PCODEM TMTDATEM OCODET TMTOLDT PCODET TMTDATET
* aedat aetim aenam VICODE_HKM.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
commit WORK.
DATA : v_count TYPE char2.
DATA : v_Message TYPE char30.
DESCRIBE TABLE lt_review LINES v_count.
CONCATENATE V_COUNT 'data has been process.' INTO v_message SEPARATED BY space.
MESSAGE v_message TYPE 'S'.
ENDFORM. " F_SAVEALL
*&SPWIZARD: DECLARATION OF TABLECONTROL 'TC_REPORT' ITSELF
CONTROLS: TC_REPORT TYPE TABLEVIEW USING SCREEN 2005.
*&SPWIZARD: LINES OF TABLECONTROL 'TC_REPORT'
DATA: G_TC_REPORT_LINES LIKE SY-LOOPC.
ZZMM_TKDNA5001PBO
*&---------------------------------------------------------------------*
*& Include ZZMM_TKDNA5001PBO
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module STATUS_2002 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_2002 OUTPUT.
SET PF-STATUS 'STD_INPUT'.
* SET TITLEBAR 'xxx'.
CASE SY-UCOMM.
WHEN 'EXIT'.
LEAVE PROGRAM.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
WHEN 'EXEC'.
* BREAK t_fachrezar.
REFRESH LT_REVIEW[].
REFRESH lt_zmvimst[].
SELECT * FROM zmvimst INTO TABLE lt_zmvimst.
LOOP AT lt_input INTO ls_input WHERE TICK IS NOT INITIAL .
CLEAR v_point.
ls_review-Purch_doc = ls_input-Purch_doc .
ls_review-Vendor = ls_input-Vendor .
ls_review-Vendor_Nm = ls_input-Vendor_Nm .
ls_review-Kom_TKDN = ls_input-Kom_TKDN .
ls_review-Ch_Kom_TKDN = ls_input-Ch_Kom_TKDN .
ls_review-MIN_TKDN = ls_input-MIN_TKDN .
ls_review-CAP_TKDN = ls_input-CAP_TKDN .
ls_review-REFERENCE = ls_input-REFERENCE .
ls_review-CAP_KOM = ls_review-CAP_TKDN / ls_review-Kom_TKDN * 100.
IF ls_review-cap_kom GE 100.
ls_review-cap_kom = 100.
ENDIF.
* ls_review-Result
* viol
* Reference
ls_review-bsart = ls_input-bsart.
IF ls_review-bsart = 'ZOA' or ls_review-bsart = 'ZOAS'.
ls_review-RESULT = 'RO Shown Only for Monitoring'.
ls_review-VIOL = space.
ELSE.
IF ls_input-SANKSI_HTM = 'X'.
ls_review-result = 'Sanksi Hitam'.
ls_review-VIOL = 'T05P'.
ELSE.
IF LS_REVIEW-CAP_KOM LT ls_input-MIN_TKDN.
ls_review-VIOL = 'T04P'.
ls_review-result = 'Sanksi Merah'.
ELSEIF ls_review-CAP_KOM GE '100'.
ls_review-VIOL = 'T01R'.
READ TABLE lt_zmvimst INTO ls_zmvimst WITH KEY vicode = ls_review-viol.
* READ TABLE lt_zmvimst INTO ls_zmvimst WITH KEY vicode = ls_review-viol.
if sy-subrc eq 0.
move ls_zmvimst-VIPOINT to v_point.
CONDENSE v_point.
CONCATENATE 'Point +' v_point INTO ls_review-result SEPARATED BY space.
ENDIF.
ELSEIF ls_review-CAP_KOM ge '90' AND ls_review-CAP_KOM lt '100'.
ls_review-VIOL = 'T02P'.
READ TABLE lt_zmvimst INTO ls_zmvimst WITH KEY vicode = ls_review-viol.
* READ TABLE lt_zmvimst INTO ls_zmvimst WITH KEY vicode = ls_review-viol.
if sy-subrc eq 0.
move ls_zmvimst-VIPOINT to v_point.
CONDENSE v_point.
CONCATENATE 'Point ' v_point INTO ls_review-result SEPARATED BY space.
ENDIF.
ELSEIF ls_review-CAP_KOM LT '90'.
ls_review-VIOL = 'T03P'.
ls_review-RESULT = 'Sanksi Merah'.
ENDIF.
ENDIF.
ENDIF.
ls_review-ekorg = ls_input-ekorg.
ls_review-ekgrp = ls_input-ekgrp.
ls_review-pstyp = ls_input-pstyp.
ls_review-bukrs = ls_input-bukrs.
APPEND ls_review to lt_review[].
ENDLOOP.
if lt_review[] IS NOT INITIAL.
call SCREEN 2003.
ENDIF.
ENDCASE.
ENDMODULE. " STATUS_2002 OUTPUT
*&---------------------------------------------------------------------*
*& Module STATUS_2001 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_2001 OUTPUT.
* BREAK t_fachrezar.
SET PF-STATUS 'STD_REPORT'.
* SET TITLEBAR 'xxx'.
CASE SY-UCOMM.
WHEN 'EXIT'.
LEAVE PROGRAM.
WHEN 'BACK'.
CLEAR sy-ucomm.
REFRESH lt_report.
call SCREEN 1001.
WHEN 'EXEC_REPOR'.
PERFORM F_GET_DATA_REPORT.
CHECK lt_report[] IS NOT INITIAL.
CLEAR sy-ucomm.
call SCREEN 2005.
ENDCASE.
ENDMODULE. " STATUS_2001 OUTPUT
*&SPWIZARD: OUTPUT MODULE FOR TC 'TC_INPUT'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: UPDATE LINES FOR EQUIVALENT SCROLLBAR
MODULE TC_INPUT_CHANGE_TC_ATTR OUTPUT.
DESCRIBE TABLE LT_INPUT LINES TC_INPUT-lines.
ENDMODULE.
*&SPWIZARD: OUTPUT MODULE FOR TC 'TC_INPUT'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: GET LINES OF TABLECONTROL
MODULE TC_INPUT_GET_LINES OUTPUT.
G_TC_INPUT_LINES = SY-LOOPC.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module CHANGE_CELL_PROP OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE CHANGE_CELL_PROP OUTPUT.
*BREAK T_Fachrezar.
LOOP AT screen.
IF screen-name = 'LS_INPUT-PURCH_DOC' or
screen-name = 'LS_INPUT-DOC_TYPE' OR
screen-name = 'LS_INPUT-COCD' OR
screen-name = 'LS_INPUT-VENDOR' OR
screen-name = 'LS_INPUT-VENDOR_NM' OR
screen-name = 'LS_INPUT-JUDUL' OR
screen-name = 'LS_INPUT-TOT_VAL' OR
screen-name = 'LS_INPUT-PENAWAL' OR
screen-name = 'LS_INPUT-CURR' OR
screen-name = 'LS_INPUT-KOM_TKDN' OR
screen-name = 'LS_INPUT-CH_KOM_TKDN' OR
screen-name = 'LS_INPUT-MIN_TKDN'.
screen-input = '0'.
IF screen-name = 'LS_INPUT-CH_KOM_TKDN'.
IF ls_input-bstyp = 'F'.
screen-input = '1'.
ELSEIF ls_input-bstyp = 'K'.
screen-input = '0'.
ENDIF.
ENDIF.
ELSE.
SCREEN-INPUT = '1'.
IF ls_input-flag IS NOT INITIAL.
screen-input = '0'.
ENDIF.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ENDMODULE. " CHANGE_CELL_PROP OUTPUT
*&---------------------------------------------------------------------*
*& Module STATUS_2003 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_2003 OUTPUT.
SET PF-STATUS 'STD_REVIEW'.
* SET TITLEBAR 'xxx'.
CASE SY-UCOMM.
WHEN 'EXIT'.
LEAVE PROGRAM.
WHEN 'BACK'.
REFRESH LT_REVIEW[].
REFRESH CONTROL 'TC_REVIEW' FROM SCREEN '2003'.
LEAVE TO SCREEN 2002.
WHEN 'SAVE'.
DATA : lv_ques TYPE string,
lv_ans TYPE char4.
lv_ques = 'Data yang sudah di-input tidak dapat diubah. Mohon pastikan angka yang anda input sudah tepat! Save?'.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
* TITLEBAR = ' '
* DIAGNOSE_OBJECT = ' '
TEXT_QUESTION = lv_ques
TEXT_BUTTON_1 = 'Save'(001)
ICON_BUTTON_1 = 'ICON_SYSTEM_SAVE'
TEXT_BUTTON_2 = 'Cancel'(002)
ICON_BUTTON_2 = 'ICON_INCOMPLETE'
* DEFAULT_BUTTON = '1'
DISPLAY_CANCEL_BUTTON = ' '
* USERDEFINED_F1_HELP = ' '
* START_COLUMN = 25
* START_ROW = 6
* POPUP_TYPE =
* IV_QUICKINFO_BUTTON_1 = ' '
* IV_QUICKINFO_BUTTON_2 = ' '
IMPORTING
ANSWER = lv_ans
* TABLES
* PARAMETER =
EXCEPTIONS
TEXT_NOT_FOUND = 1
OTHERS = 2
.
* BREAK t_fachrezar.
IF lv_ans eq '1'.
*proceed to save process
PERFORM f_saveall.
ENDIF.
ENDCASE.
ENDMODULE. " STATUS_2003 OUTPUT
*&SPWIZARD: OUTPUT MODULE FOR TC 'TC_REVIEW'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: UPDATE LINES FOR EQUIVALENT SCROLLBAR
MODULE TC_REVIEW_CHANGE_TC_ATTR OUTPUT.
DESCRIBE TABLE LT_REVIEW LINES TC_REVIEW-lines.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module F_CH_PROP_SCREEN OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE F_CH_PROP_SCREEN OUTPUT.
*LOOP AT screen.
* IF screen-name = 'LS_INPUT-PURCH_DOC' or
* screen-name = 'LS_INPUT-DOC_TYPE' OR
* screen-name = 'LS_INPUT-COCD' OR
* screen-name = 'LS_INPUT-VENDOR' OR
* screen-name = 'LS_INPUT-VENDOR_NM' OR
* screen-name = 'LS_INPUT-JUDUL' OR
* screen-name = 'LS_INPUT-TOT_VAL' OR
* screen-name = 'LS_INPUT-PENAWAL' OR
* screen-name = 'LS_INPUT-CURR' OR
* screen-name = 'LS_INPUT-KOM_TKDN' OR
* screen-name = 'LS_INPUT-CH_KOM_TKDN' OR
* screen-name = 'LS_INPUT-MIN_TKDN'.
*
*
* screen-input = '0'.
*
* IF screen-name = 'LS_INPUT-CH_KOM_TKDN'.
* IF ls_input-bstyp = 'F'.
*
* screen-input = '1'.
* ELSEIF ls_input-bstyp = 'K'.
*
* screen-input = '0'.
* ENDIF.
* ENDIF.
* ELSE.
* SCREEN-INPUT = '1'.
* ENDIF.
* MODIFY SCREEN.
*ENDLOOP.
ENDMODULE. " F_CH_PROP_SCREEN OUTPUT
*&---------------------------------------------------------------------*
*& Module F_PBO_1001 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE F_PBO_1001 OUTPUT.
* SET PF-STATUS 'STD_SELEC'.
** SET TITLEBAR 'xxx'.
*CASE SY-UCOMM.
* WHEN 'EXIT'.
* LEAVE PROGRAM.
* WHEN 'BACK'.
** REFRESH LT_REVIEW[].
** REFRESH CONTROL 'TC_REVIEW' FROM SCREEN '2003'.
** LEAVE TO SCREEN 2002.
* LEAVE SCREEN.
*ENDCASE.
ENDMODULE. " F_PBO_1001 OUTPUT
*&---------------------------------------------------------------------*
*& Module STATUS_1001 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_1001 OUTPUT.
* SET PF-STATUS 'xxxxxxxx'.
* SET TITLEBAR 'xxx'.
SET PF-STATUS 'STD_SELEC'.
* SET TITLEBAR 'xxx'.
CASE SY-UCOMM.
WHEN 'EXIT'.
LEAVE PROGRAM.
WHEN 'BACK'.
LEAVE PROGRAM.
WHEN 'EXEC'.
PERFORM f_get_data.
CLEAR SY-UCOMM.
call SCREEN 2002.
WHEN 'REPORT'.
CLEAR SY-UCOMM.
* BREAK t_Fachrezar.
call SCREEN 2001.
ENDCASE.
ENDMODULE. " STATUS_1001 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_2001 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_2001 INPUT.
ENDMODULE. " USER_COMMAND_2001 INPUT
*&---------------------------------------------------------------------*
*& Module STATUS_2005 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_2005 OUTPUT.
SET PF-STATUS 'STD_DISP_REPORT'.
* SET TITLEBAR 'xxx'.
CASE SY-UCOMM.
WHEN 'EXIT'.
LEAVE PROGRAM.
WHEN 'BACK'.
CLEAR SY-UCOMM.
call SCREEN 2001.
ENDCASE.
ENDMODULE. " STATUS_2005 OUTPUT
*&SPWIZARD: OUTPUT MODULE FOR TC 'TC_REPORT'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: UPDATE LINES FOR EQUIVALENT SCROLLBAR
MODULE TC_REPORT_CHANGE_TC_ATTR OUTPUT.
DESCRIBE TABLE LT_REPORT LINES TC_REPORT-lines.
ENDMODULE.
*&SPWIZARD: OUTPUT MODULE FOR TC 'TC_REPORT'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: GET LINES OF TABLECONTROL
MODULE TC_REPORT_GET_LINES OUTPUT.
G_TC_REPORT_LINES = SY-LOOPC.
ENDMODULE.
ZZMM_TKDNA5001PAI
*&---------------------------------------------------------------------*
*& Include ZZMM_TKDNA5001PAI
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_2002 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_2002 INPUT.
ENDMODULE. " USER_COMMAND_2002 INPUT
*&SPWIZARD: INPUT MODULE FOR TC 'TC_INPUT'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: PROCESS USER COMMAND
MODULE TC_INPUT_USER_COMMAND INPUT.
OK_CODE = SY-UCOMM.
PERFORM USER_OK_TC USING 'TC_INPUT'
'LT_INPUT'
' '
CHANGING OK_CODE.
SY-UCOMM = OK_CODE.
ENDMODULE.
MODULE TC_INPUT_USER_COMMAND_1001 INPUT.
OK_CODE = SY-UCOMM.
PERFORM USER_OK_TC USING ''
''
' '
CHANGING OK_CODE.
SY-UCOMM = OK_CODE.
EndModule.
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_2003 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_2003 INPUT.
ENDMODULE. " USER_COMMAND_2003 INPUT
*&SPWIZARD: INPUT MODULE FOR TC 'TC_REVIEW'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: MODIFY TABLE
MODULE TC_REVIEW_MODIFY INPUT.
MODIFY LT_REVIEW
FROM LS_REVIEW
INDEX TC_REVIEW-CURRENT_LINE.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_1001 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_1001 INPUT.
ENDMODULE. " USER_COMMAND_1001 INPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_2005 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_2005 INPUT.
ENDMODULE. " USER_COMMAND_2005 INPUT
*&SPWIZARD: INPUT MODULE FOR TC 'TC_REPORT'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: PROCESS USER COMMAND
MODULE TC_REPORT_USER_COMMAND INPUT.
OK_CODE = SY-UCOMM.
PERFORM USER_OK_TC USING 'TC_REPORT'
'LT_REPORT'
' '
CHANGING OK_CODE.
SY-UCOMM = OK_CODE.
ENDMODULE.
ZZMM_TKDNA5001F02
*&---------------------------------------------------------------------*
*& Include ZZMM_TKDNA5001F02
*&---------------------------------------------------------------------*
*----------------------------------------------------------------------*
* INCLUDE TABLECONTROL_FORMS *
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form USER_OK_TC *
*&---------------------------------------------------------------------*
FORM USER_OK_TC USING P_TC_NAME TYPE DYNFNAM
P_TABLE_NAME
P_MARK_NAME
CHANGING P_OK LIKE SY-UCOMM.
*&SPWIZARD: BEGIN OF LOCAL DATA----------------------------------------*
DATA: L_OK TYPE SY-UCOMM,
L_OFFSET TYPE I.
*&SPWIZARD: END OF LOCAL DATA------------------------------------------*
*&SPWIZARD: Table control specific operations *
*&SPWIZARD: evaluate TC name and operations *
SEARCH P_OK FOR P_TC_NAME.
IF SY-SUBRC <> 0.
EXIT.
ENDIF.
L_OFFSET = STRLEN( P_TC_NAME ) + 1.
L_OK = P_OK+L_OFFSET.
*&SPWIZARD: execute general and TC specific operations *
CASE L_OK.
WHEN 'INSR'. "insert row
PERFORM FCODE_INSERT_ROW USING P_TC_NAME
P_TABLE_NAME.
CLEAR P_OK.
WHEN 'DELE'. "delete row
PERFORM FCODE_DELETE_ROW USING P_TC_NAME
P_TABLE_NAME
P_MARK_NAME.
CLEAR P_OK.
WHEN 'P--' OR "top of list
'P-' OR "previous page
'P+' OR "next page
'P++'. "bottom of list
PERFORM COMPUTE_SCROLLING_IN_TC USING P_TC_NAME
L_OK.
CLEAR P_OK.
* WHEN 'L--'. "total left
* PERFORM FCODE_TOTAL_LEFT USING P_TC_NAME.
*
* WHEN 'L-'. "column left
* PERFORM FCODE_COLUMN_LEFT USING P_TC_NAME.
*
* WHEN 'R+'. "column right
* PERFORM FCODE_COLUMN_RIGHT USING P_TC_NAME.
*
* WHEN 'R++'. "total right
* PERFORM FCODE_TOTAL_RIGHT USING P_TC_NAME.
*
WHEN 'MARK'. "mark all filled lines
PERFORM FCODE_TC_MARK_LINES USING P_TC_NAME
P_TABLE_NAME
P_MARK_NAME .
CLEAR P_OK.
WHEN 'DMRK'. "demark all filled lines
PERFORM FCODE_TC_DEMARK_LINES USING P_TC_NAME
P_TABLE_NAME
P_MARK_NAME .
CLEAR P_OK.
* WHEN 'SASCEND' OR
* 'SDESCEND'. "sort column
* PERFORM FCODE_SORT_TC USING P_TC_NAME
* l_ok.
ENDCASE.
ENDFORM. " USER_OK_TC
*&---------------------------------------------------------------------*
*& Form FCODE_INSERT_ROW *
*&---------------------------------------------------------------------*
FORM fcode_insert_row
USING P_TC_NAME TYPE DYNFNAM
P_TABLE_NAME .
*&SPWIZARD: BEGIN OF LOCAL DATA----------------------------------------*
DATA L_LINES_NAME LIKE FELD-NAME.
DATA L_SELLINE LIKE SY-STEPL.
DATA L_LASTLINE TYPE I.
DATA L_LINE TYPE I.
DATA L_TABLE_NAME LIKE FELD-NAME.
FIELD-SYMBOLS <TC> TYPE CXTAB_CONTROL.
FIELD-SYMBOLS <TABLE> TYPE STANDARD TABLE.
FIELD-SYMBOLS <LINES> TYPE I.
*&SPWIZARD: END OF LOCAL DATA------------------------------------------*
ASSIGN (P_TC_NAME) TO <TC>.
*&SPWIZARD: get the table, which belongs to the tc *
CONCATENATE P_TABLE_NAME '[]' INTO L_TABLE_NAME. "table body
ASSIGN (L_TABLE_NAME) TO <TABLE>. "not headerline
*&SPWIZARD: get looplines of TableControl *
CONCATENATE 'G_' P_TC_NAME '_LINES' INTO L_LINES_NAME.
ASSIGN (L_LINES_NAME) TO <LINES>.
*&SPWIZARD: get current line *
GET CURSOR LINE L_SELLINE.
IF SY-SUBRC <> 0. " append line to table
L_SELLINE = <TC>-LINES + 1.
*&SPWIZARD: set top line *
IF L_SELLINE > <LINES>.
<TC>-TOP_LINE = L_SELLINE - <LINES> + 1 .
ELSE.
<TC>-TOP_LINE = 1.
ENDIF.
ELSE. " insert line into table
L_SELLINE = <TC>-TOP_LINE + L_SELLINE - 1.
L_LASTLINE = <TC>-TOP_LINE + <LINES> - 1.
ENDIF.
*&SPWIZARD: set new cursor line *
L_LINE = L_SELLINE - <TC>-TOP_LINE + 1.
*&SPWIZARD: insert initial line *
INSERT INITIAL LINE INTO <TABLE> INDEX L_SELLINE.
<TC>-LINES = <TC>-LINES + 1.
*&SPWIZARD: set cursor *
SET CURSOR LINE L_LINE.
ENDFORM. " FCODE_INSERT_ROW
*&---------------------------------------------------------------------*
*& Form FCODE_DELETE_ROW *
*&---------------------------------------------------------------------*
FORM fcode_delete_row
USING P_TC_NAME TYPE DYNFNAM
P_TABLE_NAME
P_MARK_NAME .
*&SPWIZARD: BEGIN OF LOCAL DATA----------------------------------------*
DATA L_TABLE_NAME LIKE FELD-NAME.
FIELD-SYMBOLS <TC> TYPE cxtab_control.
FIELD-SYMBOLS <TABLE> TYPE STANDARD TABLE.
FIELD-SYMBOLS <WA>.
FIELD-SYMBOLS <MARK_FIELD>.
*&SPWIZARD: END OF LOCAL DATA------------------------------------------*
ASSIGN (P_TC_NAME) TO <TC>.
*&SPWIZARD: get the table, which belongs to the tc *
CONCATENATE P_TABLE_NAME '[]' INTO L_TABLE_NAME. "table body
ASSIGN (L_TABLE_NAME) TO <TABLE>. "not headerline
*&SPWIZARD: delete marked lines *
DESCRIBE TABLE <TABLE> LINES <TC>-LINES.
LOOP AT <TABLE> ASSIGNING <WA>.
*&SPWIZARD: access to the component 'FLAG' of the table header *
ASSIGN COMPONENT P_MARK_NAME OF STRUCTURE <WA> TO <MARK_FIELD>.
IF <MARK_FIELD> = 'X'.
DELETE <TABLE> INDEX SYST-TABIX.
IF SY-SUBRC = 0.
<TC>-LINES = <TC>-LINES - 1.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM. " FCODE_DELETE_ROW
*&---------------------------------------------------------------------*
*& Form COMPUTE_SCROLLING_IN_TC
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_TC_NAME name of tablecontrol
* -->P_OK ok code
*----------------------------------------------------------------------*
FORM COMPUTE_SCROLLING_IN_TC USING P_TC_NAME
P_OK.
*&SPWIZARD: BEGIN OF LOCAL DATA----------------------------------------*
DATA L_TC_NEW_TOP_LINE TYPE I.
DATA L_TC_NAME LIKE FELD-NAME.
DATA L_TC_LINES_NAME LIKE FELD-NAME.
DATA L_TC_FIELD_NAME LIKE FELD-NAME.
FIELD-SYMBOLS <TC> TYPE cxtab_control.
FIELD-SYMBOLS <LINES> TYPE I.
*&SPWIZARD: END OF LOCAL DATA------------------------------------------*
ASSIGN (P_TC_NAME) TO <TC>.
*&SPWIZARD: get looplines of TableControl *
CONCATENATE 'G_' P_TC_NAME '_LINES' INTO L_TC_LINES_NAME.
ASSIGN (L_TC_LINES_NAME) TO <LINES>.
*&SPWIZARD: is no line filled? *
IF <TC>-LINES = 0.
*&SPWIZARD: yes, ... *
L_TC_NEW_TOP_LINE = 1.
ELSE.
*&SPWIZARD: no, ... *
CALL FUNCTION 'SCROLLING_IN_TABLE'
EXPORTING
ENTRY_ACT = <TC>-TOP_LINE
ENTRY_FROM = 1
ENTRY_TO = <TC>-LINES
LAST_PAGE_FULL = 'X'
LOOPS = <LINES>
OK_CODE = P_OK
OVERLAPPING = 'X'
IMPORTING
ENTRY_NEW = L_TC_NEW_TOP_LINE
EXCEPTIONS
* NO_ENTRY_OR_PAGE_ACT = 01
* NO_ENTRY_TO = 02
* NO_OK_CODE_OR_PAGE_GO = 03
OTHERS = 0.
ENDIF.
*&SPWIZARD: get actual tc and column *
GET CURSOR FIELD L_TC_FIELD_NAME
AREA L_TC_NAME.
IF SYST-SUBRC = 0.
IF L_TC_NAME = P_TC_NAME.
*&SPWIZARD: et actual column *
SET CURSOR FIELD L_TC_FIELD_NAME LINE 1.
ENDIF.
ENDIF.
*&SPWIZARD: set the new top line *
<TC>-TOP_LINE = L_TC_NEW_TOP_LINE.
ENDFORM. " COMPUTE_SCROLLING_IN_TC
*&---------------------------------------------------------------------*
*& Form FCODE_TC_MARK_LINES
*&---------------------------------------------------------------------*
* marks all TableControl lines
*----------------------------------------------------------------------*
* -->P_TC_NAME name of tablecontrol
*----------------------------------------------------------------------*
FORM FCODE_TC_MARK_LINES USING P_TC_NAME
P_TABLE_NAME
P_MARK_NAME.
*&SPWIZARD: EGIN OF LOCAL DATA-----------------------------------------*
DATA L_TABLE_NAME LIKE FELD-NAME.
FIELD-SYMBOLS <TC> TYPE cxtab_control.
FIELD-SYMBOLS <TABLE> TYPE STANDARD TABLE.
FIELD-SYMBOLS <WA>.
FIELD-SYMBOLS <MARK_FIELD>.
*&SPWIZARD: END OF LOCAL DATA------------------------------------------*
ASSIGN (P_TC_NAME) TO <TC>.
*&SPWIZARD: get the table, which belongs to the tc *
CONCATENATE P_TABLE_NAME '[]' INTO L_TABLE_NAME. "table body
ASSIGN (L_TABLE_NAME) TO <TABLE>. "not headerline
*&SPWIZARD: mark all filled lines *
LOOP AT <TABLE> ASSIGNING <WA>.
*&SPWIZARD: access to the component 'FLAG' of the table header *
ASSIGN COMPONENT P_MARK_NAME OF STRUCTURE <WA> TO <MARK_FIELD>.
<MARK_FIELD> = 'X'.
ENDLOOP.
ENDFORM. "fcode_tc_mark_lines
*&---------------------------------------------------------------------*
*& Form FCODE_TC_DEMARK_LINES
*&---------------------------------------------------------------------*
* demarks all TableControl lines
*----------------------------------------------------------------------*
* -->P_TC_NAME name of tablecontrol
*----------------------------------------------------------------------*
FORM FCODE_TC_DEMARK_LINES USING P_TC_NAME
P_TABLE_NAME
P_MARK_NAME .
*&SPWIZARD: BEGIN OF LOCAL DATA----------------------------------------*
DATA L_TABLE_NAME LIKE FELD-NAME.
FIELD-SYMBOLS <TC> TYPE cxtab_control.
FIELD-SYMBOLS <TABLE> TYPE STANDARD TABLE.
FIELD-SYMBOLS <WA>.
FIELD-SYMBOLS <MARK_FIELD>.
*&SPWIZARD: END OF LOCAL DATA------------------------------------------*
ASSIGN (P_TC_NAME) TO <TC>.
*&SPWIZARD: get the table, which belongs to the tc *
CONCATENATE P_TABLE_NAME '[]' INTO L_TABLE_NAME. "table body
ASSIGN (L_TABLE_NAME) TO <TABLE>. "not headerline
*&SPWIZARD: demark all filled lines *
LOOP AT <TABLE> ASSIGNING <WA>.
*&SPWIZARD: access to the component 'FLAG' of the table header *
ASSIGN COMPONENT P_MARK_NAME OF STRUCTURE <WA> TO <MARK_FIELD>.
<MARK_FIELD> = SPACE.
ENDLOOP.
ENDFORM. "fcode_tc_mark_lines
those were all the codes i use,
and for the screen and the gui Stat,
i would just drop it in here





As for the screens , i put them on the dropbox, see it below…
https://www.dropbox.com/sh/838hrcyt41p8qid/AACPW0Jv2VFe8TRDwwfgHrJSa?dl=0