RWS (Renaming With Suffix....) for the rescue !!!
Note the use of the qualifier MODS_1 for addressing.
*----------------------------------------------------------------------*
FORM test_6_1 .
*----------------------------------------------------------------------*
TYPES: BEGIN OF tp_mods_1 .
TYPES: field_01 TYPE string ,
field_02 TYPE string ,
field_03 TYPE string .
TYPES: END OF tp_mods_1 .
*----------------------------------------------------------------------*
TYPES: BEGIN OF tp_work_1 .
TYPES: field_02 TYPE string .
TYPES: END OF tp_work_1 .
*----------------------------------------------------------------------*
* The report structure type
TYPES: BEGIN OF tp_report .
* Those are the existing fields .
TYPES: field_01 TYPE string ,
field_02 TYPE string ,
field_03 TYPE string ,
* Long list of fields
field_99 TYPE string .
* Those are our new fields .
INCLUDE TYPE tp_mods_1 AS mods_1 RENAMING WITH SUFFIX _mods_1 .
TYPES: END OF tp_report.
DATA: st_report TYPE tp_report .
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
st_report-field_01 = 'This is st_report-field_01 ' .
DATA: st_work_1 TYPE tp_work_1 .
st_work_1-field_02 = 'I am from st_work_1-field_02' .
DATA: st_mods_1 TYPE tp_mods_1 .
* Here we can limit the target area using "-mods_1"
MOVE-CORRESPONDING st_work_1 TO st_report-mods_1 .
* Access individuals fields
st_report-mods_1-field_01 = 'This is st_report-mods_1-field_01 ' .
st_report-field_03_mods_1 = 'This is st_report-mods_1-field_03 aka field_03_mods_1 ' .
* Examine st_report
BREAK-POINT .
ENDFORM . "test_6_1
*----------------------------------------------------------------------*
Cross Tab (aka dynamic columns ) .
Another usage scenario where RWS shine is in the Cross Tab reports.
There are a lot of discussions about using cl_alv_table_create=>create_dynamic_table so I am not going to do that .
But what about those cases where the number of columns is not in the thousands ? do we really need create columns at run time ?
The reason I am saying that is because it simpler and cheaper to develop a program that use a fix number of columns .
Our mission:
A weekly report based on SFLIGHT and in this report for each week we need the total of PAYMENTSUM,SEATSOCC.
We need to cover a year . So it seems that we will have to create at least 53 * 2 = 106 fields .
What will happen if we also at some point want to add SEATSOCC_B and SEATSOCC_F for each week ? well this seems quite a lot...
Lets see how we can reduce the burden:
Program Y_R_EITAN_TEST_06_03 (Attached) will demonstrate it.
Our data setup looks like this:
*----------------------------------------------------------------------*
* For each week we want "Total of current bookings","Occupied seats in economy class"
TYPES: BEGIN OF tp_ent_xxx .
TYPES: paymentsum TYPE sflight-paymentsum ,
seatsocc TYPE sflight-seatsocc .
TYPES: END OF tp_ent_xxx .
TYPES: tp_sum_xxx TYPE tp_ent_xxx .
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
TYPES: BEGIN OF tp_vald_1 .
* Note the RENAMING WITH SUFFIX .
INCLUDE TYPE tp_ent_xxx AS ent_001 RENAMING WITH SUFFIX _ent_001 .
INCLUDE TYPE tp_ent_xxx AS ent_002 RENAMING WITH SUFFIX _ent_002 .
INCLUDE TYPE tp_ent_xxx AS ent_003 RENAMING WITH SUFFIX _ent_003 .
INCLUDE TYPE tp_ent_xxx AS ent_004 RENAMING WITH SUFFIX _ent_004 .
Up to.....
INCLUDE TYPE tp_ent_xxx AS ent_052 RENAMING WITH SUFFIX _ent_052 .
INCLUDE TYPE tp_ent_xxx AS ent_053 RENAMING WITH SUFFIX _ent_053 .
INCLUDE TYPE tp_sum_xxx AS sum_xxx RENAMING WITH SUFFIX _sum_xxx .
*----------------------------------------------------------------------*
This will generate our weekly sets.
If we need to add more fields for each week we only need to add them to type tp_ent_xxx .
The program analyze the data and will display only the active weeks .
This is done by using the set_technical method (The progam is using cl_salv_table).
In case of cl_gui_alv_grid we can use the field catalog (lvc_s_fcat-tech) .
This is the output from this program:
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
2 | |
1 | |
1 | |
1 | |
1 | |
1 | |
1 | |
1 |